From 6a62f37230cd47219e56d180ae77bcede06b018d Mon Sep 17 00:00:00 2001 From: abaeza-wp <153538325+abaeza-wp@users.noreply.github.com> Date: Fri, 5 Jan 2024 08:55:01 +0000 Subject: [PATCH 01/26] Us1762585 - iOS Refactor Native components (#81) * US1762570: create view manager to native AccessCheckoutEditText component; override onTextChange to support the react native onChangeText event; implement component in react native * US1762550: update card details field to use new component; update RN module to use reference to AccessCheckoutEditText and not the text value * US1762550: move AccessCheckoutEditTextManager to correct file path; update local android sdk files to most up-to-date version of master; update AccessCheckoutReactPackageTest * US1782181: add unit tests for AccessCheckoutEditTextManagerTest; add mockito to build.gradle for unit tests * US1762551: Expose AccessCheckoutUITextField to be able to use native components via the ios Bridge Simplify ReactNativeViewLocator and implement/expose specific POC methods to avoid disruptions with previous implementation Add POC toggle to demo app to be able to switch implementations Expose new POC validation and sessionGeneration methods to avoid diruptions with previous implementations * US1762551: Point client to npe environment * US1762585: Refactor ios Bridge and demo application Avoids having to handle inputs in states Uses native components Only a input field id is needed in order to configure validation and session generation for a field Integrate the latest AccessCheckoutUITextField changes Updates and renames cvcValue to cvcId Updates and renames panValue to panId Updates and renames expiryDateValue to expiryDateId * US1762585: Rebuild lib and clean up files * US1762585: Minor cleanup * US1762585: Rebuild lib files Rename AccessCheckoutEditText to AccessCheckoutInputText as EditText was specific to Android Minor renaming of fields like panUITextField to panACUITextField to improve readability and make it known that we are dealing with AccessCheckoutUITextField in the iOS bridge * US1762585: Rename AccessCheckoutEditText to AccessCheckoutInputText in Android bridge * US1762585: Rename AccessCheckoutInputText to AccessCheckoutTextInput Rebuild lib files * US1762585: Update bitrise-step to use xcode-test v5 and update e2e tests (#82) * US1762585: Update bitrise-step to use xcode-test v5 * US1762585: Use Optionals to mantain compatibility in both Xcode 13 and Xcode 15 * US1762585: Update e2e tests * US1762585: Improve matcher based on platform using type * US1762585: Remove TextInputPO as it is no longer used --------- Co-authored-by: e5661323 --- .../.prettierrc.json | 4 +- .../build.gradle | 2 + .../AccessCheckoutReactNativeModule.kt | 26 ++- .../reactnative/AccessCheckoutReactPackage.kt | 9 +- .../ui/AccessCheckoutTextInputManager.kt | 38 ++++ .../AccessCheckoutReactPackageTest.kt | 4 +- .../ui/AccessCheckoutTextInputManagerTest.kt | 53 +++++ .../project.pbxproj | 104 ++++++---- .../AccessCheckoutReactNative.swift | 14 +- ...heckoutReactNativeModule-Bridging-Header.h | 1 + .../AccessCheckoutTextInputManager.m | 7 + .../AccessCheckoutTextInputManager.swift | 14 ++ .../session/GenerateSessionConfig.swift | 51 ++--- .../validation/ReactNativeViewLocator.swift | 34 +--- ...tNativeCardValidationAcceptanceTests.swift | 168 ++++++++-------- ...tiveCvcOnlyValidationAcceptanceTests.swift | 74 +++---- ...outReactNativeSessionAcceptanceTests.swift | 93 ++++++--- ...ckoutRnIllegalArgumentErrorUnitTests.swift | 1 - .../CardValidationTestUIViewController.swift | 7 +- ...vcOnlyValidationTestUIViewController.swift | 3 +- ...essionGenerationTestUIViewController.swift | 8 + .../GenerateSessionConfigUnitTests.swift | 82 ++++---- ...heckoutReactNativeTestImplementation.swift | 20 ++ ...CvcOnlyValidationDelegateRNUnitTests.swift | 2 +- .../validation/RCTEventMock.swift | 4 +- .../ReactNativeViewLocatorMock.swift | 35 ++-- .../ReactNativeViewLocatorUnitTests.swift | 69 ++----- .../SessionGenerationTest.storyboard | 58 ++++++ .../ios/bitrise.yml | 2 +- .../lib/commonjs/AccessCheckout.js | 8 +- .../lib/commonjs/AccessCheckout.js.map | 2 +- .../lib/commonjs/index.js | 14 +- .../lib/commonjs/index.js.map | 2 +- .../lib/commonjs/session/CardDetails.js | 2 - .../lib/commonjs/session/CardDetails.js.map | 1 - .../session/SessionGenerationConfig.js | 2 + .../session/SessionGenerationConfig.js.map | 1 + .../commonjs/ui/AccessCheckoutTextInput.js | 25 +++ .../ui/AccessCheckoutTextInput.js.map | 1 + .../lib/module/AccessCheckout.js | 8 +- .../lib/module/AccessCheckout.js.map | 2 +- .../lib/module/index.js | 2 +- .../lib/module/index.js.map | 2 +- .../lib/module/session/CardDetails.js | 2 - .../lib/module/session/CardDetails.js.map | 1 - .../module/session/SessionGenerationConfig.js | 2 + .../session/SessionGenerationConfig.js.map | 1 + .../lib/module/ui/AccessCheckoutTextInput.js | 19 ++ .../module/ui/AccessCheckoutTextInput.js.map | 1 + .../lib/typescript/AccessCheckout.d.ts | 4 +- .../lib/typescript/index.d.ts | 2 +- .../lib/typescript/session/CardDetails.d.ts | 5 - .../session/SessionGenerationConfig.d.ts | 5 + .../ui/AccessCheckoutTextInput.d.ts | 21 ++ .../src/AccessCheckout.tsx | 10 +- .../src/index.tsx | 2 +- .../src/session/CardDetails.tsx | 5 - .../src/session/SessionGenerationConfig.ts | 5 + .../src/ui/AccessCheckoutTextInput.tsx | 35 ++++ .../test/AccessCheckout.spec.ts | 51 +++-- .../test/session/CardDetails.spec.ts | 23 --- .../session/SessionGenerationConfig.spec.ts | 23 +++ demo-app/.prettierrc.json | 4 +- ...nputPO.js => AccessCheckoutTextInputPO.js} | 15 +- demo-app/e2e/page-objects/CardFlowPO.js | 8 +- demo-app/e2e/page-objects/CvcOnlyFlowPO.js | 4 +- demo-app/package-lock.json | 184 +++++++++--------- demo-app/package.json | 4 +- demo-app/src/App.tsx | 9 +- demo-app/src/card-flow/CardFlow.tsx | 20 +- demo-app/src/card-flow/style.js | 25 +++ demo-app/src/common/CvcField.tsx | 15 +- demo-app/src/common/ExpiryDateField.tsx | 22 +-- demo-app/src/common/PanField.tsx | 15 +- demo-app/src/cvc-flow/CvcFlow.tsx | 29 ++- 75 files changed, 983 insertions(+), 647 deletions(-) create mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt create mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt create mode 100644 access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.m create mode 100644 access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.swift create mode 100644 access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/SessionGenerationTestUIViewController.swift create mode 100644 access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/utils/AccessCheckoutReactNativeTestImplementation.swift create mode 100644 access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTestsApp/SessionGenerationTest.storyboard delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/session/CardDetails.js delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/session/CardDetails.js.map create mode 100644 access-checkout-react-native-sdk/lib/commonjs/session/SessionGenerationConfig.js create mode 100644 access-checkout-react-native-sdk/lib/commonjs/session/SessionGenerationConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js create mode 100644 access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map delete mode 100644 access-checkout-react-native-sdk/lib/module/session/CardDetails.js delete mode 100644 access-checkout-react-native-sdk/lib/module/session/CardDetails.js.map create mode 100644 access-checkout-react-native-sdk/lib/module/session/SessionGenerationConfig.js create mode 100644 access-checkout-react-native-sdk/lib/module/session/SessionGenerationConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js create mode 100644 access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map delete mode 100644 access-checkout-react-native-sdk/lib/typescript/session/CardDetails.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/session/SessionGenerationConfig.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts delete mode 100644 access-checkout-react-native-sdk/src/session/CardDetails.tsx create mode 100644 access-checkout-react-native-sdk/src/session/SessionGenerationConfig.ts create mode 100644 access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx delete mode 100644 access-checkout-react-native-sdk/test/session/CardDetails.spec.ts create mode 100644 access-checkout-react-native-sdk/test/session/SessionGenerationConfig.spec.ts rename demo-app/e2e/page-objects/{TextInputPO.js => AccessCheckoutTextInputPO.js} (54%) diff --git a/access-checkout-react-native-sdk/.prettierrc.json b/access-checkout-react-native-sdk/.prettierrc.json index 018ca32..6707610 100644 --- a/access-checkout-react-native-sdk/.prettierrc.json +++ b/access-checkout-react-native-sdk/.prettierrc.json @@ -3,7 +3,5 @@ "singleQuote": true, "tabWidth": 2, "trailingComma": "es5", - "useTabs": false, - "arrowParens": "avoid", - "bracketSameLine": true + "useTabs": false } diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/build.gradle b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/build.gradle index 5492d73..92c875f 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/build.gradle +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/build.gradle @@ -48,6 +48,8 @@ dependencies { testImplementation 'junit:junit:4.13.2' testImplementation 'org.assertj:assertj-core:3.21.0' testImplementation 'org.robolectric:robolectric:4.4' + testImplementation 'org.mockito:mockito-core:5.8.0' + instrumentedTestsImplementation 'androidx.test:core:1.4.0' instrumentedTestsImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2' diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactNativeModule.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactNativeModule.kt index 584d1f0..63d21ed 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactNativeModule.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactNativeModule.kt @@ -3,7 +3,6 @@ package com.worldpay.access.checkout.reactnative import android.os.Handler import android.os.Looper import android.util.Log -import android.widget.EditText import androidx.lifecycle.LifecycleOwner import com.facebook.react.bridge.* import com.facebook.react.uimanager.util.ReactFindViewUtil @@ -22,6 +21,7 @@ import com.worldpay.access.checkout.reactnative.validation.CvcOnlyValidationConf import com.worldpay.access.checkout.reactnative.validation.CvcOnlyValidationListener import com.worldpay.access.checkout.session.AccessCheckoutClientDisposer import com.worldpay.access.checkout.session.api.client.WpSdkHeader +import com.worldpay.access.checkout.ui.AccessCheckoutEditText /** * Module class that implements all the functionality that is required by Javascript for the end user @@ -77,15 +77,22 @@ class AccessCheckoutReactNativeModule constructor( sessionResponseListener.promise = promise + val rootView = reactContext.currentActivity?.window?.decorView?.rootView + + val panView = ReactFindViewUtil.findView(rootView, config.panValue!!) as AccessCheckoutEditText + val expiryDateView = + ReactFindViewUtil.findView(rootView, config.expiryDateValue!!) as AccessCheckoutEditText + val cvcView = ReactFindViewUtil.findView(rootView, config.cvcValue!!) as AccessCheckoutEditText + val cardDetails: CardDetails = if (isCvcSessionOnly(config.sessionTypes)) { CardDetails.Builder() - .cvc(config.cvcValue!!) + .cvc(cvcView) .build() } else { CardDetails.Builder() - .pan(config.panValue!!) - .expiryDate(config.expiryDateValue!!) - .cvc(config.cvcValue!!) + .pan(panView) + .expiryDate(expiryDateView) + .cvc(cvcView) .build() } @@ -111,10 +118,10 @@ class AccessCheckoutReactNativeModule constructor( val config = CardValidationConfigConverter().fromReadableMap(readableMap) val rootView = reactContext.currentActivity?.window?.decorView?.rootView - val panView = ReactFindViewUtil.findView(rootView, config.panId) as EditText + val panView = ReactFindViewUtil.findView(rootView, config.panId) as AccessCheckoutEditText val expiryDateView = - ReactFindViewUtil.findView(rootView, config.expiryDateId) as EditText - val cvcView = ReactFindViewUtil.findView(rootView, config.cvcId) as EditText + ReactFindViewUtil.findView(rootView, config.expiryDateId) as AccessCheckoutEditText + val cvcView = ReactFindViewUtil.findView(rootView, config.cvcId) as AccessCheckoutEditText val cardValidationConfigBuilder = CardValidationConfig.Builder() .baseUrl(config.baseUrl) @@ -156,7 +163,7 @@ class AccessCheckoutReactNativeModule constructor( val config = CvcOnlyValidationConfigConverter().fromReadableMap(readableMap) val rootView = reactContext.currentActivity?.window?.decorView?.rootView - val cvcView = ReactFindViewUtil.findView(rootView, config.cvcId) as EditText + val cvcView = ReactFindViewUtil.findView(rootView, config.cvcId) as AccessCheckoutEditText val cvcOnlyValidationConfigBuilder = CvcValidationConfig.Builder() .cvc(cvcView) @@ -208,4 +215,3 @@ class AccessCheckoutReactNativeModule constructor( return sessionType.count() == 1 && sessionType.first() == SessionType.CVC } } - diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackage.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackage.kt index 5aa8e49..88a8d2d 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackage.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackage.kt @@ -3,7 +3,7 @@ package com.worldpay.access.checkout.reactnative import com.facebook.react.ReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext -import com.facebook.react.uimanager.ViewManager +import com.worldpay.access.checkout.reactnative.ui.AccessCheckoutTextInputManager /** * This class is responsible for registering native modules with React Native. (called upon initialisation) @@ -13,8 +13,7 @@ class AccessCheckoutReactPackage : ReactPackage { override fun createNativeModules(reactContext: ReactApplicationContext): List { return listOf(AccessCheckoutReactNativeModule(reactContext)) } - - override fun createViewManagers(reactContext: ReactApplicationContext): List> { - return emptyList() - } + override fun createViewManagers( + reactContext: ReactApplicationContext + ) = listOf(AccessCheckoutTextInputManager(reactContext)) } diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt new file mode 100644 index 0000000..212bc5b --- /dev/null +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt @@ -0,0 +1,38 @@ +package com.worldpay.access.checkout.reactnative.ui + +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.uimanager.SimpleViewManager +import com.facebook.react.uimanager.ThemedReactContext +import com.facebook.react.uimanager.ViewProps +import com.facebook.react.uimanager.annotations.ReactProp +import com.worldpay.access.checkout.ui.AccessCheckoutEditText + +class AccessCheckoutTextInputManager(private val callerContext: ReactApplicationContext) : + SimpleViewManager() { + + override fun getName() = REACT_CLASS + + companion object { + const val REACT_CLASS = "AccessCheckoutTextInput" + } + + override fun createViewInstance(context: ThemedReactContext) = AccessCheckoutEditText(context) + + /** + * Properties + */ + @ReactProp(name = ViewProps.COLOR) + fun setRTCTextColor(accessCheckoutEditText: AccessCheckoutEditText, color: Int) { + accessCheckoutEditText.setTextColor(color) + } + + @ReactProp(name = "placeholder") + fun setRTCPlaceholder(accessCheckoutEditText: AccessCheckoutEditText, placeholder: String) { + accessCheckoutEditText.setHint(placeholder) + } + + @ReactProp(name = "editable") + fun setRTCEditable(accessCheckoutEditText: AccessCheckoutEditText, editable: Boolean) { + accessCheckoutEditText.isEnabled = editable + } +} diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackageTest.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackageTest.kt index 48b7cef..9021452 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackageTest.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackageTest.kt @@ -3,6 +3,7 @@ package com.worldpay.access.checkout.reactnative import android.content.Context import androidx.test.core.app.ApplicationProvider import com.facebook.react.bridge.ReactApplicationContext +import com.worldpay.access.checkout.reactnative.ui.AccessCheckoutTextInputManager import org.assertj.core.api.Assertions.assertThat import org.junit.Test import org.junit.runner.RunWith @@ -24,7 +25,8 @@ internal class AccessCheckoutReactPackageTest { fun `createViewManagers() should not create view managers`() { val viewManagers = acoReactPackage.createViewManagers(reactApplicationContext()) - assertThat(viewManagers).isEmpty() + assertThat(viewManagers).hasSize(1) + assertThat(viewManagers[0]).isInstanceOf(AccessCheckoutTextInputManager::class.java) } private fun reactApplicationContext(): ReactApplicationContext { diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt new file mode 100644 index 0000000..defe968 --- /dev/null +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt @@ -0,0 +1,53 @@ +package com.worldpay.access.checkout.reactnative.ui + +import android.content.Context +import android.graphics.Color +import androidx.test.core.app.ApplicationProvider +import com.facebook.react.bridge.ReactApplicationContext +import com.worldpay.access.checkout.ui.AccessCheckoutEditText +import org.assertj.core.api.AssertionsForClassTypes.assertThat +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mockito.mock +import org.mockito.Mockito.verify +import org.robolectric.RobolectricTestRunner + +@RunWith(RobolectricTestRunner::class) +internal class AccessCheckoutTextInputManagerTest { + private val manager = AccessCheckoutTextInputManager(reactApplicationContext()) + private val accessCheckoutEditTextMock = mock(AccessCheckoutEditText::class.java) + + @Test + fun `getName() should return the name of the react class`() { + val expectedName = "AccessCheckoutTextInput" + + assertThat(manager.name).isEqualTo(expectedName) + } + + @Test + fun `setRTCTextColour() should call setTextColour on AccessEditText`() { + manager.setRTCTextColor(accessCheckoutEditTextMock, Color.RED) + + verify(accessCheckoutEditTextMock).setTextColor(Color.RED) + } + + @Test + fun `setRTCPlaceholder() should call setHint on AccessEditText`() { + manager.setRTCPlaceholder(accessCheckoutEditTextMock, "placeholder") + + verify(accessCheckoutEditTextMock).setHint("placeholder") + } + + @Test + fun `setRTCEditable() should call isEnabled on AccessEditText`() { + manager.setRTCEditable(accessCheckoutEditTextMock, true) + + verify(accessCheckoutEditTextMock).isEnabled = true + } + + + private fun reactApplicationContext(): ReactApplicationContext { + val applicationContext: Context = ApplicationProvider.getApplicationContext() + return ReactApplicationContext(applicationContext) + } +} diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj index aa89c4e..d75c58d 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj @@ -7,7 +7,11 @@ objects = { /* Begin PBXBuildFile section */ - 1085FCBC7FCD8F0B65952C91 /* Pods_AccessCheckoutReactNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1A9B14B70FA26DBC56CEA54 /* Pods_AccessCheckoutReactNative.framework */; }; + 46D3A9632B3447AE0056016D /* SessionGenerationTestUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D3A9622B3447AE0056016D /* SessionGenerationTestUIViewController.swift */; }; + 46D3A9652B34494B0056016D /* SessionGenerationTest.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46D3A9642B34494B0056016D /* SessionGenerationTest.storyboard */; }; + 46D3A9682B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D3A9672B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift */; }; + 46D51A0B2B2B6D3D001A223C /* AccessCheckoutTextInputManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 46D51A0A2B2B6D3D001A223C /* AccessCheckoutTextInputManager.m */; }; + 46D51A0D2B2B6D72001A223C /* AccessCheckoutTextInputManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D51A0C2B2B6D72001A223C /* AccessCheckoutTextInputManager.swift */; }; 515BA38C282E6D6600BA262D /* AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515BA38B282E6D6600BA262D /* AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift */; }; 515BA394282E6EA500BA262D /* CvcOnlyValidationTestUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515BA393282E6EA500BA262D /* CvcOnlyValidationTestUIViewController.swift */; }; 515BA39C282E6F9600BA262D /* CvcValidationTest.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 515BA39B282E6F9600BA262D /* CvcValidationTest.storyboard */; }; @@ -43,7 +47,8 @@ 51D03E9C27A8611D009781EB /* CardValidationTest.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 51D03E9B27A8611D009781EB /* CardValidationTest.storyboard */; }; 51D03EBC27A8658B009781EB /* CardValidationTestUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51D03EBB27A8658B009781EB /* CardValidationTestUIViewController.swift */; }; 64ADC9392816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64ADC9382816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift */; }; - 9E76FAE1228E11E57FBA1E1F /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FCAD412BF5EDD019601562D6 /* Pods_AccessCheckoutReactNativeUnitTests.framework */; }; + A9ED72A5E9195DD948506388 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0FA73C387ECF40CBA927EFB1 /* Pods_AccessCheckoutReactNativeUnitTests.framework */; }; + F9072E98B9F57D1BF6246204 /* Pods_AccessCheckoutReactNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E69F34F7070C19C89742890 /* Pods_AccessCheckoutReactNative.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -64,8 +69,15 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0A05132B3D087D149DBF457C /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; sourceTree = ""; }; - 4CF9E9AFFAEFDCD0DF2D332F /* Pods-AccessCheckoutReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.release.xcconfig"; sourceTree = ""; }; + 00ABDCBCE0FE39A5A7B91754 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; sourceTree = ""; }; + 0FA73C387ECF40CBA927EFB1 /* Pods_AccessCheckoutReactNativeUnitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNativeUnitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 297BA316EEA9A3E0CC6C6C63 /* Pods-AccessCheckoutReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.release.xcconfig"; sourceTree = ""; }; + 2E69F34F7070C19C89742890 /* Pods_AccessCheckoutReactNative.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNative.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 46D3A9622B3447AE0056016D /* SessionGenerationTestUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionGenerationTestUIViewController.swift; sourceTree = ""; }; + 46D3A9642B34494B0056016D /* SessionGenerationTest.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SessionGenerationTest.storyboard; sourceTree = ""; }; + 46D3A9672B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessCheckoutReactNativeTestImplementation.swift; sourceTree = ""; }; + 46D51A0A2B2B6D3D001A223C /* AccessCheckoutTextInputManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AccessCheckoutTextInputManager.m; sourceTree = ""; }; + 46D51A0C2B2B6D72001A223C /* AccessCheckoutTextInputManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessCheckoutTextInputManager.swift; sourceTree = ""; }; 515BA38B282E6D6600BA262D /* AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift; sourceTree = ""; }; 515BA393282E6EA500BA262D /* CvcOnlyValidationTestUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CvcOnlyValidationTestUIViewController.swift; sourceTree = ""; }; 515BA39B282E6F9600BA262D /* CvcValidationTest.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CvcValidationTest.storyboard; sourceTree = ""; }; @@ -106,10 +118,8 @@ 51D03E9B27A8611D009781EB /* CardValidationTest.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CardValidationTest.storyboard; sourceTree = ""; }; 51D03EBB27A8658B009781EB /* CardValidationTestUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardValidationTestUIViewController.swift; sourceTree = ""; }; 64ADC9382816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccessCheckoutReactNativeSessionAcceptanceTests.swift; sourceTree = ""; }; - D1A9B14B70FA26DBC56CEA54 /* Pods_AccessCheckoutReactNative.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNative.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F774BB62CD3FD4BE07B8E378 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; sourceTree = ""; }; - FB29C6D2B7D46CE62D034A19 /* Pods-AccessCheckoutReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.debug.xcconfig"; sourceTree = ""; }; - FCAD412BF5EDD019601562D6 /* Pods_AccessCheckoutReactNativeUnitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNativeUnitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A801B54B720EBD674E60E506 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; sourceTree = ""; }; + DA445251C9260C65BDB821A4 /* Pods-AccessCheckoutReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -117,7 +127,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1085FCBC7FCD8F0B65952C91 /* Pods_AccessCheckoutReactNative.framework in Frameworks */, + F9072E98B9F57D1BF6246204 /* Pods_AccessCheckoutReactNative.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -126,7 +136,7 @@ buildActionMask = 2147483647; files = ( 516A9F612757D3B800E9B00E /* AccessCheckoutReactNative.framework in Frameworks */, - 9E76FAE1228E11E57FBA1E1F /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */, + A9ED72A5E9195DD948506388 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -143,14 +153,22 @@ 0B03ABF5587A3A533DCAD4DF /* Pods */ = { isa = PBXGroup; children = ( - FB29C6D2B7D46CE62D034A19 /* Pods-AccessCheckoutReactNative.debug.xcconfig */, - 4CF9E9AFFAEFDCD0DF2D332F /* Pods-AccessCheckoutReactNative.release.xcconfig */, - F774BB62CD3FD4BE07B8E378 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */, - 0A05132B3D087D149DBF457C /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */, + DA445251C9260C65BDB821A4 /* Pods-AccessCheckoutReactNative.debug.xcconfig */, + 297BA316EEA9A3E0CC6C6C63 /* Pods-AccessCheckoutReactNative.release.xcconfig */, + A801B54B720EBD674E60E506 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */, + 00ABDCBCE0FE39A5A7B91754 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */, ); path = Pods; sourceTree = ""; }; + 46D3A9662B3460EC0056016D /* utils */ = { + isa = PBXGroup; + children = ( + 46D3A9672B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift */, + ); + path = utils; + sourceTree = ""; + }; 516A9F4D2757D3B800E9B00E = { isa = PBXGroup; children = ( @@ -160,7 +178,7 @@ 51D03E6727A85FBA009781EB /* AccessCheckoutReactNativeUnitTestsApp */, 516A9F582757D3B800E9B00E /* Products */, 0B03ABF5587A3A533DCAD4DF /* Pods */, - 8E71B2DAB4690E3A1CBDE758 /* Frameworks */, + D328A7054FE44725EB747E9F /* Frameworks */, ); sourceTree = ""; }; @@ -177,6 +195,8 @@ 516A9F592757D3B800E9B00E /* AccessCheckoutReactNative */ = { isa = PBXGroup; children = ( + 46D51A0A2B2B6D3D001A223C /* AccessCheckoutTextInputManager.m */, + 46D51A0C2B2B6D72001A223C /* AccessCheckoutTextInputManager.swift */, 51D03D3927A829D8009781EB /* session */, 517D9E5027A4141F002B1611 /* validation */, 516A9FA12757D6EB00E9B00E /* AccessCheckoutReactNative.m */, @@ -191,6 +211,7 @@ 516A9F642757D3B800E9B00E /* AccessCheckoutReactNativeUnitTests */ = { isa = PBXGroup; children = ( + 46D3A9662B3460EC0056016D /* utils */, 517D9E9927A45398002B1611 /* stubServices */, 517D9E4D27A41409002B1611 /* session */, 517D9E4E27A4140F002B1611 /* validation */, @@ -201,6 +222,7 @@ 515FFD69282E994300A15AEB /* AccessCheckoutReactNativeUnitTests.swift */, 51C8D02B27BA5B5800F30FD5 /* AccessCheckoutRnIllegalArgumentErrorUnitTests.swift */, 51D03EBB27A8658B009781EB /* CardValidationTestUIViewController.swift */, + 46D3A9622B3447AE0056016D /* SessionGenerationTestUIViewController.swift */, 515BA393282E6EA500BA262D /* CvcOnlyValidationTestUIViewController.swift */, ); path = AccessCheckoutReactNativeUnitTests; @@ -262,6 +284,7 @@ children = ( 51D03E8027A8601B009781EB /* AppDelegate.swift */, 51D03E9B27A8611D009781EB /* CardValidationTest.storyboard */, + 46D3A9642B34494B0056016D /* SessionGenerationTest.storyboard */, 515BA39B282E6F9600BA262D /* CvcValidationTest.storyboard */, 51D03E6E27A85FBA009781EB /* Main.storyboard */, 51D03E7127A85FC4009781EB /* Assets.xcassets */, @@ -271,11 +294,11 @@ path = AccessCheckoutReactNativeUnitTestsApp; sourceTree = ""; }; - 8E71B2DAB4690E3A1CBDE758 /* Frameworks */ = { + D328A7054FE44725EB747E9F /* Frameworks */ = { isa = PBXGroup; children = ( - D1A9B14B70FA26DBC56CEA54 /* Pods_AccessCheckoutReactNative.framework */, - FCAD412BF5EDD019601562D6 /* Pods_AccessCheckoutReactNativeUnitTests.framework */, + 2E69F34F7070C19C89742890 /* Pods_AccessCheckoutReactNative.framework */, + 0FA73C387ECF40CBA927EFB1 /* Pods_AccessCheckoutReactNativeUnitTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -298,12 +321,12 @@ isa = PBXNativeTarget; buildConfigurationList = 516A9F6B2757D3B800E9B00E /* Build configuration list for PBXNativeTarget "AccessCheckoutReactNative" */; buildPhases = ( - 042F371D493E6DABFDEF3267 /* [CP] Check Pods Manifest.lock */, + 035376D4EE81B163044EF1D3 /* [CP] Check Pods Manifest.lock */, 516A9F522757D3B800E9B00E /* Headers */, 516A9F532757D3B800E9B00E /* Sources */, 516A9F542757D3B800E9B00E /* Frameworks */, 516A9F552757D3B800E9B00E /* Resources */, - 9A3663AC6EF2305F39A7BD0B /* [CP] Copy Pods Resources */, + 74ED40430D411C1CB57F1461 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -318,12 +341,12 @@ isa = PBXNativeTarget; buildConfigurationList = 516A9F6E2757D3B800E9B00E /* Build configuration list for PBXNativeTarget "AccessCheckoutReactNativeUnitTests" */; buildPhases = ( - 3198F8708951ABA605A2ACD1 /* [CP] Check Pods Manifest.lock */, + 4A337EC7BA38160744E362E2 /* [CP] Check Pods Manifest.lock */, 516A9F5C2757D3B800E9B00E /* Sources */, 516A9F5D2757D3B800E9B00E /* Frameworks */, 516A9F5E2757D3B800E9B00E /* Resources */, - 345418B0DDDD9A8C510C0BDD /* [CP] Embed Pods Frameworks */, - 6E7AA427B4BE28C50D3FD882 /* [CP] Copy Pods Resources */, + 5B38B89F26ADB90120C112C7 /* [CP] Embed Pods Frameworks */, + A49419855F7224F2AE1BCB61 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -420,6 +443,7 @@ 51D03E9C27A8611D009781EB /* CardValidationTest.storyboard in Resources */, 51D03E7227A85FC4009781EB /* Assets.xcassets in Resources */, 515BA39C282E6F9600BA262D /* CvcValidationTest.storyboard in Resources */, + 46D3A9652B34494B0056016D /* SessionGenerationTest.storyboard in Resources */, 51D03E7027A85FBA009781EB /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -427,7 +451,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 042F371D493E6DABFDEF3267 /* [CP] Check Pods Manifest.lock */ = { + 035376D4EE81B163044EF1D3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -449,7 +473,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 3198F8708951ABA605A2ACD1 /* [CP] Check Pods Manifest.lock */ = { + 4A337EC7BA38160744E362E2 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -471,7 +495,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 345418B0DDDD9A8C510C0BDD /* [CP] Embed Pods Frameworks */ = { + 5B38B89F26ADB90120C112C7 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -488,38 +512,38 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6E7AA427B4BE28C50D3FD882 /* [CP] Copy Pods Resources */ = { + 74ED40430D411C1CB57F1461 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative-resources-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 9A3663AC6EF2305F39A7BD0B /* [CP] Copy Pods Resources */ = { + A49419855F7224F2AE1BCB61 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative-resources-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -533,8 +557,10 @@ 516A9FAA2757D6EB00E9B00E /* AccessCheckoutReactNative.m in Sources */, 516A9FAB2757D6EB00E9B00E /* GenerateSessionConfig.swift in Sources */, 5167BB3927A7FFB100F8569D /* ReactNativeViewLocator.swift in Sources */, + 46D51A0D2B2B6D72001A223C /* AccessCheckoutTextInputManager.swift in Sources */, 516A9FA92757D6EB00E9B00E /* CardValidationConfigRN.swift in Sources */, 516A9FB02757D6EB00E9B00E /* CardValidationDelegateRN.swift in Sources */, + 46D51A0B2B2B6D3D001A223C /* AccessCheckoutTextInputManager.m in Sources */, 516A9FB12757D6EB00E9B00E /* AccessCheckoutReactNative.swift in Sources */, 515BA3E4282E93A900BA262D /* CvcOnlyValidationDelegateRN.swift in Sources */, 515BA3A9282E829D00BA262D /* CvcOnlyValidationConfigRN.swift in Sources */, @@ -550,12 +576,14 @@ 515BA3CA282E903300BA262D /* CvcOnlyValidationDelegateRNUnitTests.swift in Sources */, 51C8CFBA27B6B7EE00F30FD5 /* GenerateSessionConfigUnitTests.swift in Sources */, 5167BB2727A459BF00F8569D /* StubServices.swift in Sources */, + 46D3A9682B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift in Sources */, 51C8D02C27BA5B5800F30FD5 /* AccessCheckoutRnIllegalArgumentErrorUnitTests.swift in Sources */, 515FFD6A282E994300A15AEB /* AccessCheckoutReactNativeUnitTests.swift in Sources */, 51D03EBC27A8658B009781EB /* CardValidationTestUIViewController.swift in Sources */, 515BA394282E6EA500BA262D /* CvcOnlyValidationTestUIViewController.swift in Sources */, 64ADC9392816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift in Sources */, 51C8CFDF27B6E86000F30FD5 /* CardValidationDelegateRNUnitTests.swift in Sources */, + 46D3A9632B3447AE0056016D /* SessionGenerationTestUIViewController.swift in Sources */, 51C8CFCD27B6E71300F30FD5 /* RCTEventEmitterMock.swift in Sources */, 515BA38C282E6D6600BA262D /* AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift in Sources */, 51C8D03727BA807C00F30FD5 /* ReactNativeViewLocatorUnitTests.swift in Sources */, @@ -751,7 +779,7 @@ }; 516A9F6C2757D3B800E9B00E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FB29C6D2B7D46CE62D034A19 /* Pods-AccessCheckoutReactNative.debug.xcconfig */; + baseConfigurationReference = DA445251C9260C65BDB821A4 /* Pods-AccessCheckoutReactNative.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; @@ -779,7 +807,7 @@ }; 516A9F6D2757D3B800E9B00E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4CF9E9AFFAEFDCD0DF2D332F /* Pods-AccessCheckoutReactNative.release.xcconfig */; + baseConfigurationReference = 297BA316EEA9A3E0CC6C6C63 /* Pods-AccessCheckoutReactNative.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; @@ -806,7 +834,7 @@ }; 516A9F6F2757D3B800E9B00E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F774BB62CD3FD4BE07B8E378 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */; + baseConfigurationReference = A801B54B720EBD674E60E506 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CODE_SIGN_STYLE = Automatic; @@ -827,7 +855,7 @@ }; 516A9F702757D3B800E9B00E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0A05132B3D087D149DBF457C /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */; + baseConfigurationReference = 00ABDCBCE0FE39A5A7B91754 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CODE_SIGN_STYLE = Automatic; diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutReactNative.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutReactNative.swift index cc19bab..9375126 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutReactNative.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutReactNative.swift @@ -39,14 +39,20 @@ class AccessCheckoutReactNative: RCTEventEmitter { let cardDetails: CardDetails if isCvcSessionOnly(sessionTypes: cfg.sessionTypes) { + let cvcInput = reactNativeViewLocator.locateUITextField(id: cfg.cvcId) + cardDetails = try CardDetailsBuilder() - .cvc(cfg.cvcValue!) + .cvc(cvcInput!) .build() } else { + let panInput = reactNativeViewLocator.locateUITextField(id: cfg.panId!) + let expiryInput = reactNativeViewLocator.locateUITextField(id: cfg.expiryDateId!) + let cvcInput = reactNativeViewLocator.locateUITextField(id: cfg.cvcId) + cardDetails = try CardDetailsBuilder() - .pan(cfg.panValue!) - .expiryDate(cfg.expiryDateValue!) - .cvc(cfg.cvcValue!) + .pan(panInput!) + .expiryDate(expiryInput!) + .cvc(cvcInput!) .build() } diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutReactNativeModule-Bridging-Header.h b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutReactNativeModule-Bridging-Header.h index f9419a3..dfcbc3b 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutReactNativeModule-Bridging-Header.h +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutReactNativeModule-Bridging-Header.h @@ -1,6 +1,7 @@ #import #import #import +#import @interface AccessCheckoutReactNativeModule: NSObject @end diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.m b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.m new file mode 100644 index 0000000..7d1daaf --- /dev/null +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.m @@ -0,0 +1,7 @@ +#import +#import + +@interface RCT_EXTERN_MODULE(AccessCheckoutTextInputManager, RCTViewManager) +//Externalises properties +RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString) +@end diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.swift new file mode 100644 index 0000000..82032e8 --- /dev/null +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.swift @@ -0,0 +1,14 @@ +import AccessCheckoutSDK +import Foundation +import React + +@objc(AccessCheckoutTextInputManager) +class AccessCheckoutTextInputManager: RCTViewManager { + override func view() -> UIView! { + return AccessCheckoutUITextField() + } + + override static func requiresMainQueueSetup() -> Bool { + return false + } +} diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/session/GenerateSessionConfig.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/session/GenerateSessionConfig.swift index 36bd690..37d6625 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/session/GenerateSessionConfig.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/session/GenerateSessionConfig.swift @@ -3,48 +3,36 @@ import AccessCheckoutSDK struct GenerateSessionConfig { let baseUrl: String let merchantId: String - var panValue: String? - var expiryDateValue: String? - let cvcValue: String? + var panId: String? + var expiryDateId: String? + let cvcId: String let sessionTypes: Set var reactNativeSdkVersion: String? init(dictionary: NSDictionary) throws { + // Required Arguments self.baseUrl = dictionary["baseUrl"] as? String ?? "" self.merchantId = dictionary["merchantId"] as? String ?? "" - self.cvcValue = dictionary["cvcValue"] as? String ?? "" + self.cvcId = dictionary["cvcId"] as? String ?? "" - if self.baseUrl == "" { + guard !self.baseUrl.isEmpty else { throw AccessCheckoutRnIllegalArgumentError.missingBaseUrl() } - - if self.merchantId == "" { + guard !self.merchantId.isEmpty else { throw AccessCheckoutRnIllegalArgumentError.missingMerchantId() } - if dictionary["panValue"] != nil { - if let string = dictionary["panValue"] as? String, string != "" { - self.panValue = string - } else { - throw AccessCheckoutRnIllegalArgumentError.missingPan() - } - } - - if dictionary["expiryDateValue"] != nil { - if let string = dictionary["expiryDateValue"] as? String, string != "" { - self.expiryDateValue = string - } else { - throw AccessCheckoutRnIllegalArgumentError.missingExpiryDate() - } + // Cvc is always required independently on the type of session generated + guard !self.cvcId.isEmpty else { + throw AccessCheckoutRnIllegalArgumentError.missingCvc() } let sessionTypes = dictionary["sessionTypes"] as? [AnyObject] ?? [] - if sessionTypes.count == 0 { + guard sessionTypes.count != 0 else { throw AccessCheckoutRnIllegalArgumentError.missingSessionTypes() } - - if sessionTypes.count > 2 { + guard sessionTypes.count <= 2 else { throw AccessCheckoutRnIllegalArgumentError.tooManySessionTypes( numberFound: sessionTypes.count) } @@ -64,20 +52,23 @@ struct GenerateSessionConfig { throw AccessCheckoutRnIllegalArgumentError.sessionTypeIsNotString() } } + self.sessionTypes = set // Pan and Expiry date are required when requesting a card session if self.sessionTypes.contains(SessionType.card) { - if self.panValue == nil || self.panValue == "" { + if let string = dictionary["panId"] as? String, !string.isEmpty { + self.panId = string + } else { throw AccessCheckoutRnIllegalArgumentError.missingPan() - } else if self.expiryDateValue == nil || self.expiryDateValue == "" { + } + + if let string = dictionary["expiryDateId"] as? String, !string.isEmpty { + self.expiryDateId = string + } else { throw AccessCheckoutRnIllegalArgumentError.missingExpiryDate() } } - // Cvc is always required independently on the type of session generated - if self.cvcValue == nil || self.cvcValue == "" { - throw AccessCheckoutRnIllegalArgumentError.missingCvc() - } if dictionary["reactNativeSdkVersion"] == nil { throw AccessCheckoutRnIllegalArgumentError.missingReactNativeSdkVersion() diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/validation/ReactNativeViewLocator.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/validation/ReactNativeViewLocator.swift index 780589c..86a14e4 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/validation/ReactNativeViewLocator.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/validation/ReactNativeViewLocator.swift @@ -3,26 +3,26 @@ import Foundation import React class ReactNativeViewLocator { - func locateUITextField(id: String) -> UITextField? { + func locateUITextField(id: String) -> AccessCheckoutUITextField? { guard let controller: UIViewController = RCTPresentedViewController() else { return nil } - return self.searchForView(subViews: controller.view!.subviews, nativeId: id) + let view = self.searchForView(subViews: controller.view!.subviews, nativeId: id) + return view as? AccessCheckoutUITextField } - private func searchForView(subViews: [UIView], nativeId: String) -> UITextField? { + private func searchForView(subViews: [UIView], nativeId: String) -> UIView? { for subView in subViews { - if subView.nativeID == nil { - if let view = searchForView(subViews: subView.subviews, nativeId: nativeId) { + if subView.nativeID == nativeId { + return subView + } else { + let view = self.searchForView(subViews: subView.subviews, nativeId: nativeId) + if view != nil { return view } - } else if subView.nativeID! == nativeId { - let inputView = (subView as? RCTSinglelineTextInputView)?.backedTextInputView - return inputView as? UITextField } } - return nil } @@ -31,20 +31,6 @@ class ReactNativeViewLocator { return nil } - return self.searchForViewInSubViews(subViews: controller.view!.subviews, nativeId: id) - } - - private func searchForViewInSubViews(subViews: [UIView], nativeId: String) -> UIView? { - for subView in subViews { - if subView.nativeID == nil { - if let view = searchForViewInSubViews(subViews: subView.subviews, nativeId: nativeId) { - return view - } - } else if subView.nativeID! == nativeId { - return subView - } - } - - return nil + return self.searchForView(subViews: controller.view!.subviews, nativeId: id) } } diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeCardValidationAcceptanceTests.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeCardValidationAcceptanceTests.swift index 094b315..9d8c0d9 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeCardValidationAcceptanceTests.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeCardValidationAcceptanceTests.swift @@ -1,10 +1,10 @@ +@testable import AccessCheckoutReactNative +@testable import AccessCheckoutReactNativeUnitTestsApp +@testable import AccessCheckoutSDK import Mockingjay import React import XCTest -@testable import AccessCheckoutReactNative -@testable import AccessCheckoutReactNativeUnitTestsApp - class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { private let stubServices = StubServices(baseUrl: "http://localhost") private let config: NSDictionary = [ @@ -17,9 +17,9 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { private let storyboard = UIStoryboard(name: "CardValidationTest", bundle: nil) private var reactNativeViewLocatorMock: ReactNativeViewLocatorMock? private var controller: CardValidationTestUIViewController? = nil - private var panUITextField: UITextField? = nil - private var expiryDateUITextField: UITextField? = nil - private var cvcUITextField: UITextField? = nil + private var panACUITextField: AccessCheckoutUITextField? = nil + private var expiryDateACUITextField: AccessCheckoutUITextField? = nil + private var cvcACUITextField: AccessCheckoutUITextField? = nil override func setUp() { controller = @@ -27,13 +27,13 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { withIdentifier: "CardValidationTestUIViewController") as! CardValidationTestUIViewController) controller!.loadViewIfNeeded() - panUITextField = controller!.panTextField - expiryDateUITextField = controller!.expiryDateTextField - cvcUITextField = controller!.cvcTextField + panACUITextField = controller!.panTextField + expiryDateACUITextField = controller!.expiryDateTextField + cvcACUITextField = controller!.cvcTextField reactNativeViewLocatorMock = ReactNativeViewLocatorMock( - panUITextField: panUITextField!, - expiryDateUITextField: expiryDateUITextField!, - cvcUITextField: cvcUITextField!) + panView: panACUITextField!, + expiryDateView: expiryDateACUITextField!, + cvcView: cvcACUITextField!) } func testShouldReturnAnErrorWhenConfigurationProvidedIsInvalid() { @@ -41,10 +41,10 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let invalidConfig: NSDictionary = [:] let accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: invalidConfig) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: invalidConfig) { _ in XCTFail("validation initialisation should have faild but it didn't") expectationToFulfill.fulfill() - } reject: { (errorCode, errorDescription, error) in + } reject: { _, _, error in let expectedError = AccessCheckoutRnIllegalArgumentError.missingBaseUrl() XCTAssertEqual(error as! AccessCheckoutRnIllegalArgumentError, expectedError) expectationToFulfill.fulfill() @@ -57,14 +57,14 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let expectationToFulfill = expectation(description: "Error should be returned") let accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) - reactNativeViewLocatorMock!.panUITextField = nil + reactNativeViewLocatorMock!.panView = nil let expectedError = AccessCheckoutRnIllegalArgumentError.panTextFieldNotFound( panNativeId: "pan") - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { _ in XCTFail("validation initialisation should have faild but it didn't") expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTAssertEqual(error as! AccessCheckoutRnIllegalArgumentError, expectedError) expectationToFulfill.fulfill() } @@ -76,14 +76,14 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let expectationToFulfill = expectation(description: "Error should be returned") let accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) - reactNativeViewLocatorMock!.expiryDateUITextField = nil + reactNativeViewLocatorMock!.expiryDateView = nil let expectedError = AccessCheckoutRnIllegalArgumentError.expiryDateTextFieldNotFound( expiryDateNativeId: "expiryDate") - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { _ in XCTFail("validation initialisation should have faild but it didn't") expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTAssertEqual(error as! AccessCheckoutRnIllegalArgumentError, expectedError) expectationToFulfill.fulfill() } @@ -95,14 +95,14 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let expectationToFulfill = expectation(description: "Error should be returned") let accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) - reactNativeViewLocatorMock!.cvcUITextField = nil + reactNativeViewLocatorMock!.cvcView = nil let expectedError = AccessCheckoutRnIllegalArgumentError.cvcTextFieldNotFound( cvcNativeId: "cvc") - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { _ in XCTFail("validation initialisation should have faild but it didn't") expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTAssertEqual(error as! AccessCheckoutRnIllegalArgumentError, expectedError) expectationToFulfill.fulfill() } @@ -114,10 +114,10 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let expectationToFulfill = expectation(description: "run test successfully") let accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from initialisation \(String(describing: error))" ) @@ -132,10 +132,11 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertEqual(true, (success as! Bool)) - self.panUITextField!.insertText("4444333322221111") + let field = self.panACUITextField?.uiTextField + field!.insertText("4444333322221111") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1) @@ -145,7 +146,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertTrue(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -160,12 +161,14 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) - self.panUITextField!.insertText("4444333322221111") - self.panUITextField!.deleteBackward() - XCTAssertEqual(self.panUITextField!.text, "444433332222111") + let field = self.panACUITextField?.uiTextField + field!.insertText("4444333322221111") + field!.deleteBackward() + + XCTAssertEqual(field!.text, "444433332222111") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2) @@ -175,7 +178,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertFalse(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -190,11 +193,11 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertEqual(true, (success as! Bool)) - self.cvcUITextField!.insertText("123") - + let field = self.cvcACUITextField?.uiTextField + field!.insertText("123") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1) let event = accessCheckoutReactNative.eventsSent[0] @@ -203,7 +206,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertTrue(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation \(String(describing: error))" ) @@ -218,12 +221,13 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) - self.cvcUITextField!.insertText("123") - self.cvcUITextField!.deleteBackward() - XCTAssertEqual(self.cvcUITextField!.text, "12") + let field = self.cvcACUITextField?.uiTextField + field!.insertText("123") + field!.deleteBackward() + XCTAssertEqual(field!.text, "12") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2) @@ -233,7 +237,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertFalse(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -248,11 +252,11 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertEqual(true, (success as! Bool)) - self.expiryDateUITextField!.insertText("10/34") - + let field = self.expiryDateACUITextField?.uiTextField + field!.insertText("10/34") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1) let event = accessCheckoutReactNative.eventsSent[0] @@ -261,7 +265,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertTrue(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -276,12 +280,13 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) - self.expiryDateUITextField!.insertText("10/34") - self.expiryDateUITextField!.deleteBackward() - XCTAssertEqual(self.expiryDateUITextField!.text, "10/3") + let field = self.expiryDateACUITextField?.uiTextField + field!.insertText("10/34") + field!.deleteBackward() + XCTAssertEqual(field!.text, "10/3") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2) @@ -291,7 +296,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertFalse(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -307,13 +312,14 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) // Waiting for configuration to have successfully loaded self.wait(0.5) - self.panUITextField!.insertText("4") + let field = self.panACUITextField?.uiTextField + field!.insertText("4") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1) @@ -328,7 +334,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertEqual(event.body.brand?.images?[1].url, "http://localhost/visa.svg") expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -344,14 +350,15 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) // Waiting for configuration to have successfully loaded self.wait(0.5) - self.panUITextField!.insertText("4") - self.panUITextField!.deleteBackward() + let field = self.panACUITextField?.uiTextField + field!.insertText("4") + field!.deleteBackward() XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2) @@ -361,7 +368,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertNil(event.body.brand) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -376,12 +383,15 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) - self.panUITextField!.insertText("4444333322221111") - self.expiryDateUITextField!.insertText("12/34") - self.cvcUITextField!.insertText("123") + let panField = self.panACUITextField?.uiTextField + panField!.insertText("4444333322221111") + let expiryField = self.expiryDateACUITextField?.uiTextField + expiryField!.insertText("12/34") + let cvcField = self.cvcACUITextField?.uiTextField + cvcField!.insertText("123") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 4) @@ -391,7 +401,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertTrue(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -415,13 +425,14 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { "acceptedCardBrands": ["mastercard"], ] - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) // Waiting for configuration to have successfully loaded self.wait(0.5) - self.panUITextField!.insertText("4444333322221111") + let panField = self.panACUITextField?.uiTextField + panField!.insertText("4444333322221111") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 1) @@ -430,7 +441,7 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { XCTAssertEqual(event.body.type, "brand") expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -452,16 +463,17 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCardValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCardValidation(config: config) { success in XCTAssertTrue(success as! Bool) + let panField = self.panACUITextField?.uiTextField - self.panUITextField!.insertText("44443333") - self.triggerTextFieldDelegate(self.panUITextField!) + panField!.insertText("44443333") + self.triggerTextFieldDelegate(panField!) - XCTAssertEqual(self.panUITextField!.text!, "4444 3333") + XCTAssertEqual(panField!.text, "4444 3333") expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -482,18 +494,4 @@ class AccessCheckoutReactNativeCardValidationAcceptanceTests: XCTestCase { let exp = XCTestCase().expectation(description: "Waiting for \(timeoutInSeconds)") _ = XCTWaiter.wait(for: [exp], timeout: timeoutInSeconds) } - - private class AccessCheckoutReactNativeTestImplementation: AccessCheckoutReactNative { - private(set) var eventsSent: [RCTEventMock] = [] - - override func sendEvent(withName name: String!, body: Any!) { - let eventMock = RCTEventMock(name, bodyDictionary: body as! NSDictionary) - eventsSent.append(eventMock) - } - - // This is required to get the "testShouldFormatPanWhenPanFormattingEnabled" test pass otherwise it fails with an error we have not been able to resolve - override func supportedEvents() -> [String]! { - return ["some-event-type"] - } - } } diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift index b465e2b..c452e79 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests.swift @@ -1,9 +1,10 @@ -import Mockingjay -import React -import XCTest @testable import AccessCheckoutReactNative @testable import AccessCheckoutReactNativeUnitTestsApp +@testable import AccessCheckoutSDK +import Mockingjay +import React +import XCTest class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { private let stubServices = StubServices(baseUrl: "http://localhost") @@ -12,16 +13,16 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { private let storyboard = UIStoryboard(name: "CvcValidationTest", bundle: nil) private var reactNativeViewLocatorMock: ReactNativeViewLocatorMock? private var controller: CvcOnlyValidationTestUIViewController? = nil - private var cvcUITextField: UITextField? = nil - + private var cvcACUITextField: AccessCheckoutUITextField? = nil + override func setUp() { controller = (storyboard.instantiateViewController( withIdentifier: "CvcOnlyValidationTestUIViewController") as! CvcOnlyValidationTestUIViewController) controller!.loadViewIfNeeded() - cvcUITextField = controller!.cvcTextField - reactNativeViewLocatorMock = ReactNativeViewLocatorMock(cvcUITextField: cvcUITextField!) + cvcACUITextField = controller!.cvcTextField + reactNativeViewLocatorMock = ReactNativeViewLocatorMock(cvcView: cvcACUITextField!) } func testShouldReturnAnErrorWhenConfigurationProvidedIsInvalid() { @@ -29,11 +30,11 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { let invalidConfig: NSDictionary = [:] let accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) let expectedError = AccessCheckoutRnIllegalArgumentError.missingCvcId() - - accessCheckoutReactNative.initialiseCvcOnlyValidation(config: invalidConfig) { (success) in + + accessCheckoutReactNative.initialiseCvcOnlyValidation(config: invalidConfig) { _ in XCTFail("validation initialisation should have faild but it didn't") expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTAssertEqual(error as! AccessCheckoutRnIllegalArgumentError, expectedError) expectationToFulfill.fulfill() } @@ -44,15 +45,15 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { func testShouldReturnAnErrorWhenCvcTextFieldNotFound() { let expectationToFulfill = expectation(description: "Error should be returned") let accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) - - reactNativeViewLocatorMock!.cvcUITextField = nil + + reactNativeViewLocatorMock!.cvcView = nil let expectedError = AccessCheckoutRnIllegalArgumentError.cvcTextFieldNotFound( cvcNativeId: "cvc") - accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { _ in XCTFail("validation initialisation should have faild but it didn't") expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTAssertEqual(error as! AccessCheckoutRnIllegalArgumentError, expectedError) expectationToFulfill.fulfill() } @@ -63,11 +64,11 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { func testShouldResolvePromiseWithTrueWhenSuccessfullyInitialised() { let expectationToFulfill = expectation(description: "run test successfully") let accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) - - accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { (success) in + + accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { success in XCTAssertTrue(success as! Bool) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from initialisation \(String(describing: error))" ) @@ -82,10 +83,11 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { success in XCTAssertEqual(true, (success as! Bool)) - self.cvcUITextField!.insertText("123") + let field = self.cvcACUITextField?.uiTextField + field!.insertText("123") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2) @@ -95,7 +97,7 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { XCTAssertTrue(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (_, _, error) in + } reject: { _, _, error in XCTFail( "got an error back from validation: \(String(describing: error))" ) @@ -110,12 +112,13 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { success in XCTAssertTrue(success as! Bool) - self.cvcUITextField!.insertText("123") - self.cvcUITextField!.deleteBackward() - XCTAssertEqual(self.cvcUITextField!.text, "12") + let field = self.cvcACUITextField?.uiTextField + field!.insertText("123") + field!.deleteBackward() + XCTAssertEqual(field!.text, "12") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 3) @@ -125,7 +128,7 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { XCTAssertFalse(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (a, b, c) in + } reject: { a, b, c in XCTFail( "got an error back from validation \(String(describing: a)) \(String(describing: b)) \(String(describing: c))" ) @@ -140,10 +143,11 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { let accessCheckoutReactNative = AccessCheckoutReactNativeTestImplementation( reactNativeViewLocatorMock!) - accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { (success) in + accessCheckoutReactNative.initialiseCvcOnlyValidation(config: config) { success in XCTAssertTrue(success as! Bool) - self.cvcUITextField!.insertText("123") + let field = self.cvcACUITextField?.uiTextField + field!.insertText("123") XCTAssertEqual(accessCheckoutReactNative.eventsSent.count, 2) @@ -153,7 +157,7 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { XCTAssertTrue(event.body.isValid!) expectationToFulfill.fulfill() - } reject: { (a, b, c) in + } reject: { a, b, c in XCTFail( "got an error back from validation \(String(describing: a)) \(String(describing: b)) \(String(describing: c))" ) @@ -174,18 +178,4 @@ class AccessCheckoutReactNativeCvcOnlyValidationAcceptanceTests: XCTestCase { let exp = XCTestCase().expectation(description: "Waiting for \(timeoutInSeconds)") _ = XCTWaiter.wait(for: [exp], timeout: timeoutInSeconds) } - - private class AccessCheckoutReactNativeTestImplementation: AccessCheckoutReactNative { - private(set) var eventsSent: [RCTEventMock] = [] - - override func sendEvent(withName name: String!, body: Any!) { - let eventMock = RCTEventMock(name, bodyDictionary: body as! NSDictionary) - eventsSent.append(eventMock) - } - - // This is required to get the "testShouldRaiseEventWhenAllFieldsBecomeValid" test pass otherwise it fails with an error we have not been able to resolve - override func supportedEvents() -> [String]! { - return ["some-event-type"] - } - } } diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeSessionAcceptanceTests.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeSessionAcceptanceTests.swift index de0a6ca..9495533 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeSessionAcceptanceTests.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutReactNativeSessionAcceptanceTests.swift @@ -5,8 +5,35 @@ import XCTest @testable import AccessCheckoutSDK class AccessCheckoutReactNativeSessionAcceptanceTests: XCTestCase { - let accessCheckoutReactNative = AccessCheckoutReactNative() - let stubServices = StubServices(baseUrl: "http://localhost") + private let stubServices = StubServices(baseUrl: "http://localhost") + + private let storyboard = UIStoryboard(name: "SessionGenerationTest", bundle: nil) + private var reactNativeViewLocatorMock: ReactNativeViewLocatorMock? + private var controller: SessionGenerationTestUIViewController? = nil + private var accessCheckoutReactNative: AccessCheckoutReactNative? = nil + + private var panACUITextField: AccessCheckoutUITextField? = nil + private var expiryDateACUITextField: AccessCheckoutUITextField? = nil + private var cvcACUITextField: AccessCheckoutUITextField? = nil + + override func setUp() { + controller = + (storyboard.instantiateViewController( + withIdentifier: "SessionGenerationTestUIViewController") + as! SessionGenerationTestUIViewController) + controller!.loadViewIfNeeded() + + panACUITextField = controller!.panTextField + expiryDateACUITextField = controller!.expiryDateTextField + cvcACUITextField = controller!.cvcTextField + + reactNativeViewLocatorMock = ReactNativeViewLocatorMock( + panView: panACUITextField!, + expiryDateView: expiryDateACUITextField!, + cvcView: cvcACUITextField!) + + accessCheckoutReactNative = AccessCheckoutReactNative(reactNativeViewLocatorMock!) + } func testShouldSupportGeneratingACardSession() { let stubServices = StubServices(baseUrl: "http://localhost") @@ -18,14 +45,18 @@ class AccessCheckoutReactNativeSessionAcceptanceTests: XCTestCase { let dictionary: NSDictionary = [ "baseUrl": stubServices.baseUrl, "merchantId": "identity", - "panValue": "4444333322221111", - "expiryDateValue": "12/30", - "cvcValue": "123", + "panId": "pan", + "expiryDateId": "expiryDate", + "cvcId": "cvc", "sessionTypes": ["card"], "reactNativeSdkVersion": "1.2.3" ] - accessCheckoutReactNative.generateSessions(config: dictionary) { sessions in + panACUITextField!.text = "4444333322221111" + expiryDateACUITextField!.text = "12/34" + cvcACUITextField!.text = "123" + + accessCheckoutReactNative!.generateSessions(config: dictionary) { sessions in let session = (sessions as! [String: String?])["card"] XCTAssertEqual("my-session", session) expectationToFulfill.fulfill() @@ -47,12 +78,12 @@ class AccessCheckoutReactNativeSessionAcceptanceTests: XCTestCase { let dictionary: NSDictionary = [ "baseUrl": stubServices.baseUrl, "merchantId": "identity", - "cvcValue": "123", + "cvcId": "cvc", "sessionTypes": ["cvc"], "reactNativeSdkVersion": "1.2.3" ] - accessCheckoutReactNative.generateSessions(config: dictionary) { sessions in + accessCheckoutReactNative!.generateSessions(config: dictionary) { sessions in let cvcSession = (sessions as! [String: String?])["cvc"] XCTAssertEqual("my-cvc-session", cvcSession) expectationToFulfill.fulfill() @@ -75,21 +106,25 @@ class AccessCheckoutReactNativeSessionAcceptanceTests: XCTestCase { let dictionary: NSDictionary = [ "baseUrl": stubServices.baseUrl, "merchantId": "identity", - "panValue": "4444333322221111", - "expiryDateValue": "12/30", - "cvcValue": "123", + "cvcId": "cvc", + "panId": "pan", + "expiryDateId": "expiryDate", "sessionTypes": ["card", "cvc"], "reactNativeSdkVersion": "1.2.3" ] - accessCheckoutReactNative.generateSessions(config: dictionary) { sessions in + panACUITextField!.text = "4444333322221111" + expiryDateACUITextField!.text = "12/34" + cvcACUITextField!.text = "123" + + accessCheckoutReactNative!.generateSessions(config: dictionary) { sessions in let session = (sessions as! [String: String?])["card"] let cvcSession = (sessions as! [String: String?])["cvc"] XCTAssertEqual("my-session", session) XCTAssertEqual("my-cvc-session", cvcSession) expectationToFulfill.fulfill() - } reject: { _, _, _ in - XCTFail("got an unexpected error back from stubs") + } reject: { _, message, _ in + XCTFail("got an unexpected error back from stubs: " + message!) expectationToFulfill.fulfill() } @@ -106,12 +141,12 @@ class AccessCheckoutReactNativeSessionAcceptanceTests: XCTestCase { let dictionary: NSDictionary = [ "baseUrl": stubServices.baseUrl, "merchantId": "identity", - "cvcValue": "123", + "cvcId": "cvc", "sessionTypes": ["cvc"], - "reactNativeSdkVersion": "1.2.3", + "reactNativeSdkVersion": "1.2.3" ] - accessCheckoutReactNative.generateSessions(config: dictionary) { _ in + accessCheckoutReactNative!.generateSessions(config: dictionary) { _ in XCTAssertEqual("access-checkout-react-native/1.2.3", WpSdkHeader.value) expectationToFulfill.fulfill() @@ -136,15 +171,19 @@ class AccessCheckoutReactNativeSessionAcceptanceTests: XCTestCase { let dictionary: NSDictionary = [ "baseUrl": stubServices.baseUrl, "merchantId": "identity", - "panValue": "4444333322221111", - "expiryDateValue": "12/30", - "cvcValue": "123", + "panId": "pan", + "expiryDateId": "expiryDate", + "cvcId": "cvc", "sessionTypes": ["card"], "reactNativeSdkVersion": "1.2.3" ] - accessCheckoutReactNative.generateSessions(config: dictionary) { _ in - XCTFail("generating sessions should have faild but it didn't") + panACUITextField!.text = "4444333322221111" + expiryDateACUITextField!.text = "12/34" + cvcACUITextField!.text = "123" + + accessCheckoutReactNative!.generateSessions(config: dictionary) { _ in + XCTFail("generating sessions should have failed but it didn't") expectationToFulfill.fulfill() } reject: { _, _, error in let expectedError = AccessCheckoutError.unexpectedApiError( @@ -160,8 +199,8 @@ class AccessCheckoutReactNativeSessionAcceptanceTests: XCTestCase { let expectationToFulfill = expectation(description: "Error should be returned") let invalidConfig: NSDictionary = [:] - accessCheckoutReactNative.generateSessions(config: invalidConfig) { _ in - XCTFail("generating sessions should have faild but it didn't") + accessCheckoutReactNative!.generateSessions(config: invalidConfig) { _ in + XCTFail("generating sessions should have failed but it didn't") expectationToFulfill.fulfill() } reject: { _, _, error in let expectedError = AccessCheckoutRnIllegalArgumentError.missingBaseUrl() @@ -177,11 +216,11 @@ class AccessCheckoutReactNativeSessionAcceptanceTests: XCTestCase { let invalidConfig: NSDictionary = [ "baseUrl": stubServices.baseUrl, "merchantId": "identity", - "sessionTypes": ["cvc"], + "sessionTypes": ["cvc"] ] - accessCheckoutReactNative.generateSessions(config: invalidConfig) { _ in - XCTFail("generating sessions should have faild but it didn't") + accessCheckoutReactNative!.generateSessions(config: invalidConfig) { _ in + XCTFail("generating sessions should have failed but it didn't") expectationToFulfill.fulfill() } reject: { _, _, error in let expectedError = AccessCheckoutRnIllegalArgumentError.missingCvc() diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutRnIllegalArgumentErrorUnitTests.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutRnIllegalArgumentErrorUnitTests.swift index 85b376d..fd1e489 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutRnIllegalArgumentErrorUnitTests.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/AccessCheckoutRnIllegalArgumentErrorUnitTests.swift @@ -3,7 +3,6 @@ import XCTest @testable import AccessCheckoutReactNative class AccessCheckoutRnIllegalArgumentErrorUnitTests: XCTestCase { - func testLocalizedDescriptionShouldReturnMessage() { let error = AccessCheckoutRnIllegalArgumentError.missingBaseUrl() diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/CardValidationTestUIViewController.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/CardValidationTestUIViewController.swift index 4446157..1281b0b 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/CardValidationTestUIViewController.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/CardValidationTestUIViewController.swift @@ -1,7 +1,8 @@ +import AccessCheckoutSDK import UIKit class CardValidationTestUIViewController: UIViewController { - @IBOutlet weak var panTextField: UITextField! - @IBOutlet weak var expiryDateTextField: UITextField! - @IBOutlet weak var cvcTextField: UITextField! + @IBOutlet var panTextField: AccessCheckoutUITextField! + @IBOutlet var expiryDateTextField: AccessCheckoutUITextField! + @IBOutlet var cvcTextField: AccessCheckoutUITextField! } diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/CvcOnlyValidationTestUIViewController.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/CvcOnlyValidationTestUIViewController.swift index 2a36c02..8618a92 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/CvcOnlyValidationTestUIViewController.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/CvcOnlyValidationTestUIViewController.swift @@ -1,5 +1,6 @@ +import AccessCheckoutSDK import UIKit class CvcOnlyValidationTestUIViewController: UIViewController { - @IBOutlet weak var cvcTextField: UITextField! + @IBOutlet var cvcTextField: AccessCheckoutUITextField! } diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/SessionGenerationTestUIViewController.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/SessionGenerationTestUIViewController.swift new file mode 100644 index 0000000..5fbc1fa --- /dev/null +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/SessionGenerationTestUIViewController.swift @@ -0,0 +1,8 @@ +import AccessCheckoutSDK +import UIKit + +class SessionGenerationTestUIViewController: UIViewController { + @IBOutlet var panTextField: AccessCheckoutUITextField! + @IBOutlet var expiryDateTextField: AccessCheckoutUITextField! + @IBOutlet var cvcTextField: AccessCheckoutUITextField! +} diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/session/GenerateSessionConfigUnitTests.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/session/GenerateSessionConfigUnitTests.swift index 7c4a6df..37ca748 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/session/GenerateSessionConfigUnitTests.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/session/GenerateSessionConfigUnitTests.swift @@ -74,11 +74,11 @@ class GenerateSessionUnitTests: XCTestCase { } } - // MARK: Testing errors related to Pan Value + // MARK: Testing errors related to Pan Id - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndPanValueIsAbsent() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndpanIdIsAbsent() { let dictionary = validCardConfiguration() - dictionary.removeObject(forKey: "panValue") + dictionary.removeObject(forKey: "panId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingPan() @@ -87,9 +87,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndPanValueIsAnEmptyString() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndpanIdIsAnEmptyString() { let dictionary = validCardConfiguration() - dictionary.setValue("", forKey: "panValue") + dictionary.setValue("", forKey: "panId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingPan() @@ -98,9 +98,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndPanValueIsNotAString() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndpanIdIsNotAString() { let dictionary = validCardConfiguration() - dictionary.setValue(1, forKey: "panValue") + dictionary.setValue(1, forKey: "panId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingPan() @@ -109,11 +109,11 @@ class GenerateSessionUnitTests: XCTestCase { } } - // MARK: Testing errors related to Expiry Value + // MARK: Testing errors related to Expiry Date Id - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndExpiryDateValueIsAbsent() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndexpiryDateIdIsAbsent() { let dictionary = validCardConfiguration() - dictionary.removeObject(forKey: "expiryDateValue") + dictionary.removeObject(forKey: "expiryDateId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingExpiryDate() @@ -122,9 +122,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndExpiryDateValueIsAnEmptyString() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndexpiryDateIdIsAnEmptyString() { let dictionary = validCardConfiguration() - dictionary.setValue("", forKey: "expiryDateValue") + dictionary.setValue("", forKey: "expiryDateId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingExpiryDate() @@ -133,9 +133,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndExpiryDateValueIsNotAString() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndexpiryDateIdIsNotAString() { let dictionary = validCardConfiguration() - dictionary.setValue(1, forKey: "expiryDateValue") + dictionary.setValue(1, forKey: "expiryDateId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingExpiryDate() @@ -144,11 +144,11 @@ class GenerateSessionUnitTests: XCTestCase { } } - // MARK: Testing errors related to Cvc Value + // MARK: Testing errors related to Cvc Id - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndCvcValueIsAbsent() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndcvcIdIsAbsent() { let dictionary = validCardConfiguration() - dictionary.removeObject(forKey: "cvcValue") + dictionary.removeObject(forKey: "cvcId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingCvc() @@ -157,9 +157,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndCvcValueIsAnEmptyString() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndcvcIdIsAnEmptyString() { let dictionary = validCardConfiguration() - dictionary.setValue("", forKey: "cvcValue") + dictionary.setValue("", forKey: "cvcId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingCvc() @@ -168,9 +168,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesContainsCardAndCvcValueIsNotAString() { + func testThatErrorIsRaisedWhenSessionTypesContainsCardAndcvcIdIsNotAString() { let dictionary = validCardConfiguration() - dictionary.setValue(1, forKey: "cvcValue") + dictionary.setValue(1, forKey: "cvcId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingCvc() @@ -179,9 +179,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesIsOnlyCvcAndCvcValueIsAbsent() { + func testThatErrorIsRaisedWhenSessionTypesIsOnlyCvcAndcvcIdIsAbsent() { let dictionary = validCvcOnlyConfiguration() - dictionary.removeObject(forKey: "cvcValue") + dictionary.removeObject(forKey: "cvcId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingCvc() @@ -190,9 +190,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesIsOnlyCvcAndCvcValueIsAnEmptyString() { + func testThatErrorIsRaisedWhenSessionTypesIsOnlyCvcAndcvcIdIsAnEmptyString() { let dictionary = validCvcOnlyConfiguration() - dictionary.setValue("", forKey: "cvcValue") + dictionary.setValue("", forKey: "cvcId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingCvc() @@ -201,9 +201,9 @@ class GenerateSessionUnitTests: XCTestCase { } } - func testThatErrorIsRaisedWhenSessionTypesOnlyCvcAndCvcValueIsNotAString() { + func testThatErrorIsRaisedWhenSessionTypesOnlyCvcAndcvcIdIsNotAString() { let dictionary = validCvcOnlyConfiguration() - dictionary.setValue(1, forKey: "cvcValue") + dictionary.setValue(1, forKey: "cvcId") let expectedError = AccessCheckoutRnIllegalArgumentError.missingCvc() @@ -314,9 +314,9 @@ class GenerateSessionUnitTests: XCTestCase { XCTAssertEqual(config.baseUrl, "some-url") XCTAssertEqual(config.merchantId, "some-merchant-id") - XCTAssertEqual(config.panValue, "some-pan") - XCTAssertEqual(config.expiryDateValue, "some-expiry-date") - XCTAssertEqual(config.cvcValue, "some-cvc") + XCTAssertEqual(config.panId, "some-pan-id") + XCTAssertEqual(config.expiryDateId, "some-expiry-date-id") + XCTAssertEqual(config.cvcId, "some-cvc-id") XCTAssertEqual(config.sessionTypes, [SessionType.card]) XCTAssertEqual(config.reactNativeSdkVersion, "some-version") } @@ -328,7 +328,7 @@ class GenerateSessionUnitTests: XCTestCase { XCTAssertEqual(config.baseUrl, "some-url") XCTAssertEqual(config.merchantId, "some-merchant-id") - XCTAssertEqual(config.cvcValue, "some-cvc") + XCTAssertEqual(config.cvcId, "some-cvc-id") XCTAssertEqual(config.sessionTypes, [SessionType.cvc]) XCTAssertEqual(config.reactNativeSdkVersion, "some-version") } @@ -341,9 +341,9 @@ class GenerateSessionUnitTests: XCTestCase { XCTAssertEqual(config.baseUrl, "some-url") XCTAssertEqual(config.merchantId, "some-merchant-id") - XCTAssertEqual(config.panValue, "some-pan") - XCTAssertEqual(config.expiryDateValue, "some-expiry-date") - XCTAssertEqual(config.cvcValue, "some-cvc") + XCTAssertEqual(config.panId, "some-pan-id") + XCTAssertEqual(config.expiryDateId, "some-expiry-date-id") + XCTAssertEqual(config.cvcId, "some-cvc-id") XCTAssertEqual(config.sessionTypes, [SessionType.card, SessionType.cvc]) XCTAssertEqual(config.reactNativeSdkVersion, "some-version") } @@ -356,9 +356,9 @@ class GenerateSessionUnitTests: XCTestCase { XCTAssertEqual(config.baseUrl, "some-url") XCTAssertEqual(config.merchantId, "some-merchant-id") - XCTAssertEqual(config.panValue, "some-pan") - XCTAssertEqual(config.expiryDateValue, "some-expiry-date") - XCTAssertEqual(config.cvcValue, "some-cvc") + XCTAssertEqual(config.panId, "some-pan-id") + XCTAssertEqual(config.expiryDateId, "some-expiry-date-id") + XCTAssertEqual(config.cvcId, "some-cvc-id") XCTAssertEqual(config.sessionTypes, [SessionType.card, SessionType.cvc]) XCTAssertEqual(config.reactNativeSdkVersion, "some-version") } @@ -367,9 +367,9 @@ class GenerateSessionUnitTests: XCTestCase { let dictionary: NSMutableDictionary = [ "baseUrl": "some-url", "merchantId": "some-merchant-id", - "panValue": "some-pan", - "expiryDateValue": "some-expiry-date", - "cvcValue": "some-cvc", + "panId": "some-pan-id", + "expiryDateId": "some-expiry-date-id", + "cvcId": "some-cvc-id", "sessionTypes": ["card"], "reactNativeSdkVersion": "some-version" ] @@ -380,7 +380,7 @@ class GenerateSessionUnitTests: XCTestCase { let dictionary: NSMutableDictionary = [ "baseUrl": "some-url", "merchantId": "some-merchant-id", - "cvcValue": "some-cvc", + "cvcId": "some-cvc-id", "sessionTypes": ["cvc"], "reactNativeSdkVersion": "some-version" ] diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/utils/AccessCheckoutReactNativeTestImplementation.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/utils/AccessCheckoutReactNativeTestImplementation.swift new file mode 100644 index 0000000..eaa64e5 --- /dev/null +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/utils/AccessCheckoutReactNativeTestImplementation.swift @@ -0,0 +1,20 @@ +import AccessCheckoutSDK +import React +import XCTest + +@testable import AccessCheckoutReactNative +@testable import AccessCheckoutReactNativeUnitTestsApp + +public class AccessCheckoutReactNativeTestImplementation: AccessCheckoutReactNative { + private(set) var eventsSent: [RCTEventMock] = [] + + override public func sendEvent(withName name: String!, body: Any!) { + let eventMock = RCTEventMock(name, bodyDictionary: body as! NSDictionary) + eventsSent.append(eventMock) + } + + // This is required to get the "testShouldRaiseEventWhenAllFieldsBecomeValid" test pass otherwise it fails with an error we have not been able to resolve + override public func supportedEvents() -> [String]! { + return ["some-event-type"] + } +} diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/CvcOnlyValidationDelegateRNUnitTests.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/CvcOnlyValidationDelegateRNUnitTests.swift index ec18f18..1c78ac3 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/CvcOnlyValidationDelegateRNUnitTests.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/CvcOnlyValidationDelegateRNUnitTests.swift @@ -4,7 +4,7 @@ import XCTest class CvcOnlyValidationDelegateRNUnitTests: XCTestCase { private let eventEmitter = RCTEventEmitterMock() - + func testShouldEmitEventWhenCvcIsValid() { let delegate = CvcOnlyValidationDelegateRN( eventEmitter: eventEmitter, eventName: "event-name") diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/RCTEventMock.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/RCTEventMock.swift index 464735b..89fb011 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/RCTEventMock.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/RCTEventMock.swift @@ -29,10 +29,10 @@ struct RCTEventMock { var images: [Image]? init(_ dictionary: NSDictionary) { - name = dictionary["name"] as? String + self.name = dictionary["name"] as? String if let imagesDictionary = dictionary["images"] as? [NSDictionary] { - images = [] + self.images = [] for imageDictionary in imagesDictionary { images!.append(Image(imageDictionary)) } diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/ReactNativeViewLocatorMock.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/ReactNativeViewLocatorMock.swift index 9e7eee2..7fc80b9 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/ReactNativeViewLocatorMock.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/ReactNativeViewLocatorMock.swift @@ -1,3 +1,4 @@ +import AccessCheckoutSDK import Foundation import React import UIKit @@ -5,33 +6,33 @@ import UIKit @testable import AccessCheckoutReactNative class ReactNativeViewLocatorMock: ReactNativeViewLocator { - var panUITextField: UITextField? - var expiryDateUITextField: UITextField? - var cvcUITextField: UITextField? + var panView: AccessCheckoutUITextField? + var expiryDateView: AccessCheckoutUITextField? + var cvcView: AccessCheckoutUITextField? init( - panUITextField: UITextField, expiryDateUITextField: UITextField, cvcUITextField: UITextField + panView: AccessCheckoutUITextField, + expiryDateView: AccessCheckoutUITextField, + cvcView: AccessCheckoutUITextField ) { - self.panUITextField = panUITextField - self.expiryDateUITextField = expiryDateUITextField - self.cvcUITextField = cvcUITextField + self.panView = panView + self.expiryDateView = expiryDateView + self.cvcView = cvcView } - init(cvcUITextField: UITextField) { - self.cvcUITextField = cvcUITextField - } - - override init() { - + init(cvcView: AccessCheckoutUITextField) { + self.cvcView = cvcView } - override internal func locateUITextField(id: String) -> UITextField? { + override init() {} + + override internal func locateUITextField(id: String) -> AccessCheckoutUITextField? { if id.contains("pan") { - return panUITextField + return self.panView } else if id.contains("expiryDate") { - return expiryDateUITextField + return self.expiryDateView } else if id.contains("cvc") { - return cvcUITextField + return self.cvcView } return nil diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/ReactNativeViewLocatorUnitTests.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/ReactNativeViewLocatorUnitTests.swift index aea9b00..1056257 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/ReactNativeViewLocatorUnitTests.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTests/validation/ReactNativeViewLocatorUnitTests.swift @@ -1,52 +1,48 @@ +@testable import AccessCheckoutReactNative +import AccessCheckoutSDK import React import XCTest -@testable import AccessCheckoutReactNative - class ReactNativeViewLocatorUnitTests: XCTestCase { private let viewLocator = ReactNativeViewLocator() private let controller = UIViewController() - + func testReturnsUITextFieldWhichIsAnImmediateChild() { - let uiTextFieldToBeFound = RCTUITextField() + let uiTextFieldToBeFound = createAccessCheckoutUITextField(nativeID: "some-id") let view = UIView() view.addSubview(UIView()) - view.addSubview(UITextFieldStub(uiTextFieldToBeFound, nativeID: "some-id")) + view.addSubview(uiTextFieldToBeFound) controller.view = view RCTUtilsUIOverride.setPresentedViewController(controller) - - let locatedView = viewLocator.locateUIView(view: RCTPresentedViewController(), id: "some-id") - - let result = locateUITextFieldFromView(uiView: locatedView) + + let result = viewLocator.locateUIView(view: RCTPresentedViewController(), id: "some-id") XCTAssertEqual(result, uiTextFieldToBeFound) } - + func testReturnsUITextFieldWhichIsAChildOfAChild() { - let uiTextFieldToBeFound = RCTUITextField() + let uiTextFieldToBeFound = createAccessCheckoutUITextField(nativeID: "some-id") let view = UIView() view.addSubview(UIView()) view.addSubview(UIView()) view.subviews[1].addSubview(UIView()) - view.subviews[1].addSubview(UITextFieldStub(uiTextFieldToBeFound, nativeID: "some-id")) + view.subviews[1].addSubview(uiTextFieldToBeFound) controller.view = view RCTUtilsUIOverride.setPresentedViewController(controller) - let locatedView = viewLocator.locateUIView(view: RCTPresentedViewController(), id: "some-id") - - let result = locateUITextFieldFromView(uiView: locatedView) + let result = viewLocator.locateUIView(view: RCTPresentedViewController(), id: "some-id") XCTAssertEqual(result, uiTextFieldToBeFound) } - + func testReturnsNilIfControllerIsNil() { let viewLocator = ReactNativeViewLocator() - + let result = viewLocator.locateUITextField(id: "some-id") XCTAssertNil(result) } - + func testReturnsNilIfControllerHasNoUIComponents() { let viewLocator = ReactNativeViewLocator() let controller = UIViewController() @@ -57,7 +53,7 @@ class ReactNativeViewLocatorUnitTests: XCTestCase { XCTAssertNil(result) } - + func testReturnsNilIfTextFieldWithNativeIDNotFound() { let view = UIView() view.addSubview(UIView()) @@ -71,35 +67,10 @@ class ReactNativeViewLocatorUnitTests: XCTestCase { XCTAssertNil(result) } - - private func locateUITextFieldFromView(uiView: UIView?) -> UITextField? { - return (uiView as? RCTSinglelineTextInputView)?.backedTextInputView as? UITextField - } - - private class UITextFieldStub: RCTSinglelineTextInputView { - private let uiTextField: UIView & RCTBackedTextInputViewProtocol - - override var backedTextInputView: UIView & RCTBackedTextInputViewProtocol { - get { - return uiTextField - } - } - - init(_ uiTextField: RCTUITextField, nativeID:String) { - self.uiTextField = uiTextField - - let rctBridge = RCTBridge( - delegate: RCTBridgeDelegateStub(), - launchOptions: [NSHashTable(): ""] - ) - super.init(bridge: rctBridge!) - super.nativeID = nativeID - } - - private class RCTBridgeDelegateStub: NSObject, RCTBridgeDelegate { - func sourceURL(for bridge: RCTBridge!) -> URL! { - return URL(string: "") - } - } + + private func createAccessCheckoutUITextField(nativeID: String) -> UIView { + let textField = AccessCheckoutUITextField() + textField.nativeID = nativeID + return textField } } diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTestsApp/SessionGenerationTest.storyboard b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTestsApp/SessionGenerationTest.storyboard new file mode 100644 index 0000000..6e733de --- /dev/null +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNativeUnitTestsApp/SessionGenerationTest.storyboard @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/access-checkout-react-native-sdk/ios/bitrise.yml b/access-checkout-react-native-sdk/ios/bitrise.yml index a1e5208..389c565 100644 --- a/access-checkout-react-native-sdk/ios/bitrise.yml +++ b/access-checkout-react-native-sdk/ios/bitrise.yml @@ -17,7 +17,7 @@ workflows: - recreate-user-schemes@1: inputs: - project_path: "$BITRISE_SOURCE_DIR/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj" - - xcode-test@4: + - xcode-test@5: inputs: - scheme: AccessCheckoutReactNative - destination: "platform=iOS Simulator,name=iPhone 12 Pro,OS=latest" diff --git a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js index e619a00..7e000f5 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js +++ b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js @@ -27,14 +27,14 @@ class AccessCheckout { this.baseUrl = baseUrl; this.merchantId = merchantId; } - generateSessions(cardDetails, sessionTypes) { + generateSessions(sessionGenerationConfig, sessionTypes) { return new Promise((resolve, reject) => { _AccessCheckoutReactNative.AccessCheckoutReactNative.generateSessions({ baseUrl: this.baseUrl, merchantId: this.merchantId, - panValue: cardDetails.pan, - expiryDateValue: cardDetails.expiryDate, - cvcValue: cardDetails.cvc, + panId: sessionGenerationConfig.panId, + expiryDateId: sessionGenerationConfig.expiryDateId, + cvcId: sessionGenerationConfig.cvcId, sessionTypes, reactNativeSdkVersion: this.ReactNativeSdkVersion }) diff --git a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map index 3ebb424..37f1435 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","cardDetails","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panValue","pan","expiryDateValue","expiryDate","cvcValue","cvc","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","catch","error","initialiseCardValidation","validationConfig","panId","expiryDateId","cvcId","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardDetails from './session/CardDetails';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Sessions from './session/Sessions';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardValidationConfig from './validation/CardValidationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig';\n\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.1';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n cardDetails: CardDetails,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panValue: cardDetails.pan,\n expiryDateValue: cardDetails.expiryDate,\n cvcValue: cardDetails.cvc,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: CardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: CvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AACxE;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAGe,MAAMU,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAA1B,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACyB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,WAAwB,EACxBC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,QAAQ,EAAEN,WAAW,CAACO,GAAG;QACzBC,eAAe,EAAER,WAAW,CAACS,UAAU;QACvCC,QAAQ,EAAEV,WAAW,CAACW,GAAG;QACzBV,YAAY;QACZW,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACJ,GAAG,EAAE;UACtBK,QAAQ,CAACL,GAAG,GAAGI,cAAc,CAACJ,GAAG;QACnC;QAEAR,OAAO,CAACa,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCE,KAAK,CAAEC,KAAU,IAAK;QACrBf,MAAM,CAACe,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAsC,EACpB;IAClB,OAAO,IAAInB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACe,wBAAwB,CAAC;QACjDvB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrByB,KAAK,EAAED,gBAAgB,CAACC,KAAK;QAC7BC,YAAY,EAAEF,gBAAgB,CAACE,YAAY;QAC3CC,KAAK,EAAEH,gBAAgB,CAACG,KAAK;QAC7BC,mBAAmB,EAAEJ,gBAAgB,CAACI,mBAAmB;QACzDC,kBAAkB,EAAEL,gBAAgB,CAACK;MACvC,CAAC,CAAC,CACCZ,IAAI,CAAC,MAAM;QACVX,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCe,KAAK,CAAEC,KAAU,IAAK;QACrBf,MAAM,CAACe,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAQ,2BAA2BA,CACzBN,gBAAyC,EACvB;IAClB,OAAO,IAAInB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACsB,2BAA2B,CAAC;QACpDH,KAAK,EAAEH,gBAAgB,CAACG;MAC1B,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVX,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCe,KAAK,CAAEC,KAAU,IAAK;QACrBf,MAAM,CAACe,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACS,OAAA,CAAAC,OAAA,GAAAlC,cAAA;AAAAvB,eAAA,CA3FoBuB,cAAc,6BAES,mCAAmC;AAAAvB,eAAA,CAF1DuB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport SessionGenerationConfig from './session/SessionGenerationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Sessions from './session/Sessions';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardValidationConfig from './validation/CardValidationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig';\n\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: CardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: CvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AACxE;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAGe,MAAMU,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAA1B,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACyB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAsC,EACpB;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAyC,EACvB;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAAvB,eAAA,CA3FoBuB,cAAc,6BAES,mCAAmC;AAAAvB,eAAA,CAF1DuB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js b/access-checkout-react-native-sdk/lib/commonjs/index.js index 713c219..ca55287 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js @@ -33,12 +33,6 @@ Object.defineProperty(exports, "CVC", { return _SessionType.CVC; } }); -Object.defineProperty(exports, "CardDetails", { - enumerable: true, - get: function () { - return _CardDetails.default; - } -}); Object.defineProperty(exports, "CardValidationConfig", { enumerable: true, get: function () { @@ -63,6 +57,12 @@ Object.defineProperty(exports, "CvcOnlyValidationEventListener", { return _CvcOnlyValidationEventListener.CvcOnlyValidationEventListener; } }); +Object.defineProperty(exports, "SessionGenerationConfig", { + enumerable: true, + get: function () { + return _SessionGenerationConfig.default; + } +}); Object.defineProperty(exports, "SessionType", { enumerable: true, get: function () { @@ -102,7 +102,7 @@ Object.defineProperty(exports, "useCvcOnlyValidation", { }); var _AccessCheckoutReactNative = _interopRequireDefault(require("./AccessCheckoutReactNative")); var _AccessCheckout = _interopRequireDefault(require("./AccessCheckout")); -var _CardDetails = _interopRequireDefault(require("./session/CardDetails")); +var _SessionGenerationConfig = _interopRequireDefault(require("./session/SessionGenerationConfig")); var _SessionType = _interopRequireWildcard(require("./session/SessionType")); var _Sessions = _interopRequireDefault(require("./session/Sessions")); var _CardValidationConfig = _interopRequireDefault(require("./validation/CardValidationConfig")); diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js.map b/access-checkout-react-native-sdk/lib/commonjs/index.js.map index a528917..256ef7d 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_CardDetails","_SessionType","_interopRequireWildcard","_Sessions","_CardValidationConfig","_CvcOnlyValidationConfig","_Brand","_BrandImage","_CardValidationEventListener","_CvcOnlyValidationEventListener","_CardValidationHooks","_CvcOnlyValidationHooks","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as CardDetails } from './session/CardDetails';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\n\nexport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from './validation/CardValidationEventListener';\n\nexport {\n CvcOnlyValidationEventListener,\n cvcOnlyValidationNativeEventListenerOf,\n} from './validation/CvcOnlyValidationEventListener';\n\nexport { useCardValidation } from './validation/CardValidationHooks';\nexport { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,YAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,qBAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,wBAAA,GAAAR,sBAAA,CAAAC,OAAA;AAEA,IAAAQ,MAAA,GAAAT,sBAAA,CAAAC,OAAA;AAEA,IAAAS,WAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AAKA,IAAAW,+BAAA,GAAAX,OAAA;AAKA,IAAAY,oBAAA,GAAAZ,OAAA;AACA,IAAAa,uBAAA,GAAAb,OAAA;AAA2E,SAAAc,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAX,wBAAAW,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAxB,uBAAAoC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GA7B5DkB,kCAAyB"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_CardValidationConfig","_CvcOnlyValidationConfig","_Brand","_BrandImage","_CardValidationEventListener","_CvcOnlyValidationEventListener","_CardValidationHooks","_CvcOnlyValidationHooks","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\n\nexport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from './validation/CardValidationEventListener';\n\nexport {\n CvcOnlyValidationEventListener,\n cvcOnlyValidationNativeEventListenerOf,\n} from './validation/CvcOnlyValidationEventListener';\n\nexport { useCardValidation } from './validation/CardValidationHooks';\nexport { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,qBAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,wBAAA,GAAAR,sBAAA,CAAAC,OAAA;AAEA,IAAAQ,MAAA,GAAAT,sBAAA,CAAAC,OAAA;AAEA,IAAAS,WAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AAKA,IAAAW,+BAAA,GAAAX,OAAA;AAKA,IAAAY,oBAAA,GAAAZ,OAAA;AACA,IAAAa,uBAAA,GAAAb,OAAA;AAA2E,SAAAc,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAX,wBAAAW,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAxB,uBAAAoC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GA7B5DkB,kCAAyB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/session/CardDetails.js b/access-checkout-react-native-sdk/lib/commonjs/session/CardDetails.js deleted file mode 100644 index a59ae2a..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/session/CardDetails.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -//# sourceMappingURL=CardDetails.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/session/CardDetails.js.map b/access-checkout-react-native-sdk/lib/commonjs/session/CardDetails.js.map deleted file mode 100644 index 391944c..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/session/CardDetails.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":[],"sources":["CardDetails.tsx"],"sourcesContent":["export default interface CardDetails {\n pan?: string;\n expiryDate?: string;\n cvc: string;\n}\n"],"mappings":""} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/session/SessionGenerationConfig.js b/access-checkout-react-native-sdk/lib/commonjs/session/SessionGenerationConfig.js new file mode 100644 index 0000000..08c141c --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/session/SessionGenerationConfig.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=SessionGenerationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/session/SessionGenerationConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/session/SessionGenerationConfig.js.map new file mode 100644 index 0000000..2309d75 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/session/SessionGenerationConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sources":["SessionGenerationConfig.ts"],"sourcesContent":["export default interface SessionGenerationConfig {\n panId?: string;\n expiryDateId?: string;\n cvcId: string;\n}\n"],"mappings":""} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js new file mode 100644 index 0000000..1e77c39 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _react = _interopRequireDefault(require("react")); +var _reactNative = require("react-native"); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/** + * Composes `AccessCheckoutTextInput`. + * + * - nativeID: string + * - testID: string + * - style: StyleProp + * - editable: boolean + * - placeholder: string + */ + +const RTCAccessCheckoutTextInput = (0, _reactNative.requireNativeComponent)('AccessCheckoutTextInput'); +const AccessCheckoutTextInput = props => { + return /*#__PURE__*/_react.default.createElement(RTCAccessCheckoutTextInput, props); +}; +var _default = exports.default = AccessCheckoutTextInput; +//# sourceMappingURL=AccessCheckoutTextInput.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map new file mode 100644 index 0000000..7899b6c --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","createElement","_default","exports"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n StyleProp,\n TextStyle,\n type ViewProps,\n} from 'react-native';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp\n * - editable: boolean\n * - placeholder: string\n */\ninterface AccessCheckoutTextInputProps extends ViewProps {\n testID: string | undefined;\n style?: StyleProp;\n editable?: boolean | undefined;\n placeholder?: string | undefined;\n isValid?: boolean;\n keyboardType?: string;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n return ;\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAKsB,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,MAAMG,0BAA0B,GAC9B,IAAAC,mCAAsB,EACpB,yBACF,CAAC;AACH,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,oBAAOV,MAAA,CAAAM,OAAA,CAAAK,aAAA,CAACJ,0BAA0B,EAAKG,KAAQ,CAAC;AAClD,CAAC;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAP,OAAA,GAEaG,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js index 4c35852..bba383a 100644 --- a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js +++ b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js @@ -21,14 +21,14 @@ export default class AccessCheckout { this.baseUrl = baseUrl; this.merchantId = merchantId; } - generateSessions(cardDetails, sessionTypes) { + generateSessions(sessionGenerationConfig, sessionTypes) { return new Promise((resolve, reject) => { AccessCheckoutReactNative.generateSessions({ baseUrl: this.baseUrl, merchantId: this.merchantId, - panValue: cardDetails.pan, - expiryDateValue: cardDetails.expiryDate, - cvcValue: cardDetails.cvc, + panId: sessionGenerationConfig.panId, + expiryDateId: sessionGenerationConfig.expiryDateId, + cvcId: sessionGenerationConfig.cvcId, sessionTypes, reactNativeSdkVersion: this.ReactNativeSdkVersion }) diff --git a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map index 58d47d2..a9c8fa3 100644 --- a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","AccessCheckout","constructor","baseUrl","merchantId","_defineProperty","generateSessions","cardDetails","sessionTypes","Promise","resolve","reject","panValue","pan","expiryDateValue","expiryDate","cvcValue","cvc","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","catch","error","initialiseCardValidation","validationConfig","panId","expiryDateId","cvcId","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardDetails from './session/CardDetails';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Sessions from './session/Sessions';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardValidationConfig from './validation/CardValidationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig';\n\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.1';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n cardDetails: CardDetails,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panValue: cardDetails.pan,\n expiryDateValue: cardDetails.expiryDate,\n cvcValue: cardDetails.cvc,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: CardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: CvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;AAAA,SAASA,yBAAyB,QAAQ,6BAA6B;AACvE;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAGA,eAAe,MAAMC,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAC,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAE,gBAAgBA,CACdC,WAAwB,EACxBC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACM,gBAAgB,CAAC;QACzCH,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,QAAQ,EAAEL,WAAW,CAACM,GAAG;QACzBC,eAAe,EAAEP,WAAW,CAACQ,UAAU;QACvCC,QAAQ,EAAET,WAAW,CAACU,GAAG;QACzBT,YAAY;QACZU,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACJ,GAAG,EAAE;UACtBK,QAAQ,CAACL,GAAG,GAAGI,cAAc,CAACJ,GAAG;QACnC;QAEAP,OAAO,CAACY,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCE,KAAK,CAAEC,KAAU,IAAK;QACrBd,MAAM,CAACc,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAsC,EACpB;IAClB,OAAO,IAAIlB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAAC0B,wBAAwB,CAAC;QACjDvB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrByB,KAAK,EAAED,gBAAgB,CAACC,KAAK;QAC7BC,YAAY,EAAEF,gBAAgB,CAACE,YAAY;QAC3CC,KAAK,EAAEH,gBAAgB,CAACG,KAAK;QAC7BC,mBAAmB,EAAEJ,gBAAgB,CAACI,mBAAmB;QACzDC,kBAAkB,EAAEL,gBAAgB,CAACK;MACvC,CAAC,CAAC,CACCZ,IAAI,CAAC,MAAM;QACVV,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCc,KAAK,CAAEC,KAAU,IAAK;QACrBd,MAAM,CAACc,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAQ,2BAA2BA,CACzBN,gBAAyC,EACvB;IAClB,OAAO,IAAIlB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACiC,2BAA2B,CAAC;QACpDH,KAAK,EAAEH,gBAAgB,CAACG;MAC1B,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVV,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCc,KAAK,CAAEC,KAAU,IAAK;QACrBd,MAAM,CAACc,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACpB,eAAA,CA3FoBJ,cAAc,6BAES,mCAAmC;AAAAI,eAAA,CAF1DJ,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","AccessCheckout","constructor","baseUrl","merchantId","_defineProperty","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport SessionGenerationConfig from './session/SessionGenerationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Sessions from './session/Sessions';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardValidationConfig from './validation/CardValidationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig';\n\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: CardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: CvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;AAAA,SAASA,yBAAyB,QAAQ,6BAA6B;AACvE;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAGA,eAAe,MAAMC,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAC,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAE,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACM,gBAAgB,CAAC;QACzCH,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEL,uBAAuB,CAACK,KAAK;QACpCC,YAAY,EAAEN,uBAAuB,CAACM,YAAY;QAClDC,KAAK,EAAEP,uBAAuB,CAACO,KAAK;QACpCN,YAAY;QACZO,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAX,OAAO,CAACS,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAsC,EACpB;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACwB,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAyC,EACvB;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAAC4B,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAAClB,eAAA,CA3FoBJ,cAAc,6BAES,mCAAmC;AAAAI,eAAA,CAF1DJ,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js b/access-checkout-react-native-sdk/lib/module/index.js index a3c8056..a4f0794 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js +++ b/access-checkout-react-native-sdk/lib/module/index.js @@ -1,7 +1,7 @@ import AccessCheckoutReactNative from './AccessCheckoutReactNative'; export default AccessCheckoutReactNative; export { default as AccessCheckout } from './AccessCheckout'; -export { default as CardDetails } from './session/CardDetails'; +export { default as SessionGenerationConfig } from './session/SessionGenerationConfig'; export { default as SessionType, CARD, CVC } from './session/SessionType'; export { default as Sessions } from './session/Sessions'; export { default as CardValidationConfig } from './validation/CardValidationConfig'; diff --git a/access-checkout-react-native-sdk/lib/module/index.js.map b/access-checkout-react-native-sdk/lib/module/index.js.map index 382b820..7613935 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js.map +++ b/access-checkout-react-native-sdk/lib/module/index.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","CardDetails","SessionType","CARD","CVC","Sessions","CardValidationConfig","CvcOnlyValidationConfig","Brand","BrandImage","CardValidationEventListener","cardValidationNativeEventListenerOf","CvcOnlyValidationEventListener","cvcOnlyValidationNativeEventListenerOf","useCardValidation","useCvcOnlyValidation"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as CardDetails } from './session/CardDetails';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\n\nexport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from './validation/CardValidationEventListener';\n\nexport {\n CvcOnlyValidationEventListener,\n cvcOnlyValidationNativeEventListenerOf,\n} from './validation/CvcOnlyValidationEventListener';\n\nexport { useCardValidation } from './validation/CardValidationHooks';\nexport { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,WAAW,QAAQ,uBAAuB;AAE9D,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,oBAAoB,QAAQ,mCAAmC;AAEnF,SAASP,OAAO,IAAIQ,uBAAuB,QAAQ,sCAAsC;AAEzF,SAASR,OAAO,IAAIS,KAAK,QAAQ,oBAAoB;AAErD,SAAST,OAAO,IAAIU,UAAU,QAAQ,yBAAyB;AAE/D,SACEC,2BAA2B,EAC3BC,mCAAmC,QAC9B,0CAA0C;AAEjD,SACEC,8BAA8B,EAC9BC,sCAAsC,QACjC,6CAA6C;AAEpD,SAASC,iBAAiB,QAAQ,kCAAkC;AACpE,SAASC,oBAAoB,QAAQ,qCAAqC"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","CardValidationConfig","CvcOnlyValidationConfig","Brand","BrandImage","CardValidationEventListener","cardValidationNativeEventListenerOf","CvcOnlyValidationEventListener","cvcOnlyValidationNativeEventListenerOf","useCardValidation","useCvcOnlyValidation"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\n\nexport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from './validation/CardValidationEventListener';\n\nexport {\n CvcOnlyValidationEventListener,\n cvcOnlyValidationNativeEventListenerOf,\n} from './validation/CvcOnlyValidationEventListener';\n\nexport { useCardValidation } from './validation/CardValidationHooks';\nexport { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,oBAAoB,QAAQ,mCAAmC;AAEnF,SAASP,OAAO,IAAIQ,uBAAuB,QAAQ,sCAAsC;AAEzF,SAASR,OAAO,IAAIS,KAAK,QAAQ,oBAAoB;AAErD,SAAST,OAAO,IAAIU,UAAU,QAAQ,yBAAyB;AAE/D,SACEC,2BAA2B,EAC3BC,mCAAmC,QAC9B,0CAA0C;AAEjD,SACEC,8BAA8B,EAC9BC,sCAAsC,QACjC,6CAA6C;AAEpD,SAASC,iBAAiB,QAAQ,kCAAkC;AACpE,SAASC,oBAAoB,QAAQ,qCAAqC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/session/CardDetails.js b/access-checkout-react-native-sdk/lib/module/session/CardDetails.js deleted file mode 100644 index 5ae9048..0000000 --- a/access-checkout-react-native-sdk/lib/module/session/CardDetails.js +++ /dev/null @@ -1,2 +0,0 @@ - -//# sourceMappingURL=CardDetails.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/session/CardDetails.js.map b/access-checkout-react-native-sdk/lib/module/session/CardDetails.js.map deleted file mode 100644 index 391944c..0000000 --- a/access-checkout-react-native-sdk/lib/module/session/CardDetails.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":[],"sources":["CardDetails.tsx"],"sourcesContent":["export default interface CardDetails {\n pan?: string;\n expiryDate?: string;\n cvc: string;\n}\n"],"mappings":""} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/session/SessionGenerationConfig.js b/access-checkout-react-native-sdk/lib/module/session/SessionGenerationConfig.js new file mode 100644 index 0000000..3c54131 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/session/SessionGenerationConfig.js @@ -0,0 +1,2 @@ + +//# sourceMappingURL=SessionGenerationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/session/SessionGenerationConfig.js.map b/access-checkout-react-native-sdk/lib/module/session/SessionGenerationConfig.js.map new file mode 100644 index 0000000..2309d75 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/session/SessionGenerationConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":[],"sources":["SessionGenerationConfig.ts"],"sourcesContent":["export default interface SessionGenerationConfig {\n panId?: string;\n expiryDateId?: string;\n cvcId: string;\n}\n"],"mappings":""} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js new file mode 100644 index 0000000..719d8f0 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js @@ -0,0 +1,19 @@ +import React from 'react'; +import { requireNativeComponent } from 'react-native'; + +/** + * Composes `AccessCheckoutTextInput`. + * + * - nativeID: string + * - testID: string + * - style: StyleProp + * - editable: boolean + * - placeholder: string + */ + +const RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput'); +const AccessCheckoutTextInput = props => { + return /*#__PURE__*/React.createElement(RTCAccessCheckoutTextInput, props); +}; +export default AccessCheckoutTextInput; +//# sourceMappingURL=AccessCheckoutTextInput.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map new file mode 100644 index 0000000..0e162c1 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map @@ -0,0 +1 @@ +{"version":3,"names":["React","requireNativeComponent","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","createElement"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n StyleProp,\n TextStyle,\n type ViewProps,\n} from 'react-native';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp\n * - editable: boolean\n * - placeholder: string\n */\ninterface AccessCheckoutTextInputProps extends ViewProps {\n testID: string | undefined;\n style?: StyleProp;\n editable?: boolean | undefined;\n placeholder?: string | undefined;\n isValid?: boolean;\n keyboardType?: string;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n return ;\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,sBAAsB,QAIjB,cAAc;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,MAAMC,0BAA0B,GAC9BD,sBAAsB,CACpB,yBACF,CAAC;AACH,MAAME,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,oBAAOJ,KAAA,CAAAK,aAAA,CAACH,0BAA0B,EAAKE,KAAQ,CAAC;AAClD,CAAC;AAED,eAAeD,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts b/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts index aad9025..6a8581d 100644 --- a/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts @@ -1,4 +1,4 @@ -import CardDetails from './session/CardDetails'; +import SessionGenerationConfig from './session/SessionGenerationConfig'; import Sessions from './session/Sessions'; import CardValidationConfig from './validation/CardValidationConfig'; import CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig'; @@ -12,7 +12,7 @@ export default class AccessCheckout { baseUrl: string; merchantId?: string; }); - generateSessions(cardDetails: CardDetails, sessionTypes: string[]): Promise; + generateSessions(sessionGenerationConfig: SessionGenerationConfig, sessionTypes: string[]): Promise; initialiseCardValidation(validationConfig: CardValidationConfig): Promise; initialiseCvcOnlyValidation(validationConfig: CvcOnlyValidationConfig): Promise; } diff --git a/access-checkout-react-native-sdk/lib/typescript/index.d.ts b/access-checkout-react-native-sdk/lib/typescript/index.d.ts index 2f40af9..18713d1 100644 --- a/access-checkout-react-native-sdk/lib/typescript/index.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/index.d.ts @@ -1,7 +1,7 @@ import AccessCheckoutReactNative from './AccessCheckoutReactNative'; export default AccessCheckoutReactNative; export { default as AccessCheckout } from './AccessCheckout'; -export { default as CardDetails } from './session/CardDetails'; +export { default as SessionGenerationConfig } from './session/SessionGenerationConfig'; export { default as SessionType, CARD, CVC } from './session/SessionType'; export { default as Sessions } from './session/Sessions'; export { default as CardValidationConfig } from './validation/CardValidationConfig'; diff --git a/access-checkout-react-native-sdk/lib/typescript/session/CardDetails.d.ts b/access-checkout-react-native-sdk/lib/typescript/session/CardDetails.d.ts deleted file mode 100644 index 2096b9c..0000000 --- a/access-checkout-react-native-sdk/lib/typescript/session/CardDetails.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default interface CardDetails { - pan?: string; - expiryDate?: string; - cvc: string; -} diff --git a/access-checkout-react-native-sdk/lib/typescript/session/SessionGenerationConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/session/SessionGenerationConfig.d.ts new file mode 100644 index 0000000..4609624 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/session/SessionGenerationConfig.d.ts @@ -0,0 +1,5 @@ +export default interface SessionGenerationConfig { + panId?: string; + expiryDateId?: string; + cvcId: string; +} diff --git a/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts b/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts new file mode 100644 index 0000000..5b94786 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts @@ -0,0 +1,21 @@ +import React from 'react'; +import { StyleProp, TextStyle, type ViewProps } from 'react-native'; +/** + * Composes `AccessCheckoutTextInput`. + * + * - nativeID: string + * - testID: string + * - style: StyleProp + * - editable: boolean + * - placeholder: string + */ +interface AccessCheckoutTextInputProps extends ViewProps { + testID: string | undefined; + style?: StyleProp; + editable?: boolean | undefined; + placeholder?: string | undefined; + isValid?: boolean; + keyboardType?: string; +} +declare const AccessCheckoutTextInput: (props: AccessCheckoutTextInputProps) => React.JSX.Element; +export default AccessCheckoutTextInput; diff --git a/access-checkout-react-native-sdk/src/AccessCheckout.tsx b/access-checkout-react-native-sdk/src/AccessCheckout.tsx index 832187c..33529ba 100644 --- a/access-checkout-react-native-sdk/src/AccessCheckout.tsx +++ b/access-checkout-react-native-sdk/src/AccessCheckout.tsx @@ -1,7 +1,7 @@ import { AccessCheckoutReactNative } from './AccessCheckoutReactNative'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -import CardDetails from './session/CardDetails'; +import SessionGenerationConfig from './session/SessionGenerationConfig'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import Sessions from './session/Sessions'; @@ -33,16 +33,16 @@ export default class AccessCheckout { } generateSessions( - cardDetails: CardDetails, + sessionGenerationConfig: SessionGenerationConfig, sessionTypes: string[] ): Promise { return new Promise((resolve, reject) => { AccessCheckoutReactNative.generateSessions({ baseUrl: this.baseUrl, merchantId: this.merchantId, - panValue: cardDetails.pan, - expiryDateValue: cardDetails.expiryDate, - cvcValue: cardDetails.cvc, + panId: sessionGenerationConfig.panId, + expiryDateId: sessionGenerationConfig.expiryDateId, + cvcId: sessionGenerationConfig.cvcId, sessionTypes, reactNativeSdkVersion: this.ReactNativeSdkVersion, }) diff --git a/access-checkout-react-native-sdk/src/index.tsx b/access-checkout-react-native-sdk/src/index.tsx index 5c1a4b6..183518f 100644 --- a/access-checkout-react-native-sdk/src/index.tsx +++ b/access-checkout-react-native-sdk/src/index.tsx @@ -4,7 +4,7 @@ export default AccessCheckoutReactNative; export { default as AccessCheckout } from './AccessCheckout'; -export { default as CardDetails } from './session/CardDetails'; +export { default as SessionGenerationConfig } from './session/SessionGenerationConfig'; export { default as SessionType, CARD, CVC } from './session/SessionType'; diff --git a/access-checkout-react-native-sdk/src/session/CardDetails.tsx b/access-checkout-react-native-sdk/src/session/CardDetails.tsx deleted file mode 100644 index bb19095..0000000 --- a/access-checkout-react-native-sdk/src/session/CardDetails.tsx +++ /dev/null @@ -1,5 +0,0 @@ -export default interface CardDetails { - pan?: string; - expiryDate?: string; - cvc: string; -} diff --git a/access-checkout-react-native-sdk/src/session/SessionGenerationConfig.ts b/access-checkout-react-native-sdk/src/session/SessionGenerationConfig.ts new file mode 100644 index 0000000..cd62dc3 --- /dev/null +++ b/access-checkout-react-native-sdk/src/session/SessionGenerationConfig.ts @@ -0,0 +1,5 @@ +export default interface SessionGenerationConfig { + panId?: string; + expiryDateId?: string; + cvcId: string; +} diff --git a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx new file mode 100644 index 0000000..c048029 --- /dev/null +++ b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { + requireNativeComponent, + StyleProp, + TextStyle, + type ViewProps, +} from 'react-native'; + +/** + * Composes `AccessCheckoutTextInput`. + * + * - nativeID: string + * - testID: string + * - style: StyleProp + * - editable: boolean + * - placeholder: string + */ +interface AccessCheckoutTextInputProps extends ViewProps { + testID: string | undefined; + style?: StyleProp; + editable?: boolean | undefined; + placeholder?: string | undefined; + isValid?: boolean; + keyboardType?: string; +} + +const RTCAccessCheckoutTextInput = + requireNativeComponent( + 'AccessCheckoutTextInput' + ); +const AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => { + return ; +}; + +export default AccessCheckoutTextInput; diff --git a/access-checkout-react-native-sdk/test/AccessCheckout.spec.ts b/access-checkout-react-native-sdk/test/AccessCheckout.spec.ts index fa2b21b..7f35596 100644 --- a/access-checkout-react-native-sdk/test/AccessCheckout.spec.ts +++ b/access-checkout-react-native-sdk/test/AccessCheckout.spec.ts @@ -19,9 +19,6 @@ import { const baseUrl = 'https://access.worldpay.com'; const merchantId = '123'; -const pan = '4444'; -const expiryDate = '12/34'; -const cvc = '123'; const panId = 'panId'; const expiryDateId = 'expiryDateId'; @@ -60,13 +57,18 @@ describe('AccessCheckout', () => { const checkout = new AccessCheckout({ baseUrl, merchantId }); describe('independently of the type of session', () => { - const cardDetails = { pan, expiryDate, cvc }; + const sessionGenerationConfig = new CardValidationConfig({ + panId, + expiryDateId, + cvcId, + }); + const sessionTypes = [SessionType.CARD, SessionType.CVC]; it('passes the SDK version to the React Native bridge', async () => { givenGenerateSessionsBridgeReturns({}); - await checkout.generateSessions(cardDetails, sessionTypes); + await checkout.generateSessions(sessionGenerationConfig, sessionTypes); const bridgeMock = NativeModules.AccessCheckoutReactNative.generateSessions.mock; @@ -80,7 +82,10 @@ describe('AccessCheckout', () => { givenGenerateSessionsBridgeFailsWith(new Error('Failed !')); try { - await checkout.generateSessions(cardDetails, sessionTypes); + await checkout.generateSessions( + sessionGenerationConfig, + sessionTypes + ); } catch (error) { expect(error).toEqual(new Error('Failed !')); } @@ -88,7 +93,11 @@ describe('AccessCheckout', () => { }); describe('for card only', () => { - const cardDetails = { pan, expiryDate, cvc }; + const sessionGenerationConfig = new CardValidationConfig({ + panId, + expiryDateId, + cvcId, + }); const sessionTypes = [SessionType.CARD]; it('returns a resolved promise with a sessions object containing only a card session when bridge successfully generates a session', async () => { @@ -97,7 +106,7 @@ describe('AccessCheckout', () => { }); const result: Sessions = await checkout.generateSessions( - cardDetails, + sessionGenerationConfig, sessionTypes ); @@ -109,13 +118,17 @@ describe('AccessCheckout', () => { }); describe('for card and cvc', () => { - const cardDetails = { pan, expiryDate, cvc }; + const sessionGenerationConfig = new CardValidationConfig({ + panId, + expiryDateId, + cvcId, + }); const sessionTypes = [SessionType.CARD, SessionType.CVC]; it('delegates the generation of sessions to the React Native bridge', async () => { givenGenerateSessionsBridgeReturns({}); - await checkout.generateSessions(cardDetails, sessionTypes); + await checkout.generateSessions(sessionGenerationConfig, sessionTypes); const bridgeMock = NativeModules.AccessCheckoutReactNative.generateSessions.mock; @@ -125,9 +138,9 @@ describe('AccessCheckout', () => { expect(args).toEqual({ baseUrl, merchantId, - panValue: pan, - expiryDateValue: expiryDate, - cvcValue: cvc, + panId: panId, + expiryDateId: expiryDateId, + cvcId: cvcId, sessionTypes: ['CARD', 'CVC'], reactNativeSdkVersion: packageDotJson.version, }); @@ -140,7 +153,7 @@ describe('AccessCheckout', () => { }); const result: Sessions = await checkout.generateSessions( - cardDetails, + sessionGenerationConfig, sessionTypes ); @@ -152,13 +165,15 @@ describe('AccessCheckout', () => { }); describe('for cvc only', () => { - const cardDetails = { cvc }; + const sessionGenerationConfig = new CvcOnlyValidationConfig({ + cvcId, + }); const sessionType = [CVC]; it('delegates the generation of a cvc session to the React Native bridge', async () => { givenGenerateSessionsBridgeReturns({}); - await checkout.generateSessions(cardDetails, sessionType); + await checkout.generateSessions(sessionGenerationConfig, sessionType); const bridgeMock = NativeModules.AccessCheckoutReactNative.generateSessions.mock; @@ -169,7 +184,7 @@ describe('AccessCheckout', () => { expect(args).toEqual({ baseUrl, merchantId, - cvcValue: cvc, + cvcId: cvcId, sessionTypes: ['CVC'], reactNativeSdkVersion: packageDotJson.version, }); @@ -181,7 +196,7 @@ describe('AccessCheckout', () => { }); const result: Sessions = await checkout.generateSessions( - cardDetails, + sessionGenerationConfig, sessionType ); diff --git a/access-checkout-react-native-sdk/test/session/CardDetails.spec.ts b/access-checkout-react-native-sdk/test/session/CardDetails.spec.ts deleted file mode 100644 index 20236cf..0000000 --- a/access-checkout-react-native-sdk/test/session/CardDetails.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type CardDetails from '../../src/session/CardDetails'; - -describe('CardDetails', () => { - it('can be instantiated by a merchant with a pan, an expiry date and a cvv', () => { - const cardDetails: CardDetails = { - pan: '4444', - expiryDate: '12/21', - cvc: '123', - }; - - expect(cardDetails.pan).toEqual('4444'); - expect(cardDetails.expiryDate).toEqual('12/21'); - expect(cardDetails.cvc).toEqual('123'); - }); - - it('can be instantiated by a merchant with just a cvv', () => { - const cardDetails: CardDetails = { - cvc: '123', - }; - - expect(cardDetails.cvc).toEqual('123'); - }); -}); diff --git a/access-checkout-react-native-sdk/test/session/SessionGenerationConfig.spec.ts b/access-checkout-react-native-sdk/test/session/SessionGenerationConfig.spec.ts new file mode 100644 index 0000000..83d13c8 --- /dev/null +++ b/access-checkout-react-native-sdk/test/session/SessionGenerationConfig.spec.ts @@ -0,0 +1,23 @@ +import type SessionGenerationConfig from '../../src/session/SessionGenerationConfig'; + +describe('SessionGenerationConfig', () => { + it('can be instantiated by a merchant with a pan, an expiry date and a cvv', () => { + const cardDetails: SessionGenerationConfig = { + panId: 'some-pan-id', + expiryDateId: 'some-expiry-id', + cvcId: 'some-cvc-id', + }; + + expect(cardDetails.panId).toEqual('some-pan-id'); + expect(cardDetails.expiryDateId).toEqual('some-expiry-id'); + expect(cardDetails.cvcId).toEqual('some-cvc-id'); + }); + + it('can be instantiated by a merchant with just a cvv', () => { + const cardDetails: SessionGenerationConfig = { + cvcId: 'some-cvc-id', + }; + + expect(cardDetails.cvcId).toEqual('some-cvc-id'); + }); +}); diff --git a/demo-app/.prettierrc.json b/demo-app/.prettierrc.json index 018ca32..6707610 100644 --- a/demo-app/.prettierrc.json +++ b/demo-app/.prettierrc.json @@ -3,7 +3,5 @@ "singleQuote": true, "tabWidth": 2, "trailingComma": "es5", - "useTabs": false, - "arrowParens": "avoid", - "bracketSameLine": true + "useTabs": false } diff --git a/demo-app/e2e/page-objects/TextInputPO.js b/demo-app/e2e/page-objects/AccessCheckoutTextInputPO.js similarity index 54% rename from demo-app/e2e/page-objects/TextInputPO.js rename to demo-app/e2e/page-objects/AccessCheckoutTextInputPO.js index b605855..1d2c6c6 100644 --- a/demo-app/e2e/page-objects/TextInputPO.js +++ b/demo-app/e2e/page-objects/AccessCheckoutTextInputPO.js @@ -1,9 +1,18 @@ /* eslint-disable @typescript-eslint/no-var-requires */ const { UIComponentPO } = require('./UIComponentPO'); -const { expect } = require('detox'); +const { expect, element, by, device } = require('detox'); /* eslint-enable @typescript-eslint/no-var-requires */ -class TextInputPO extends UIComponentPO { +class AccessCheckoutTextInputPO extends UIComponentPO { + component() { + const selector = + device.getPlatform() === 'ios' + ? by.type('UITextField') + : by.type('android.widget.EditText'); + + return element(selector.withAncestor(by.id(this.id))); + } + async type(text, expectedText = '') { await this.component().typeText(text); @@ -18,4 +27,4 @@ class TextInputPO extends UIComponentPO { } } -module.exports = { TextInputPO }; +module.exports = { AccessCheckoutTextInputPO }; diff --git a/demo-app/e2e/page-objects/CardFlowPO.js b/demo-app/e2e/page-objects/CardFlowPO.js index b06369f..7ce0580 100644 --- a/demo-app/e2e/page-objects/CardFlowPO.js +++ b/demo-app/e2e/page-objects/CardFlowPO.js @@ -1,15 +1,15 @@ /* eslint-disable @typescript-eslint/no-var-requires */ const { SessionLabelPO } = require('./SessionLabelPO'); -const { TextInputPO } = require('./TextInputPO'); const { TogglePO } = require('./TogglePO'); const { UIComponentPO } = require('./UIComponentPO'); +const { AccessCheckoutTextInputPO } = require('./AccessCheckoutTextInputPO'); /* eslint-enable @typescript-eslint/no-var-requires */ class CardFlowPO { constructor() { - this.pan = new TextInputPO('panInput'); - this.expiryDate = new TextInputPO('expiryDateInput'); - this.cvc = new TextInputPO('cvcInput'); + this.pan = new AccessCheckoutTextInputPO('panInput'); + this.expiryDate = new AccessCheckoutTextInputPO('expiryDateInput'); + this.cvc = new AccessCheckoutTextInputPO('cvcInput'); this.submitButton = new UIComponentPO('submitButton'); this.cardAndCvcSessionsToggle = new TogglePO('cardAndCvcSessionsToggle'); this.cardSession = new SessionLabelPO('cardSession'); diff --git a/demo-app/e2e/page-objects/CvcOnlyFlowPO.js b/demo-app/e2e/page-objects/CvcOnlyFlowPO.js index 8e741c3..04a44dc 100644 --- a/demo-app/e2e/page-objects/CvcOnlyFlowPO.js +++ b/demo-app/e2e/page-objects/CvcOnlyFlowPO.js @@ -1,13 +1,13 @@ /* eslint-disable @typescript-eslint/no-var-requires */ const { SessionLabelPO } = require('./SessionLabelPO'); -const { TextInputPO } = require('./TextInputPO'); +const { AccessCheckoutTextInputPO } = require('./AccessCheckoutTextInputPO'); const { UIComponentPO } = require('./UIComponentPO'); /* eslint-enable @typescript-eslint/no-var-requires */ class CvcOnlyFlowPO { constructor() { this.cvcOnlyNavItem = new UIComponentPO('nav-cvc'); - this.cvc = new TextInputPO('cvcInput'); + this.cvc = new AccessCheckoutTextInputPO('cvcInput'); this.submitButton = new UIComponentPO('submitButton'); this.cvcSession = new SessionLabelPO('cvcSession'); } diff --git a/demo-app/package-lock.json b/demo-app/package-lock.json index dc23ee7..0d102ff 100644 --- a/demo-app/package-lock.json +++ b/demo-app/package-lock.json @@ -28,6 +28,7 @@ "detox": "^20.13.5", "eslint": "^8.19.0", "eslint-config-prettier": "^8.3.0", + "eslint-plugin-jest": "^27.6.0", "eslint-plugin-prettier": "^4.0.0", "jest": "^29.2.1", "jest-html-reporter": "^3.10.2", @@ -2095,9 +2096,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2124,9 +2125,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2188,9 +2189,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5648,9 +5649,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/node": { @@ -6032,11 +6033,10 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -8227,15 +8227,15 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -8329,6 +8329,31 @@ "eslint": "^8.1.0" } }, + "node_modules/eslint-plugin-jest": { + "version": "27.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", + "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, "node_modules/eslint-plugin-prettier": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", @@ -8727,18 +8752,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -15279,15 +15292,18 @@ } }, "node_modules/prettier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.0.tgz", - "integrity": "sha512-FM/zAKgWTxj40rH03VxzIPdXmj39SwSjwG0heUcNFwI+EMZJnY93yAiKXM3dObIKAM5TA88werc8T/EwhB45eg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-linter-helpers": { @@ -16760,9 +16776,9 @@ } }, "node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -16777,18 +16793,6 @@ "node": ">=10" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -18933,9 +18937,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -18956,9 +18960,9 @@ "dev": true }, "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -18998,9 +19002,9 @@ } }, "@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true }, "@hapi/hoek": { @@ -21667,9 +21671,9 @@ } }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "@types/node": { @@ -21935,11 +21939,10 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "peer": true + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true }, "acorn-jsx": { "version": "5.3.2", @@ -23579,15 +23582,15 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -23809,6 +23812,15 @@ "string-natural-compare": "^3.0.1" } }, + "eslint-plugin-jest": { + "version": "27.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", + "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^5.10.0" + } + }, "eslint-plugin-prettier": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", @@ -23919,14 +23931,6 @@ "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" - }, - "dependencies": { - "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true - } } }, "esprima": { @@ -28732,9 +28736,9 @@ "dev": true }, "prettier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.0.tgz", - "integrity": "sha512-FM/zAKgWTxj40rH03VxzIPdXmj39SwSjwG0heUcNFwI+EMZJnY93yAiKXM3dObIKAM5TA88werc8T/EwhB45eg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true }, "prettier-linter-helpers": { @@ -29881,9 +29885,9 @@ } }, "terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.3", @@ -29892,12 +29896,6 @@ "source-map-support": "~0.5.20" }, "dependencies": { - "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", diff --git a/demo-app/package.json b/demo-app/package.json index 159913e..a235608 100644 --- a/demo-app/package.json +++ b/demo-app/package.json @@ -9,7 +9,8 @@ ], "scripts": { "android": "npm run build:typescript && react-native run-android", - "ios": "npm run build:typescript && react-native run-ios --simulator=\"iphone8-14\"", + "ios": "npm run clean:ios && npm run build:typescript && react-native run-ios", + "clean:ios": "rm -rf ./ios/build", "start": "react-native start", "build:typescript": "tsc", "lint": "eslint \"**/*.{js,ts,tsx}\"", @@ -36,6 +37,7 @@ "@types/react-native": "^0.66.6", "@typescript-eslint/eslint-plugin": "^5.5.0", "@typescript-eslint/parser": "^5.5.0", + "eslint-plugin-jest": "^27.6.0", "babel-jest": "^29.2.1", "babel-plugin-module-resolver": "^5.0.0", "detox": "^20.13.5", diff --git a/demo-app/src/App.tsx b/demo-app/src/App.tsx index acbcd7c..00845cc 100644 --- a/demo-app/src/App.tsx +++ b/demo-app/src/App.tsx @@ -5,7 +5,6 @@ import HView from './common/HView'; import VView from './common/VView'; import CvcOnly from './cvc-flow/CvcFlow'; import NavItem from './navigation/NavItem'; - export default function App() { const screens = { card: 'card', @@ -14,11 +13,11 @@ export default function App() { const [screen, setScreen] = useState(screens.card); + const currentScreen = screen === screens.card ? : ; + return ( - - {screen === screens.card ? : } - + {currentScreen} setScreen(screens.cvc)} - > + /> ); diff --git a/demo-app/src/card-flow/CardFlow.tsx b/demo-app/src/card-flow/CardFlow.tsx index 480333b..9d3d0e0 100644 --- a/demo-app/src/card-flow/CardFlow.tsx +++ b/demo-app/src/card-flow/CardFlow.tsx @@ -4,13 +4,14 @@ import { AccessCheckout, Brand, CARD, - CardDetails, CardValidationConfig, CardValidationEventListener, CVC, Sessions, useCardValidation, } from '../../../access-checkout-react-native-sdk/src/index'; +import type SessionGenerationConfig + from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; import CardBrandImage from '../common/CardBrandImage'; import CvcField from '../common/CvcField'; import ErrorView from '../common/ErrorView'; @@ -31,10 +32,6 @@ export default function CardFlow() { const unknownBrandLogo = 'https://npe.access.worldpay.com/access-checkout/assets/unknown.png'; - const [panValue, setPan] = useState(''); - const [expiryValue, setExpiry] = useState(''); - const [cvcValue, setCvc] = useState(''); - const [brand, setBrand] = useState(''); const [brandLogo, setBrandLogo] = useState(unknownBrandLogo); const [panIsValid, setPanIsValid] = useState(false); @@ -131,14 +128,14 @@ export default function CardFlow() { setIsEditable(false); setSubmitBtnEnabled(false); - const cardDetails: CardDetails = { - pan: panValue, - expiryDate: expiryValue, - cvc: cvcValue, + const sessionGenerationConfig: SessionGenerationConfig = { + panId: 'panInput', + expiryDateId: 'expiryDateInput', + cvcId: 'cvcInput', }; accessCheckout - .generateSessions(cardDetails, sessionTypes) + .generateSessions(sessionGenerationConfig, sessionTypes) .then((sessions: Sessions) => { console.info(`Successfully generated session(s)`); @@ -195,7 +192,6 @@ export default function CardFlow() { @@ -204,13 +200,11 @@ export default function CardFlow() { diff --git a/demo-app/src/card-flow/style.js b/demo-app/src/card-flow/style.js index f1701cc..08fd3e7 100644 --- a/demo-app/src/card-flow/style.js +++ b/demo-app/src/card-flow/style.js @@ -9,4 +9,29 @@ export default StyleSheet.create({ }, }), }, + cvc: { + flex: 1, + margin: 12, + borderWidth: 1, + borderRadius: 5, + padding: 10, + height: 40, + }, + pan: { + flex: 8, + margin: 12, + marginRight: 5, + borderWidth: 1, + borderRadius: 5, + padding: 10, + height: 40, + }, + expiry: { + flex: 1, + margin: 12, + borderWidth: 1, + borderRadius: 5, + padding: 10, + height: 40, + }, }); diff --git a/demo-app/src/common/CvcField.tsx b/demo-app/src/common/CvcField.tsx index 7cad67f..d5f86ae 100644 --- a/demo-app/src/common/CvcField.tsx +++ b/demo-app/src/common/CvcField.tsx @@ -1,5 +1,5 @@ -import React, { useState } from 'react'; -import { StyleSheet, TextInput } from 'react-native'; +import React from 'react'; +import { StyleSheet } from 'react-native'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -7,6 +7,7 @@ import commonStyles from './common-styles.js'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import UIComponentProps from './UIComponentProps'; +import AccessCheckoutTextInput from '../../../access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput'; const styles = StyleSheet.create({ cvc: { @@ -22,14 +23,11 @@ const styles = StyleSheet.create({ interface CvcFieldProps extends UIComponentProps { isEditable: boolean; isValid: boolean; - onChange(text: string): void; } const CvcField = (props: CvcFieldProps) => { - const [cvcValue, setCvc] = useState(''); - return ( - { : commonStyles.invalid, ]} keyboardType="numeric" - onChangeText={(text) => { - setCvc(text); - props.onChange(text); - }} editable={props.isEditable} - value={cvcValue} placeholder="CVC" /> ); diff --git a/demo-app/src/common/ExpiryDateField.tsx b/demo-app/src/common/ExpiryDateField.tsx index 54737e1..71b3915 100644 --- a/demo-app/src/common/ExpiryDateField.tsx +++ b/demo-app/src/common/ExpiryDateField.tsx @@ -1,11 +1,12 @@ -import React, { useState } from 'react'; -import { StyleSheet, TextInput } from 'react-native'; +import React from 'react'; +import { StyleSheet } from 'react-native'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import commonStyles from './common-styles.js'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import UIComponentProps from './UIComponentProps'; +import AccessCheckoutTextInput from '../../../access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput'; const styles = StyleSheet.create({ expiry: { @@ -21,17 +22,16 @@ const styles = StyleSheet.create({ interface ExpiryDateFieldProps extends UIComponentProps { isEditable: boolean; isValid: boolean; - - onChange(text: string): void; } const ExpiryDateField = (props: ExpiryDateFieldProps) => { - const [expiryValue, setExpiry] = useState(''); - return ( - { ? commonStyles.valid : commonStyles.invalid, ]} - keyboardType="numeric" - onChangeText={(text) => { - setExpiry(text); - props.onChange(text); - }} - editable={props.isEditable} - value={expiryValue} - placeholder="MM/YY" /> ); }; diff --git a/demo-app/src/common/PanField.tsx b/demo-app/src/common/PanField.tsx index 540b449..a41c660 100644 --- a/demo-app/src/common/PanField.tsx +++ b/demo-app/src/common/PanField.tsx @@ -1,5 +1,6 @@ -import React, { useState } from 'react'; -import { StyleSheet, TextInput } from 'react-native'; +import React from 'react'; +import { StyleSheet } from 'react-native'; +import AccessCheckoutTextInput from '../../../access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import commonStyles from './common-styles.js'; @@ -22,14 +23,11 @@ const styles = StyleSheet.create({ interface PanFieldProps extends UIComponentProps { isEditable: boolean; isValid: boolean; - onChange(text: string): void; } const PanField = (props: PanFieldProps) => { - const [panValue, setPan] = useState(''); - return ( - { : commonStyles.invalid, ]} keyboardType="numeric" - onChangeText={(text) => { - setPan(text); - props.onChange(text); - }} editable={props.isEditable} - value={panValue} placeholder="Card Number" /> ); diff --git a/demo-app/src/cvc-flow/CvcFlow.tsx b/demo-app/src/cvc-flow/CvcFlow.tsx index 1e48bca..647d0b9 100644 --- a/demo-app/src/cvc-flow/CvcFlow.tsx +++ b/demo-app/src/cvc-flow/CvcFlow.tsx @@ -1,28 +1,28 @@ import React, { useState } from 'react'; +import { Text } from 'react-native'; import { AccessCheckout, - CardDetails, CVC, CvcOnlyValidationConfig, CvcOnlyValidationEventListener, Sessions, useCvcOnlyValidation, } from '../../../access-checkout-react-native-sdk/src'; +import type SessionGenerationConfig + from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import styles from '../card-flow/style.js'; import CvcField from '../common/CvcField'; +import ErrorView from '../common/ErrorView'; import HView from '../common/HView'; +import SessionLabel from '../common/SessionLabel'; import Spinner from '../common/Spinner'; import SubmitButton from '../common/SubmitButton'; import VView from '../common/VView'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import styles from '../card-flow/style.js'; -import { Text } from 'react-native'; -import SessionLabel from '../common/SessionLabel'; import CvcOnlyFlowE2eStates from '../cvc-flow/CvcOnlyFlow.e2e.states'; -import ErrorView from '../common/ErrorView'; export default function CvcFlow() { - const [cvcValue, setCvc] = useState(''); const [cvcIsValid, setCvcIsValid] = useState(false); const [submitBtnEnabled, setSubmitBtnEnabled] = useState(false); @@ -32,7 +32,7 @@ export default function CvcFlow() { const [cvcSession, setCvcSession] = useState(''); const [error, setError] = useState(); - + const accessCheckout = new AccessCheckout({ baseUrl: 'https://npe.access.worldpay.com', merchantId: 'identity', @@ -58,7 +58,7 @@ export default function CvcFlow() { const { initialiseCvcOnlyValidation } = useCvcOnlyValidation( accessCheckout, cvcOnlyValidationConfig, - cvcOnlyValidationEventListener + cvcOnlyValidationEventListener, ); const onLayout = () => { @@ -77,12 +77,12 @@ export default function CvcFlow() { setShowSpinner(true); setIsEditable(false); - const cardDetails: CardDetails = { - cvc: cvcValue, + const sessionGenerationConfig: SessionGenerationConfig = { + cvcId: 'cvcInput', }; accessCheckout - .generateSessions(cardDetails, sessionTypes) + .generateSessions(sessionGenerationConfig, sessionTypes) .then((sessions: Sessions) => { console.info('Successfully generated session(s)'); @@ -116,7 +116,7 @@ export default function CvcFlow() { if (error) { errorComponent = ; } - + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore return ( @@ -128,7 +128,6 @@ export default function CvcFlow() { testID="cvcInput" isEditable={isEditable} isValid={cvcIsValid} - onChange={setCvc} /> From 589b1f6d84829d7e1bc29a4d759c4110c5bd2143 Mon Sep 17 00:00:00 2001 From: Olivier Chalet Date: Wed, 3 Jan 2024 19:54:24 +0000 Subject: [PATCH 02/26] US1782181: change Android bridge GenerateSessionsConfig to use panId, expiryDateId, cvcId instead of panValue, expiryDateValue, cvcValue. Change all instrumented tests to use AccessCheckoutEditText and refactor them for easier maintenance --- .../session/SessionsInstrumentedTests.kt | 47 ++---- .../CardValidationInstrumentedTests.kt | 37 +++-- .../CvcOnlyValidationInstrumentedTests.kt | 21 +-- .../AbstractInstrumentedTestsActivity.kt | 71 +++++++++ .../SessionsInstrumentedTestsActivity.kt | 66 +++----- .../session/SessionsTestFixture.kt | 86 ---------- .../reactnative/utils/BridgeArguments.kt | 75 +++++++++ .../reactnative/utils/TestConstants.kt | 12 ++ .../checkout/reactnative/utils/TestFixture.kt | 92 +++++++++++ ...CardValidationInstrumentedTestsActivity.kt | 150 +++--------------- .../validation/CardValidationTestFixture.kt | 72 --------- ...OnlyValidationInstrumentedTestsActivity.kt | 112 ++----------- .../CvcOnlyValidationTestFixture.kt | 33 ---- .../AccessCheckoutReactNativeModule.kt | 34 ++-- .../session/GenerateSessionsConfig.kt | 6 +- .../GenerateSessionsConfigConverter.kt | 26 +-- .../AccessCheckoutReactPackageTest.kt | 2 +- .../GenerateSessionsConfigConverterTest.kt | 90 +++++------ ...t => CardValidationConfigConverterTest.kt} | 2 +- 19 files changed, 426 insertions(+), 608 deletions(-) create mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/AbstractInstrumentedTestsActivity.kt delete mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsTestFixture.kt create mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/BridgeArguments.kt create mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/TestConstants.kt create mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/TestFixture.kt delete mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationTestFixture.kt delete mode 100644 access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationTestFixture.kt rename access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/validation/{CardCardCardValidationConfigConverterTest.kt => CardValidationConfigConverterTest.kt} (98%) diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsInstrumentedTests.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsInstrumentedTests.kt index c8cf6a3..afa11ec 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsInstrumentedTests.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsInstrumentedTests.kt @@ -3,15 +3,18 @@ package com.worldpay.access.checkout.reactnative.session import android.content.Context import androidx.test.core.app.ActivityScenario import androidx.test.platform.app.InstrumentationRegistry -import com.github.tomakehurst.wiremock.client.WireMock.* +import com.github.tomakehurst.wiremock.client.WireMock.equalTo +import com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor +import com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo +import com.github.tomakehurst.wiremock.client.WireMock.verify import com.worldpay.access.checkout.reactnative.services.AccessServicesRootStub import com.worldpay.access.checkout.reactnative.services.MockServer import com.worldpay.access.checkout.reactnative.services.MockServer.startStubServices import com.worldpay.access.checkout.reactnative.services.MockServer.stopStubServices import com.worldpay.access.checkout.reactnative.services.SessionsStub -import com.worldpay.access.checkout.reactnative.session.SessionsTestFixture.Companion.CARD -import com.worldpay.access.checkout.reactnative.session.SessionsTestFixture.Companion.CVC -import com.worldpay.access.checkout.reactnative.session.SessionsTestFixture.Companion.sessionsTextFixture +import com.worldpay.access.checkout.reactnative.utils.TestFixture.Companion.CARD +import com.worldpay.access.checkout.reactnative.utils.TestFixture.Companion.CVC +import com.worldpay.access.checkout.reactnative.utils.TestFixture.Companion.testFixture import org.awaitility.Awaitility.await import org.junit.After import org.junit.Before @@ -20,11 +23,11 @@ import java.util.concurrent.TimeUnit.MILLISECONDS class SessionsInstrumentedTests { - private val timeOutInMs = 5000L + private val timeOutInMs = 500000L @Before fun setup() { - sessionsTextFixture().clear() + testFixture().clear() val context: Context = InstrumentationRegistry.getInstrumentation().context startStubServices(context, MockServer.PORT) @@ -41,11 +44,10 @@ class SessionsInstrumentedTests { @Test fun testShouldBeAbleToGenerateACardSession() { SessionsStub.stubSessionsCardSuccess("my-session") - sessionsTextFixture().pan("4444333322221111") + testFixture().pan("4444333322221111") .expiryDate("12/34") .cvc("123") .sessionsTypes(listOf(CARD)) - .reactNativeSdkVersion("1.0.0") val scenario = ActivityScenario.launch(SessionsInstrumentedTestsActivity::class.java) @@ -58,11 +60,10 @@ class SessionsInstrumentedTests { SessionsStub.stubSessionsCardSuccess("my-session") SessionsStub.stubSessionsPaymentsCvcSuccess("my-other-session") - sessionsTextFixture().pan("4444333322221111") + testFixture().pan("4444333322221111") .expiryDate("12/34") .cvc("123") .sessionsTypes(listOf(CARD, CVC)) - .reactNativeSdkVersion("1.0.0") val scenario = ActivityScenario.launch(SessionsInstrumentedTestsActivity::class.java) @@ -77,10 +78,8 @@ class SessionsInstrumentedTests { fun testShouldBeAbleToGenerateACvcOnlySession() { SessionsStub.stubSessionsPaymentsCvcSuccess("my-other-session") - sessionsTextFixture() - .cvc("123") + testFixture().cvc("123") .sessionsTypes(listOf(CVC)) - .reactNativeSdkVersion("1.0.0") val scenario = ActivityScenario.launch(SessionsInstrumentedTestsActivity::class.java) @@ -99,38 +98,22 @@ class SessionsInstrumentedTests { SessionsStub.stubSessionsCardSuccess("my-session") SessionsStub.stubSessionsPaymentsCvcFailure(errorName, message) - sessionsTextFixture() - .pan("4444333322221111") + testFixture().pan("4444333322221111") .expiryDate("12/34") .cvc("123") .sessionsTypes(listOf(CARD, CVC)) - .reactNativeSdkVersion("1.0.0") val scenario = ActivityScenario.launch(SessionsInstrumentedTestsActivity::class.java) assertExceptionIs(scenario, expectedException) } - @Test - fun testShouldBeAbleToGiveErrorWhenSessionsTypeContainsCvcAndANullCvcIsPassed() { - val exception = RuntimeException("Expected cvcValue to be provided but was not") - - sessionsTextFixture() - .cvc(null) - .sessionsTypes(listOf(CVC)) - .reactNativeSdkVersion("1.0.0") - - val scenario = ActivityScenario.launch(SessionsInstrumentedTestsActivity::class.java) - - assertExceptionIs(scenario, exception) - } - @Test fun testShouldSetNativeSdkWpSdkHeaderWithAccessCheckoutReactNativeVersion() { SessionsStub.stubSessionsCardSuccess("my-session") SessionsStub.stubSessionsPaymentsCvcSuccess("my-other-session") - sessionsTextFixture().pan("4444333322221111") + testFixture().pan("4444333322221111") .expiryDate("12/34") .cvc("123") .sessionsTypes(listOf(CARD, CVC)) @@ -147,7 +130,7 @@ class SessionsInstrumentedTests { verify( postRequestedFor(urlEqualTo("/sessions/payments/cvc")) .withHeader("X-WP-SDK", equalTo("access-checkout-react-native/1.2.3")) - ); + ) } private fun assertSessionsAre( diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationInstrumentedTests.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationInstrumentedTests.kt index 0e7017a..456c8c7 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationInstrumentedTests.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationInstrumentedTests.kt @@ -10,9 +10,14 @@ import com.worldpay.access.checkout.reactnative.services.CardBrandsStub.Companio import com.worldpay.access.checkout.reactnative.services.MockServer import com.worldpay.access.checkout.reactnative.services.MockServer.startStubServices import com.worldpay.access.checkout.reactnative.services.MockServer.stopStubServices -import com.worldpay.access.checkout.reactnative.validation.CardValidationTestFixture.Companion.validationTestFixture +import com.worldpay.access.checkout.reactnative.utils.TestFixture +import com.worldpay.access.checkout.reactnative.utils.TestFixture.Companion.testFixture import org.awaitility.Awaitility.await -import org.junit.* +import org.junit.After +import org.junit.AfterClass +import org.junit.Before +import org.junit.BeforeClass +import org.junit.Test import java.util.concurrent.CopyOnWriteArrayList import java.util.concurrent.TimeUnit.MILLISECONDS @@ -38,13 +43,7 @@ class CardValidationInstrumentedTests { @Before fun setUp() { - validationTestFixture() - .clear() - .panId(CardValidationInstrumentedTestsActivity.panId) - .expiryDateId(CardValidationInstrumentedTestsActivity.expiryDateId) - .cvcId(CardValidationInstrumentedTestsActivity.cvcId) - - CardValidationInstrumentedTestsActivity.clearActions() + TestFixture().clear() } @After @@ -55,7 +54,7 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseEventWhenPanBecomesValid() { startActivity().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setPan("4444333322221111") } @@ -71,7 +70,7 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseEventWhenPanBecomesInvalid() { startActivity().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setPan("4444333322221111") activity.setPan("4") } @@ -92,7 +91,7 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseEventWhenExpiryDateBecomesValid() { startActivity().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setExpiryDate("12/30") } @@ -108,7 +107,7 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseEventWhenExpiryDateBecomesInvalid() { startActivity().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setExpiryDate("12/30") activity.setExpiryDate("12/3") } @@ -129,7 +128,7 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseEventWhenCvcBecomesValid() { startActivity().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setCvc("123") } @@ -145,7 +144,7 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseEventWhenCvcBecomesInvalid() { startActivity().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setCvc("123") activity.setCvc("12") } @@ -166,7 +165,7 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseEventWhenAllFieldsBecomeValid() { startActivity().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setPan("4444333322221111") activity.setExpiryDate("12/30") activity.setCvc("123") @@ -184,7 +183,7 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseEventWhenRecognisingCardBrand() { startActivityWithCardBrandRules().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setPan("4") } @@ -211,10 +210,10 @@ class CardValidationInstrumentedTests { @Test fun shouldRaiseAnInvalidPanEventWhenCardBrandIsNotAcceptedByMerchant() { - validationTestFixture().acceptedCardBrands(listOf("jcb")) + testFixture().acceptedCardBrands(listOf("jcb")) startActivityWithCardBrandRules().use { scenario -> - CardValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setPan("4") } diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationInstrumentedTests.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationInstrumentedTests.kt index f346d9b..4474eeb 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationInstrumentedTests.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/androidTestInstrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationInstrumentedTests.kt @@ -8,9 +8,11 @@ import com.worldpay.access.checkout.reactnative.react.EventMock import com.worldpay.access.checkout.reactnative.services.MockServer import com.worldpay.access.checkout.reactnative.services.MockServer.startStubServices import com.worldpay.access.checkout.reactnative.services.MockServer.stopStubServices -import com.worldpay.access.checkout.reactnative.validation.CvcOnlyValidationTestFixture.Companion.cvcOnlyValidationTestFixture import org.awaitility.Awaitility.await -import org.junit.* +import org.junit.After +import org.junit.AfterClass +import org.junit.BeforeClass +import org.junit.Test import java.util.concurrent.CopyOnWriteArrayList import java.util.concurrent.TimeUnit.MILLISECONDS @@ -34,15 +36,6 @@ class CvcOnlyValidationInstrumentedTests { } - @Before - fun setUp() { - cvcOnlyValidationTestFixture() - .clear() - .cvcId(CvcOnlyValidationInstrumentedTestsActivity.cvcId) - - CvcOnlyValidationInstrumentedTestsActivity.clearActions() - } - @After fun tearDown() { WireMock.reset() @@ -51,7 +44,7 @@ class CvcOnlyValidationInstrumentedTests { @Test fun shouldRaiseEventWhenCvcBecomesValid() { startActivity().use { scenario -> - CvcOnlyValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setCvc("123") } @@ -67,7 +60,7 @@ class CvcOnlyValidationInstrumentedTests { @Test fun shouldRaiseEventWhenCvcBecomesInvalid() { startActivity().use { scenario -> - CvcOnlyValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setCvc("123") activity.setCvc("12") } @@ -88,7 +81,7 @@ class CvcOnlyValidationInstrumentedTests { @Test fun shouldRaiseEventWhenAllFieldsBecomeValid() { startActivity().use { scenario -> - CvcOnlyValidationInstrumentedTestsActivity.run { activity -> + scenario.onActivity { activity -> activity.setCvc("123") } diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/AbstractInstrumentedTestsActivity.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/AbstractInstrumentedTestsActivity.kt new file mode 100644 index 0000000..6113882 --- /dev/null +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/AbstractInstrumentedTestsActivity.kt @@ -0,0 +1,71 @@ +package com.worldpay.access.checkout.reactnative + +import android.os.Bundle +import android.widget.LinearLayout +import androidx.activity.ComponentActivity +import com.facebook.soloader.SoLoader +import com.worldpay.access.checkout.reactnative.react.EventMock +import com.worldpay.access.checkout.reactnative.react.MockReactApplicationContext.Companion.mockReactApplicationContext +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.cvcId +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.expiryDateId +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.panId +import com.worldpay.access.checkout.ui.AccessCheckoutEditText +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.MainScope + +abstract class AbstractInstrumentedTestsActivity : ComponentActivity(), + CoroutineScope by MainScope() { + lateinit var panAccessCheckoutEditText: AccessCheckoutEditText + lateinit var expiryDateAccessCheckoutEditText: AccessCheckoutEditText + lateinit var cvcAccessCheckoutEditText: AccessCheckoutEditText + + protected val reactApplicationContext = mockReactApplicationContext(this) + + fun setPan(value: String) { + panAccessCheckoutEditText.setText(value) + } + + fun setExpiryDate(value: String) { + expiryDateAccessCheckoutEditText.setText(value) + } + + fun setCvc(value: String) { + cvcAccessCheckoutEditText.setText(value) + } + + fun eventsReceived(): List { + return reactApplicationContext.rtcDeviceEventEmitter.eventsEmitted + } + + fun clearEventsReceived() { + reactApplicationContext.rtcDeviceEventEmitter.eventsEmitted.clear() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + SoLoader.init(this, false) + + panAccessCheckoutEditText = createAccessCheckoutEditText(panId) + expiryDateAccessCheckoutEditText = createAccessCheckoutEditText(expiryDateId) + cvcAccessCheckoutEditText = createAccessCheckoutEditText(cvcId) + + val layout = LinearLayout(this) + layout.addView(panAccessCheckoutEditText) + layout.addView(expiryDateAccessCheckoutEditText) + layout.addView(cvcAccessCheckoutEditText) + setContentView(layout) + + val module = AccessCheckoutReactNativeModule(reactApplicationContext) + + doOnCreate(module) + } + + protected abstract fun doOnCreate(module: AccessCheckoutReactNativeModule) + + private fun createAccessCheckoutEditText(id: String): AccessCheckoutEditText { + val component = AccessCheckoutEditText(this) + component.setTag(R.id.view_tag_native_id, id) + return component + } +} diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsInstrumentedTestsActivity.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsInstrumentedTestsActivity.kt index d9431d7..3d24043 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsInstrumentedTestsActivity.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsInstrumentedTestsActivity.kt @@ -1,60 +1,46 @@ package com.worldpay.access.checkout.reactnative.session -import android.os.Bundle -import androidx.activity.ComponentActivity -import com.facebook.react.bridge.JavaOnlyArray import com.facebook.react.bridge.JavaOnlyMap import com.facebook.react.bridge.PromiseImpl import com.facebook.react.bridge.ReadableMap -import com.facebook.soloader.SoLoader +import com.worldpay.access.checkout.reactnative.AbstractInstrumentedTestsActivity import com.worldpay.access.checkout.reactnative.AccessCheckoutReactNativeModule import com.worldpay.access.checkout.reactnative.react.FailureCallback -import com.worldpay.access.checkout.reactnative.react.MockReactApplicationContext.Companion.mockReactApplicationContext import com.worldpay.access.checkout.reactnative.react.SuccessCallback -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope +import com.worldpay.access.checkout.reactnative.utils.BridgeArguments +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.baseUrl +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.cvcId +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.expiryDateId +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.merchantId +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.panId +import com.worldpay.access.checkout.reactnative.utils.TestFixture import kotlinx.coroutines.launch import kotlin.coroutines.suspendCoroutine -open class SessionsInstrumentedTestsActivity : ComponentActivity(), CoroutineScope by MainScope() { - companion object { - const val bridgeFieldBaseUrl = "baseUrl" - const val bridgeFieldMerchantId = "merchantId" - const val bridgeFieldPanId = "panValue" - const val bridgeFieldExpiryDateId = "expiryDateValue" - const val bridgeFieldCvcId = "cvcValue" - const val bridgeFieldSessionTypes = "sessionTypes" - const val bridgeFieldReactNativeSdkVersion = "reactNativeSdkVersion" - } - +class SessionsInstrumentedTestsActivity : AbstractInstrumentedTestsActivity() { var sessions: MutableMap = HashMap() var exception: RuntimeException? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - SoLoader.init(this, false) - - val arguments = JavaOnlyMap() - arguments.putString(bridgeFieldBaseUrl, SessionsTestFixture.baseUrl()) - arguments.putString(bridgeFieldMerchantId, SessionsTestFixture.merchantId()) - arguments.putString(bridgeFieldPanId, SessionsTestFixture.pan()) - arguments.putString(bridgeFieldExpiryDateId, SessionsTestFixture.expiryDate()) - arguments.putString(bridgeFieldCvcId, SessionsTestFixture.cvc()) - arguments.putArray( - bridgeFieldSessionTypes, - JavaOnlyArray.from(SessionsTestFixture.sessionsTypes()) - ) - arguments.putString( - bridgeFieldReactNativeSdkVersion, - SessionsTestFixture.reactNativeSdkVersion() - ) - - val module = AccessCheckoutReactNativeModule(mockReactApplicationContext(this)) + override fun doOnCreate(module: AccessCheckoutReactNativeModule) { + TestFixture.pan()?.let { setPan(it) } + TestFixture.expiryDate()?.let { setExpiryDate(it) } + TestFixture.cvc()?.let { setCvc(it) } launch { try { - val result = generateSessions(module, arguments) + val bridgeArguments = BridgeArguments() + .baseUrl(baseUrl) + .merchantId(merchantId) + .panId(panId) + .expiryDateId(expiryDateId) + .cvcId(cvcId) + .sessionTypes(TestFixture.sessionsTypes()) + + TestFixture.reactNativeSdkVersion()?.let { + bridgeArguments.reactNativeSdkVersion(it) + } + + val result = generateSessions(module, bridgeArguments.toJavaOnlyMap()) if (result.getString("card") != null) { sessions["card"] = result.getString("card") as String diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsTestFixture.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsTestFixture.kt deleted file mode 100644 index d5f4162..0000000 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/session/SessionsTestFixture.kt +++ /dev/null @@ -1,86 +0,0 @@ -package com.worldpay.access.checkout.reactnative.session - -class SessionsTestFixture { - companion object { - private val INSTANCE = SessionsTestFixture() - - private const val BASE_URL = "https://localhost:8443/" - private const val MERCHANT_ID = "some-id" - - const val CARD = "card" - const val CVC = "cvc" - - fun baseUrl(): String { - return BASE_URL - } - - fun merchantId(): String { - return MERCHANT_ID - } - - fun sessionsTextFixture(): SessionsTestFixture { - return INSTANCE - } - - fun pan(): String? { - return INSTANCE.pan - } - - fun expiryDate(): String? { - return INSTANCE.expiryDate - } - - fun cvc(): String? { - return INSTANCE.cvc - } - - fun sessionsTypes(): List { - return INSTANCE.sessionsTypes - } - - fun reactNativeSdkVersion(): String? { - return INSTANCE.reactNativeSdkVersion - } - } - - var pan: String? = null - var expiryDate: String? = null - var cvc: String? = null - var sessionsTypes: MutableList = ArrayList() - var reactNativeSdkVersion: String? = null - - fun pan(pan: String?): SessionsTestFixture { - this.pan = pan - return this - } - - fun expiryDate(expiryDate: String?): SessionsTestFixture { - this.expiryDate = expiryDate - return this - } - - fun cvc(cvc: String?): SessionsTestFixture { - this.cvc = cvc - return this - } - - fun sessionsTypes(sessionsTypes: List): SessionsTestFixture { - this.sessionsTypes.clear() - this.sessionsTypes.addAll(sessionsTypes) - return this - } - - fun reactNativeSdkVersion(reactNativeSdkVersion: String?): SessionsTestFixture { - this.reactNativeSdkVersion = reactNativeSdkVersion - return this - } - - fun clear(): SessionsTestFixture { - INSTANCE.pan = null - INSTANCE.expiryDate = null - INSTANCE.cvc = null - INSTANCE.sessionsTypes.clear() - INSTANCE.reactNativeSdkVersion = null - return this - } -} diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/BridgeArguments.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/BridgeArguments.kt new file mode 100644 index 0000000..59c8860 --- /dev/null +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/BridgeArguments.kt @@ -0,0 +1,75 @@ +package com.worldpay.access.checkout.reactnative.utils + +import com.facebook.react.bridge.JavaOnlyArray +import com.facebook.react.bridge.JavaOnlyMap + +class BridgeArguments { + private companion object { + const val bridgeFieldBaseUrl = "baseUrl" + const val bridgeFieldMerchantId = "merchantId" + const val bridgeFieldPanId = "panId" + const val bridgeFieldExpiryDateId = "expiryDateId" + const val bridgeFieldCvcId = "cvcId" + const val bridgeFieldEnablePanFormatting = "enablePanFormatting" + const val bridgeFieldAcceptedCardBrands = "acceptedCardBrands" + const val bridgeFieldSessionTypes = "sessionTypes" + const val bridgeFieldReactNativeSdkVersion = "reactNativeSdkVersion" + + const val defaultReactNativeSdkVersion = "1.0.0" + } + + private val map = JavaOnlyMap() + + init { + map.putString(bridgeFieldReactNativeSdkVersion, defaultReactNativeSdkVersion) + } + + fun baseUrl(baseUrl: String): BridgeArguments { + map.putString(bridgeFieldBaseUrl, baseUrl) + return this + } + + fun merchantId(merchantId: String): BridgeArguments { + map.putString(bridgeFieldMerchantId, merchantId) + return this + } + + fun panId(panId: String): BridgeArguments { + map.putString(bridgeFieldPanId, panId) + return this + } + + fun expiryDateId(expiryDateId: String): BridgeArguments { + map.putString(bridgeFieldExpiryDateId, expiryDateId) + return this + } + + fun cvcId(cvcId: String): BridgeArguments { + map.putString(bridgeFieldCvcId, cvcId) + return this + } + + fun enablePanFormatting(enablePanFormatting: Boolean): BridgeArguments { + map.putBoolean(bridgeFieldEnablePanFormatting, enablePanFormatting) + return this + } + + fun acceptedCardBrands(acceptedCardBrands: List): BridgeArguments { + map.putArray(bridgeFieldAcceptedCardBrands, JavaOnlyArray.from(acceptedCardBrands)) + return this + } + + fun sessionTypes(sessionTypes: List): BridgeArguments { + map.putArray(bridgeFieldSessionTypes, JavaOnlyArray.from(sessionTypes)) + return this + } + + fun reactNativeSdkVersion(reactNativeSdkVersion: String): BridgeArguments { + map.putString(bridgeFieldReactNativeSdkVersion, reactNativeSdkVersion) + return this + } + + fun toJavaOnlyMap(): JavaOnlyMap { + return map + } +} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/TestConstants.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/TestConstants.kt new file mode 100644 index 0000000..71aafc1 --- /dev/null +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/TestConstants.kt @@ -0,0 +1,12 @@ +package com.worldpay.access.checkout.reactnative.utils + +class TestConstants { + companion object { + const val baseUrl = "https://localhost:8443/" + const val merchantId = "some-merchant-id" + + const val panId = "some-pan-id" + const val expiryDateId = "some-expiry-date-id" + const val cvcId = "some-cvc-id" + } +} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/TestFixture.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/TestFixture.kt new file mode 100644 index 0000000..1fd0075 --- /dev/null +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/utils/TestFixture.kt @@ -0,0 +1,92 @@ +package com.worldpay.access.checkout.reactnative.utils + +class TestFixture { + companion object { + private val INSTANCE = TestFixture() + + const val CARD = "card" + const val CVC = "cvc" + + fun testFixture(): TestFixture { + return INSTANCE + } + + fun pan(): String? { + return INSTANCE.pan + } + + fun expiryDate(): String? { + return INSTANCE.expiryDate + } + + fun cvc(): String? { + return INSTANCE.cvc + } + + fun sessionsTypes(): List { + return INSTANCE.sessionsTypes + } + + fun reactNativeSdkVersion(): String? { + return INSTANCE.reactNativeSdkVersion + } + + fun enablePanFormatting(): Boolean { + return INSTANCE.enablePanFormatting + } + + fun acceptedCardBrands(): List { + return INSTANCE.acceptedCardBrands + } + } + + private var pan: String? = null + private var expiryDate: String? = null + private var cvc: String? = null + private var sessionsTypes: MutableList = ArrayList() + private var reactNativeSdkVersion: String? = null + private var enablePanFormatting = false + private var acceptedCardBrands: MutableList = ArrayList() + + fun pan(pan: String?): TestFixture { + this.pan = pan + return this + } + + fun expiryDate(expiryDate: String?): TestFixture { + this.expiryDate = expiryDate + return this + } + + fun cvc(cvc: String?): TestFixture { + this.cvc = cvc + return this + } + + fun sessionsTypes(sessionsTypes: List): TestFixture { + this.sessionsTypes.clear() + this.sessionsTypes.addAll(sessionsTypes) + return this + } + + fun reactNativeSdkVersion(reactNativeSdkVersion: String?): TestFixture { + this.reactNativeSdkVersion = reactNativeSdkVersion + return this + } + + fun acceptedCardBrands(cardBrands: List): TestFixture { + acceptedCardBrands.addAll(cardBrands) + return this + } + + fun clear(): TestFixture { + INSTANCE.pan = null + INSTANCE.expiryDate = null + INSTANCE.cvc = null + INSTANCE.sessionsTypes.clear() + INSTANCE.reactNativeSdkVersion = null + INSTANCE.enablePanFormatting = false + INSTANCE.acceptedCardBrands.clear() + return this + } +} diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationInstrumentedTestsActivity.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationInstrumentedTestsActivity.kt index e07f175..dee0412 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationInstrumentedTestsActivity.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationInstrumentedTestsActivity.kt @@ -1,145 +1,37 @@ package com.worldpay.access.checkout.reactnative.validation -import android.os.Bundle -import android.widget.EditText -import android.widget.LinearLayout -import android.widget.TextView.BufferType.EDITABLE -import androidx.activity.ComponentActivity -import com.facebook.react.bridge.JavaOnlyArray import com.facebook.react.bridge.JavaOnlyMap import com.facebook.react.bridge.PromiseImpl -import com.facebook.soloader.SoLoader +import com.worldpay.access.checkout.reactnative.AbstractInstrumentedTestsActivity import com.worldpay.access.checkout.reactnative.AccessCheckoutReactNativeModule -import com.worldpay.access.checkout.reactnative.R -import com.worldpay.access.checkout.reactnative.react.EventMock import com.worldpay.access.checkout.reactnative.react.FailureCallback -import com.worldpay.access.checkout.reactnative.react.MockReactApplicationContext.Companion.mockReactApplicationContext import com.worldpay.access.checkout.reactnative.react.SuccessCallback -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope +import com.worldpay.access.checkout.reactnative.utils.BridgeArguments +import com.worldpay.access.checkout.reactnative.utils.TestConstants +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.cvcId +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.expiryDateId +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.panId +import com.worldpay.access.checkout.reactnative.utils.TestFixture import kotlinx.coroutines.launch -import java.util.concurrent.Executors -import java.util.concurrent.LinkedBlockingQueue -import java.util.concurrent.TimeUnit.MILLISECONDS import kotlin.coroutines.suspendCoroutine -class CardValidationInstrumentedTestsActivity : ComponentActivity(), - CoroutineScope by MainScope() { - - companion object { - const val panId = "panId" - const val expiryDateId = "expiryDateId" - const val cvcId = "cvcId" - - const val bridgeFieldBaseUrl = "baseUrl" - const val bridgeFieldPanId = "panId" - const val bridgeFieldExpiryDateId = "expiryDateId" - const val bridgeFieldCvcId = "cvcId" - const val bridgeFieldEnablePanFormatting = "enablePanFormatting" - const val bridgeFieldAcceptedCardBrands = "acceptedCardBrands" - - private val actions = LinkedBlockingQueue<((CardValidationInstrumentedTestsActivity) -> Unit)>() - - fun run(action: (CardValidationInstrumentedTestsActivity) -> Unit) { - actions.offer(action) - } - - fun clearActions() { - actions.clear() - } - } - - private val scheduledExecutorService = Executors.newScheduledThreadPool(4) - private val reactApplicationContext = mockReactApplicationContext(this) - - var panEditText: EditText? = null - var expiryDateEditText: EditText? = null - var cvcEditText: EditText? = null - - fun eventsReceived(): List { - return reactApplicationContext.rtcDeviceEventEmitter.eventsEmitted - } - - fun clearEventsReceived() { - reactApplicationContext.rtcDeviceEventEmitter.eventsEmitted.clear() - } - - fun setPan(value: String) { - panEditText!!.setText(value, EDITABLE) - } - - fun setExpiryDate(value: String) { - expiryDateEditText!!.setText(value, EDITABLE) - } - - fun setCvc(value: String) { - cvcEditText!!.setText(value, EDITABLE) - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - SoLoader.init(this, false) - - panEditText = createEditText(panId) - expiryDateEditText = createEditText(expiryDateId) - cvcEditText = createEditText(cvcId) - - val layout = LinearLayout(this) - layout.addView(panEditText) - layout.addView(expiryDateEditText) - layout.addView(cvcEditText) - setContentView(layout) - - val validationArguments = testFixtureToReadableMap() - val module = AccessCheckoutReactNativeModule(reactApplicationContext) +class CardValidationInstrumentedTestsActivity : AbstractInstrumentedTestsActivity() { + override fun doOnCreate(module: AccessCheckoutReactNativeModule) { launch { - initialiseCardValidation(module, validationArguments) + val bridgeArguments = BridgeArguments() + .baseUrl(TestConstants.baseUrl) + .panId(panId) + .expiryDateId(expiryDateId) + .cvcId(cvcId) + .enablePanFormatting(TestFixture.enablePanFormatting()) + .acceptedCardBrands(TestFixture.acceptedCardBrands()) + + initialiseCardValidation(module, bridgeArguments.toJavaOnlyMap()) } } - override fun onStart() { - super.onStart() - - val pollStepsQueue = { - while (true) { - val action = actions.poll() - if (action != null) { - runOnUiThread { action.invoke(this) } - } - Thread.sleep(100L) - } - } - - scheduledExecutorService.schedule(pollStepsQueue, 500, MILLISECONDS) - - } - - override fun onStop() { - super.onStop() - - scheduledExecutorService.shutdownNow() - } - - private fun testFixtureToReadableMap(): JavaOnlyMap { - val arguments = JavaOnlyMap() - arguments.putString(bridgeFieldBaseUrl, CardValidationTestFixture.baseUrl()) - arguments.putString(bridgeFieldPanId, CardValidationTestFixture.panId()) - arguments.putString(bridgeFieldExpiryDateId, CardValidationTestFixture.expiryDateId()) - arguments.putString(bridgeFieldCvcId, CardValidationTestFixture.cvcId()) - arguments.putBoolean( - bridgeFieldEnablePanFormatting, CardValidationTestFixture.enablePanFormatting() - ) - - val acceptedCardBrands = JavaOnlyArray() - CardValidationTestFixture.acceptedCardBrands() - .forEach { brand -> acceptedCardBrands.pushString(brand) } - arguments.putArray(bridgeFieldAcceptedCardBrands, acceptedCardBrands) - return arguments - } - private suspend fun initialiseCardValidation( module: AccessCheckoutReactNativeModule, arguments: JavaOnlyMap @@ -151,10 +43,4 @@ class CardValidationInstrumentedTestsActivity : ComponentActivity(), module.initialiseCardValidation(arguments, promise) } - - private fun createEditText(id: String): EditText { - val editText = EditText(this) - editText.setTag(R.id.view_tag_native_id, id) - return editText - } } \ No newline at end of file diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationTestFixture.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationTestFixture.kt deleted file mode 100644 index 2da760e..0000000 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CardValidationTestFixture.kt +++ /dev/null @@ -1,72 +0,0 @@ -package com.worldpay.access.checkout.reactnative.validation - -class CardValidationTestFixture { - companion object { - private val INSTANCE = CardValidationTestFixture() - - private const val BASE_URL = "https://localhost:8443/" - - fun baseUrl(): String { - return BASE_URL - } - - fun validationTestFixture(): CardValidationTestFixture { - return INSTANCE - } - - fun panId(): String { - return INSTANCE.panId - } - - fun expiryDateId(): String { - return INSTANCE.expiryDateId - } - - fun cvcId(): String { - return INSTANCE.cvcId - } - - fun enablePanFormatting(): Boolean { - return INSTANCE.enablePanFormatting - } - - fun acceptedCardBrands(): List { - return INSTANCE.acceptedCardBrands - } - } - - private var panId: String = "" - private var expiryDateId: String = "" - private var cvcId: String = "" - private var enablePanFormatting = false - private var acceptedCardBrands: MutableList = ArrayList() - - fun panId(panId: String): CardValidationTestFixture { - this.panId = panId - return this - } - - fun expiryDateId(expiryDateId: String): CardValidationTestFixture { - this.expiryDateId = expiryDateId - return this - } - - fun cvcId(cvcId: String): CardValidationTestFixture { - this.cvcId = cvcId - return this - } - - fun acceptedCardBrands(cardBrands: List): CardValidationTestFixture { - acceptedCardBrands.addAll(cardBrands) - return this - } - - fun clear(): CardValidationTestFixture { - INSTANCE.panId = "" - INSTANCE.expiryDateId = "" - INSTANCE.cvcId = "" - INSTANCE.enablePanFormatting = false - INSTANCE.acceptedCardBrands.clear() - return this - } -} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationInstrumentedTestsActivity.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationInstrumentedTestsActivity.kt index e2e82a0..b20515d 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationInstrumentedTestsActivity.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationInstrumentedTestsActivity.kt @@ -1,113 +1,27 @@ package com.worldpay.access.checkout.reactnative.validation -import android.os.Bundle -import android.widget.EditText -import android.widget.LinearLayout -import android.widget.TextView.BufferType.EDITABLE -import androidx.activity.ComponentActivity import com.facebook.react.bridge.JavaOnlyMap import com.facebook.react.bridge.PromiseImpl -import com.facebook.soloader.SoLoader +import com.worldpay.access.checkout.reactnative.AbstractInstrumentedTestsActivity import com.worldpay.access.checkout.reactnative.AccessCheckoutReactNativeModule -import com.worldpay.access.checkout.reactnative.R -import com.worldpay.access.checkout.reactnative.react.EventMock import com.worldpay.access.checkout.reactnative.react.FailureCallback -import com.worldpay.access.checkout.reactnative.react.MockReactApplicationContext.Companion.mockReactApplicationContext import com.worldpay.access.checkout.reactnative.react.SuccessCallback -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope +import com.worldpay.access.checkout.reactnative.utils.BridgeArguments +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.baseUrl +import com.worldpay.access.checkout.reactnative.utils.TestConstants.Companion.cvcId import kotlinx.coroutines.launch -import java.util.concurrent.Executors -import java.util.concurrent.LinkedBlockingQueue -import java.util.concurrent.TimeUnit.MILLISECONDS import kotlin.coroutines.suspendCoroutine -class CvcOnlyValidationInstrumentedTestsActivity : ComponentActivity(), - CoroutineScope by MainScope() { - - companion object { - const val cvcId = "cvcId" - const val bridgeFieldBaseUrl = "baseUrl" - - const val bridgeFieldCvcId = "cvcId" - - private val actions = - LinkedBlockingQueue<((CvcOnlyValidationInstrumentedTestsActivity) -> Unit)>() - - fun run(action: (CvcOnlyValidationInstrumentedTestsActivity) -> Unit) { - actions.offer(action) - } - - fun clearActions() { - actions.clear() - } - } - - private val scheduledExecutorService = Executors.newScheduledThreadPool(4) - private val reactApplicationContext = mockReactApplicationContext(this) - - var cvcEditText: EditText? = null - - fun eventsReceived(): List { - return reactApplicationContext.rtcDeviceEventEmitter.eventsEmitted - } - - fun clearEventsReceived() { - reactApplicationContext.rtcDeviceEventEmitter.eventsEmitted.clear() - } - - fun setCvc(value: String) { - cvcEditText!!.setText(value, EDITABLE) - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - SoLoader.init(this, false) - - cvcEditText = createEditText(cvcId) - - val layout = LinearLayout(this) - layout.addView(cvcEditText) - setContentView(layout) - - val validationArguments = testFixtureToReadableMap() - val module = AccessCheckoutReactNativeModule(reactApplicationContext) +class CvcOnlyValidationInstrumentedTestsActivity : AbstractInstrumentedTestsActivity() { + override fun doOnCreate(module: AccessCheckoutReactNativeModule) { launch { - initialiseCvcOnlyValidation(module, validationArguments) - } - } - - override fun onStart() { - super.onStart() + val bridgeArguments = BridgeArguments() + .baseUrl(baseUrl) + .cvcId(cvcId) - val pollStepsQueue = { - while (true) { - val action = actions.poll() - if (action != null) { - runOnUiThread { action.invoke(this) } - } - Thread.sleep(100L) - } + initialiseCvcOnlyValidation(module, bridgeArguments.toJavaOnlyMap()) } - - scheduledExecutorService.schedule(pollStepsQueue, 500, MILLISECONDS) - - } - - override fun onStop() { - super.onStop() - - scheduledExecutorService.shutdownNow() - } - - private fun testFixtureToReadableMap(): JavaOnlyMap { - val arguments = JavaOnlyMap() - arguments.putString(bridgeFieldBaseUrl, CvcOnlyValidationTestFixture.baseUrl()) - arguments.putString(bridgeFieldCvcId, CvcOnlyValidationTestFixture.cvcId()) - - return arguments } private suspend fun initialiseCvcOnlyValidation( @@ -121,10 +35,4 @@ class CvcOnlyValidationInstrumentedTestsActivity : ComponentActivity(), module.initialiseCvcOnlyValidation(arguments, promise) } - - private fun createEditText(id: String): EditText { - val editText = EditText(this) - editText.setTag(R.id.view_tag_native_id, id) - return editText - } } \ No newline at end of file diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationTestFixture.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationTestFixture.kt deleted file mode 100644 index 43198d9..0000000 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/instrumentedTests/java/com/worldpay/access/checkout/reactnative/validation/CvcOnlyValidationTestFixture.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.worldpay.access.checkout.reactnative.validation - -class CvcOnlyValidationTestFixture { - companion object { - private val INSTANCE = CvcOnlyValidationTestFixture() - - private const val BASE_URL = "https://localhost:8443/" - - fun baseUrl(): String { - return BASE_URL - } - - fun cvcOnlyValidationTestFixture(): CvcOnlyValidationTestFixture { - return INSTANCE - } - - fun cvcId(): String { - return INSTANCE.cvcId - } - } - - private var cvcId: String = "" - - fun cvcId(cvcId: String): CvcOnlyValidationTestFixture { - this.cvcId = cvcId - return this - } - - fun clear(): CvcOnlyValidationTestFixture { - INSTANCE.cvcId = "" - return this - } -} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactNativeModule.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactNativeModule.kt index 63d21ed..c329203 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactNativeModule.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactNativeModule.kt @@ -4,7 +4,11 @@ import android.os.Handler import android.os.Looper import android.util.Log import androidx.lifecycle.LifecycleOwner -import com.facebook.react.bridge.* +import com.facebook.react.bridge.Promise +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod +import com.facebook.react.bridge.ReadableMap import com.facebook.react.uimanager.util.ReactFindViewUtil import com.worldpay.access.checkout.client.session.AccessCheckoutClient import com.worldpay.access.checkout.client.session.AccessCheckoutClientBuilder @@ -77,12 +81,9 @@ class AccessCheckoutReactNativeModule constructor( sessionResponseListener.promise = promise - val rootView = reactContext.currentActivity?.window?.decorView?.rootView - - val panView = ReactFindViewUtil.findView(rootView, config.panValue!!) as AccessCheckoutEditText - val expiryDateView = - ReactFindViewUtil.findView(rootView, config.expiryDateValue!!) as AccessCheckoutEditText - val cvcView = ReactFindViewUtil.findView(rootView, config.cvcValue!!) as AccessCheckoutEditText + val panView = findView(config.panId!!) + val expiryDateView = findView(config.expiryDateId!!) + val cvcView = findView(config.cvcId!!) val cardDetails: CardDetails = if (isCvcSessionOnly(config.sessionTypes)) { CardDetails.Builder() @@ -116,12 +117,10 @@ class AccessCheckoutReactNativeModule constructor( fun initialiseCardValidation(readableMap: ReadableMap, promise: Promise) { try { val config = CardValidationConfigConverter().fromReadableMap(readableMap) - val rootView = reactContext.currentActivity?.window?.decorView?.rootView - val panView = ReactFindViewUtil.findView(rootView, config.panId) as AccessCheckoutEditText - val expiryDateView = - ReactFindViewUtil.findView(rootView, config.expiryDateId) as AccessCheckoutEditText - val cvcView = ReactFindViewUtil.findView(rootView, config.cvcId) as AccessCheckoutEditText + val panView = findView(config.panId) + val expiryDateView = findView(config.expiryDateId) + val cvcView = findView(config.cvcId) val cardValidationConfigBuilder = CardValidationConfig.Builder() .baseUrl(config.baseUrl) @@ -161,9 +160,8 @@ class AccessCheckoutReactNativeModule constructor( fun initialiseCvcOnlyValidation(readableMap: ReadableMap, promise: Promise) { try { val config = CvcOnlyValidationConfigConverter().fromReadableMap(readableMap) - val rootView = reactContext.currentActivity?.window?.decorView?.rootView - val cvcView = ReactFindViewUtil.findView(rootView, config.cvcId) as AccessCheckoutEditText + val cvcView = findView(config.cvcId) val cvcOnlyValidationConfigBuilder = CvcValidationConfig.Builder() .cvc(cvcView) @@ -208,10 +206,16 @@ class AccessCheckoutReactNativeModule constructor( } } - private fun getLifecycleOwner() = (reactContext.currentActivity as LifecycleOwner) + private fun isCvcSessionOnly(sessionType: List): Boolean { return sessionType.count() == 1 && sessionType.first() == SessionType.CVC } + + private fun findView(viewId: String): T { + val rootView = reactContext.currentActivity?.window?.decorView?.rootView + @Suppress("UNCHECKED_CAST") + return ReactFindViewUtil.findView(rootView, viewId) as T + } } diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfig.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfig.kt index bd2e316..ac248b2 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfig.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfig.kt @@ -5,9 +5,9 @@ import com.worldpay.access.checkout.client.session.model.SessionType class GenerateSessionsConfig( val baseUrl: String, val merchantId: String, - val panValue: String?, - val expiryDateValue: String?, - val cvcValue: String?, + val panId: String?, + val expiryDateId: String?, + val cvcId: String?, val sessionTypes: List, val reactNativeSdkVersion: String ) diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfigConverter.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfigConverter.kt index eed085c..7347658 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfigConverter.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfigConverter.kt @@ -11,9 +11,9 @@ class GenerateSessionsConfigConverter { fun fromReadableMap(map: ReadableMap): GenerateSessionsConfig { val baseUrl = extractString(fromMap = map, forKey = "baseUrl") val merchantId = extractString(fromMap = map, forKey = "merchantId") - val panValue = extractString(fromMap = map, forKey = "panValue") - val expiryDateValue = extractString(fromMap = map, forKey = "expiryDateValue") - val cvcValue = extractString(fromMap = map, forKey = "cvcValue") + val panId = extractString(fromMap = map, forKey = "panId") + val expiryDateId = extractString(fromMap = map, forKey = "expiryDateId") + val cvcId = extractString(fromMap = map, forKey = "cvcId") val sessionTypes = map.getArray("sessionTypes") val reactNativeSdkVersion = extractString(fromMap = map, forKey = "reactNativeSdkVersion") @@ -24,28 +24,28 @@ class GenerateSessionsConfigConverter { val sessionTypesList = toSessionTypesList(sessionTypes) if (sessionTypesList.contains(CARD)) { - validateNonEmptyString(panValue, "panValue") - validateNonEmptyString(expiryDateValue, "expiryDateValue") - validateNonEmptyString(cvcValue, "cvcValue") + validateNonEmptyString(panId, "panId") + validateNonEmptyString(expiryDateId, "expiryDateId") + validateNonEmptyString(cvcId, "cvcId") return GenerateSessionsConfig( baseUrl = baseUrl!!, merchantId = merchantId!!, - panValue = panValue!!, - expiryDateValue = expiryDateValue!!, - cvcValue = cvcValue!!, + panId = panId!!, + expiryDateId = expiryDateId!!, + cvcId = cvcId!!, sessionTypes = sessionTypesList, reactNativeSdkVersion = reactNativeSdkVersion!! ) } else { - validateNonEmptyString(cvcValue, "cvcValue") + validateNonEmptyString(cvcId, "cvcId") return GenerateSessionsConfig( baseUrl = baseUrl!!, merchantId = merchantId!!, - panValue = "", - expiryDateValue = "", - cvcValue = cvcValue!!, + panId = "", + expiryDateId = "", + cvcId = cvcId!!, sessionTypes = sessionTypesList, reactNativeSdkVersion = reactNativeSdkVersion!! ) diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackageTest.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackageTest.kt index 9021452..ed80f41 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackageTest.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/AccessCheckoutReactPackageTest.kt @@ -22,7 +22,7 @@ internal class AccessCheckoutReactPackageTest { } @Test - fun `createViewManagers() should not create view managers`() { + fun `createViewManagers() should return a list with a single instance of AccessCheckoutEditTextManager`() { val viewManagers = acoReactPackage.createViewManagers(reactApplicationContext()) assertThat(viewManagers).hasSize(1) diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfigConverterTest.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfigConverterTest.kt index 023d63a..8e087db 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfigConverterTest.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/session/GenerateSessionsConfigConverterTest.kt @@ -18,9 +18,9 @@ class GenerateSessionsConfigConverterTest { assertThat(config.baseUrl).isEqualTo("some-base-url") assertThat(config.merchantId).isEqualTo("some-merchant-id") - assertThat(config.panValue).isEqualTo("some-pan-value") - assertThat(config.expiryDateValue).isEqualTo("some-expiry-date-value") - assertThat(config.cvcValue).isEqualTo("some-cvc-value") + assertThat(config.panId).isEqualTo("some-pan-value") + assertThat(config.expiryDateId).isEqualTo("some-expiry-date-value") + assertThat(config.cvcId).isEqualTo("some-cvc-value") assertThat(config.sessionTypes).isEqualTo(listOf(SessionType.CARD)) assertThat(config.reactNativeSdkVersion).isEqualTo("1.2.3") } @@ -86,93 +86,93 @@ class GenerateSessionsConfigConverterTest { } @Test - fun `should throw exception when session types contains card and panValue is null`() { + fun `should throw exception when session types contains card and panId is null`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putString("panValue", null) + map.putString("panId", null) assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected panValue to be provided but was not") + .withMessage("Expected panId to be provided but was not") } @Test - fun `should throw exception when session types contains card and panValue is not a String`() { + fun `should throw exception when session types contains card and panId is not a String`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putInt("panValue", 1) + map.putInt("panId", 1) assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected panValue to be a String but was not") + .withMessage("Expected panId to be a String but was not") } @Test - fun `should throw exception when session types contains card and panValue is an empty String`() { + fun `should throw exception when session types contains card and panId is an empty String`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putString("panValue", "") + map.putString("panId", "") assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected panValue to be a non-empty String but was not") + .withMessage("Expected panId to be a non-empty String but was not") } @Test fun `should throw exception when session types contains card and expiryDate is null`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putString("expiryDateValue", null) + map.putString("expiryDateId", null) assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected expiryDateValue to be provided but was not") + .withMessage("Expected expiryDateId to be provided but was not") } @Test - fun `should throw exception when session types contains card and expiryDateValue is not a String`() { + fun `should throw exception when session types contains card and expiryDateId is not a String`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putInt("expiryDateValue", 1) + map.putInt("expiryDateId", 1) assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected expiryDateValue to be a String but was not") + .withMessage("Expected expiryDateId to be a String but was not") } @Test - fun `should throw exception when session types contains card and expiryDateValue is an empty String`() { + fun `should throw exception when session types contains card and expiryDateId is an empty String`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putString("expiryDateValue", "") + map.putString("expiryDateId", "") assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected expiryDateValue to be a non-empty String but was not") + .withMessage("Expected expiryDateId to be a non-empty String but was not") } @Test - fun `should throw exception when session types contains card and cvcValue is null`() { + fun `should throw exception when session types contains card and cvcId is null`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putString("cvcValue", null) + map.putString("cvcId", null) assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected cvcValue to be provided but was not") + .withMessage("Expected cvcId to be provided but was not") } @Test - fun `should throw exception when session types contains card and cvcValue is not a String`() { + fun `should throw exception when session types contains card and cvcId is not a String`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putInt("cvcValue", 1) + map.putInt("cvcId", 1) assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected cvcValue to be a String but was not") + .withMessage("Expected cvcId to be a String but was not") } @Test - fun `should throw exception when session types contains card and cvcValue is an empty String`() { + fun `should throw exception when session types contains card and cvcId is an empty String`() { val map = mapWithCardSessionTypesAndValidEntries() - map.putString("cvcValue", "") + map.putString("cvcId", "") assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected cvcValue to be a non-empty String but was not") + .withMessage("Expected cvcId to be a non-empty String but was not") } @Test @@ -183,9 +183,9 @@ class GenerateSessionsConfigConverterTest { assertThat(config.baseUrl).isEqualTo("some-base-url") assertThat(config.merchantId).isEqualTo("some-merchant-id") - assertThat(config.panValue).isEqualTo("some-pan-value") - assertThat(config.expiryDateValue).isEqualTo("some-expiry-date-value") - assertThat(config.cvcValue).isEqualTo("some-cvc-value") + assertThat(config.panId).isEqualTo("some-pan-value") + assertThat(config.expiryDateId).isEqualTo("some-expiry-date-value") + assertThat(config.cvcId).isEqualTo("some-cvc-value") assertThat(config.sessionTypes).isEqualTo(listOf(SessionType.CARD)) assertThat(config.reactNativeSdkVersion).isEqualTo("1.2.3") } @@ -193,31 +193,31 @@ class GenerateSessionsConfigConverterTest { @Test fun `should throw exception when session types contains cvc and cvc is null`() { val map = mapWithCvcSessionTypesAndValidEntries() - map.putString("cvcValue", null) + map.putString("cvcId", null) assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected cvcValue to be provided but was not") + .withMessage("Expected cvcId to be provided but was not") } @Test - fun `should throw exception when session types contains cvc and cvcValue is not a String`() { + fun `should throw exception when session types contains cvc and cvcId is not a String`() { val map = mapWithCvcSessionTypesAndValidEntries() - map.putInt("cvcValue", 1) + map.putInt("cvcId", 1) assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected cvcValue to be a String but was not") + .withMessage("Expected cvcId to be a String but was not") } @Test - fun `should throw exception when session types contains cvc and cvcValue is an empty String`() { + fun `should throw exception when session types contains cvc and cvcId is an empty String`() { val map = mapWithCvcSessionTypesAndValidEntries() - map.putString("cvcValue", "") + map.putString("cvcId", "") assertThatIllegalArgumentException() .isThrownBy { converter.fromReadableMap(map) } - .withMessage("Expected cvcValue to be a non-empty String but was not") + .withMessage("Expected cvcId to be a non-empty String but was not") } @Test @@ -228,7 +228,7 @@ class GenerateSessionsConfigConverterTest { assertThat(config.baseUrl).isEqualTo("some-base-url") assertThat(config.merchantId).isEqualTo("some-merchant-id") - assertThat(config.cvcValue).isEqualTo("some-cvc-value") + assertThat(config.cvcId).isEqualTo("some-cvc-value") assertThat(config.sessionTypes).isEqualTo(listOf(SessionType.CVC)) assertThat(config.reactNativeSdkVersion).isEqualTo("1.2.3") } @@ -317,9 +317,9 @@ class GenerateSessionsConfigConverterTest { val map = JavaOnlyMap() map.putString("baseUrl", "some-base-url") map.putString("merchantId", "some-merchant-id") - map.putString("panValue", "some-pan-value") - map.putString("expiryDateValue", "some-expiry-date-value") - map.putString("cvcValue", "some-cvc-value") + map.putString("panId", "some-pan-value") + map.putString("expiryDateId", "some-expiry-date-value") + map.putString("cvcId", "some-cvc-value") map.putArray("sessionTypes", JavaOnlyArray.of("card")) map.putString("reactNativeSdkVersion", "1.2.3") return map @@ -329,7 +329,7 @@ class GenerateSessionsConfigConverterTest { val map = JavaOnlyMap() map.putString("baseUrl", "some-base-url") map.putString("merchantId", "some-merchant-id") - map.putString("cvcValue", "some-cvc-value") + map.putString("cvcId", "some-cvc-value") map.putArray("sessionTypes", JavaOnlyArray.of("cvc")) map.putString("reactNativeSdkVersion", "1.2.3") return map diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/validation/CardCardCardValidationConfigConverterTest.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/validation/CardValidationConfigConverterTest.kt similarity index 98% rename from access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/validation/CardCardCardValidationConfigConverterTest.kt rename to access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/validation/CardValidationConfigConverterTest.kt index a6e511d..aa11d4a 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/validation/CardCardCardValidationConfigConverterTest.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/validation/CardValidationConfigConverterTest.kt @@ -6,7 +6,7 @@ import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThatIllegalArgumentException import org.junit.Test -class CardCardCardValidationConfigConverterTest { +class CardValidationConfigConverterTest { private val converter = CardValidationConfigConverter() @Test From e43747ecac634c1baab4775d448b860144036353 Mon Sep 17 00:00:00 2001 From: Olivier Chalet Date: Fri, 5 Jan 2024 14:00:41 +0000 Subject: [PATCH 03/26] US1782181: update Android emulator boot timeout to cater for longer boot times --- access-checkout-react-native-sdk/android/bitrise.yml | 5 ++++- demo-app/bitrise.yml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/access-checkout-react-native-sdk/android/bitrise.yml b/access-checkout-react-native-sdk/android/bitrise.yml index 9f1645c..24abd8e 100644 --- a/access-checkout-react-native-sdk/android/bitrise.yml +++ b/access-checkout-react-native-sdk/android/bitrise.yml @@ -16,7 +16,10 @@ workflows: title: Start Android emulator inputs: - api_level: '30' - - wait-for-android-emulator@1: {} + - wait-for-android-emulator@1: + title: Wait for Android emulator to boot + inputs: + - boot_timeout: 450 - script@1: title: Run instrumentation tests inputs: diff --git a/demo-app/bitrise.yml b/demo-app/bitrise.yml index 97ab5aa..eea1792 100644 --- a/demo-app/bitrise.yml +++ b/demo-app/bitrise.yml @@ -36,7 +36,7 @@ workflows: - wait-for-android-emulator@1: title: Wait for Android emulator to boot inputs: - - boot_timeout: 600 + - boot_timeout: 450 - script@1.2: title: "Run Detox e2e tests for Android" inputs: From 59748ce635afc62c39eccccfabf8152045303756 Mon Sep 17 00:00:00 2001 From: Olivier Chalet Date: Mon, 8 Jan 2024 11:17:25 +0000 Subject: [PATCH 04/26] US1782181: patch Boost pod.spec while issue is being fixed - See Boost issue - https://github.com/boostorg/boost/issues/843 - See temporary workaround proposed by Facebook - https://github.com/facebook/react-native/issues/42180 --- demo-app/bitrise.yml | 5 +++++ demo-app/scripts/ci/patch-boost-podspec.sh | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100755 demo-app/scripts/ci/patch-boost-podspec.sh diff --git a/demo-app/bitrise.yml b/demo-app/bitrise.yml index eea1792..10ebf68 100644 --- a/demo-app/bitrise.yml +++ b/demo-app/bitrise.yml @@ -79,6 +79,11 @@ workflows: inputs: - command: ls - workdir: $BITRISE_SOURCE_DIR/demo-app/ + - script@1.2: + title: "Patch Boost podspec" + inputs: + - working_dir: $BITRISE_SOURCE_DIR/demo-app/ + - content: ./scripts/ci/patch-boost-podspec.sh - cocoapods-install@2: title: "Install pods for iOS Bridge SDK" inputs: diff --git a/demo-app/scripts/ci/patch-boost-podspec.sh b/demo-app/scripts/ci/patch-boost-podspec.sh new file mode 100755 index 0000000..ca4c51a --- /dev/null +++ b/demo-app/scripts/ci/patch-boost-podspec.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# This script is used to patch an issue during the installation of the Boost pod dependency +# See Boost issue - https://github.com/boostorg/boost/issues/843 +# Temporary workaround proposed by Facebook - https://github.com/facebook/react-native/issues/42180 + +# replacing https://boostorg.jfrog.io/artifactory/main by https://archives.boost.io +# and creating temp file +cat ./node_modules/react-native/third-party-podspecs/boost.podspec | sed s/boostorg.jfrog.io\\/artifactory\\/main/archives.boost.io/ > node_modules/react-native/third-party-podspecs/temp + +# overwrite boost.podspec file +mv node_modules/react-native/third-party-podspecs/temp node_modules/react-native/third-party-podspecs/boost.podspec From 441e163fc66780ed2da9acc1a9be40f02f768b88 Mon Sep 17 00:00:00 2001 From: abaeza-wp <153538325+abaeza-wp@users.noreply.github.com> Date: Mon, 15 Jan 2024 08:20:58 +0000 Subject: [PATCH 05/26] US1762588 - [iOS] React Native Demo Components Refactor and Props (#86) * Us1762585 - iOS Refactor Native components (#81) * US1762570: create view manager to native AccessCheckoutEditText component; override onTextChange to support the react native onChangeText event; implement component in react native * US1762550: update card details field to use new component; update RN module to use reference to AccessCheckoutEditText and not the text value * US1762550: move AccessCheckoutEditTextManager to correct file path; update local android sdk files to most up-to-date version of master; update AccessCheckoutReactPackageTest * US1782181: add unit tests for AccessCheckoutEditTextManagerTest; add mockito to build.gradle for unit tests * US1762551: Expose AccessCheckoutUITextField to be able to use native components via the ios Bridge Simplify ReactNativeViewLocator and implement/expose specific POC methods to avoid disruptions with previous implementation Add POC toggle to demo app to be able to switch implementations Expose new POC validation and sessionGeneration methods to avoid diruptions with previous implementations * US1762551: Point client to npe environment * US1762585: Refactor ios Bridge and demo application Avoids having to handle inputs in states Uses native components Only a input field id is needed in order to configure validation and session generation for a field Integrate the latest AccessCheckoutUITextField changes Updates and renames cvcValue to cvcId Updates and renames panValue to panId Updates and renames expiryDateValue to expiryDateId * US1762585: Rebuild lib and clean up files * US1762585: Minor cleanup * US1762585: Rebuild lib files Rename AccessCheckoutEditText to AccessCheckoutInputText as EditText was specific to Android Minor renaming of fields like panUITextField to panACUITextField to improve readability and make it known that we are dealing with AccessCheckoutUITextField in the iOS bridge * US1762585: Rename AccessCheckoutEditText to AccessCheckoutInputText in Android bridge * US1762585: Rename AccessCheckoutInputText to AccessCheckoutTextInput Rebuild lib files * US1762585: Update bitrise-step to use xcode-test v5 and update e2e tests (#82) * US1762585: Update bitrise-step to use xcode-test v5 * US1762585: Use Optionals to mantain compatibility in both Xcode 13 and Xcode 15 * US1762585: Update e2e tests * US1762585: Improve matcher based on platform using type * US1762585: Remove TextInputPO as it is no longer used --------- Co-authored-by: e5661323 * US1762588: Clean and Refactor CVC Expiry and Pan React Native Demo components Define Props and types to ReactNative component and Native component props * US1762588: Use paddingHorizontal in demo components * US1762588: Add Android AccessCheckoutEditText defaults when initialising the component * US1762588: Add Support for fonts via styling, minor refactorings * US1762588: Remove Comment and support for keyboartType in iOS Bridge * US1762588: Revert pod local version * US1762588: rebuild pod files to point to remote AccessCheckoutSDK * US1762588: rebuild pod files to point to remote AccessCheckoutSDK * US1762588: Remove support for fontStyle and fontWeight * US1762588: Add correct colours to text when input is not editable, remove inverted expression * US1762588: Fixx import after rebase * US1762588: Clean imports * US1762588: Remove unnecessary comments * US1762588: Rename fontColor to color, and remap in iOS Bridge Reset defaults provided by AccessCheckoutUITextfield Reset insets using horizontalPadding in AccessCheckoutUITextfield * US1762588: point to correct tag instad of branch * US1762588: Update pod deps * US1762588: change BitRise flow for iOS Bridge and iOS e2e tests to update and install Pods rather than just install --------- Co-authored-by: e5661323 Co-authored-by: Olivier Chalet --- .../ui/AccessCheckoutTextInputManager.kt | 15 ++- .../project.pbxproj | 104 +++++++++--------- .../AccessCheckoutTextInputManager.m | 12 +- .../AccessCheckoutTextInputManager.swift | 11 +- .../ios/bitrise.yml | 1 + .../src/ui/AccessCheckoutTextInput.tsx | 78 ++++++++++--- demo-app/bitrise.yml | 2 + demo-app/src/card-flow/CardFlow.tsx | 7 +- demo-app/src/common/CvcField.tsx | 25 ++--- demo-app/src/common/ExpiryDateField.tsx | 36 +++--- demo-app/src/common/PanField.tsx | 23 ++-- demo-app/src/cvc-flow/CvcFlow.tsx | 7 +- 12 files changed, 195 insertions(+), 126 deletions(-) diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt index 212bc5b..6b54980 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt @@ -1,5 +1,6 @@ package com.worldpay.access.checkout.reactnative.ui +import android.view.Gravity import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.uimanager.SimpleViewManager import com.facebook.react.uimanager.ThemedReactContext @@ -7,6 +8,7 @@ import com.facebook.react.uimanager.ViewProps import com.facebook.react.uimanager.annotations.ReactProp import com.worldpay.access.checkout.ui.AccessCheckoutEditText + class AccessCheckoutTextInputManager(private val callerContext: ReactApplicationContext) : SimpleViewManager() { @@ -16,7 +18,18 @@ class AccessCheckoutTextInputManager(private val callerContext: ReactApplication const val REACT_CLASS = "AccessCheckoutTextInput" } - override fun createViewInstance(context: ThemedReactContext) = AccessCheckoutEditText(context) + override fun createViewInstance(context: ThemedReactContext): AccessCheckoutEditText { + val accessCheckoutEditText = AccessCheckoutEditText(context) + + // In order to replicate React Native behaviours in both ios and android we need reset + // the default paddings gravity and background added by Android + accessCheckoutEditText.background = null + accessCheckoutEditText.textSize = 14f + accessCheckoutEditText.setPadding(0,0,0,0); + accessCheckoutEditText.gravity = Gravity.CENTER; + + return accessCheckoutEditText; + } /** * Properties diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj index d75c58d..16f52ce 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 1CC8928EBC7BA5C6989817C6 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 973FA82098C3170A2141C869 /* Pods_AccessCheckoutReactNativeUnitTests.framework */; }; + 3C0D48D587E87DACB3E53576 /* Pods_AccessCheckoutReactNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EA125B27E2E84EB311DAA1B /* Pods_AccessCheckoutReactNative.framework */; }; 46D3A9632B3447AE0056016D /* SessionGenerationTestUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D3A9622B3447AE0056016D /* SessionGenerationTestUIViewController.swift */; }; 46D3A9652B34494B0056016D /* SessionGenerationTest.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46D3A9642B34494B0056016D /* SessionGenerationTest.storyboard */; }; 46D3A9682B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D3A9672B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift */; }; @@ -47,8 +49,6 @@ 51D03E9C27A8611D009781EB /* CardValidationTest.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 51D03E9B27A8611D009781EB /* CardValidationTest.storyboard */; }; 51D03EBC27A8658B009781EB /* CardValidationTestUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51D03EBB27A8658B009781EB /* CardValidationTestUIViewController.swift */; }; 64ADC9392816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64ADC9382816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift */; }; - A9ED72A5E9195DD948506388 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0FA73C387ECF40CBA927EFB1 /* Pods_AccessCheckoutReactNativeUnitTests.framework */; }; - F9072E98B9F57D1BF6246204 /* Pods_AccessCheckoutReactNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E69F34F7070C19C89742890 /* Pods_AccessCheckoutReactNative.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -69,10 +69,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00ABDCBCE0FE39A5A7B91754 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; sourceTree = ""; }; - 0FA73C387ECF40CBA927EFB1 /* Pods_AccessCheckoutReactNativeUnitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNativeUnitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 297BA316EEA9A3E0CC6C6C63 /* Pods-AccessCheckoutReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.release.xcconfig"; sourceTree = ""; }; - 2E69F34F7070C19C89742890 /* Pods_AccessCheckoutReactNative.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNative.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 15BE4712608F8E988DB45B98 /* Pods-AccessCheckoutReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.debug.xcconfig"; sourceTree = ""; }; 46D3A9622B3447AE0056016D /* SessionGenerationTestUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionGenerationTestUIViewController.swift; sourceTree = ""; }; 46D3A9642B34494B0056016D /* SessionGenerationTest.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SessionGenerationTest.storyboard; sourceTree = ""; }; 46D3A9672B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessCheckoutReactNativeTestImplementation.swift; sourceTree = ""; }; @@ -117,9 +114,12 @@ 51D03E8027A8601B009781EB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 51D03E9B27A8611D009781EB /* CardValidationTest.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CardValidationTest.storyboard; sourceTree = ""; }; 51D03EBB27A8658B009781EB /* CardValidationTestUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardValidationTestUIViewController.swift; sourceTree = ""; }; + 60352FB6B516E97491CD890B /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; sourceTree = ""; }; 64ADC9382816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccessCheckoutReactNativeSessionAcceptanceTests.swift; sourceTree = ""; }; - A801B54B720EBD674E60E506 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; sourceTree = ""; }; - DA445251C9260C65BDB821A4 /* Pods-AccessCheckoutReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.debug.xcconfig"; sourceTree = ""; }; + 973FA82098C3170A2141C869 /* Pods_AccessCheckoutReactNativeUnitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNativeUnitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9EA125B27E2E84EB311DAA1B /* Pods_AccessCheckoutReactNative.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNative.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A52DA71C26BDE615849C74B7 /* Pods-AccessCheckoutReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.release.xcconfig"; sourceTree = ""; }; + E43A9F2DDFBFE934BFCDB703 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -127,7 +127,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F9072E98B9F57D1BF6246204 /* Pods_AccessCheckoutReactNative.framework in Frameworks */, + 3C0D48D587E87DACB3E53576 /* Pods_AccessCheckoutReactNative.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -136,7 +136,7 @@ buildActionMask = 2147483647; files = ( 516A9F612757D3B800E9B00E /* AccessCheckoutReactNative.framework in Frameworks */, - A9ED72A5E9195DD948506388 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */, + 1CC8928EBC7BA5C6989817C6 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -150,13 +150,22 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 02AADC24B98CA8C53FB1C1E4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9EA125B27E2E84EB311DAA1B /* Pods_AccessCheckoutReactNative.framework */, + 973FA82098C3170A2141C869 /* Pods_AccessCheckoutReactNativeUnitTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 0B03ABF5587A3A533DCAD4DF /* Pods */ = { isa = PBXGroup; children = ( - DA445251C9260C65BDB821A4 /* Pods-AccessCheckoutReactNative.debug.xcconfig */, - 297BA316EEA9A3E0CC6C6C63 /* Pods-AccessCheckoutReactNative.release.xcconfig */, - A801B54B720EBD674E60E506 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */, - 00ABDCBCE0FE39A5A7B91754 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */, + 15BE4712608F8E988DB45B98 /* Pods-AccessCheckoutReactNative.debug.xcconfig */, + A52DA71C26BDE615849C74B7 /* Pods-AccessCheckoutReactNative.release.xcconfig */, + E43A9F2DDFBFE934BFCDB703 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */, + 60352FB6B516E97491CD890B /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -178,7 +187,7 @@ 51D03E6727A85FBA009781EB /* AccessCheckoutReactNativeUnitTestsApp */, 516A9F582757D3B800E9B00E /* Products */, 0B03ABF5587A3A533DCAD4DF /* Pods */, - D328A7054FE44725EB747E9F /* Frameworks */, + 02AADC24B98CA8C53FB1C1E4 /* Frameworks */, ); sourceTree = ""; }; @@ -294,15 +303,6 @@ path = AccessCheckoutReactNativeUnitTestsApp; sourceTree = ""; }; - D328A7054FE44725EB747E9F /* Frameworks */ = { - isa = PBXGroup; - children = ( - 2E69F34F7070C19C89742890 /* Pods_AccessCheckoutReactNative.framework */, - 0FA73C387ECF40CBA927EFB1 /* Pods_AccessCheckoutReactNativeUnitTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -321,12 +321,12 @@ isa = PBXNativeTarget; buildConfigurationList = 516A9F6B2757D3B800E9B00E /* Build configuration list for PBXNativeTarget "AccessCheckoutReactNative" */; buildPhases = ( - 035376D4EE81B163044EF1D3 /* [CP] Check Pods Manifest.lock */, + 66EB6E8DF9509768BE5ABD93 /* [CP] Check Pods Manifest.lock */, 516A9F522757D3B800E9B00E /* Headers */, 516A9F532757D3B800E9B00E /* Sources */, 516A9F542757D3B800E9B00E /* Frameworks */, 516A9F552757D3B800E9B00E /* Resources */, - 74ED40430D411C1CB57F1461 /* [CP] Copy Pods Resources */, + CD3F96AD3EA7B44F1C952171 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -341,12 +341,12 @@ isa = PBXNativeTarget; buildConfigurationList = 516A9F6E2757D3B800E9B00E /* Build configuration list for PBXNativeTarget "AccessCheckoutReactNativeUnitTests" */; buildPhases = ( - 4A337EC7BA38160744E362E2 /* [CP] Check Pods Manifest.lock */, + 6BDB455C4DEEB4CDDADAB492 /* [CP] Check Pods Manifest.lock */, 516A9F5C2757D3B800E9B00E /* Sources */, 516A9F5D2757D3B800E9B00E /* Frameworks */, 516A9F5E2757D3B800E9B00E /* Resources */, - 5B38B89F26ADB90120C112C7 /* [CP] Embed Pods Frameworks */, - A49419855F7224F2AE1BCB61 /* [CP] Copy Pods Resources */, + 43638F515446F3561A5CEF56 /* [CP] Embed Pods Frameworks */, + EDBFAF282AC052247DFD40E0 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -451,29 +451,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 035376D4EE81B163044EF1D3 /* [CP] Check Pods Manifest.lock */ = { + 43638F515446F3561A5CEF56 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-AccessCheckoutReactNative-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 4A337EC7BA38160744E362E2 /* [CP] Check Pods Manifest.lock */ = { + 66EB6E8DF9509768BE5ABD93 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -488,31 +483,36 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-AccessCheckoutReactNativeUnitTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-AccessCheckoutReactNative-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 5B38B89F26ADB90120C112C7 /* [CP] Embed Pods Frameworks */ = { + 6BDB455C4DEEB4CDDADAB492 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-AccessCheckoutReactNativeUnitTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 74ED40430D411C1CB57F1461 /* [CP] Copy Pods Resources */ = { + CD3F96AD3EA7B44F1C952171 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -529,7 +529,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative-resources.sh\"\n"; showEnvVarsInLog = 0; }; - A49419855F7224F2AE1BCB61 /* [CP] Copy Pods Resources */ = { + EDBFAF282AC052247DFD40E0 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -779,7 +779,7 @@ }; 516A9F6C2757D3B800E9B00E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DA445251C9260C65BDB821A4 /* Pods-AccessCheckoutReactNative.debug.xcconfig */; + baseConfigurationReference = 15BE4712608F8E988DB45B98 /* Pods-AccessCheckoutReactNative.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; @@ -807,7 +807,7 @@ }; 516A9F6D2757D3B800E9B00E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 297BA316EEA9A3E0CC6C6C63 /* Pods-AccessCheckoutReactNative.release.xcconfig */; + baseConfigurationReference = A52DA71C26BDE615849C74B7 /* Pods-AccessCheckoutReactNative.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; @@ -834,7 +834,7 @@ }; 516A9F6F2757D3B800E9B00E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A801B54B720EBD674E60E506 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */; + baseConfigurationReference = E43A9F2DDFBFE934BFCDB703 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CODE_SIGN_STYLE = Automatic; @@ -855,7 +855,7 @@ }; 516A9F702757D3B800E9B00E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 00ABDCBCE0FE39A5A7B91754 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */; + baseConfigurationReference = 60352FB6B516E97491CD890B /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CODE_SIGN_STYLE = Automatic; diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.m b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.m index 7d1daaf..b4f6325 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.m +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.m @@ -2,6 +2,14 @@ #import @interface RCT_EXTERN_MODULE(AccessCheckoutTextInputManager, RCTViewManager) -//Externalises properties -RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString) + +//Externalises properties using a remap in case of name changes +//RCT_REMAP_VIEW_PROPERTY(RN property name, ios property name, type) + +RCT_REMAP_VIEW_PROPERTY(placeholder, placeholder, NSString) +RCT_REMAP_VIEW_PROPERTY(editable, isEnabled, BOOL) + +RCT_REMAP_VIEW_PROPERTY(color, textColor, UIColor) +RCT_REMAP_VIEW_PROPERTY(font, font, UIFont) + @end diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.swift b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.swift index 82032e8..d3c047b 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.swift +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative/AccessCheckoutTextInputManager.swift @@ -1,11 +1,20 @@ import AccessCheckoutSDK import Foundation + import React @objc(AccessCheckoutTextInputManager) class AccessCheckoutTextInputManager: RCTViewManager { override func view() -> UIView! { - return AccessCheckoutUITextField() + var field = AccessCheckoutUITextField() + + // In order to replicate React Native behaviours in both ios and android we need reset + // the default padding, borders and radius added by AccessCheckoutUITextField + field.borderWidth = 0 + field.cornerRadius = 0 + field.horizontalPadding = 0 + + return field } override static func requiresMainQueueSetup() -> Bool { diff --git a/access-checkout-react-native-sdk/ios/bitrise.yml b/access-checkout-react-native-sdk/ios/bitrise.yml index 389c565..9beb0c2 100644 --- a/access-checkout-react-native-sdk/ios/bitrise.yml +++ b/access-checkout-react-native-sdk/ios/bitrise.yml @@ -14,6 +14,7 @@ workflows: - cocoapods-install@2: inputs: - source_root_path: "$BITRISE_SOURCE_DIR/access-checkout-react-native-sdk/ios" + - command: update - recreate-user-schemes@1: inputs: - project_path: "$BITRISE_SOURCE_DIR/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj" diff --git a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx index c048029..a71af92 100644 --- a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx +++ b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx @@ -1,35 +1,85 @@ import React from 'react'; import { requireNativeComponent, - StyleProp, - TextStyle, - type ViewProps, + type StyleProp, + StyleSheet, + View, + type ViewStyle, } from 'react-native'; +import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet'; /** * Composes `AccessCheckoutTextInput`. * * - nativeID: string * - testID: string - * - style: StyleProp - * - editable: boolean + * - style: StyleProp; * - placeholder: string + * - editable: boolean */ -interface AccessCheckoutTextInputProps extends ViewProps { - testID: string | undefined; - style?: StyleProp; - editable?: boolean | undefined; - placeholder?: string | undefined; - isValid?: boolean; - keyboardType?: string; +interface AccessCheckoutTextInputProps { + nativeID: string; + testID?: string; + style?: StyleProp; + placeholder?: string; + editable?: boolean; +} + +/** + * Note: Not all properties apply styling to placeholder text and input text. + * textColor: only applies to input text. + * fontFamily: applies to both placeholder text and input text. + * fontSize:applies to both placeholder text and input text. + */ +interface AccessCheckoutTextInputStyle extends ViewStyle { + color?: ColorValue; + fontFamily?: string; + fontSize?: number; +} + +/** + * Font Changes apply to placeholder text and input text + */ +interface RTCAccessCheckoutTextInputFontProps { + fontFamily?: string; + fontSize?: number; +} + +interface RTCAccessCheckoutTextInputProps { + nativeID: string; + testID?: string; + style?: StyleProp; + placeholder?: string; + font?: RTCAccessCheckoutTextInputFontProps; + editable?: boolean; + color?: ColorValue; } const RTCAccessCheckoutTextInput = - requireNativeComponent( + requireNativeComponent( 'AccessCheckoutTextInput' ); const AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => { - return ; + const { nativeID, testID, style, placeholder, editable } = props; + const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([ + style, + ]); + return ( + + + + ); }; export default AccessCheckoutTextInput; diff --git a/demo-app/bitrise.yml b/demo-app/bitrise.yml index 10ebf68..00defef 100644 --- a/demo-app/bitrise.yml +++ b/demo-app/bitrise.yml @@ -87,10 +87,12 @@ workflows: - cocoapods-install@2: title: "Install pods for iOS Bridge SDK" inputs: + - command: update - source_root_path: $BITRISE_SOURCE_DIR/access-checkout-react-native-sdk/ios/ - cocoapods-install@2: title: "Install pods for demo-app" inputs: + - command: update - source_root_path: $BITRISE_SOURCE_DIR/demo-app/ios/ - script@1.2: title: "Build app for Detox" diff --git a/demo-app/src/card-flow/CardFlow.tsx b/demo-app/src/card-flow/CardFlow.tsx index 9d3d0e0..a91d48e 100644 --- a/demo-app/src/card-flow/CardFlow.tsx +++ b/demo-app/src/card-flow/CardFlow.tsx @@ -10,8 +10,7 @@ import { Sessions, useCardValidation, } from '../../../access-checkout-react-native-sdk/src/index'; -import type SessionGenerationConfig - from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; +import type SessionGenerationConfig from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; import CardBrandImage from '../common/CardBrandImage'; import CvcField from '../common/CvcField'; import ErrorView from '../common/ErrorView'; @@ -108,7 +107,7 @@ export default function CardFlow() { const { initialiseCardValidation } = useCardValidation( accessCheckout, validationConfig, - validationEventListener, + validationEventListener ); const onLayout = () => { @@ -137,7 +136,7 @@ export default function CardFlow() { accessCheckout .generateSessions(sessionGenerationConfig, sessionTypes) .then((sessions: Sessions) => { - console.info(`Successfully generated session(s)`); + console.info('Successfully generated session(s)'); if (sessions.card) { setCardSession(sessions.card); diff --git a/demo-app/src/common/CvcField.tsx b/demo-app/src/common/CvcField.tsx index d5f86ae..72bfa01 100644 --- a/demo-app/src/common/CvcField.tsx +++ b/demo-app/src/common/CvcField.tsx @@ -1,22 +1,17 @@ import React from 'react'; import { StyleSheet } from 'react-native'; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import commonStyles from './common-styles.js'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import UIComponentProps from './UIComponentProps'; +import type UIComponentProps from './UIComponentProps'; import AccessCheckoutTextInput from '../../../access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput'; const styles = StyleSheet.create({ cvc: { flex: 1, + flexDirection: 'row', margin: 12, borderWidth: 1, borderRadius: 5, - padding: 10, height: 40, + paddingHorizontal: 10, }, }); @@ -26,20 +21,20 @@ interface CvcFieldProps extends UIComponentProps { } const CvcField = (props: CvcFieldProps) => { + const validationColours = props.isValid ? 'green' : 'red'; + const validationColourStyle = props.isEditable ? validationColours : 'silver'; + return ( diff --git a/demo-app/src/common/ExpiryDateField.tsx b/demo-app/src/common/ExpiryDateField.tsx index 71b3915..a9b74dd 100644 --- a/demo-app/src/common/ExpiryDateField.tsx +++ b/demo-app/src/common/ExpiryDateField.tsx @@ -1,44 +1,42 @@ import React from 'react'; -import { StyleSheet } from 'react-native'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import commonStyles from './common-styles.js'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import UIComponentProps from './UIComponentProps'; + +import type UIComponentProps from './UIComponentProps'; import AccessCheckoutTextInput from '../../../access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput'; +import { StyleSheet } from 'react-native'; + +interface ExpiryDateFieldProps extends UIComponentProps { + isEditable: boolean; + isValid: boolean; +} const styles = StyleSheet.create({ expiry: { flex: 1, + flexDirection: 'row', margin: 12, borderWidth: 1, borderRadius: 5, - padding: 10, height: 40, + paddingHorizontal: 10, }, }); -interface ExpiryDateFieldProps extends UIComponentProps { - isEditable: boolean; - isValid: boolean; -} - const ExpiryDateField = (props: ExpiryDateFieldProps) => { + const validationColours = props.isValid ? 'green' : 'red'; + const validationColourStyle = props.isEditable ? validationColours : 'silver'; + return ( ); diff --git a/demo-app/src/common/PanField.tsx b/demo-app/src/common/PanField.tsx index a41c660..c0ec439 100644 --- a/demo-app/src/common/PanField.tsx +++ b/demo-app/src/common/PanField.tsx @@ -1,21 +1,17 @@ import React from 'react'; import { StyleSheet } from 'react-native'; import AccessCheckoutTextInput from '../../../access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import commonStyles from './common-styles.js'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import UIComponentProps from './UIComponentProps'; +import type UIComponentProps from './UIComponentProps'; const styles = StyleSheet.create({ pan: { flex: 8, + flexDirection: 'row', margin: 12, marginRight: 5, borderWidth: 1, borderRadius: 5, - padding: 10, + paddingHorizontal: 10, height: 40, }, }); @@ -26,19 +22,20 @@ interface PanFieldProps extends UIComponentProps { } const PanField = (props: PanFieldProps) => { + const validationColours = props.isValid ? 'green' : 'red'; + const validationColourStyle = props.isEditable ? validationColours : 'silver'; + return ( diff --git a/demo-app/src/cvc-flow/CvcFlow.tsx b/demo-app/src/cvc-flow/CvcFlow.tsx index 647d0b9..6c52f03 100644 --- a/demo-app/src/cvc-flow/CvcFlow.tsx +++ b/demo-app/src/cvc-flow/CvcFlow.tsx @@ -8,10 +8,7 @@ import { Sessions, useCvcOnlyValidation, } from '../../../access-checkout-react-native-sdk/src'; -import type SessionGenerationConfig - from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore +import type SessionGenerationConfig from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; import styles from '../card-flow/style.js'; import CvcField from '../common/CvcField'; import ErrorView from '../common/ErrorView'; @@ -58,7 +55,7 @@ export default function CvcFlow() { const { initialiseCvcOnlyValidation } = useCvcOnlyValidation( accessCheckout, cvcOnlyValidationConfig, - cvcOnlyValidationEventListener, + cvcOnlyValidationEventListener ); const onLayout = () => { From 3c5056ee4eb0d536f99aa08dbc3d05f1bf480569 Mon Sep 17 00:00:00 2001 From: Jason <101661402+jmensahWP@users.noreply.github.com> Date: Tue, 16 Jan 2024 10:56:31 +0000 Subject: [PATCH 06/26] US1762599 - [Android] React Native Demo Components Refactor and Props (#87) * US1762588: Add Support for fonts via styling, minor refactorings * US1762588: Revert pod local version * US1762588: rebuild pod files to point to remote AccessCheckoutSDK * US1782181: change app to display error in a div rather as an alert * US1762599: add support for fontSize, placeholderColor & borderColor * US1762599: update textColor support; add support for font; update unit tests * US1762599: run format task * US1762599: update access-checkout-android 3.0.0 to latest jar * US1762599: add customType to AccessCheckoutTextInputManager to allow color to be parsed correctly from demo-app Co-authored-by: abaeza-wp <153538325+abaeza-wp@users.noreply.github.com> Co-authored-by: Olivier Chalet --- .../ui/AccessCheckoutTextInputManager.kt | 24 +++++++++++++++---- .../ui/AccessCheckoutTextInputManagerTest.kt | 16 ++++++++++++- demo-app/e2e/cardFlow.e2e.js | 4 +--- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt index 6b54980..093a654 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt @@ -1,7 +1,9 @@ package com.worldpay.access.checkout.reactnative.ui +import android.graphics.Typeface import android.view.Gravity import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReadableMap import com.facebook.react.uimanager.SimpleViewManager import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ViewProps @@ -25,20 +27,34 @@ class AccessCheckoutTextInputManager(private val callerContext: ReactApplication // the default paddings gravity and background added by Android accessCheckoutEditText.background = null accessCheckoutEditText.textSize = 14f - accessCheckoutEditText.setPadding(0,0,0,0); - accessCheckoutEditText.gravity = Gravity.CENTER; + accessCheckoutEditText.setPadding(0, 0, 0, 0) + accessCheckoutEditText.gravity = Gravity.CENTER - return accessCheckoutEditText; + return accessCheckoutEditText } /** * Properties */ - @ReactProp(name = ViewProps.COLOR) + @ReactProp(name = ViewProps.COLOR, customType = "Color") fun setRTCTextColor(accessCheckoutEditText: AccessCheckoutEditText, color: Int) { accessCheckoutEditText.setTextColor(color) } + @ReactProp(name = "font") + fun setRTCFont(accessCheckoutEditText: AccessCheckoutEditText, font: ReadableMap) { + if (font.hasKey(ViewProps.FONT_SIZE)) { + val fontSize = font.getDouble(ViewProps.FONT_SIZE) + accessCheckoutEditText.textSize = fontSize.toFloat() + } + + if (font.hasKey(ViewProps.FONT_FAMILY)) { + val fontSize = font.getString(ViewProps.FONT_FAMILY) + val typeface = Typeface.create(fontSize, Typeface.NORMAL) + accessCheckoutEditText.typeface = typeface + } + } + @ReactProp(name = "placeholder") fun setRTCPlaceholder(accessCheckoutEditText: AccessCheckoutEditText, placeholder: String) { accessCheckoutEditText.setHint(placeholder) diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt index defe968..2a596b3 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt @@ -2,8 +2,9 @@ package com.worldpay.access.checkout.reactnative.ui import android.content.Context import android.graphics.Color +import android.graphics.Typeface import androidx.test.core.app.ApplicationProvider -import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.* import com.worldpay.access.checkout.ui.AccessCheckoutEditText import org.assertj.core.api.AssertionsForClassTypes.assertThat import org.junit.Test @@ -45,6 +46,19 @@ internal class AccessCheckoutTextInputManagerTest { verify(accessCheckoutEditTextMock).isEnabled = true } + @Test + fun `setRTCFont() should call textSize and typeface on AccessEditText`() { + val fontMap = JavaOnlyMap() + fontMap.putDouble("fontSize", 12.1) + fontMap.putString("fontFamily", "sans-serif") + + val typeface = Typeface.create("sans-serif", Typeface.NORMAL) + + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + + verify(accessCheckoutEditTextMock).textSize = 12.1F + verify(accessCheckoutEditTextMock).typeface = typeface + } private fun reactApplicationContext(): ReactApplicationContext { val applicationContext: Context = ApplicationProvider.getApplicationContext() diff --git a/demo-app/e2e/cardFlow.e2e.js b/demo-app/e2e/cardFlow.e2e.js index 90e8593..a316604 100644 --- a/demo-app/e2e/cardFlow.e2e.js +++ b/demo-app/e2e/cardFlow.e2e.js @@ -1,9 +1,7 @@ /* eslint-disable @typescript-eslint/no-var-requires */ const { device, expect } = require('detox'); const { expect: jestExpect } = require('expect'); -const { - sessionRegEx, -} = require('./helpers/RegularExpressions'); +const { sessionRegEx } = require('./helpers/RegularExpressions'); const { CardFlowPO } = require('./page-objects/CardFlowPO'); const { CardFlowStatesPO } = require('./page-objects/CardFlowStatesPO'); /* eslint-enable @typescript-eslint/no-var-requires */ From e3246a476a67236383163e66810207f5b0c87920 Mon Sep 17 00:00:00 2001 From: abaeza-wp <153538325+abaeza-wp@users.noreply.github.com> Date: Fri, 5 Jan 2024 08:55:01 +0000 Subject: [PATCH 07/26] Us1762585 - iOS Refactor Native components (#81) * US1762570: create view manager to native AccessCheckoutEditText component; override onTextChange to support the react native onChangeText event; implement component in react native * US1762550: update card details field to use new component; update RN module to use reference to AccessCheckoutEditText and not the text value * US1762550: move AccessCheckoutEditTextManager to correct file path; update local android sdk files to most up-to-date version of master; update AccessCheckoutReactPackageTest * US1782181: add unit tests for AccessCheckoutEditTextManagerTest; add mockito to build.gradle for unit tests * US1762551: Expose AccessCheckoutUITextField to be able to use native components via the ios Bridge Simplify ReactNativeViewLocator and implement/expose specific POC methods to avoid disruptions with previous implementation Add POC toggle to demo app to be able to switch implementations Expose new POC validation and sessionGeneration methods to avoid diruptions with previous implementations * US1762551: Point client to npe environment * US1762585: Refactor ios Bridge and demo application Avoids having to handle inputs in states Uses native components Only a input field id is needed in order to configure validation and session generation for a field Integrate the latest AccessCheckoutUITextField changes Updates and renames cvcValue to cvcId Updates and renames panValue to panId Updates and renames expiryDateValue to expiryDateId * US1762585: Rebuild lib and clean up files * US1762585: Minor cleanup * US1762585: Rebuild lib files Rename AccessCheckoutEditText to AccessCheckoutInputText as EditText was specific to Android Minor renaming of fields like panUITextField to panACUITextField to improve readability and make it known that we are dealing with AccessCheckoutUITextField in the iOS bridge * US1762585: Rename AccessCheckoutEditText to AccessCheckoutInputText in Android bridge * US1762585: Rename AccessCheckoutInputText to AccessCheckoutTextInput Rebuild lib files * US1762585: Update bitrise-step to use xcode-test v5 and update e2e tests (#82) * US1762585: Update bitrise-step to use xcode-test v5 * US1762585: Use Optionals to mantain compatibility in both Xcode 13 and Xcode 15 * US1762585: Update e2e tests * US1762585: Improve matcher based on platform using type * US1762585: Remove TextInputPO as it is no longer used --------- Co-authored-by: e5661323 --- demo-app/src/card-flow/CardFlow.tsx | 1 + demo-app/src/cvc-flow/CvcFlow.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/demo-app/src/card-flow/CardFlow.tsx b/demo-app/src/card-flow/CardFlow.tsx index a91d48e..8d4709b 100644 --- a/demo-app/src/card-flow/CardFlow.tsx +++ b/demo-app/src/card-flow/CardFlow.tsx @@ -26,6 +26,7 @@ import CardFlowE2eStates from './CardFlow.e2e.states'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import styles from './style.js'; +import type SessionGenerationConfig from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; export default function CardFlow() { const unknownBrandLogo = diff --git a/demo-app/src/cvc-flow/CvcFlow.tsx b/demo-app/src/cvc-flow/CvcFlow.tsx index 6c52f03..bf4f406 100644 --- a/demo-app/src/cvc-flow/CvcFlow.tsx +++ b/demo-app/src/cvc-flow/CvcFlow.tsx @@ -18,6 +18,7 @@ import Spinner from '../common/Spinner'; import SubmitButton from '../common/SubmitButton'; import VView from '../common/VView'; import CvcOnlyFlowE2eStates from '../cvc-flow/CvcOnlyFlow.e2e.states'; +import type SessionGenerationConfig from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; export default function CvcFlow() { const [cvcIsValid, setCvcIsValid] = useState(false); From 2b41cb521c9d4fd9e0f0bdcaecf354c91e20295c Mon Sep 17 00:00:00 2001 From: Olivier Chalet Date: Mon, 8 Jan 2024 14:10:18 +0000 Subject: [PATCH 08/26] US1782181: change app to display error in a div rather as an alert --- demo-app/src/card-flow/CardFlow.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/demo-app/src/card-flow/CardFlow.tsx b/demo-app/src/card-flow/CardFlow.tsx index 8d4709b..a91d48e 100644 --- a/demo-app/src/card-flow/CardFlow.tsx +++ b/demo-app/src/card-flow/CardFlow.tsx @@ -26,7 +26,6 @@ import CardFlowE2eStates from './CardFlow.e2e.states'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import styles from './style.js'; -import type SessionGenerationConfig from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; export default function CardFlow() { const unknownBrandLogo = From 55f7ce57ea58e52b34f901ca8b99350541aa901a Mon Sep 17 00:00:00 2001 From: e5661323 Date: Wed, 10 Jan 2024 08:32:04 +0000 Subject: [PATCH 09/26] US1762599: add support for fontSize, placeholderColor & borderColor --- demo-app/src/common/PanField.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/demo-app/src/common/PanField.tsx b/demo-app/src/common/PanField.tsx index c0ec439..541e0e5 100644 --- a/demo-app/src/common/PanField.tsx +++ b/demo-app/src/common/PanField.tsx @@ -38,6 +38,9 @@ const PanField = (props: PanFieldProps) => { ]} editable={props.isEditable} placeholder="Card Number" + placeholderTextColor="blue" + fontSize={10} + borderColor="purple" /> ); }; From d3964d89ecf92034c073fc300ab07707bc2c74ca Mon Sep 17 00:00:00 2001 From: e5661323 Date: Thu, 11 Jan 2024 10:23:31 +0000 Subject: [PATCH 10/26] US1762599: update textColor support; add support for font; update unit tests --- demo-app/src/common/PanField.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/demo-app/src/common/PanField.tsx b/demo-app/src/common/PanField.tsx index 541e0e5..c0ec439 100644 --- a/demo-app/src/common/PanField.tsx +++ b/demo-app/src/common/PanField.tsx @@ -38,9 +38,6 @@ const PanField = (props: PanFieldProps) => { ]} editable={props.isEditable} placeholder="Card Number" - placeholderTextColor="blue" - fontSize={10} - borderColor="purple" /> ); }; From 686099e4cd295ef96405de652cd409c7251ba196 Mon Sep 17 00:00:00 2001 From: e5661323 Date: Thu, 11 Jan 2024 14:16:05 +0000 Subject: [PATCH 11/26] US1762599: run format task --- demo-app/src/cvc-flow/CvcFlow.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/demo-app/src/cvc-flow/CvcFlow.tsx b/demo-app/src/cvc-flow/CvcFlow.tsx index bf4f406..6c52f03 100644 --- a/demo-app/src/cvc-flow/CvcFlow.tsx +++ b/demo-app/src/cvc-flow/CvcFlow.tsx @@ -18,7 +18,6 @@ import Spinner from '../common/Spinner'; import SubmitButton from '../common/SubmitButton'; import VView from '../common/VView'; import CvcOnlyFlowE2eStates from '../cvc-flow/CvcOnlyFlow.e2e.states'; -import type SessionGenerationConfig from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; export default function CvcFlow() { const [cvcIsValid, setCvcIsValid] = useState(false); From 50bfd3cf3e401640bc5ef035da690f0929536593 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:43:36 +0000 Subject: [PATCH 12/26] US1762588: Use paddingHorizontal in demo components From 8122d8bd5ad06368d9eba57e9b70c99fdb56a7c8 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Wed, 10 Jan 2024 10:25:05 +0000 Subject: [PATCH 13/26] US1762588: rebuild pod files to point to remote AccessCheckoutSDK From 119b02626a1d9dd8148503bf8b567a75f6961368 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Thu, 11 Jan 2024 11:13:29 +0000 Subject: [PATCH 14/26] US1762588: Clean imports From 2d894bc1f9948a6304009c2a5044e8a18e8945b5 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Fri, 12 Jan 2024 13:56:04 +0000 Subject: [PATCH 15/26] US1764971: Create useAccessCheckout Custom hook Refactor application and model to take in CardConfiguration and CvcOnlyCardConfiguration Refactor application to make useCardValidation and useCvcOnlyValidation internal hooks Rebuild libraries with bob Update tests and add @testing-library/react-native renderHook --- .../lib/commonjs/AccessCheckout.js | 10 +- .../lib/commonjs/AccessCheckout.js.map | 2 +- .../lib/commonjs/config/CardConfig.js | 28 + .../lib/commonjs/config/CardConfig.js.map | 1 + .../CvcOnlyConfig.js} | 11 +- .../lib/commonjs/config/CvcOnlyConfig.js.map | 1 + .../lib/commonjs/hooks/useAccessCheckout.js | 71 + .../commonjs/hooks/useAccessCheckout.js.map | 1 + .../useCardValidation.js} | 16 +- .../commonjs/hooks/useCardValidation.js.map | 1 + .../useCvcOnlyValidation.js} | 25 +- .../hooks/useCvcOnlyValidation.js.map | 1 + .../lib/commonjs/index.js | 45 +- .../lib/commonjs/index.js.map | 2 +- .../commonjs/ui/AccessCheckoutTextInput.js | 47 +- .../ui/AccessCheckoutTextInput.js.map | 2 +- .../validation/CardValidationConfig.js | 28 +- .../validation/CardValidationConfig.js.map | 2 +- .../validation/CardValidationHooks.js.map | 1 - .../validation/CvcOnlyValidationConfig.js.map | 1 - .../validation/CvcOnlyValidationHooks.js.map | 1 - .../validation/CvcValidationConfig.js | 19 + .../validation/CvcValidationConfig.js.map | 1 + .../lib/module/AccessCheckout.js | 10 +- .../lib/module/AccessCheckout.js.map | 2 +- .../lib/module/config/CardConfig.js | 21 + .../lib/module/config/CardConfig.js.map | 1 + .../CvcOnlyConfig.js} | 9 +- .../lib/module/config/CvcOnlyConfig.js.map | 1 + .../lib/module/hooks/useAccessCheckout.js | 64 + .../lib/module/hooks/useAccessCheckout.js.map | 1 + .../useCardValidation.js} | 14 +- .../lib/module/hooks/useCardValidation.js.map | 1 + .../useCvcOnlyValidation.js} | 19 +- .../module/hooks/useCvcOnlyValidation.js.map | 1 + .../lib/module/index.js | 13 +- .../lib/module/index.js.map | 2 +- .../lib/module/ui/AccessCheckoutTextInput.js | 49 +- .../module/ui/AccessCheckoutTextInput.js.map | 2 +- .../module/validation/CardValidationConfig.js | 26 +- .../validation/CardValidationConfig.js.map | 2 +- .../validation/CardValidationHooks.js.map | 1 - .../validation/CvcOnlyValidationConfig.js.map | 1 - .../validation/CvcOnlyValidationHooks.js.map | 1 - .../module/validation/CvcValidationConfig.js | 12 + .../validation/CvcValidationConfig.js.map | 1 + .../lib/typescript/AccessCheckout.d.ts | 21 +- .../lib/typescript/config/CardConfig.d.ts | 8 + .../lib/typescript/config/CvcOnlyConfig.d.ts | 6 + .../typescript/hooks/useAccessCheckout.d.ts | 11 + .../typescript/hooks/useCardValidation.d.ts | 18 + .../hooks/useCvcOnlyValidation.d.ts | 14 + .../lib/typescript/index.d.ts | 13 +- .../ui/AccessCheckoutTextInput.d.ts | 33 +- .../validation/CardValidationConfig.d.ts | 19 +- .../validation/CardValidationHooks.d.ts | 7 - .../validation/CvcOnlyValidationConfig.d.ts | 6 - .../validation/CvcOnlyValidationHooks.d.ts | 6 - .../validation/CvcValidationConfig.d.ts | 5 + .../package-lock.json | 2408 +++++++---------- access-checkout-react-native-sdk/package.json | 6 +- .../src/AccessCheckout.tsx | 30 +- .../src/config/CardConfig.ts | 15 + .../src/config/CvcOnlyConfig.ts | 11 + .../src/hooks/useAccessCheckout.ts | 88 + .../useCardValidation.ts} | 29 +- .../useCvcOnlyValidation.ts} | 33 +- .../src/index.tsx | 24 +- .../src/validation/CardValidationConfig.ts | 38 +- .../src/validation/CvcOnlyValidationConfig.ts | 7 - .../src/validation/CvcValidationConfig.ts | 9 + .../test/AccessCheckout.spec.ts | 15 +- .../test/config/CardConfig.spec.ts | 202 ++ .../test/config/CvcOnlyConfig.spec.ts | 73 + .../test/hooks/useAccessCheckout.spec.ts | 235 ++ .../useCardValidation.spec.ts} | 33 +- .../useCvcOnlyValidation.spec.ts} | 35 +- .../validation/CardValidationConfig.spec.ts | 71 - .../CardValidationEventListener.spec.ts | 10 +- .../CvcOnlyValidationConfig.spec.ts | 13 - .../CvcOnlyValidationEventListener.spec.ts | 6 +- demo-app/src/card-flow/CardFlow.tsx | 56 +- demo-app/src/cvc-flow/CvcFlow.tsx | 50 +- 83 files changed, 2392 insertions(+), 1843 deletions(-) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js create mode 100644 access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js.map rename access-checkout-react-native-sdk/lib/commonjs/{validation/CvcOnlyValidationConfig.js => config/CvcOnlyConfig.js} (80%) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js create mode 100644 access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map rename access-checkout-react-native-sdk/lib/commonjs/{validation/CardValidationHooks.js => hooks/useCardValidation.js} (77%) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map rename access-checkout-react-native-sdk/lib/commonjs/{validation/CvcOnlyValidationHooks.js => hooks/useCvcOnlyValidation.js} (76%) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationHooks.js.map delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationHooks.js.map create mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js create mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/module/config/CardConfig.js create mode 100644 access-checkout-react-native-sdk/lib/module/config/CardConfig.js.map rename access-checkout-react-native-sdk/lib/module/{validation/CvcOnlyValidationConfig.js => config/CvcOnlyConfig.js} (79%) create mode 100644 access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js create mode 100644 access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map rename access-checkout-react-native-sdk/lib/module/{validation/CardValidationHooks.js => hooks/useCardValidation.js} (69%) create mode 100644 access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map rename access-checkout-react-native-sdk/lib/module/{validation/CvcOnlyValidationHooks.js => hooks/useCvcOnlyValidation.js} (63%) create mode 100644 access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map delete mode 100644 access-checkout-react-native-sdk/lib/module/validation/CardValidationHooks.js.map delete mode 100644 access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationHooks.js.map create mode 100644 access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js create mode 100644 access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/typescript/config/CardConfig.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/config/CvcOnlyConfig.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/hooks/useAccessCheckout.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyValidation.d.ts delete mode 100644 access-checkout-react-native-sdk/lib/typescript/validation/CardValidationHooks.d.ts delete mode 100644 access-checkout-react-native-sdk/lib/typescript/validation/CvcOnlyValidationConfig.d.ts delete mode 100644 access-checkout-react-native-sdk/lib/typescript/validation/CvcOnlyValidationHooks.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/validation/CvcValidationConfig.d.ts create mode 100644 access-checkout-react-native-sdk/src/config/CardConfig.ts create mode 100644 access-checkout-react-native-sdk/src/config/CvcOnlyConfig.ts create mode 100644 access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts rename access-checkout-react-native-sdk/src/{validation/CardValidationHooks.ts => hooks/useCardValidation.ts} (68%) rename access-checkout-react-native-sdk/src/{validation/CvcOnlyValidationHooks.ts => hooks/useCvcOnlyValidation.ts} (58%) delete mode 100644 access-checkout-react-native-sdk/src/validation/CvcOnlyValidationConfig.ts create mode 100644 access-checkout-react-native-sdk/src/validation/CvcValidationConfig.ts create mode 100644 access-checkout-react-native-sdk/test/config/CardConfig.spec.ts create mode 100644 access-checkout-react-native-sdk/test/config/CvcOnlyConfig.spec.ts create mode 100644 access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts rename access-checkout-react-native-sdk/test/{validation/CardValidationHooks.spec.ts => hooks/useCardValidation.spec.ts} (80%) rename access-checkout-react-native-sdk/test/{validation/CvcOnlyValidationHooks.spec.ts => hooks/useCvcOnlyValidation.spec.ts} (76%) delete mode 100644 access-checkout-react-native-sdk/test/validation/CardValidationConfig.spec.ts delete mode 100644 access-checkout-react-native-sdk/test/validation/CvcOnlyValidationConfig.spec.ts diff --git a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js index 7e000f5..c39881c 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js +++ b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js @@ -8,14 +8,6 @@ var _AccessCheckoutReactNative = require("./AccessCheckoutReactNative"); function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore class AccessCheckout { constructor({ baseUrl, @@ -38,7 +30,7 @@ class AccessCheckout { sessionTypes, reactNativeSdkVersion: this.ReactNativeSdkVersion }) - // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier + // eslint-disable-next-line @typescript-eslint/no-explicit-any .then(bridgeSessions => { const sessions = {}; if (bridgeSessions.card) { diff --git a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map index 37f1435..79f1e3b 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport SessionGenerationConfig from './session/SessionGenerationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Sessions from './session/Sessions';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardValidationConfig from './validation/CardValidationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig';\n\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: CardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: CvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AACxE;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAGe,MAAMU,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAA1B,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACyB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAsC,EACpB;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAyC,EACvB;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAAvB,eAAA,CA3FoBuB,cAAc,6BAES,mCAAmC;AAAAvB,eAAA,CAF1DuB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAczD,MAAMU,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAA1B,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACyB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAAvB,eAAA,CA3FoBuB,cAAc,6BAES,mCAAmC;AAAAvB,eAAA,CAF1DuB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js b/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js new file mode 100644 index 0000000..91bd2ac --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +class CardConfig { + constructor({ + panId, + expiryDateId, + cvcId, + validationConfig + }) { + _defineProperty(this, "panId", void 0); + _defineProperty(this, "expiryDateId", void 0); + _defineProperty(this, "cvcId", void 0); + _defineProperty(this, "validationConfig", void 0); + this.panId = panId; + this.expiryDateId = expiryDateId; + this.cvcId = cvcId; + this.validationConfig = validationConfig; + } +} +exports.default = CardConfig; +//# sourceMappingURL=CardConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js.map new file mode 100644 index 0000000..32b3d1f --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CardConfig","constructor","panId","expiryDateId","cvcId","validationConfig","_defineProperty","exports","default"],"sources":["CardConfig.ts"],"sourcesContent":["import type { CardValidationConfig } from '../validation/CardValidationConfig';\n\nexport default class CardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: CardValidationConfig;\n\n constructor({ panId, expiryDateId, cvcId, validationConfig }: CardConfig) {\n this.panId = panId;\n this.expiryDateId = expiryDateId;\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;;;;;;;AAEe,MAAMA,UAAU,CAAC;EAM9BC,WAAWA,CAAC;IAAEC,KAAK;IAAEC,YAAY;IAAEC,KAAK;IAAEC;EAA6B,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACxE,IAAI,CAACJ,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAR,UAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationConfig.js b/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js similarity index 80% rename from access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationConfig.js rename to access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js index 2419ccf..a026339 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js @@ -7,13 +7,16 @@ exports.default = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } -class CvcOnlyValidationConfig { +class CvcOnlyConfig { constructor({ - cvcId + cvcId, + validationConfig }) { _defineProperty(this, "cvcId", void 0); + _defineProperty(this, "validationConfig", void 0); this.cvcId = cvcId; + this.validationConfig = validationConfig; } } -exports.default = CvcOnlyValidationConfig; -//# sourceMappingURL=CvcOnlyValidationConfig.js.map \ No newline at end of file +exports.default = CvcOnlyConfig; +//# sourceMappingURL=CvcOnlyConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js.map new file mode 100644 index 0000000..f6ff6c3 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CvcOnlyConfig","constructor","cvcId","validationConfig","_defineProperty","exports","default"],"sources":["CvcOnlyConfig.ts"],"sourcesContent":["import type { CvcValidationConfig } from '../validation/CvcValidationConfig';\n\nexport default class CvcOnlyConfig {\n cvcId: string;\n validationConfig?: CvcValidationConfig;\n\n constructor({ cvcId, validationConfig }: CvcOnlyConfig) {\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;;;;;;;AAEe,MAAMA,aAAa,CAAC;EAIjCC,WAAWA,CAAC;IAAEC,KAAK;IAAEC;EAAgC,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IACtD,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAN,aAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js new file mode 100644 index 0000000..89dc8f3 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js @@ -0,0 +1,71 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.useAccessCheckout = void 0; +var _index = require("../index"); +var _useCardValidation = require("./useCardValidation"); +var _useCvcOnlyValidation = require("./useCvcOnlyValidation"); +const useAccessCheckout = ({ + baseUrl, + checkoutId, + config +}) => { + const accessCheckout = new _index.AccessCheckout({ + baseUrl: baseUrl, + merchantId: checkoutId + }); + + /** + * Implementation note: Decided to use classes to benefit from instance checking. + * If using interfaces or types a "type guard" could have been used. the trade off being having to check for + * a specific property that would be unique to that interface/type which in theory it introduces another point of + * failure if the property was to be renamed and not updated in the type guard. + */ + if (config instanceof _index.CardConfig) { + var _config$validationCon, _config$validationCon2, _config$validationCon3; + const { + initialiseCardValidation + } = (0, _useCardValidation.useCardValidation)({ + accessCheckout, + cardValidationConfig: { + panId: config.panId, + expiryDateId: config.expiryDateId, + cvcId: config.cvcId, + enablePanFormatting: (_config$validationCon = config.validationConfig) === null || _config$validationCon === void 0 ? void 0 : _config$validationCon.enablePanFormatting, + acceptedCardBrands: (_config$validationCon2 = config.validationConfig) === null || _config$validationCon2 === void 0 ? void 0 : _config$validationCon2.acceptedCardBrands + }, + merchantListener: (_config$validationCon3 = config.validationConfig) === null || _config$validationCon3 === void 0 ? void 0 : _config$validationCon3.validationListener + }); + const generateSessions = sessionTypes => accessCheckout.generateSessions({ + panId: config.panId, + expiryDateId: config.expiryDateId, + cvcId: config.cvcId + }, sessionTypes); + return { + initialiseValidation: initialiseCardValidation, + generateSessions + }; + } else { + var _config$validationCon4; + const { + initialiseCvcOnlyValidation + } = (0, _useCvcOnlyValidation.useCvcOnlyValidation)({ + accessCheckout, + cvcOnlyValidationConfig: { + cvcId: config.cvcId + }, + merchantListener: (_config$validationCon4 = config.validationConfig) === null || _config$validationCon4 === void 0 ? void 0 : _config$validationCon4.validationListener + }); + const generateCvcOnlySession = sessionTypes => accessCheckout.generateSessions({ + cvcId: config.cvcId + }, sessionTypes); + return { + initialiseValidation: initialiseCvcOnlyValidation, + generateSessions: generateCvcOnlySession + }; + } +}; +exports.useAccessCheckout = useAccessCheckout; +//# sourceMappingURL=useAccessCheckout.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map new file mode 100644 index 0000000..3cf46e4 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_index","require","_useCardValidation","_useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","AccessCheckout","merchantId","CardConfig","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","useCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","merchantListener","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","useCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession","exports"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({\n baseUrl,\n checkoutId,\n config,\n}: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n merchantListener: config.validationConfig\n ?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n merchantListener: config.validationConfig\n ?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAaO,MAAMG,iBAAiB,GAAGA,CAAC;EAChCC,OAAO;EACPC,UAAU;EACVC;AACiB,CAAC,KAA+B;EACjD,MAAMC,cAAc,GAAG,IAAIC,qBAAc,CAAC;IACxCJ,OAAO,EAAEA,OAAO;IAChBK,UAAU,EAAEJ;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYI,iBAAU,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAG,IAAAC,oCAAiB,EAAC;MACrDR,cAAc;MACdS,oBAAoB,EAAE;QACpBC,KAAK,EAAEX,MAAM,CAACW,KAAK;QACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;QACjCC,KAAK,EAAEb,MAAM,CAACa,KAAK;QACnBC,mBAAmB,GAAAT,qBAAA,GAAEL,MAAM,CAACe,gBAAgB,cAAAV,qBAAA,uBAAvBA,qBAAA,CAAyBS,mBAAmB;QACjEE,kBAAkB,GAAAV,sBAAA,GAAEN,MAAM,CAACe,gBAAgB,cAAAT,sBAAA,uBAAvBA,sBAAA,CAAyBU;MAC/C,CAAC;MACDC,gBAAgB,GAAAV,sBAAA,GAAEP,MAAM,CAACe,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CACdW;IACN,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9CnB,cAAc,CAACkB,gBAAgB,CAC7B;MACER,KAAK,EAAEX,MAAM,CAACW,KAAK;MACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;MACjCC,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDO,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEb,wBAAwB;MAC9CW;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAG,IAAAC,0CAAoB,EAAC;MAC3DvB,cAAc;MACdwB,uBAAuB,EAAE;QAAEZ,KAAK,EAAEb,MAAM,CAACa;MAAM,CAAC;MAChDI,gBAAgB,GAAAK,sBAAA,GAAEtB,MAAM,CAACe,gBAAgB,cAAAO,sBAAA,uBAAvBA,sBAAA,CACdJ;IACN,CAAC,CAAC;IAEF,MAAMQ,sBAAsB,GAAIN,YAAsB,IACpDnB,cAAc,CAACkB,gBAAgB,CAC7B;MACEN,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDO,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEO;IACpB,CAAC;EACH;AACF,CAAC;AAACC,OAAA,CAAA9B,iBAAA,GAAAA,iBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationHooks.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js similarity index 77% rename from access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationHooks.js rename to access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js index d7d8ae3..3f4b242 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationHooks.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js @@ -9,14 +9,8 @@ var _react = require("react"); var _reactNative = require("react-native"); var _AccessCheckout = _interopRequireDefault(require("../AccessCheckout")); var _AccessCheckoutReactNative = _interopRequireDefault(require("../AccessCheckoutReactNative")); -var _CardValidationEventListener = require("./CardValidationEventListener"); +var _CardValidationEventListener = require("../validation/CardValidationEventListener"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore - function useCardValidationEventListener(merchantListener) { (0, _react.useEffect)(() => { const nativeEventListener = (0, _CardValidationEventListener.cardValidationNativeEventListenerOf)(merchantListener); @@ -27,7 +21,11 @@ function useCardValidationEventListener(merchantListener) { }; }, []); } -function useCardValidation(accessCheckout, cardValidationConfig, merchantListener) { +function useCardValidation({ + accessCheckout, + cardValidationConfig, + merchantListener +}) { useCardValidationEventListener(merchantListener); const initialiseCardValidation = () => { return accessCheckout.initialiseCardValidation(cardValidationConfig); @@ -36,4 +34,4 @@ function useCardValidation(accessCheckout, cardValidationConfig, merchantListene initialiseCardValidation }; } -//# sourceMappingURL=CardValidationHooks.js.map \ No newline at end of file +//# sourceMappingURL=useCardValidation.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map new file mode 100644 index 0000000..2a1cde7 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_react","require","_reactNative","_AccessCheckout","_interopRequireDefault","_AccessCheckoutReactNative","_CardValidationEventListener","obj","__esModule","default","useCardValidationEventListener","merchantListener","useEffect","nativeEventListener","cardValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\n\nexport function useCardValidationEventListener(\n merchantListener: CardValidationEventListener\n) {\n useEffect(() => {\n const nativeEventListener =\n cardValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n merchantListener: CardValidationEventListener;\n}\nexport function useCardValidation({\n accessCheckout,\n cardValidationConfig,\n merchantListener,\n}: UseCardValidationHook) {\n useCardValidationEventListener(merchantListener);\n const initialiseCardValidation = () => {\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAGmD,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5C,SAASG,8BAA8BA,CAC5CC,gBAA6C,EAC7C;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,mBAAmB,GACvB,IAAAC,gEAAmC,EAACH,gBAAgB,CAAC;IACvD,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,kCACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,uBAAc,CAACC,uBAAuB,EACtCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAaO,SAASC,iBAAiBA,CAAC;EAChCC,cAAc;EACdC,oBAAoB;EACpBd;AACqB,CAAC,EAAE;EACxBD,8BAA8B,CAACC,gBAAgB,CAAC;EAChD,MAAMe,wBAAwB,GAAGA,CAAA,KAAM;IACrC,OAAOF,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationHooks.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js similarity index 76% rename from access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationHooks.js rename to access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js index a8320cc..4619eac 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationHooks.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js @@ -3,27 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.useCvcOnlyValidation = useCvcOnlyValidation; -exports.useCvcOnlyValidationEventListener = useCvcOnlyValidationEventListener; +exports.useCvcOnlyValidationEventListener = exports.useCvcOnlyValidation = void 0; var _react = require("react"); var _reactNative = require("react-native"); var _index = _interopRequireWildcard(require("../index")); +var _CvcOnlyValidationEventListener = require("../validation/CvcOnlyValidationEventListener"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore - -function useCvcOnlyValidationEventListener(merchantListener) { +const useCvcOnlyValidationEventListener = merchantListener => { (0, _react.useEffect)(() => { - const nativeEventListener = (0, _index.cvcOnlyValidationNativeEventListenerOf)(merchantListener); + const nativeEventListener = (0, _CvcOnlyValidationEventListener.cvcOnlyValidationNativeEventListenerOf)(merchantListener); const nativeEventEmitter = new _reactNative.NativeEventEmitter(_index.default); const eventSubscription = nativeEventEmitter.addListener(_index.AccessCheckout.CvcOnlyValidationEventType, nativeEventListener); return () => { eventSubscription.remove(); }; }, []); -} -function useCvcOnlyValidation(accessCheckout, cvcOnlyValidationConfig, merchantListener) { +}; +exports.useCvcOnlyValidationEventListener = useCvcOnlyValidationEventListener; +const useCvcOnlyValidation = ({ + accessCheckout, + cvcOnlyValidationConfig, + merchantListener +}) => { useCvcOnlyValidationEventListener(merchantListener); const initialiseCvcOnlyValidation = () => { return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig); @@ -31,5 +33,6 @@ function useCvcOnlyValidation(accessCheckout, cvcOnlyValidationConfig, merchantL return { initialiseCvcOnlyValidation }; -} -//# sourceMappingURL=CvcOnlyValidationHooks.js.map \ No newline at end of file +}; +exports.useCvcOnlyValidation = useCvcOnlyValidation; +//# sourceMappingURL=useCvcOnlyValidation.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map new file mode 100644 index 0000000..dedbc70 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_react","require","_reactNative","_index","_interopRequireWildcard","_CvcOnlyValidationEventListener","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","useCvcOnlyValidationEventListener","merchantListener","useEffect","nativeEventListener","cvcOnlyValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CvcOnlyValidationEventType","remove","exports","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CardValidationEventListener,\n} from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\n\nexport const useCvcOnlyValidationEventListener = (\n merchantListener: CvcOnlyValidationEventListener\n) => {\n useEffect(() => {\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n merchantListener: CardValidationEventListener;\n}\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n merchantListener,\n}: UseCvcOnlyValidationHook) => {\n useCvcOnlyValidationEventListener(merchantListener);\n\n const initialiseCvcOnlyValidation = () => {\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AAKA,IAAAI,+BAAA,GAAAJ,OAAA;AAAsG,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAE/F,MAAMY,iCAAiC,GAC5CC,gBAAgD,IAC7C;EACH,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,mBAAmB,GACvB,IAAAC,sEAAsC,EAACH,gBAAgB,CAAC;IAC1D,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,cACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,qBAAc,CAACC,0BAA0B,EACzCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAACC,OAAA,CAAAb,iCAAA,GAAAA,iCAAA;AASK,MAAMc,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBf;AACwB,CAAC,KAAK;EAC9BD,iCAAiC,CAACC,gBAAgB,CAAC;EAEnD,MAAMgB,2BAA2B,GAAGA,CAAA,KAAM;IACxC,OAAOF,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC;AAACJ,OAAA,CAAAC,oBAAA,GAAAA,oBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js b/access-checkout-react-native-sdk/lib/commonjs/index.js index ca55287..5ea8508 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js @@ -33,10 +33,16 @@ Object.defineProperty(exports, "CVC", { return _SessionType.CVC; } }); +Object.defineProperty(exports, "CardConfig", { + enumerable: true, + get: function () { + return _CardConfig.default; + } +}); Object.defineProperty(exports, "CardValidationConfig", { enumerable: true, get: function () { - return _CardValidationConfig.default; + return _CardValidationConfig.CardValidationConfig; } }); Object.defineProperty(exports, "CardValidationEventListener", { @@ -45,10 +51,10 @@ Object.defineProperty(exports, "CardValidationEventListener", { return _CardValidationEventListener.CardValidationEventListener; } }); -Object.defineProperty(exports, "CvcOnlyValidationConfig", { +Object.defineProperty(exports, "CvcOnlyConfig", { enumerable: true, get: function () { - return _CvcOnlyValidationConfig.default; + return _CvcOnlyConfig.default; } }); Object.defineProperty(exports, "CvcOnlyValidationEventListener", { @@ -57,6 +63,12 @@ Object.defineProperty(exports, "CvcOnlyValidationEventListener", { return _CvcOnlyValidationEventListener.CvcOnlyValidationEventListener; } }); +Object.defineProperty(exports, "CvcValidationConfig", { + enumerable: true, + get: function () { + return _CvcValidationConfig.CvcValidationConfig; + } +}); Object.defineProperty(exports, "SessionGenerationConfig", { enumerable: true, get: function () { @@ -75,29 +87,23 @@ Object.defineProperty(exports, "Sessions", { return _Sessions.default; } }); -Object.defineProperty(exports, "cardValidationNativeEventListenerOf", { +Object.defineProperty(exports, "UseAccessCheckout", { enumerable: true, get: function () { - return _CardValidationEventListener.cardValidationNativeEventListenerOf; + return _useAccessCheckout.UseAccessCheckout; } }); -Object.defineProperty(exports, "cvcOnlyValidationNativeEventListenerOf", { +Object.defineProperty(exports, "UseAccessCheckoutExports", { enumerable: true, get: function () { - return _CvcOnlyValidationEventListener.cvcOnlyValidationNativeEventListenerOf; + return _useAccessCheckout.UseAccessCheckoutExports; } }); exports.default = void 0; -Object.defineProperty(exports, "useCardValidation", { - enumerable: true, - get: function () { - return _CardValidationHooks.useCardValidation; - } -}); -Object.defineProperty(exports, "useCvcOnlyValidation", { +Object.defineProperty(exports, "useAccessCheckout", { enumerable: true, get: function () { - return _CvcOnlyValidationHooks.useCvcOnlyValidation; + return _useAccessCheckout.useAccessCheckout; } }); var _AccessCheckoutReactNative = _interopRequireDefault(require("./AccessCheckoutReactNative")); @@ -105,14 +111,15 @@ var _AccessCheckout = _interopRequireDefault(require("./AccessCheckout")); var _SessionGenerationConfig = _interopRequireDefault(require("./session/SessionGenerationConfig")); var _SessionType = _interopRequireWildcard(require("./session/SessionType")); var _Sessions = _interopRequireDefault(require("./session/Sessions")); -var _CardValidationConfig = _interopRequireDefault(require("./validation/CardValidationConfig")); -var _CvcOnlyValidationConfig = _interopRequireDefault(require("./validation/CvcOnlyValidationConfig")); var _Brand = _interopRequireDefault(require("./validation/Brand")); var _BrandImage = _interopRequireDefault(require("./validation/BrandImage")); +var _CardConfig = _interopRequireDefault(require("./config/CardConfig")); +var _CvcOnlyConfig = _interopRequireDefault(require("./config/CvcOnlyConfig")); var _CardValidationEventListener = require("./validation/CardValidationEventListener"); var _CvcOnlyValidationEventListener = require("./validation/CvcOnlyValidationEventListener"); -var _CardValidationHooks = require("./validation/CardValidationHooks"); -var _CvcOnlyValidationHooks = require("./validation/CvcOnlyValidationHooks"); +var _CvcValidationConfig = require("./validation/CvcValidationConfig"); +var _CardValidationConfig = require("./validation/CardValidationConfig"); +var _useAccessCheckout = require("./hooks/useAccessCheckout"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js.map b/access-checkout-react-native-sdk/lib/commonjs/index.js.map index 256ef7d..d7fa2f4 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_CardValidationConfig","_CvcOnlyValidationConfig","_Brand","_BrandImage","_CardValidationEventListener","_CvcOnlyValidationEventListener","_CardValidationHooks","_CvcOnlyValidationHooks","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\n\nexport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from './validation/CardValidationEventListener';\n\nexport {\n CvcOnlyValidationEventListener,\n cvcOnlyValidationNativeEventListenerOf,\n} from './validation/CvcOnlyValidationEventListener';\n\nexport { useCardValidation } from './validation/CardValidationHooks';\nexport { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,qBAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,wBAAA,GAAAR,sBAAA,CAAAC,OAAA;AAEA,IAAAQ,MAAA,GAAAT,sBAAA,CAAAC,OAAA;AAEA,IAAAS,WAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AAKA,IAAAW,+BAAA,GAAAX,OAAA;AAKA,IAAAY,oBAAA,GAAAZ,OAAA;AACA,IAAAa,uBAAA,GAAAb,OAAA;AAA2E,SAAAc,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAX,wBAAAW,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAxB,uBAAAoC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GA7B5DkB,kCAAyB"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_Brand","_BrandImage","_CardConfig","_CvcOnlyConfig","_CardValidationEventListener","_CvcOnlyValidationEventListener","_CvcValidationConfig","_CardValidationConfig","_useAccessCheckout","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/CardConfig';\nexport { default as CvcOnlyConfig } from './config/CvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { CvcValidationConfig } from './validation/CvcValidationConfig';\nexport { CardValidationConfig } from './validation/CardValidationConfig';\nexport {\n useAccessCheckout,\n UseAccessCheckout,\n UseAccessCheckoutExports,\n} from './hooks/useAccessCheckout';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,cAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AACA,IAAAW,+BAAA,GAAAX,OAAA;AAEA,IAAAY,oBAAA,GAAAZ,OAAA;AACA,IAAAa,qBAAA,GAAAb,OAAA;AACA,IAAAc,kBAAA,GAAAd,OAAA;AAImC,SAAAe,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAZ,wBAAAY,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAzB,uBAAAqC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GAzBpBkB,kCAAyB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js index 1e77c39..7c0b49a 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js @@ -12,14 +12,55 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * * - nativeID: string * - testID: string - * - style: StyleProp - * - editable: boolean + * - style: StyleProp; * - placeholder: string + * - editable: boolean + */ + +/** + * Note: Not all properties apply styling to placeholder text and input text. + * textColor: only applies to input text. + * fontFamily: applies to both placeholder text and input text. + * fontSize:applies to both placeholder text and input text. + * fontStyle:applies to both placeholder text and input text. + * fontWeight:applies to both placeholder text and input text. + */ + +/** + * Font Changes apply to placeholder text and input text */ const RTCAccessCheckoutTextInput = (0, _reactNative.requireNativeComponent)('AccessCheckoutTextInput'); const AccessCheckoutTextInput = props => { - return /*#__PURE__*/_react.default.createElement(RTCAccessCheckoutTextInput, props); + const { + nativeID, + testID, + style, + placeholder, + editable + } = props; + const { + textColor, + fontFamily, + fontSize, + ...otherStyles + } = _reactNative.StyleSheet.flatten([style]); + return /*#__PURE__*/_react.default.createElement(_reactNative.View, { + style: [otherStyles] + }, /*#__PURE__*/_react.default.createElement(RTCAccessCheckoutTextInput, { + nativeID: nativeID, + testID: testID, + style: [{ + flex: 1 + }], + placeholder: placeholder, + font: { + fontFamily, + fontSize + }, + textColor: textColor, + editable: editable + })); }; var _default = exports.default = AccessCheckoutTextInput; //# sourceMappingURL=AccessCheckoutTextInput.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map index 7899b6c..53a8a3c 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map @@ -1 +1 @@ -{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","createElement","_default","exports"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n StyleProp,\n TextStyle,\n type ViewProps,\n} from 'react-native';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp\n * - editable: boolean\n * - placeholder: string\n */\ninterface AccessCheckoutTextInputProps extends ViewProps {\n testID: string | undefined;\n style?: StyleProp;\n editable?: boolean | undefined;\n placeholder?: string | undefined;\n isValid?: boolean;\n keyboardType?: string;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n return ;\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAKsB,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,MAAMG,0BAA0B,GAC9B,IAAAC,mCAAsB,EACpB,yBACF,CAAC;AACH,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,oBAAOV,MAAA,CAAAM,OAAA,CAAAK,aAAA,CAACJ,0BAA0B,EAAKG,KAAQ,CAAC;AAClD,CAAC;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAP,OAAA,GAEaG,uBAAuB"} \ No newline at end of file +{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","textColor","fontFamily","fontSize","otherStyles","StyleSheet","flatten","createElement","View","flex","font","_default","exports"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type StyleProp,\n StyleSheet,\n type TextStyle,\n View,\n type ViewStyle,\n} from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n * fontStyle:applies to both placeholder text and input text.\n * fontWeight:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n textColor?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n textColor?: ColorValue;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { textColor, fontFamily, fontSize, ...otherStyles } =\n StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOsB,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMG,0BAA0B,GAC9B,IAAAC,mCAAsB,EACpB,yBACF,CAAC;AACH,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,SAAS;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GACvDC,uBAAU,CAACC,OAAO,CAAC,CAACR,KAAK,CAAC,CAAC;EAC7B,oBACEb,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACnB,YAAA,CAAAoB,IAAI;IAACV,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBnB,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACf,0BAA0B;IACzBI,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAEW,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBV,WAAW,EAAEA,WAAY;IACzBW,IAAI,EAAE;MACJR,UAAU;MACVC;IACF,CAAE;IACFF,SAAS,EAAEA,SAAU;IACrBD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAAC,IAAAW,QAAA,GAAAC,OAAA,CAAArB,OAAA,GAEaG,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js index ea70c73..c11503c 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js @@ -3,29 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = void 0; +exports.CardValidationConfig = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } class CardValidationConfig { constructor({ - panId, - expiryDateId, - cvcId, - enablePanFormatting, - acceptedCardBrands + validationListener, + enablePanFormatting = false, + acceptedCardBrands = [] }) { - _defineProperty(this, "panId", void 0); - _defineProperty(this, "expiryDateId", void 0); - _defineProperty(this, "cvcId", void 0); - _defineProperty(this, "enablePanFormatting", false); - _defineProperty(this, "acceptedCardBrands", []); - this.panId = panId; - this.expiryDateId = expiryDateId; - this.cvcId = cvcId; - this.enablePanFormatting = enablePanFormatting ? enablePanFormatting : false; - this.acceptedCardBrands = acceptedCardBrands ? acceptedCardBrands : []; + _defineProperty(this, "enablePanFormatting", void 0); + _defineProperty(this, "acceptedCardBrands", void 0); + _defineProperty(this, "validationListener", void 0); + this.enablePanFormatting = enablePanFormatting; + this.validationListener = validationListener; + this.acceptedCardBrands = acceptedCardBrands; } } -exports.default = CardValidationConfig; +exports.CardValidationConfig = CardValidationConfig; //# sourceMappingURL=CardValidationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js.map index 9d29774..fa1549d 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js.map @@ -1 +1 @@ -{"version":3,"names":["CardValidationConfig","constructor","panId","expiryDateId","cvcId","enablePanFormatting","acceptedCardBrands","_defineProperty","exports","default"],"sources":["CardValidationConfig.ts"],"sourcesContent":["export default class CardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting = false;\n acceptedCardBrands: string[] = [];\n\n constructor({\n panId,\n expiryDateId,\n cvcId,\n enablePanFormatting,\n acceptedCardBrands,\n }: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n }) {\n this.panId = panId;\n this.expiryDateId = expiryDateId;\n this.cvcId = cvcId;\n this.enablePanFormatting = enablePanFormatting\n ? enablePanFormatting\n : false;\n this.acceptedCardBrands = acceptedCardBrands ? acceptedCardBrands : [];\n }\n}\n"],"mappings":";;;;;;;;;AAAe,MAAMA,oBAAoB,CAAC;EAOxCC,WAAWA,CAAC;IACVC,KAAK;IACLC,YAAY;IACZC,KAAK;IACLC,mBAAmB;IACnBC;EAOF,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,8BAfmB,KAAK;IAAAA,eAAA,6BACI,EAAE;IAe/B,IAAI,CAACL,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,mBAAmB,GAAGA,mBAAmB,GAC1CA,mBAAmB,GACnB,KAAK;IACT,IAAI,CAACC,kBAAkB,GAAGA,kBAAkB,GAAGA,kBAAkB,GAAG,EAAE;EACxE;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAT,oBAAA"} \ No newline at end of file +{"version":3,"names":["CardValidationConfig","constructor","validationListener","enablePanFormatting","acceptedCardBrands","_defineProperty","exports"],"sources":["CardValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class CardValidationConfig {\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n validationListener?: CardValidationEventListener;\n\n constructor({\n validationListener,\n enablePanFormatting = false,\n acceptedCardBrands = [],\n }: CardValidationConfig) {\n this.enablePanFormatting = enablePanFormatting;\n this.validationListener = validationListener;\n this.acceptedCardBrands = acceptedCardBrands;\n }\n}\n"],"mappings":";;;;;;;;;AAEO,MAAMA,oBAAoB,CAAC;EAKhCC,WAAWA,CAAC;IACVC,kBAAkB;IAClBC,mBAAmB,GAAG,KAAK;IAC3BC,kBAAkB,GAAG;EACD,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACvB,IAAI,CAACF,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACE,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF;AAACE,OAAA,CAAAN,oBAAA,GAAAA,oBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationHooks.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationHooks.js.map deleted file mode 100644 index 9b4785e..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationHooks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["_react","require","_reactNative","_AccessCheckout","_interopRequireDefault","_AccessCheckoutReactNative","_CardValidationEventListener","obj","__esModule","default","useCardValidationEventListener","merchantListener","useEffect","nativeEventListener","cardValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["CardValidationHooks.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardValidationConfig from './CardValidationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from './CardValidationEventListener';\n\nexport function useCardValidationEventListener(\n merchantListener: CardValidationEventListener\n) {\n useEffect(() => {\n const nativeEventListener =\n cardValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\nexport function useCardValidation(\n accessCheckout: AccessCheckout,\n cardValidationConfig: CardValidationConfig,\n merchantListener: CardValidationEventListener\n) {\n useCardValidationEventListener(merchantListener);\n\n const initialiseCardValidation = () => {\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAD,sBAAA,CAAAH,OAAA;AAMA,IAAAK,4BAAA,GAAAL,OAAA;AAGuC,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AARvC;AACA;;AAEA;AACA;;AAMO,SAASG,8BAA8BA,CAC5CC,gBAA6C,EAC7C;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,mBAAmB,GACvB,IAAAC,gEAAmC,EAACH,gBAAgB,CAAC;IACvD,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,kCACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,uBAAc,CAACC,uBAAuB,EACtCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAEO,SAASC,iBAAiBA,CAC/BC,cAA8B,EAC9BC,oBAA0C,EAC1Cd,gBAA6C,EAC7C;EACAD,8BAA8B,CAACC,gBAAgB,CAAC;EAEhD,MAAMe,wBAAwB,GAAGA,CAAA,KAAM;IACrC,OAAOF,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationConfig.js.map deleted file mode 100644 index 3ad0863..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CvcOnlyValidationConfig","constructor","cvcId","_defineProperty","exports","default"],"sources":["CvcOnlyValidationConfig.ts"],"sourcesContent":["export default class CvcOnlyValidationConfig {\n cvcId: string;\n\n constructor({ cvcId }: { cvcId: string }) {\n this.cvcId = cvcId;\n }\n}\n"],"mappings":";;;;;;;;;AAAe,MAAMA,uBAAuB,CAAC;EAG3CC,WAAWA,CAAC;IAAEC;EAAyB,CAAC,EAAE;IAAAC,eAAA;IACxC,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAL,uBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationHooks.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationHooks.js.map deleted file mode 100644 index 564524f..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationHooks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["_react","require","_reactNative","_index","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","useCvcOnlyValidationEventListener","merchantListener","useEffect","nativeEventListener","cvcOnlyValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CvcOnlyValidationEventType","remove","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["CvcOnlyValidationHooks.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CvcOnlyValidationConfig,\n cvcOnlyValidationNativeEventListenerOf,\n} from '../index';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { CvcOnlyValidationEventListener } from './CvcOnlyValidationEventListener';\n\nexport function useCvcOnlyValidationEventListener(\n merchantListener: CvcOnlyValidationEventListener\n) {\n useEffect(() => {\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\nexport function useCvcOnlyValidation(\n accessCheckout: AccessCheckout,\n cvcOnlyValidationConfig: CvcOnlyValidationConfig,\n merchantListener: CvcOnlyValidationEventListener\n) {\n useCvcOnlyValidationEventListener(merchantListener);\n\n const initialiseCvcOnlyValidation = () => {\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AAIkB,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAClB;AACA;;AAGO,SAASY,iCAAiCA,CAC/CC,gBAAgD,EAChD;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,mBAAmB,GACvB,IAAAC,6CAAsC,EAACH,gBAAgB,CAAC;IAC1D,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,cACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,qBAAc,CAACC,0BAA0B,EACzCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAEO,SAASC,oBAAoBA,CAClCC,cAA8B,EAC9BC,uBAAgD,EAChDd,gBAAgD,EAChD;EACAD,iCAAiC,CAACC,gBAAgB,CAAC;EAEnD,MAAMe,2BAA2B,GAAGA,CAAA,KAAM;IACxC,OAAOF,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js new file mode 100644 index 0000000..1ba9512 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CvcValidationConfig = void 0; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +class CvcValidationConfig { + constructor({ + validationListener + }) { + _defineProperty(this, "validationListener", void 0); + this.validationListener = validationListener; + } +} +exports.CvcValidationConfig = CvcValidationConfig; +//# sourceMappingURL=CvcValidationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js.map new file mode 100644 index 0000000..f6025b8 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CvcValidationConfig","constructor","validationListener","_defineProperty","exports"],"sources":["CvcValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class CvcValidationConfig {\n validationListener?: CardValidationEventListener;\n\n constructor({ validationListener }: CvcValidationConfig) {\n this.validationListener = validationListener;\n }\n}\n"],"mappings":";;;;;;;;;AAEO,MAAMA,mBAAmB,CAAC;EAG/BC,WAAWA,CAAC;IAAEC;EAAwC,CAAC,EAAE;IAAAC,eAAA;IACvD,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF;AAACE,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js index bba383a..2059b18 100644 --- a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js +++ b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js @@ -2,14 +2,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } import { AccessCheckoutReactNative } from './AccessCheckoutReactNative'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore export default class AccessCheckout { constructor({ baseUrl, @@ -32,7 +24,7 @@ export default class AccessCheckout { sessionTypes, reactNativeSdkVersion: this.ReactNativeSdkVersion }) - // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier + // eslint-disable-next-line @typescript-eslint/no-explicit-any .then(bridgeSessions => { const sessions = {}; if (bridgeSessions.card) { diff --git a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map index a9c8fa3..5d142c6 100644 --- a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","AccessCheckout","constructor","baseUrl","merchantId","_defineProperty","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport SessionGenerationConfig from './session/SessionGenerationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Sessions from './session/Sessions';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardValidationConfig from './validation/CardValidationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig';\n\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: CardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: CvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;AAAA,SAASA,yBAAyB,QAAQ,6BAA6B;AACvE;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAGA,eAAe,MAAMC,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAC,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAE,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACM,gBAAgB,CAAC;QACzCH,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEL,uBAAuB,CAACK,KAAK;QACpCC,YAAY,EAAEN,uBAAuB,CAACM,YAAY;QAClDC,KAAK,EAAEP,uBAAuB,CAACO,KAAK;QACpCN,YAAY;QACZO,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAX,OAAO,CAACS,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAsC,EACpB;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACwB,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAyC,EACvB;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAAC4B,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAAClB,eAAA,CA3FoBJ,cAAc,6BAES,mCAAmC;AAAAI,eAAA,CAF1DJ,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","AccessCheckout","constructor","baseUrl","merchantId","_defineProperty","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;AAAA,SAASA,yBAAyB,QAAQ,6BAA6B;AAcvE,eAAe,MAAMC,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAC,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAE,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACM,gBAAgB,CAAC;QACzCH,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEL,uBAAuB,CAACK,KAAK;QACpCC,YAAY,EAAEN,uBAAuB,CAACM,YAAY;QAClDC,KAAK,EAAEP,uBAAuB,CAACO,KAAK;QACpCN,YAAY;QACZO,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAX,OAAO,CAACS,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACwB,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAAC4B,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAAClB,eAAA,CA3FoBJ,cAAc,6BAES,mCAAmC;AAAAI,eAAA,CAF1DJ,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/CardConfig.js b/access-checkout-react-native-sdk/lib/module/config/CardConfig.js new file mode 100644 index 0000000..5a1e44d --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/config/CardConfig.js @@ -0,0 +1,21 @@ +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +export default class CardConfig { + constructor({ + panId, + expiryDateId, + cvcId, + validationConfig + }) { + _defineProperty(this, "panId", void 0); + _defineProperty(this, "expiryDateId", void 0); + _defineProperty(this, "cvcId", void 0); + _defineProperty(this, "validationConfig", void 0); + this.panId = panId; + this.expiryDateId = expiryDateId; + this.cvcId = cvcId; + this.validationConfig = validationConfig; + } +} +//# sourceMappingURL=CardConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/CardConfig.js.map b/access-checkout-react-native-sdk/lib/module/config/CardConfig.js.map new file mode 100644 index 0000000..2464266 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/config/CardConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CardConfig","constructor","panId","expiryDateId","cvcId","validationConfig","_defineProperty"],"sources":["CardConfig.ts"],"sourcesContent":["import type { CardValidationConfig } from '../validation/CardValidationConfig';\n\nexport default class CardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: CardValidationConfig;\n\n constructor({ panId, expiryDateId, cvcId, validationConfig }: CardConfig) {\n this.panId = panId;\n this.expiryDateId = expiryDateId;\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;AAEA,eAAe,MAAMA,UAAU,CAAC;EAM9BC,WAAWA,CAAC;IAAEC,KAAK;IAAEC,YAAY;IAAEC,KAAK;IAAEC;EAA6B,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACxE,IAAI,CAACJ,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationConfig.js b/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js similarity index 79% rename from access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationConfig.js rename to access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js index caebf2e..c4698e8 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js @@ -1,12 +1,15 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } -export default class CvcOnlyValidationConfig { +export default class CvcOnlyConfig { constructor({ - cvcId + cvcId, + validationConfig }) { _defineProperty(this, "cvcId", void 0); + _defineProperty(this, "validationConfig", void 0); this.cvcId = cvcId; + this.validationConfig = validationConfig; } } -//# sourceMappingURL=CvcOnlyValidationConfig.js.map \ No newline at end of file +//# sourceMappingURL=CvcOnlyConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js.map new file mode 100644 index 0000000..131c19b --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CvcOnlyConfig","constructor","cvcId","validationConfig","_defineProperty"],"sources":["CvcOnlyConfig.ts"],"sourcesContent":["import type { CvcValidationConfig } from '../validation/CvcValidationConfig';\n\nexport default class CvcOnlyConfig {\n cvcId: string;\n validationConfig?: CvcValidationConfig;\n\n constructor({ cvcId, validationConfig }: CvcOnlyConfig) {\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;AAEA,eAAe,MAAMA,aAAa,CAAC;EAIjCC,WAAWA,CAAC;IAAEC,KAAK;IAAEC;EAAgC,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IACtD,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js new file mode 100644 index 0000000..86e30c8 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js @@ -0,0 +1,64 @@ +import { AccessCheckout, CardConfig } from '../index'; +import { useCardValidation } from './useCardValidation'; +import { useCvcOnlyValidation } from './useCvcOnlyValidation'; +export const useAccessCheckout = ({ + baseUrl, + checkoutId, + config +}) => { + const accessCheckout = new AccessCheckout({ + baseUrl: baseUrl, + merchantId: checkoutId + }); + + /** + * Implementation note: Decided to use classes to benefit from instance checking. + * If using interfaces or types a "type guard" could have been used. the trade off being having to check for + * a specific property that would be unique to that interface/type which in theory it introduces another point of + * failure if the property was to be renamed and not updated in the type guard. + */ + if (config instanceof CardConfig) { + var _config$validationCon, _config$validationCon2, _config$validationCon3; + const { + initialiseCardValidation + } = useCardValidation({ + accessCheckout, + cardValidationConfig: { + panId: config.panId, + expiryDateId: config.expiryDateId, + cvcId: config.cvcId, + enablePanFormatting: (_config$validationCon = config.validationConfig) === null || _config$validationCon === void 0 ? void 0 : _config$validationCon.enablePanFormatting, + acceptedCardBrands: (_config$validationCon2 = config.validationConfig) === null || _config$validationCon2 === void 0 ? void 0 : _config$validationCon2.acceptedCardBrands + }, + merchantListener: (_config$validationCon3 = config.validationConfig) === null || _config$validationCon3 === void 0 ? void 0 : _config$validationCon3.validationListener + }); + const generateSessions = sessionTypes => accessCheckout.generateSessions({ + panId: config.panId, + expiryDateId: config.expiryDateId, + cvcId: config.cvcId + }, sessionTypes); + return { + initialiseValidation: initialiseCardValidation, + generateSessions + }; + } else { + var _config$validationCon4; + const { + initialiseCvcOnlyValidation + } = useCvcOnlyValidation({ + accessCheckout, + cvcOnlyValidationConfig: { + cvcId: config.cvcId + }, + merchantListener: (_config$validationCon4 = config.validationConfig) === null || _config$validationCon4 === void 0 ? void 0 : _config$validationCon4.validationListener + }); + const generateCvcOnlySession = sessionTypes => accessCheckout.generateSessions({ + cvcId: config.cvcId + }, sessionTypes); + return { + initialiseValidation: initialiseCvcOnlyValidation, + generateSessions: generateCvcOnlySession + }; + } +}; +//# sourceMappingURL=useAccessCheckout.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map new file mode 100644 index 0000000..9fff0c0 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map @@ -0,0 +1 @@ +{"version":3,"names":["AccessCheckout","CardConfig","useCardValidation","useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","merchantId","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","merchantListener","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({\n baseUrl,\n checkoutId,\n config,\n}: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n merchantListener: config.validationConfig\n ?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n merchantListener: config.validationConfig\n ?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":"AAAA,SACEA,cAAc,EACdC,UAAU,QAKL,UAAU;AACjB,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,oBAAoB,QAAQ,wBAAwB;AAa7D,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAChCC,OAAO;EACPC,UAAU;EACVC;AACiB,CAAC,KAA+B;EACjD,MAAMC,cAAc,GAAG,IAAIR,cAAc,CAAC;IACxCK,OAAO,EAAEA,OAAO;IAChBI,UAAU,EAAEH;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYN,UAAU,EAAE;IAAA,IAAAS,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAGX,iBAAiB,CAAC;MACrDM,cAAc;MACdM,oBAAoB,EAAE;QACpBC,KAAK,EAAER,MAAM,CAACQ,KAAK;QACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;QACjCC,KAAK,EAAEV,MAAM,CAACU,KAAK;QACnBC,mBAAmB,GAAAR,qBAAA,GAAEH,MAAM,CAACY,gBAAgB,cAAAT,qBAAA,uBAAvBA,qBAAA,CAAyBQ,mBAAmB;QACjEE,kBAAkB,GAAAT,sBAAA,GAAEJ,MAAM,CAACY,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CAAyBS;MAC/C,CAAC;MACDC,gBAAgB,GAAAT,sBAAA,GAAEL,MAAM,CAACY,gBAAgB,cAAAP,sBAAA,uBAAvBA,sBAAA,CACdU;IACN,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9ChB,cAAc,CAACe,gBAAgB,CAC7B;MACER,KAAK,EAAER,MAAM,CAACQ,KAAK;MACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;MACjCC,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDO,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEZ,wBAAwB;MAC9CU;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAGxB,oBAAoB,CAAC;MAC3DK,cAAc;MACdoB,uBAAuB,EAAE;QAAEX,KAAK,EAAEV,MAAM,CAACU;MAAM,CAAC;MAChDI,gBAAgB,GAAAK,sBAAA,GAAEnB,MAAM,CAACY,gBAAgB,cAAAO,sBAAA,uBAAvBA,sBAAA,CACdJ;IACN,CAAC,CAAC;IAEF,MAAMO,sBAAsB,GAAIL,YAAsB,IACpDhB,cAAc,CAACe,gBAAgB,CAC7B;MACEN,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDO,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEM;IACpB,CAAC;EACH;AACF,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CardValidationHooks.js b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js similarity index 69% rename from access-checkout-react-native-sdk/lib/module/validation/CardValidationHooks.js rename to access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js index 93cdd8b..cd1cd26 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CardValidationHooks.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js @@ -2,11 +2,7 @@ import { useEffect } from 'react'; import { NativeEventEmitter } from 'react-native'; import AccessCheckout from '../AccessCheckout'; import AccessCheckoutReactNative from '../AccessCheckoutReactNative'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import { cardValidationNativeEventListenerOf } from './CardValidationEventListener'; +import { cardValidationNativeEventListenerOf } from '../validation/CardValidationEventListener'; export function useCardValidationEventListener(merchantListener) { useEffect(() => { const nativeEventListener = cardValidationNativeEventListenerOf(merchantListener); @@ -17,7 +13,11 @@ export function useCardValidationEventListener(merchantListener) { }; }, []); } -export function useCardValidation(accessCheckout, cardValidationConfig, merchantListener) { +export function useCardValidation({ + accessCheckout, + cardValidationConfig, + merchantListener +}) { useCardValidationEventListener(merchantListener); const initialiseCardValidation = () => { return accessCheckout.initialiseCardValidation(cardValidationConfig); @@ -26,4 +26,4 @@ export function useCardValidation(accessCheckout, cardValidationConfig, merchant initialiseCardValidation }; } -//# sourceMappingURL=CardValidationHooks.js.map \ No newline at end of file +//# sourceMappingURL=useCardValidation.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map new file mode 100644 index 0000000..877fba9 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map @@ -0,0 +1 @@ +{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckout","AccessCheckoutReactNative","cardValidationNativeEventListenerOf","useCardValidationEventListener","merchantListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\n\nexport function useCardValidationEventListener(\n merchantListener: CardValidationEventListener\n) {\n useEffect(() => {\n const nativeEventListener =\n cardValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n merchantListener: CardValidationEventListener;\n}\nexport function useCardValidation({\n accessCheckout,\n cardValidationConfig,\n merchantListener,\n}: UseCardValidationHook) {\n useCardValidationEventListener(merchantListener);\n const initialiseCardValidation = () => {\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,yBAAyB,MAAM,8BAA8B;AACpE,SAEEC,mCAAmC,QAC9B,2CAA2C;AAElD,OAAO,SAASC,8BAA8BA,CAC5CC,gBAA6C,EAC7C;EACAN,SAAS,CAAC,MAAM;IACd,MAAMO,mBAAmB,GACvBH,mCAAmC,CAACE,gBAAgB,CAAC;IACvD,MAAME,kBAAkB,GAAG,IAAIP,kBAAkB,CAC/CE,yBACF,CAAC;IAED,MAAMM,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDR,cAAc,CAACS,uBAAuB,EACtCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAaA,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,cAAc;EACdC,oBAAoB;EACpBT;AACqB,CAAC,EAAE;EACxBD,8BAA8B,CAACC,gBAAgB,CAAC;EAChD,MAAMU,wBAAwB,GAAGA,CAAA,KAAM;IACrC,OAAOF,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationHooks.js b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js similarity index 63% rename from access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationHooks.js rename to access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js index 5a3c119..7a00955 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationHooks.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js @@ -1,9 +1,8 @@ import { useEffect } from 'react'; import { NativeEventEmitter } from 'react-native'; -import AccessCheckoutReactNative, { AccessCheckout, cvcOnlyValidationNativeEventListenerOf } from '../index'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -export function useCvcOnlyValidationEventListener(merchantListener) { +import AccessCheckoutReactNative, { AccessCheckout } from '../index'; +import { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener'; +export const useCvcOnlyValidationEventListener = merchantListener => { useEffect(() => { const nativeEventListener = cvcOnlyValidationNativeEventListenerOf(merchantListener); const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative); @@ -12,8 +11,12 @@ export function useCvcOnlyValidationEventListener(merchantListener) { eventSubscription.remove(); }; }, []); -} -export function useCvcOnlyValidation(accessCheckout, cvcOnlyValidationConfig, merchantListener) { +}; +export const useCvcOnlyValidation = ({ + accessCheckout, + cvcOnlyValidationConfig, + merchantListener +}) => { useCvcOnlyValidationEventListener(merchantListener); const initialiseCvcOnlyValidation = () => { return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig); @@ -21,5 +24,5 @@ export function useCvcOnlyValidation(accessCheckout, cvcOnlyValidationConfig, me return { initialiseCvcOnlyValidation }; -} -//# sourceMappingURL=CvcOnlyValidationHooks.js.map \ No newline at end of file +}; +//# sourceMappingURL=useCvcOnlyValidation.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map new file mode 100644 index 0000000..0ad65ca --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map @@ -0,0 +1 @@ +{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckoutReactNative","AccessCheckout","cvcOnlyValidationNativeEventListenerOf","useCvcOnlyValidationEventListener","merchantListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CvcOnlyValidationEventType","remove","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CardValidationEventListener,\n} from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\n\nexport const useCvcOnlyValidationEventListener = (\n merchantListener: CvcOnlyValidationEventListener\n) => {\n useEffect(() => {\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n merchantListener: CardValidationEventListener;\n}\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n merchantListener,\n}: UseCvcOnlyValidationHook) => {\n useCvcOnlyValidationEventListener(merchantListener);\n\n const initialiseCvcOnlyValidation = () => {\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,yBAAyB,IAC9BC,cAAc,QAET,UAAU;AAEjB,SAASC,sCAAsC,QAAQ,8CAA8C;AAErG,OAAO,MAAMC,iCAAiC,GAC5CC,gBAAgD,IAC7C;EACHN,SAAS,CAAC,MAAM;IACd,MAAMO,mBAAmB,GACvBH,sCAAsC,CAACE,gBAAgB,CAAC;IAC1D,MAAME,kBAAkB,GAAG,IAAIP,kBAAkB,CAC/CC,yBACF,CAAC;IAED,MAAMO,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDP,cAAc,CAACQ,0BAA0B,EACzCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AASD,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBT;AACwB,CAAC,KAAK;EAC9BD,iCAAiC,CAACC,gBAAgB,CAAC;EAEnD,MAAMU,2BAA2B,GAAGA,CAAA,KAAM;IACxC,OAAOF,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js b/access-checkout-react-native-sdk/lib/module/index.js index a4f0794..713bd81 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js +++ b/access-checkout-react-native-sdk/lib/module/index.js @@ -4,12 +4,13 @@ export { default as AccessCheckout } from './AccessCheckout'; export { default as SessionGenerationConfig } from './session/SessionGenerationConfig'; export { default as SessionType, CARD, CVC } from './session/SessionType'; export { default as Sessions } from './session/Sessions'; -export { default as CardValidationConfig } from './validation/CardValidationConfig'; -export { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig'; export { default as Brand } from './validation/Brand'; export { default as BrandImage } from './validation/BrandImage'; -export { CardValidationEventListener, cardValidationNativeEventListenerOf } from './validation/CardValidationEventListener'; -export { CvcOnlyValidationEventListener, cvcOnlyValidationNativeEventListenerOf } from './validation/CvcOnlyValidationEventListener'; -export { useCardValidation } from './validation/CardValidationHooks'; -export { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks'; +export { default as CardConfig } from './config/CardConfig'; +export { default as CvcOnlyConfig } from './config/CvcOnlyConfig'; +export { CardValidationEventListener } from './validation/CardValidationEventListener'; +export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener'; +export { CvcValidationConfig } from './validation/CvcValidationConfig'; +export { CardValidationConfig } from './validation/CardValidationConfig'; +export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js.map b/access-checkout-react-native-sdk/lib/module/index.js.map index 7613935..f601f86 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js.map +++ b/access-checkout-react-native-sdk/lib/module/index.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","CardValidationConfig","CvcOnlyValidationConfig","Brand","BrandImage","CardValidationEventListener","cardValidationNativeEventListenerOf","CvcOnlyValidationEventListener","cvcOnlyValidationNativeEventListenerOf","useCardValidation","useCvcOnlyValidation"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\n\nexport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from './validation/CardValidationEventListener';\n\nexport {\n CvcOnlyValidationEventListener,\n cvcOnlyValidationNativeEventListenerOf,\n} from './validation/CvcOnlyValidationEventListener';\n\nexport { useCardValidation } from './validation/CardValidationHooks';\nexport { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,oBAAoB,QAAQ,mCAAmC;AAEnF,SAASP,OAAO,IAAIQ,uBAAuB,QAAQ,sCAAsC;AAEzF,SAASR,OAAO,IAAIS,KAAK,QAAQ,oBAAoB;AAErD,SAAST,OAAO,IAAIU,UAAU,QAAQ,yBAAyB;AAE/D,SACEC,2BAA2B,EAC3BC,mCAAmC,QAC9B,0CAA0C;AAEjD,SACEC,8BAA8B,EAC9BC,sCAAsC,QACjC,6CAA6C;AAEpD,SAASC,iBAAiB,QAAQ,kCAAkC;AACpE,SAASC,oBAAoB,QAAQ,qCAAqC"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","Brand","BrandImage","CardConfig","CvcOnlyConfig","CardValidationEventListener","CvcOnlyValidationEventListener","CvcValidationConfig","CardValidationConfig","useAccessCheckout","UseAccessCheckout","UseAccessCheckoutExports"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/CardConfig';\nexport { default as CvcOnlyConfig } from './config/CvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { CvcValidationConfig } from './validation/CvcValidationConfig';\nexport { CardValidationConfig } from './validation/CardValidationConfig';\nexport {\n useAccessCheckout,\n UseAccessCheckout,\n UseAccessCheckoutExports,\n} from './hooks/useAccessCheckout';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,KAAK,QAAQ,oBAAoB;AAErD,SAASP,OAAO,IAAIQ,UAAU,QAAQ,yBAAyB;AAC/D,SAASR,OAAO,IAAIS,UAAU,QAAQ,qBAAqB;AAC3D,SAAST,OAAO,IAAIU,aAAa,QAAQ,wBAAwB;AAEjE,SAASC,2BAA2B,QAAQ,0CAA0C;AACtF,SAASC,8BAA8B,QAAQ,6CAA6C;AAE5F,SAASC,mBAAmB,QAAQ,kCAAkC;AACtE,SAASC,oBAAoB,QAAQ,mCAAmC;AACxE,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,wBAAwB,QACnB,2BAA2B"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js index 719d8f0..f390b6e 100644 --- a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js @@ -1,19 +1,60 @@ import React from 'react'; -import { requireNativeComponent } from 'react-native'; +import { requireNativeComponent, StyleSheet, View } from 'react-native'; /** * Composes `AccessCheckoutTextInput`. * * - nativeID: string * - testID: string - * - style: StyleProp - * - editable: boolean + * - style: StyleProp; * - placeholder: string + * - editable: boolean + */ + +/** + * Note: Not all properties apply styling to placeholder text and input text. + * textColor: only applies to input text. + * fontFamily: applies to both placeholder text and input text. + * fontSize:applies to both placeholder text and input text. + * fontStyle:applies to both placeholder text and input text. + * fontWeight:applies to both placeholder text and input text. + */ + +/** + * Font Changes apply to placeholder text and input text */ const RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput'); const AccessCheckoutTextInput = props => { - return /*#__PURE__*/React.createElement(RTCAccessCheckoutTextInput, props); + const { + nativeID, + testID, + style, + placeholder, + editable + } = props; + const { + textColor, + fontFamily, + fontSize, + ...otherStyles + } = StyleSheet.flatten([style]); + return /*#__PURE__*/React.createElement(View, { + style: [otherStyles] + }, /*#__PURE__*/React.createElement(RTCAccessCheckoutTextInput, { + nativeID: nativeID, + testID: testID, + style: [{ + flex: 1 + }], + placeholder: placeholder, + font: { + fontFamily, + fontSize + }, + textColor: textColor, + editable: editable + })); }; export default AccessCheckoutTextInput; //# sourceMappingURL=AccessCheckoutTextInput.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map index 0e162c1..6d3e62d 100644 --- a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map @@ -1 +1 @@ -{"version":3,"names":["React","requireNativeComponent","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","createElement"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n StyleProp,\n TextStyle,\n type ViewProps,\n} from 'react-native';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp\n * - editable: boolean\n * - placeholder: string\n */\ninterface AccessCheckoutTextInputProps extends ViewProps {\n testID: string | undefined;\n style?: StyleProp;\n editable?: boolean | undefined;\n placeholder?: string | undefined;\n isValid?: boolean;\n keyboardType?: string;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n return ;\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,sBAAsB,QAIjB,cAAc;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,MAAMC,0BAA0B,GAC9BD,sBAAsB,CACpB,yBACF,CAAC;AACH,MAAME,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,oBAAOJ,KAAA,CAAAK,aAAA,CAACH,0BAA0B,EAAKE,KAAQ,CAAC;AAClD,CAAC;AAED,eAAeD,uBAAuB"} \ No newline at end of file +{"version":3,"names":["React","requireNativeComponent","StyleSheet","View","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","textColor","fontFamily","fontSize","otherStyles","flatten","createElement","flex","font"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type StyleProp,\n StyleSheet,\n type TextStyle,\n View,\n type ViewStyle,\n} from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n * fontStyle:applies to both placeholder text and input text.\n * fontWeight:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n textColor?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n textColor?: ColorValue;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { textColor, fontFamily, fontSize, ...otherStyles } =\n StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,sBAAsB,EAEtBC,UAAU,EAEVC,IAAI,QAEC,cAAc;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMC,0BAA0B,GAC9BH,sBAAsB,CACpB,yBACF,CAAC;AACH,MAAMI,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,SAAS;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GACvDb,UAAU,CAACc,OAAO,CAAC,CAACP,KAAK,CAAC,CAAC;EAC7B,oBACET,KAAA,CAAAiB,aAAA,CAACd,IAAI;IAACM,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBf,KAAA,CAAAiB,aAAA,CAACb,0BAA0B;IACzBG,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAES,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBR,WAAW,EAAEA,WAAY;IACzBS,IAAI,EAAE;MACJN,UAAU;MACVC;IACF,CAAE;IACFF,SAAS,EAAEA,SAAU;IACrBD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAED,eAAeN,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js b/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js index 6501bed..4646778 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js @@ -1,24 +1,18 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } -export default class CardValidationConfig { +export class CardValidationConfig { constructor({ - panId, - expiryDateId, - cvcId, - enablePanFormatting, - acceptedCardBrands + validationListener, + enablePanFormatting = false, + acceptedCardBrands = [] }) { - _defineProperty(this, "panId", void 0); - _defineProperty(this, "expiryDateId", void 0); - _defineProperty(this, "cvcId", void 0); - _defineProperty(this, "enablePanFormatting", false); - _defineProperty(this, "acceptedCardBrands", []); - this.panId = panId; - this.expiryDateId = expiryDateId; - this.cvcId = cvcId; - this.enablePanFormatting = enablePanFormatting ? enablePanFormatting : false; - this.acceptedCardBrands = acceptedCardBrands ? acceptedCardBrands : []; + _defineProperty(this, "enablePanFormatting", void 0); + _defineProperty(this, "acceptedCardBrands", void 0); + _defineProperty(this, "validationListener", void 0); + this.enablePanFormatting = enablePanFormatting; + this.validationListener = validationListener; + this.acceptedCardBrands = acceptedCardBrands; } } //# sourceMappingURL=CardValidationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js.map b/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js.map index 3677c14..2005452 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js.map +++ b/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js.map @@ -1 +1 @@ -{"version":3,"names":["CardValidationConfig","constructor","panId","expiryDateId","cvcId","enablePanFormatting","acceptedCardBrands","_defineProperty"],"sources":["CardValidationConfig.ts"],"sourcesContent":["export default class CardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting = false;\n acceptedCardBrands: string[] = [];\n\n constructor({\n panId,\n expiryDateId,\n cvcId,\n enablePanFormatting,\n acceptedCardBrands,\n }: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n }) {\n this.panId = panId;\n this.expiryDateId = expiryDateId;\n this.cvcId = cvcId;\n this.enablePanFormatting = enablePanFormatting\n ? enablePanFormatting\n : false;\n this.acceptedCardBrands = acceptedCardBrands ? acceptedCardBrands : [];\n }\n}\n"],"mappings":";;;AAAA,eAAe,MAAMA,oBAAoB,CAAC;EAOxCC,WAAWA,CAAC;IACVC,KAAK;IACLC,YAAY;IACZC,KAAK;IACLC,mBAAmB;IACnBC;EAOF,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,8BAfmB,KAAK;IAAAA,eAAA,6BACI,EAAE;IAe/B,IAAI,CAACL,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,mBAAmB,GAAGA,mBAAmB,GAC1CA,mBAAmB,GACnB,KAAK;IACT,IAAI,CAACC,kBAAkB,GAAGA,kBAAkB,GAAGA,kBAAkB,GAAG,EAAE;EACxE;AACF"} \ No newline at end of file +{"version":3,"names":["CardValidationConfig","constructor","validationListener","enablePanFormatting","acceptedCardBrands","_defineProperty"],"sources":["CardValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class CardValidationConfig {\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n validationListener?: CardValidationEventListener;\n\n constructor({\n validationListener,\n enablePanFormatting = false,\n acceptedCardBrands = [],\n }: CardValidationConfig) {\n this.enablePanFormatting = enablePanFormatting;\n this.validationListener = validationListener;\n this.acceptedCardBrands = acceptedCardBrands;\n }\n}\n"],"mappings":";;;AAEA,OAAO,MAAMA,oBAAoB,CAAC;EAKhCC,WAAWA,CAAC;IACVC,kBAAkB;IAClBC,mBAAmB,GAAG,KAAK;IAC3BC,kBAAkB,GAAG;EACD,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACvB,IAAI,CAACF,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACE,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CardValidationHooks.js.map b/access-checkout-react-native-sdk/lib/module/validation/CardValidationHooks.js.map deleted file mode 100644 index 29ec2de..0000000 --- a/access-checkout-react-native-sdk/lib/module/validation/CardValidationHooks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckout","AccessCheckoutReactNative","cardValidationNativeEventListenerOf","useCardValidationEventListener","merchantListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["CardValidationHooks.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CardValidationConfig from './CardValidationConfig';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from './CardValidationEventListener';\n\nexport function useCardValidationEventListener(\n merchantListener: CardValidationEventListener\n) {\n useEffect(() => {\n const nativeEventListener =\n cardValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\nexport function useCardValidation(\n accessCheckout: AccessCheckout,\n cardValidationConfig: CardValidationConfig,\n merchantListener: CardValidationEventListener\n) {\n useCardValidationEventListener(merchantListener);\n\n const initialiseCardValidation = () => {\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,yBAAyB,MAAM,8BAA8B;AACpE;AACA;AAEA;AACA;AACA,SAEEC,mCAAmC,QAC9B,+BAA+B;AAEtC,OAAO,SAASC,8BAA8BA,CAC5CC,gBAA6C,EAC7C;EACAN,SAAS,CAAC,MAAM;IACd,MAAMO,mBAAmB,GACvBH,mCAAmC,CAACE,gBAAgB,CAAC;IACvD,MAAME,kBAAkB,GAAG,IAAIP,kBAAkB,CAC/CE,yBACF,CAAC;IAED,MAAMM,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDR,cAAc,CAACS,uBAAuB,EACtCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAEA,OAAO,SAASC,iBAAiBA,CAC/BC,cAA8B,EAC9BC,oBAA0C,EAC1CT,gBAA6C,EAC7C;EACAD,8BAA8B,CAACC,gBAAgB,CAAC;EAEhD,MAAMU,wBAAwB,GAAGA,CAAA,KAAM;IACrC,OAAOF,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationConfig.js.map b/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationConfig.js.map deleted file mode 100644 index e087324..0000000 --- a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CvcOnlyValidationConfig","constructor","cvcId","_defineProperty"],"sources":["CvcOnlyValidationConfig.ts"],"sourcesContent":["export default class CvcOnlyValidationConfig {\n cvcId: string;\n\n constructor({ cvcId }: { cvcId: string }) {\n this.cvcId = cvcId;\n }\n}\n"],"mappings":";;;AAAA,eAAe,MAAMA,uBAAuB,CAAC;EAG3CC,WAAWA,CAAC;IAAEC;EAAyB,CAAC,EAAE;IAAAC,eAAA;IACxC,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationHooks.js.map b/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationHooks.js.map deleted file mode 100644 index e72ee38..0000000 --- a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationHooks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckoutReactNative","AccessCheckout","cvcOnlyValidationNativeEventListenerOf","useCvcOnlyValidationEventListener","merchantListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CvcOnlyValidationEventType","remove","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["CvcOnlyValidationHooks.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CvcOnlyValidationConfig,\n cvcOnlyValidationNativeEventListenerOf,\n} from '../index';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { CvcOnlyValidationEventListener } from './CvcOnlyValidationEventListener';\n\nexport function useCvcOnlyValidationEventListener(\n merchantListener: CvcOnlyValidationEventListener\n) {\n useEffect(() => {\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\nexport function useCvcOnlyValidation(\n accessCheckout: AccessCheckout,\n cvcOnlyValidationConfig: CvcOnlyValidationConfig,\n merchantListener: CvcOnlyValidationEventListener\n) {\n useCvcOnlyValidationEventListener(merchantListener);\n\n const initialiseCvcOnlyValidation = () => {\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,yBAAyB,IAC9BC,cAAc,EAEdC,sCAAsC,QACjC,UAAU;AACjB;AACA;AAGA,OAAO,SAASC,iCAAiCA,CAC/CC,gBAAgD,EAChD;EACAN,SAAS,CAAC,MAAM;IACd,MAAMO,mBAAmB,GACvBH,sCAAsC,CAACE,gBAAgB,CAAC;IAC1D,MAAME,kBAAkB,GAAG,IAAIP,kBAAkB,CAC/CC,yBACF,CAAC;IAED,MAAMO,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDP,cAAc,CAACQ,0BAA0B,EACzCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAEA,OAAO,SAASC,oBAAoBA,CAClCC,cAA8B,EAC9BC,uBAAgD,EAChDT,gBAAgD,EAChD;EACAD,iCAAiC,CAACC,gBAAgB,CAAC;EAEnD,MAAMU,2BAA2B,GAAGA,CAAA,KAAM;IACxC,OAAOF,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js b/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js new file mode 100644 index 0000000..f6da987 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js @@ -0,0 +1,12 @@ +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +export class CvcValidationConfig { + constructor({ + validationListener + }) { + _defineProperty(this, "validationListener", void 0); + this.validationListener = validationListener; + } +} +//# sourceMappingURL=CvcValidationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js.map b/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js.map new file mode 100644 index 0000000..0319445 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CvcValidationConfig","constructor","validationListener","_defineProperty"],"sources":["CvcValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class CvcValidationConfig {\n validationListener?: CardValidationEventListener;\n\n constructor({ validationListener }: CvcValidationConfig) {\n this.validationListener = validationListener;\n }\n}\n"],"mappings":";;;AAEA,OAAO,MAAMA,mBAAmB,CAAC;EAG/BC,WAAWA,CAAC;IAAEC;EAAwC,CAAC,EAAE;IAAAC,eAAA;IACvD,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts b/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts index 6a8581d..d774834 100644 --- a/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts @@ -1,7 +1,15 @@ -import SessionGenerationConfig from './session/SessionGenerationConfig'; -import Sessions from './session/Sessions'; -import CardValidationConfig from './validation/CardValidationConfig'; -import CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig'; +import type SessionGenerationConfig from './session/SessionGenerationConfig'; +import type Sessions from './session/Sessions'; +interface InitialiseCardValidationConfig { + panId: string; + expiryDateId: string; + cvcId: string; + enablePanFormatting?: boolean; + acceptedCardBrands?: string[]; +} +interface InitialiseCvcOnlyValidationConfig { + cvcId: string; +} export default class AccessCheckout { private readonly ReactNativeSdkVersion; static readonly CardValidationEventType = "AccessCheckoutCardValidationEvent"; @@ -13,6 +21,7 @@ export default class AccessCheckout { merchantId?: string; }); generateSessions(sessionGenerationConfig: SessionGenerationConfig, sessionTypes: string[]): Promise; - initialiseCardValidation(validationConfig: CardValidationConfig): Promise; - initialiseCvcOnlyValidation(validationConfig: CvcOnlyValidationConfig): Promise; + initialiseCardValidation(validationConfig: InitialiseCardValidationConfig): Promise; + initialiseCvcOnlyValidation(validationConfig: InitialiseCvcOnlyValidationConfig): Promise; } +export {}; diff --git a/access-checkout-react-native-sdk/lib/typescript/config/CardConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/config/CardConfig.d.ts new file mode 100644 index 0000000..057051e --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/config/CardConfig.d.ts @@ -0,0 +1,8 @@ +import type { CardValidationConfig } from '../validation/CardValidationConfig'; +export default class CardConfig { + panId: string; + expiryDateId: string; + cvcId: string; + validationConfig?: CardValidationConfig; + constructor({ panId, expiryDateId, cvcId, validationConfig }: CardConfig); +} diff --git a/access-checkout-react-native-sdk/lib/typescript/config/CvcOnlyConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/config/CvcOnlyConfig.d.ts new file mode 100644 index 0000000..4b81630 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/config/CvcOnlyConfig.d.ts @@ -0,0 +1,6 @@ +import type { CvcValidationConfig } from '../validation/CvcValidationConfig'; +export default class CvcOnlyConfig { + cvcId: string; + validationConfig?: CvcValidationConfig; + constructor({ cvcId, validationConfig }: CvcOnlyConfig); +} diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useAccessCheckout.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useAccessCheckout.d.ts new file mode 100644 index 0000000..19515ed --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useAccessCheckout.d.ts @@ -0,0 +1,11 @@ +import { CardConfig, CvcOnlyConfig, Sessions } from '../index'; +export interface UseAccessCheckoutExports { + initialiseValidation: () => Promise; + generateSessions: (sessionTypes: string[]) => Promise; +} +export interface UseAccessCheckout { + baseUrl: string; + checkoutId: string; + config: CardConfig | CvcOnlyConfig; +} +export declare const useAccessCheckout: ({ baseUrl, checkoutId, config, }: UseAccessCheckout) => UseAccessCheckoutExports; diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts new file mode 100644 index 0000000..a83f884 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts @@ -0,0 +1,18 @@ +import AccessCheckout from '../AccessCheckout'; +import { CardValidationEventListener } from '../validation/CardValidationEventListener'; +export declare function useCardValidationEventListener(merchantListener: CardValidationEventListener): void; +interface UseCardValidationHook { + accessCheckout: AccessCheckout; + cardValidationConfig: { + panId: string; + expiryDateId: string; + cvcId: string; + enablePanFormatting?: boolean; + acceptedCardBrands?: string[]; + }; + merchantListener: CardValidationEventListener; +} +export declare function useCardValidation({ accessCheckout, cardValidationConfig, merchantListener, }: UseCardValidationHook): { + initialiseCardValidation: () => Promise; +}; +export {}; diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyValidation.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyValidation.d.ts new file mode 100644 index 0000000..bccdbd6 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyValidation.d.ts @@ -0,0 +1,14 @@ +import { AccessCheckout, CardValidationEventListener } from '../index'; +import type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener'; +export declare const useCvcOnlyValidationEventListener: (merchantListener: CvcOnlyValidationEventListener) => void; +interface UseCvcOnlyValidationHook { + accessCheckout: AccessCheckout; + cvcOnlyValidationConfig: { + cvcId: string; + }; + merchantListener: CardValidationEventListener; +} +export declare const useCvcOnlyValidation: ({ accessCheckout, cvcOnlyValidationConfig, merchantListener, }: UseCvcOnlyValidationHook) => { + initialiseCvcOnlyValidation: () => Promise; +}; +export {}; diff --git a/access-checkout-react-native-sdk/lib/typescript/index.d.ts b/access-checkout-react-native-sdk/lib/typescript/index.d.ts index 18713d1..9740e4a 100644 --- a/access-checkout-react-native-sdk/lib/typescript/index.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/index.d.ts @@ -4,11 +4,12 @@ export { default as AccessCheckout } from './AccessCheckout'; export { default as SessionGenerationConfig } from './session/SessionGenerationConfig'; export { default as SessionType, CARD, CVC } from './session/SessionType'; export { default as Sessions } from './session/Sessions'; -export { default as CardValidationConfig } from './validation/CardValidationConfig'; -export { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig'; export { default as Brand } from './validation/Brand'; export { default as BrandImage } from './validation/BrandImage'; -export { CardValidationEventListener, cardValidationNativeEventListenerOf, } from './validation/CardValidationEventListener'; -export { CvcOnlyValidationEventListener, cvcOnlyValidationNativeEventListenerOf, } from './validation/CvcOnlyValidationEventListener'; -export { useCardValidation } from './validation/CardValidationHooks'; -export { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks'; +export { default as CardConfig } from './config/CardConfig'; +export { default as CvcOnlyConfig } from './config/CvcOnlyConfig'; +export { CardValidationEventListener } from './validation/CardValidationEventListener'; +export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener'; +export { CvcValidationConfig } from './validation/CvcValidationConfig'; +export { CardValidationConfig } from './validation/CardValidationConfig'; +export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports, } from './hooks/useAccessCheckout'; diff --git a/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts b/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts index 5b94786..b529a44 100644 --- a/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts @@ -1,21 +1,34 @@ import React from 'react'; -import { StyleProp, TextStyle, type ViewProps } from 'react-native'; +import { type StyleProp, type ViewStyle } from 'react-native'; +import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet'; /** * Composes `AccessCheckoutTextInput`. * * - nativeID: string * - testID: string - * - style: StyleProp - * - editable: boolean + * - style: StyleProp; * - placeholder: string + * - editable: boolean + */ +interface AccessCheckoutTextInputProps { + nativeID: string; + testID?: string; + style?: StyleProp; + placeholder?: string; + editable?: boolean; +} +/** + * Note: Not all properties apply styling to placeholder text and input text. + * textColor: only applies to input text. + * fontFamily: applies to both placeholder text and input text. + * fontSize:applies to both placeholder text and input text. + * fontStyle:applies to both placeholder text and input text. + * fontWeight:applies to both placeholder text and input text. */ -interface AccessCheckoutTextInputProps extends ViewProps { - testID: string | undefined; - style?: StyleProp; - editable?: boolean | undefined; - placeholder?: string | undefined; - isValid?: boolean; - keyboardType?: string; +interface AccessCheckoutTextInputStyle extends ViewStyle { + textColor?: ColorValue; + fontFamily?: string; + fontSize?: number; } declare const AccessCheckoutTextInput: (props: AccessCheckoutTextInputProps) => React.JSX.Element; export default AccessCheckoutTextInput; diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationConfig.d.ts index c01a565..2298273 100644 --- a/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationConfig.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationConfig.d.ts @@ -1,14 +1,7 @@ -export default class CardValidationConfig { - panId: string; - expiryDateId: string; - cvcId: string; - enablePanFormatting: boolean; - acceptedCardBrands: string[]; - constructor({ panId, expiryDateId, cvcId, enablePanFormatting, acceptedCardBrands, }: { - panId: string; - expiryDateId: string; - cvcId: string; - enablePanFormatting?: boolean; - acceptedCardBrands?: string[]; - }); +import type { CardValidationEventListener } from '../index'; +export declare class CardValidationConfig { + enablePanFormatting?: boolean; + acceptedCardBrands?: string[]; + validationListener?: CardValidationEventListener; + constructor({ validationListener, enablePanFormatting, acceptedCardBrands, }: CardValidationConfig); } diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationHooks.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationHooks.d.ts deleted file mode 100644 index 31fa1cd..0000000 --- a/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationHooks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import AccessCheckout from '../AccessCheckout'; -import CardValidationConfig from './CardValidationConfig'; -import { CardValidationEventListener } from './CardValidationEventListener'; -export declare function useCardValidationEventListener(merchantListener: CardValidationEventListener): void; -export declare function useCardValidation(accessCheckout: AccessCheckout, cardValidationConfig: CardValidationConfig, merchantListener: CardValidationEventListener): { - initialiseCardValidation: () => Promise; -}; diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/CvcOnlyValidationConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/CvcOnlyValidationConfig.d.ts deleted file mode 100644 index c72b959..0000000 --- a/access-checkout-react-native-sdk/lib/typescript/validation/CvcOnlyValidationConfig.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default class CvcOnlyValidationConfig { - cvcId: string; - constructor({ cvcId }: { - cvcId: string; - }); -} diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/CvcOnlyValidationHooks.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/CvcOnlyValidationHooks.d.ts deleted file mode 100644 index e6975e1..0000000 --- a/access-checkout-react-native-sdk/lib/typescript/validation/CvcOnlyValidationHooks.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { AccessCheckout, CvcOnlyValidationConfig } from '../index'; -import { CvcOnlyValidationEventListener } from './CvcOnlyValidationEventListener'; -export declare function useCvcOnlyValidationEventListener(merchantListener: CvcOnlyValidationEventListener): void; -export declare function useCvcOnlyValidation(accessCheckout: AccessCheckout, cvcOnlyValidationConfig: CvcOnlyValidationConfig, merchantListener: CvcOnlyValidationEventListener): { - initialiseCvcOnlyValidation: () => Promise; -}; diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/CvcValidationConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/CvcValidationConfig.d.ts new file mode 100644 index 0000000..a3f414f --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/validation/CvcValidationConfig.d.ts @@ -0,0 +1,5 @@ +import type { CardValidationEventListener } from '../index'; +export declare class CvcValidationConfig { + validationListener?: CardValidationEventListener; + constructor({ validationListener }: CvcValidationConfig); +} diff --git a/access-checkout-react-native-sdk/package-lock.json b/access-checkout-react-native-sdk/package-lock.json index b61cdba..388eb91 100644 --- a/access-checkout-react-native-sdk/package-lock.json +++ b/access-checkout-react-native-sdk/package-lock.json @@ -12,6 +12,7 @@ "@babel/core": "^7.20.0", "@babel/preset-env": "^7.20.0", "@babel/preset-typescript": "^7.16.5", + "@testing-library/react-native": "^12.4.3", "@types/jest": "^27.0.3", "@types/react": "^18.0.24", "@types/react-native": "^0.72.6", @@ -25,22 +26,20 @@ "jest-html-reporter": "^3.10.2", "jest-junit": "^13.0.0", "prettier": "^2.5.0", - "react": "^18.1.0", - "react-native": "^0.70.0", "react-native-builder-bob": "^0.18.2", "ts-jest": "^29.1.1", "typescript": "4.8.4" }, "peerDependencies": { "react": ">=18.1.0", - "react-native": ">=0.70.0" + "react-native": ">=0.70.0", + "react-test-renderer": "18.1.0" } }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -53,7 +52,6 @@ "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, "dependencies": { "@babel/highlight": "^7.22.13", "chalk": "^2.4.2" @@ -66,7 +64,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -78,7 +75,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -92,7 +88,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -100,14 +95,12 @@ "node_modules/@babel/code-frame/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@babel/code-frame/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -116,7 +109,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -128,7 +120,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -137,7 +128,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", @@ -167,7 +157,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", - "dev": true, "dependencies": { "@babel/types": "^7.23.3", "@jridgewell/gen-mapping": "^0.3.2", @@ -182,7 +171,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -194,7 +182,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -206,7 +193,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.15", @@ -222,7 +208,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", @@ -245,7 +230,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -262,7 +246,6 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", - "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -278,7 +261,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -287,7 +269,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -300,7 +281,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -312,7 +292,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, "dependencies": { "@babel/types": "^7.23.0" }, @@ -324,7 +303,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -336,7 +314,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -355,7 +332,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -367,7 +343,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -376,7 +351,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -393,7 +367,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -410,7 +383,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -422,7 +394,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -434,7 +405,6 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -446,7 +416,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -455,7 +424,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -464,7 +432,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -473,7 +440,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -487,7 +453,6 @@ "version": "7.23.2", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/traverse": "^7.23.2", @@ -501,7 +466,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -515,7 +479,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -527,7 +490,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -541,7 +503,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -549,14 +510,12 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -565,7 +524,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -577,7 +535,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -589,7 +546,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -604,7 +560,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -621,7 +576,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -638,7 +592,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.20.2", @@ -657,7 +611,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -673,7 +626,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz", "integrity": "sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-default-from": "^7.23.3" @@ -690,7 +643,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -707,7 +660,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", - "dev": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -727,7 +680,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -744,7 +697,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -761,7 +714,6 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, "engines": { "node": ">=6.9.0" }, @@ -773,7 +725,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -797,7 +748,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -809,7 +759,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -824,7 +773,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -836,7 +784,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz", "integrity": "sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -851,7 +799,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -863,7 +810,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -878,7 +824,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -893,7 +838,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -908,7 +852,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -920,7 +863,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -932,7 +874,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -947,7 +888,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -959,7 +899,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -971,7 +910,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -983,7 +921,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -995,7 +932,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1007,7 +943,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1019,7 +954,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1034,7 +968,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1049,7 +982,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1064,7 +996,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1080,7 +1011,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1095,7 +1025,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz", "integrity": "sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -1113,7 +1042,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1130,7 +1058,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1145,7 +1072,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz", "integrity": "sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1160,7 +1086,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1176,7 +1101,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz", "integrity": "sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1193,7 +1117,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.15", @@ -1216,7 +1139,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -1232,7 +1154,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1247,7 +1168,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1263,7 +1183,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1278,7 +1197,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz", "integrity": "sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1294,7 +1212,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1310,7 +1227,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz", "integrity": "sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1326,7 +1242,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-flow": "^7.23.3" @@ -1342,7 +1257,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1357,7 +1271,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -1374,7 +1287,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz", "integrity": "sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1390,7 +1302,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1405,7 +1316,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz", "integrity": "sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1421,7 +1331,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1436,7 +1345,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1452,7 +1360,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -1469,7 +1376,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -1487,7 +1393,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1503,7 +1408,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1519,7 +1423,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1534,7 +1437,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz", "integrity": "sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1550,7 +1452,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz", "integrity": "sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1566,7 +1467,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz", "integrity": "sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -1585,7 +1485,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" @@ -1601,7 +1500,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz", "integrity": "sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1617,7 +1515,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz", "integrity": "sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1634,7 +1531,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1649,7 +1545,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1665,7 +1560,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz", "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -1683,7 +1577,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1698,7 +1591,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz", "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1713,7 +1605,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.0", "@babel/helper-module-imports": "^7.16.0", @@ -1747,7 +1638,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1762,7 +1653,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1793,7 +1684,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -1809,7 +1699,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1824,7 +1713,7 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", - "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1844,7 +1733,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1859,7 +1747,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1875,7 +1762,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1890,7 +1776,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1905,7 +1790,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1920,7 +1804,6 @@ "version": "7.16.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", @@ -1937,7 +1820,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1952,7 +1834,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1968,7 +1849,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1984,7 +1864,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -2000,7 +1879,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -2094,7 +1972,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.0.tgz", "integrity": "sha512-e5NE1EoPMpoHFkyFkMSj2h9tu7OolARcUHki8mnBv4NiFK9so+UrhbvT9mV99tMJOUEx8BOj67T6dXvGcTeYeQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", @@ -2111,7 +1988,6 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2145,7 +2021,6 @@ "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.5", "@babel/helper-validator-option": "^7.14.5", @@ -2162,7 +2037,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", - "dev": true, + "peer": true, "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", @@ -2181,7 +2056,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, + "peer": true, "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -2194,7 +2069,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, + "peer": true, "bin": { "semver": "bin/semver" } @@ -2203,7 +2078,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, + "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2212,14 +2087,12 @@ "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -2231,7 +2104,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -2245,7 +2117,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/generator": "^7.23.3", @@ -2266,7 +2137,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", - "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20", @@ -2385,13 +2255,13 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true + "peer": true }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, + "peer": true, "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -2550,7 +2420,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", - "dev": true, + "peer": true, "dependencies": { "@jest/types": "^27.5.1" }, @@ -2562,7 +2432,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -2578,7 +2448,7 @@ "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "dev": true, + "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -2859,7 +2729,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2873,7 +2742,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2882,7 +2750,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2890,14 +2757,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2942,7 +2807,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.3.4.tgz", "integrity": "sha512-FxqouQ2UXErwqwU+tWDbMC7HxT8A+AzAaCE723H0SWjOxLPlkChp7P1QOEdOpnA7G/Ss6hl3uS9AWRVypP5kBg==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-clean": "^9.2.1", "@react-native-community/cli-config": "^9.2.1", @@ -2973,7 +2838,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -2985,7 +2850,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -3001,7 +2866,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3019,7 +2884,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "dependencies": { "pump": "^3.0.0" }, @@ -3031,7 +2896,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3040,7 +2905,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3052,7 +2917,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -3061,7 +2926,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, + "peer": true, "bin": { "semver": "bin/semver" } @@ -3070,7 +2935,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3082,7 +2947,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3091,7 +2956,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3103,7 +2968,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-tools": "^9.2.1", "cosmiconfig": "^5.1.0", @@ -3116,7 +2981,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3125,7 +2990,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==", - "dev": true, + "peer": true, "dependencies": { "serve-static": "^1.13.1" } @@ -3134,7 +2999,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-config": "^9.2.1", "@react-native-community/cli-platform-ios": "^9.3.0", @@ -3158,7 +3023,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -3167,7 +3032,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -3183,7 +3048,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, + "peer": true, "bin": { "semver": "bin/semver" } @@ -3192,7 +3057,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3210,7 +3075,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "dependencies": { "pump": "^3.0.0" }, @@ -3222,7 +3087,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3231,7 +3096,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3243,7 +3108,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -3252,7 +3117,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3264,7 +3129,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3273,7 +3138,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "peer": true, "dependencies": { "ansi-regex": "^4.1.0" }, @@ -3285,7 +3150,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3297,7 +3162,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.4.tgz", "integrity": "sha512-VqTPA7kknCXgtYlRf+sDWW4yxZ6Gtg1Ga+Rdrn1qSKuo09iJ8YKPoQYOu5nqbIYJQAEhorWQyo1VvNgd0wd49w==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-platform-android": "^9.3.4", "@react-native-community/cli-tools": "^9.2.1", @@ -3310,7 +3175,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.4.tgz", "integrity": "sha512-BTKmTMYFuWtMqimFQJfhRyhIWw1m+5N5svR1S5+DqPcyFuSXrpNYDWNSFR8E105xUbFANmsCZZQh6n1WlwMpOA==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -3325,7 +3190,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -3341,7 +3206,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3359,7 +3224,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "dependencies": { "pump": "^3.0.0" }, @@ -3371,7 +3236,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3380,7 +3245,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3392,7 +3257,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -3401,7 +3266,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, + "peer": true, "bin": { "semver": "bin/semver" } @@ -3410,7 +3275,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3422,7 +3287,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3431,7 +3296,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3443,7 +3308,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -3456,7 +3321,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -3472,7 +3337,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3490,7 +3355,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "dependencies": { "pump": "^3.0.0" }, @@ -3502,7 +3367,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3511,7 +3376,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3523,7 +3388,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -3532,7 +3397,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, + "peer": true, "bin": { "semver": "bin/semver" } @@ -3541,7 +3406,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3553,7 +3418,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3562,7 +3427,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3574,7 +3439,7 @@ "version": "9.3.3", "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.3.3.tgz", "integrity": "sha512-lPBw6XieNdj2AbWDN0Rc+jNOx8hBgSQyv0gUAm01qtJe4I9FjSMU6nOGTxMpWpICo6TYl/cmPGXOzbfpwxwtkQ==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-server-api": "^9.2.1", "@react-native-community/cli-tools": "^9.2.1", @@ -3592,7 +3457,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", - "dev": true, + "peer": true, "dependencies": { "@react-native-community/cli-debugger-ui": "^9.0.0", "@react-native-community/cli-tools": "^9.2.1", @@ -3609,7 +3474,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, + "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -3625,7 +3490,7 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, + "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -3634,7 +3499,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, + "peer": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -3649,7 +3514,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", - "dev": true, + "peer": true, "dependencies": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", @@ -3666,7 +3531,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, + "peer": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3682,7 +3547,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "peer": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -3697,7 +3562,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "peer": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -3712,7 +3577,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, + "peer": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -3727,7 +3592,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==", - "dev": true, + "peer": true, "dependencies": { "joi": "^17.2.1" } @@ -3736,7 +3601,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -3752,7 +3617,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, + "peer": true, "bin": { "semver": "bin/semver" } @@ -3761,7 +3626,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3779,7 +3644,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "dependencies": { "pump": "^3.0.0" }, @@ -3791,7 +3656,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3800,7 +3665,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3812,7 +3677,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -3821,7 +3686,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3833,7 +3698,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3842,7 +3707,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3854,19 +3719,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==", - "dev": true + "peer": true }, "node_modules/@react-native/normalize-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==", - "dev": true + "peer": true }, "node_modules/@react-native/polyfills": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", - "dev": true + "peer": true }, "node_modules/@react-native/virtualized-lists": { "version": "0.72.8", @@ -3885,7 +3750,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dev": true, + "peer": true, "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -3894,13 +3759,13 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true + "peer": true }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true + "peer": true }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -3926,24 +3791,78 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/@testing-library/react-native": { + "version": "12.4.3", + "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-12.4.3.tgz", + "integrity": "sha512-WLE7VbbR5jZJQl3vfNK7Wt+IHnzhOxyu95Mr56EHmzH3XhC8DkrPVAnUq9asq/QWj4aGnymbinFx6zZys/WZmA==", "dev": true, "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "jest-matcher-utils": "^29.7.0", + "pretty-format": "^29.7.0", + "redent": "^3.0.0" + }, + "peerDependencies": { + "jest": ">=28.0.0", + "react": ">=16.8.0", + "react-native": ">=0.59", + "react-test-renderer": ">=16.8.0" + }, + "peerDependenciesMeta": { + "jest": { + "optional": true + } } }, - "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", - "dev": true, + "node_modules/@testing-library/react-native/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/react-native/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@testing-library/react-native/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dev": true, "dependencies": { "@babel/types": "^7.0.0" } @@ -3979,14 +3898,12 @@ "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -3995,7 +3912,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } @@ -4019,8 +3935,7 @@ "node_modules/@types/node": { "version": "16.11.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", - "dev": true + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -4079,8 +3994,7 @@ "node_modules/@types/yargs-parser": { "version": "20.2.1", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.5.0", @@ -4331,7 +4245,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, + "peer": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -4343,13 +4257,13 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", "integrity": "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==", - "dev": true + "peer": true }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, + "peer": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -4412,7 +4326,7 @@ "version": "1.4.10", "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "dev": true + "peer": true }, "node_modules/ansi-escapes": { "version": "4.3.2", @@ -4433,7 +4347,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "dev": true, + "peer": true, "dependencies": { "colorette": "^1.0.7", "slice-ansi": "^2.0.0", @@ -4444,7 +4358,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -4453,7 +4367,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "peer": true, "dependencies": { "ansi-regex": "^4.1.0" }, @@ -4465,7 +4379,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -4474,7 +4387,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -4489,7 +4401,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4502,13 +4413,12 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "dev": true + "peer": true }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -4526,13 +4436,13 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "peer": true }, "node_modules/ast-types": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "dev": true, + "peer": true, "dependencies": { "tslib": "^2.0.1" }, @@ -4544,13 +4454,13 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "peer": true }, "node_modules/astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -4559,13 +4469,13 @@ "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true + "peer": true }, "node_modules/async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true + "peer": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -4580,7 +4490,7 @@ "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "dev": true, + "peer": true, "peerDependencies": { "@babel/core": "^7.0.0-0" } @@ -4641,7 +4551,6 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.4.3", @@ -4655,7 +4564,6 @@ "version": "0.8.6", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", - "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.3", "core-js-compat": "^3.33.1" @@ -4668,7 +4576,6 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", - "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.3" }, @@ -4680,7 +4587,7 @@ "version": "7.0.0-beta.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "dev": true + "peer": true }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", @@ -4709,7 +4616,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "dev": true, + "peer": true, "dependencies": { "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.0.0", @@ -4762,14 +4669,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -4783,13 +4688,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "peer": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -4800,7 +4706,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4810,7 +4715,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -4822,7 +4726,6 @@ "version": "4.22.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4866,7 +4769,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, "dependencies": { "node-int64": "^0.4.0" } @@ -4875,7 +4777,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -4890,6 +4791,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -4898,14 +4800,13 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -4914,7 +4815,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "dev": true, + "peer": true, "dependencies": { "callsites": "^2.0.0" }, @@ -4926,7 +4827,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -4935,7 +4836,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "dev": true, + "peer": true, "dependencies": { "caller-callsite": "^2.0.0" }, @@ -4956,7 +4857,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } @@ -4965,7 +4865,6 @@ "version": "1.0.30001563", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4985,7 +4884,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5010,7 +4908,6 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, "funding": [ { "type": "github", @@ -5040,7 +4937,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, + "peer": true, "dependencies": { "restore-cursor": "^3.1.0" }, @@ -5052,7 +4949,7 @@ "version": "2.9.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "dev": true, + "peer": true, "engines": { "node": ">=6" }, @@ -5075,7 +4972,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, + "peer": true, "engines": { "node": ">=0.8" } @@ -5084,7 +4981,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, + "peer": true, "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -5114,7 +5011,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -5125,26 +5021,25 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colorette": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true + "peer": true }, "node_modules/command-exists": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true + "peer": true }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, + "peer": true, "engines": { "node": "^12.20.0 || >=14" } @@ -5153,13 +5048,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "peer": true }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, + "peer": true, "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5171,7 +5066,7 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, + "peer": true, "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -5189,7 +5084,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -5198,19 +5093,18 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, + "peer": true, "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -5225,7 +5119,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -5234,19 +5128,17 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/core-js-compat": { "version": "3.33.3", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", - "dev": true, "dependencies": { "browserslist": "^4.22.1" }, @@ -5259,13 +5151,13 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "peer": true }, "node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, + "peer": true, "dependencies": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", @@ -5280,7 +5172,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, + "peer": true, "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -5343,13 +5235,12 @@ "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "dev": true + "peer": true }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -5366,7 +5257,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -5396,7 +5287,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, + "peer": true, "dependencies": { "clone": "^1.0.2" }, @@ -5430,13 +5321,13 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", - "dev": true + "peer": true }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -5445,7 +5336,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -5497,13 +5388,12 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "peer": true }, "node_modules/electron-to-chromium": { "version": "1.4.588", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz", - "integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==", - "dev": true + "integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==" }, "node_modules/emittery": { "version": "0.13.1", @@ -5520,14 +5410,13 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -5536,7 +5425,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "dependencies": { "once": "^1.4.0" } @@ -5566,7 +5454,7 @@ "version": "7.11.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", - "dev": true, + "peer": true, "bin": { "envinfo": "dist/cli.js" }, @@ -5578,7 +5466,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -5587,7 +5474,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, + "peer": true, "dependencies": { "stackframe": "^1.3.4" } @@ -5596,7 +5483,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", - "dev": true, + "peer": true, "dependencies": { "accepts": "~1.3.7", "escape-html": "~1.0.3" @@ -5609,7 +5496,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -5618,13 +5504,12 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "peer": true }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -5920,7 +5805,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5966,7 +5850,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5975,7 +5858,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -5984,7 +5867,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -6108,7 +5991,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, "dependencies": { "bser": "2.1.1" } @@ -6129,7 +6011,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6141,7 +6022,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, + "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -6159,7 +6040,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -6168,13 +6049,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, + "peer": true, "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -6188,7 +6069,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, + "peer": true, "dependencies": { "locate-path": "^3.0.0" }, @@ -6200,7 +6081,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, + "peer": true, "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -6213,7 +6094,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, + "peer": true, "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -6226,7 +6107,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, + "peer": true, "dependencies": { "p-limit": "^2.0.0" }, @@ -6238,7 +6119,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -6247,7 +6128,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, + "peer": true, "dependencies": { "find-up": "^3.0.0" }, @@ -6259,7 +6140,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, + "peer": true, "bin": { "semver": "bin/semver" } @@ -6268,7 +6149,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6300,7 +6180,7 @@ "version": "0.121.0", "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", - "dev": true, + "peer": true, "engines": { "node": ">=0.4.0" } @@ -6309,7 +6189,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -6318,7 +6198,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -6331,14 +6211,12 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -6352,7 +6230,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6367,7 +6244,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -6376,7 +6252,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -6406,7 +6281,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6438,7 +6312,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -6466,14 +6339,12 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -6485,7 +6356,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -6494,13 +6364,13 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==", - "dev": true + "peer": true }, "node_modules/hermes-parser": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==", - "dev": true, + "peer": true, "dependencies": { "hermes-estree": "0.8.0" } @@ -6509,7 +6379,7 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", - "dev": true, + "peer": true, "dependencies": { "source-map": "^0.7.3" }, @@ -6521,7 +6391,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, + "peer": true, "engines": { "node": ">= 8" } @@ -6536,7 +6406,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, + "peer": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -6552,7 +6422,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -6570,7 +6440,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -6584,7 +6453,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/ignore": { "version": "5.1.9", @@ -6599,7 +6469,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", - "dev": true, + "peer": true, "bin": { "image-size": "bin/image-size.js" }, @@ -6611,7 +6481,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "dev": true, + "peer": true, "dependencies": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" @@ -6643,7 +6513,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -6661,7 +6530,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6670,14 +6538,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -6686,7 +6552,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true + "peer": true }, "node_modules/is-absolute": { "version": "1.0.0", @@ -6704,14 +6570,12 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "node_modules/is-core-module": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -6723,7 +6587,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6741,7 +6605,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -6870,7 +6734,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6879,7 +6743,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -6906,7 +6769,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, + "peer": true, "dependencies": { "isobject": "^3.0.1" }, @@ -6954,7 +6817,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -6975,7 +6838,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -6984,19 +6847,18 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "peer": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -7930,7 +7792,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, + "peer": true, "dependencies": { "@types/node": "*", "graceful-fs": "^4.2.9" @@ -8220,7 +8082,7 @@ "version": "17.11.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "dev": true, + "peer": true, "dependencies": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -8232,14 +8094,12 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -8252,19 +8112,19 @@ "version": "250230.2.1", "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==", - "dev": true + "peer": true }, "node_modules/jsc-safe-url": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", - "dev": true + "peer": true }, "node_modules/jscodeshift": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.13.16", "@babel/parser": "^7.13.16", @@ -8297,7 +8157,7 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -8309,7 +8169,7 @@ "version": "0.8.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", - "dev": true, + "peer": true, "dependencies": { "rimraf": "~2.6.2" }, @@ -8321,7 +8181,7 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, + "peer": true, "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -8332,7 +8192,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -8344,7 +8203,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "peer": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -8368,7 +8227,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -8380,7 +8238,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, + "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -8389,7 +8247,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -8398,7 +8256,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, + "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.9" } @@ -8407,7 +8265,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, "engines": { "node": ">=6" } @@ -8416,7 +8273,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, "engines": { "node": ">=6" } @@ -8444,7 +8300,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -8455,8 +8310,7 @@ "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -8474,13 +8328,13 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "dev": true + "peer": true }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, + "peer": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -8496,7 +8350,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "dev": true, + "peer": true, "dependencies": { "ansi-fragments": "^0.2.1", "dayjs": "^1.8.15", @@ -8510,7 +8364,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, + "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -8521,7 +8375,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8535,13 +8389,13 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "peer": true }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, + "peer": true, "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -8563,7 +8417,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "peer": true, "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -8576,7 +8430,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -8588,7 +8441,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -8651,7 +8503,6 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, "dependencies": { "tmpl": "1.0.5" } @@ -8660,13 +8511,12 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "dev": true + "peer": true }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", @@ -8681,7 +8531,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.4.tgz", "integrity": "sha512-UBqL2fswJjsq2LlfMPV4ArqzLzjyN0nReKRijP3DdSxZiaJDG4NC9sQoVJHbH1HP5qXQMAK/SftyAx1c1kuy+w==", - "dev": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/core": "^7.14.0", @@ -8743,7 +8593,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.4.tgz", "integrity": "sha512-cg1TQUKDkKqrIClrqqIGE8ZDa9kRKSjhBtqPtNYt/ZSywXU41SrldfcI5uzPrzcIrYpH5hnN6OCLRACPgy2vsw==", - "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.14.0", "hermes-parser": "0.8.0", @@ -8755,7 +8605,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.4.tgz", "integrity": "sha512-76fi9OVytiFVSuGQcNoquVOT7AENd0q3n1WmyBeJ7jvl/UrE3/NN3HTWzu2ezG5IxF3cmo5q1ehi0NEpgwaFGg==", - "dev": true, + "peer": true, "dependencies": { "metro-core": "0.72.4", "rimraf": "^2.5.4" @@ -8765,13 +8615,13 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.4.tgz", "integrity": "sha512-DH3cgN4L7IKNCVBy8LBOXQ4tHDdvh7Vl7jWNkQKMOfHWu1EwsTtXD/+zdV7/be4ls/kHxrD0HbGzpK8XhUAHSw==", - "dev": true + "peer": true }, "node_modules/metro-cache/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -8783,7 +8633,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.4.tgz", "integrity": "sha512-USv+H14D5RrSpfA5t4t5cbF1CnizgYGz6xJ3HB0r/bDYdJdZTVqB3/mMPft7Z5zHslS00JCG7oE51G1CK/FlKw==", - "dev": true, + "peer": true, "dependencies": { "cosmiconfig": "^5.0.5", "jest-validate": "^26.5.2", @@ -8797,7 +8647,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, + "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -8813,7 +8663,7 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, + "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -8822,7 +8672,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -8834,7 +8684,7 @@ "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true, + "peer": true, "engines": { "node": ">= 10.14.2" } @@ -8843,7 +8693,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "dev": true, + "peer": true, "dependencies": { "@jest/types": "^26.6.2", "camelcase": "^6.0.0", @@ -8860,7 +8710,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, + "peer": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -8875,7 +8725,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.4.tgz", "integrity": "sha512-2JNT1nG0UV1uMrQHQOKUSII0sdS6MhVT3mBt2kwfjCvD+jvi1iYhKJ4kYCRlUQw9XNLGZ/B+C0VDQzlf2M3zVw==", - "dev": true, + "peer": true, "dependencies": { "lodash.throttle": "^4.1.1", "metro-resolver": "0.72.4" @@ -8885,7 +8735,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.4.tgz", "integrity": "sha512-Mv5WgTsYs5svTR/df6jhq2aD4IkAuwV5TutHW0BfEg1YccQt8/v7q5ZypmUOkjdSS9bFR4r3677jalr/ceFypQ==", - "dev": true, + "peer": true, "dependencies": { "abort-controller": "^3.0.0", "anymatch": "^3.0.3", @@ -8908,7 +8758,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -8924,7 +8774,7 @@ "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "dev": true, + "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -8933,7 +8783,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -8942,7 +8792,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, + "peer": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } @@ -8951,7 +8801,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, + "peer": true, "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -8968,7 +8818,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8982,13 +8832,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "node_modules/metro-file-map/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -9003,13 +8853,13 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.4.tgz", "integrity": "sha512-AY1mAT5FKfDRYCthuKo2XHbuhG5TUV4ZpZlJ8peIgkiWICzfy0tau3yu+3jUD456N90CjMCOmdknji4uKiZ8ww==", - "dev": true + "peer": true }, "node_modules/metro-inspector-proxy": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.4.tgz", "integrity": "sha512-pr+PsbNCZaStWuJRH8oclT170B7NxfgH+UUyTf9/aR+7PjX0gdDabJhPyzA633QgR+EFBaQKZuetHA+f5/cnEQ==", - "dev": true, + "peer": true, "dependencies": { "connect": "^3.6.5", "debug": "^2.2.0", @@ -9024,7 +8874,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, + "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -9035,7 +8885,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -9044,13 +8894,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "node_modules/metro-inspector-proxy/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9064,13 +8914,13 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "peer": true }, "node_modules/metro-inspector-proxy/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, + "peer": true, "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -9092,7 +8942,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "peer": true, "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -9105,7 +8955,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.4.tgz", "integrity": "sha512-84Rrgie3O7Dqkak9ep/eIpMZkEFzpKD4bngPUNimYqAMCExKL7/aymydB27gKcqwus/BVkAV+aOnFsuOhlgnQg==", - "dev": true, + "peer": true, "dependencies": { "uglify-es": "^3.1.9" } @@ -9114,7 +8964,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.4.tgz", "integrity": "sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA==", - "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.14.0", "@babel/plugin-proposal-async-generator-functions": "^7.0.0", @@ -9164,7 +9014,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.4.tgz", "integrity": "sha512-VxM8Cki+/tPAyQRPHEy1bsxAihpxz8cGLdteFo9t0eAJI7/vEegqICxQm4A+RiGQc4f8t2jiwI6YpnDWomI5Gw==", - "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.14.0", "babel-preset-fbjs": "^3.4.0", @@ -9182,7 +9032,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.4.tgz", "integrity": "sha512-aHxq/jypzGyi9Ic9woe//RymfxpzWliAkyTmBWPHE9ypGoiobstK0me2j5XuSfzASzCU8wcVt20qy870rxTWLw==", - "dev": true, + "peer": true, "dependencies": { "absolute-path": "^0.0.0" } @@ -9191,7 +9041,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.4.tgz", "integrity": "sha512-EA0ltqyYFpjOdpoRqE2U9FJleqTOIK+ZLRlLaDrx4yz3zTqUZ16W6w71dq+qrwD8BPg7bPKQu7RluU3K6tI79A==", - "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.0.0", "react-refresh": "^0.4.0" @@ -9201,7 +9051,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.4.tgz", "integrity": "sha512-P09aMDEPkLo6BM8VYYoTsH/2B1w6t+mrCwNcNJV1zE+57FPiU4fSBlSeM8G9YeYaezDTHimS2JlMozP+2r+trA==", - "dev": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", @@ -9217,7 +9067,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9226,7 +9076,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.4.tgz", "integrity": "sha512-6ZRo66Q4iKiwaQuHjmogkSCCqaSpJ4QzbHsVHRUe57mFIL34lOLYp7aPfmX7NHCmy061HhDox/kGuYZQRmHB3A==", - "dev": true, + "peer": true, "dependencies": { "invariant": "^2.2.4", "metro-source-map": "0.72.4", @@ -9246,7 +9096,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9255,7 +9105,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.4.tgz", "integrity": "sha512-yxB4v/LxQkmN1rjyyeLiV4x+jwCmId4FTTxNrmTYoi0tFPtOBOeSwuqY08LjxZQMJdZOKXqj2bgIewqFXJEkGw==", - "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -9268,7 +9118,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.4.tgz", "integrity": "sha512-mIvzy6nRQKMALEdF5g8LXPgCOUi/tGESE5dlb7OSMCj2FAFBm3mTLRrpW5phzK/J6Wg+4Vb9PMS+wGbXR261rA==", - "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -9289,13 +9139,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "peer": true }, "node_modules/metro/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, + "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -9306,7 +9156,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -9315,7 +9165,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", - "dev": true, + "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", @@ -9326,7 +9176,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -9340,7 +9190,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, + "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -9349,13 +9199,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "node_modules/metro/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -9367,7 +9217,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9376,7 +9226,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -9391,7 +9241,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9405,13 +9255,13 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "peer": true }, "node_modules/metro/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, + "peer": true, "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -9433,7 +9283,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "peer": true, "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -9446,7 +9296,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -9459,7 +9308,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, + "peer": true, "bin": { "mime": "cli.js" }, @@ -9471,7 +9320,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -9480,7 +9329,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, + "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -9492,16 +9341,23 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "engines": { "node": ">=6" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9513,7 +9369,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9522,7 +9378,7 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, + "peer": true, "dependencies": { "minimist": "^1.2.6" }, @@ -9533,8 +9389,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -9546,7 +9401,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -9555,19 +9410,19 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "peer": true }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "peer": true }, "node_modules/nocache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "dev": true, + "peer": true, "engines": { "node": ">=12.0.0" } @@ -9576,7 +9431,7 @@ "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "dev": true, + "peer": true, "dependencies": { "minimatch": "^3.0.2" }, @@ -9588,7 +9443,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, + "peer": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -9607,20 +9462,18 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" }, "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, "node_modules/node-stream-zip": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "dev": true, + "peer": true, "engines": { "node": ">=0.12.0" }, @@ -9633,7 +9486,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9653,20 +9505,19 @@ "node_modules/nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" }, "node_modules/ob1": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.4.tgz", "integrity": "sha512-/iPJKpXpVEZS0subUvjew4ept5LTBxj1hD20A4mAj9CJkGGPgvbBlfYtFEBubBkk4dv4Ef5lajsnRBYPxF74cQ==", - "dev": true + "peer": true }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9675,7 +9526,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -9687,7 +9538,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -9696,7 +9547,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "dependencies": { "wrappy": "1" } @@ -9705,7 +9555,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -9720,7 +9569,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, + "peer": true, "dependencies": { "is-wsl": "^1.1.0" }, @@ -9749,7 +9598,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, + "peer": true, "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -9772,7 +9621,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9781,7 +9630,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -9790,7 +9639,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -9805,7 +9653,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -9832,7 +9679,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -9871,7 +9717,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -9880,7 +9726,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -9889,7 +9734,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9906,8 +9750,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-type": { "version": "4.0.0", @@ -9921,14 +9764,12 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -9940,7 +9781,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -9949,7 +9790,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, "engines": { "node": ">= 6" } @@ -10029,7 +9869,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "peer": true }, "node_modules/progress": { "version": "2.0.3", @@ -10044,7 +9884,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dev": true, + "peer": true, "dependencies": { "asap": "~2.0.6" } @@ -10053,7 +9893,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -10066,7 +9905,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -10121,7 +9959,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -10130,7 +9968,7 @@ "version": "18.1.0", "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", - "dev": true, + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -10142,7 +9980,7 @@ "version": "4.24.0", "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz", "integrity": "sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==", - "dev": true, + "peer": true, "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" @@ -10151,14 +9989,13 @@ "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-native": { "version": "0.70.14", "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.14.tgz", "integrity": "sha512-QeZvPJnDkF4K2QB4cX3xZM0gMVqa6r7ema7342PAAJpDvieO9JdI25dBI+hMvMO3jGRS3MUapcPqJvcxLEyNZQ==", - "dev": true, + "peer": true, "dependencies": { "@jest/create-cache-key-function": "^27.0.1", "@react-native-community/cli": "9.3.4", @@ -10320,7 +10157,7 @@ "version": "0.70.7", "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.7.tgz", "integrity": "sha512-qXE8Jrhc9BmxDAnCmrHFDLJrzgjsE/mH57dtC4IO7K76AwagdXNCMRp5SA8XdHJzvvHWRaghpiFHEMl9TtOBcQ==", - "dev": true, + "peer": true, "dependencies": { "@babel/parser": "^7.14.0", "flow-parser": "^0.121.0", @@ -10332,13 +10169,13 @@ "version": "0.70.3", "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==", - "dev": true + "peer": true }, "node_modules/react-native/node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, + "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -10354,7 +10191,7 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, + "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -10363,7 +10200,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, + "peer": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -10378,7 +10215,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, + "peer": true, "dependencies": { "async-limiter": "~1.0.0" } @@ -10387,7 +10224,7 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -10396,7 +10233,7 @@ "version": "16.15.0", "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "dev": true, + "peer": true, "dependencies": { "object-assign": "^4.1.1", "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" @@ -10405,11 +10242,31 @@ "react": "^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-test-renderer": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.1.0.tgz", + "integrity": "sha512-OfuueprJFW7h69GN+kr4Ywin7stcuqaYAt1g7airM5cUgP0BoF5G5CXsPGmXeDeEkncb2fqYNECO4y18sSqphg==", + "peer": true, + "dependencies": { + "react-is": "^18.1.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.22.0" + }, + "peerDependencies": { + "react": "^18.1.0" + } + }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "peer": true + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -10423,13 +10280,13 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", - "dev": true + "peer": true }, "node_modules/recast": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "dev": true, + "peer": true, "dependencies": { "ast-types": "0.15.2", "esprima": "~4.0.0", @@ -10444,19 +10301,30 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "peer": true + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -10467,14 +10335,12 @@ "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -10495,7 +10361,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -10512,7 +10377,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -10524,7 +10388,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" } @@ -10533,7 +10396,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10542,13 +10404,12 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "peer": true }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -10582,7 +10443,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -10600,7 +10461,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, + "peer": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -10661,13 +10522,13 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "peer": true }, "node_modules/scheduler": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", - "dev": true, + "peer": true, "dependencies": { "loose-envify": "^1.1.0" } @@ -10676,7 +10537,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -10685,7 +10545,7 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, + "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -10709,7 +10569,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -10718,13 +10578,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, + "peer": true, "bin": { "mime": "cli.js" }, @@ -10736,13 +10596,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "peer": true }, "node_modules/send/node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -10754,7 +10614,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -10763,7 +10623,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -10772,7 +10632,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, + "peer": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -10787,19 +10647,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "peer": true }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "peer": true }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, + "peer": true, "dependencies": { "kind-of": "^6.0.2" }, @@ -10832,7 +10692,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10840,20 +10700,17 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "engines": { "node": ">=8" } @@ -10862,7 +10719,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", @@ -10876,7 +10733,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -10888,7 +10745,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -10897,13 +10754,12 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "peer": true }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10921,8 +10777,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "node_modules/stack-utils": { "version": "2.0.6", @@ -10949,13 +10804,13 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true + "peer": true }, "node_modules/stacktrace-parser": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, + "peer": true, "dependencies": { "type-fest": "^0.7.1" }, @@ -10967,7 +10822,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -10976,7 +10831,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -10985,7 +10840,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "peer": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -10994,7 +10849,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -11008,7 +10862,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peer": true }, "node_modules/string-length": { "version": "4.0.2", @@ -11027,7 +10882,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11041,7 +10895,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -11050,7 +10903,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11071,7 +10923,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -11085,6 +10937,18 @@ "node": ">=6" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -11101,13 +10965,12 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", - "dev": true + "peer": true }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11119,10 +10982,10 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==", - "dev": true, "engines": [ "node >=0.8.0" ], + "peer": true, "dependencies": { "os-tmpdir": "^1.0.0", "rimraf": "~2.2.6" @@ -11132,7 +10995,7 @@ "version": "2.2.8", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==", - "dev": true, + "peer": true, "bin": { "rimraf": "bin.js" } @@ -11161,13 +11024,13 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true + "peer": true }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, + "peer": true, "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -11177,7 +11040,7 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, + "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11192,7 +11055,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, + "peer": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -11200,14 +11063,12 @@ "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, "engines": { "node": ">=4" } @@ -11216,7 +11077,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -11228,7 +11088,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, + "peer": true, "engines": { "node": ">=0.6" } @@ -11237,7 +11097,7 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "peer": true }, "node_modules/ts-jest": { "version": "29.1.1", @@ -11396,7 +11256,7 @@ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", - "dev": true, + "peer": true, "dependencies": { "commander": "~2.13.0", "source-map": "~0.6.1" @@ -11412,7 +11272,7 @@ "version": "2.13.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true + "peer": true }, "node_modules/unc-path-regex": { "version": "0.1.2", @@ -11427,7 +11287,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, "engines": { "node": ">=4" } @@ -11436,7 +11295,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -11449,7 +11307,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, "engines": { "node": ">=4" } @@ -11458,7 +11315,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, "engines": { "node": ">=4" } @@ -11467,7 +11323,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, + "peer": true, "engines": { "node": ">= 4.0.0" } @@ -11476,7 +11332,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -11485,7 +11341,6 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -11524,7 +11379,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "dev": true, + "peer": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } @@ -11533,13 +11388,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "peer": true }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.4.0" } @@ -11568,7 +11423,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -11577,13 +11432,12 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "dev": true + "peer": true }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, "dependencies": { "makeerror": "1.0.12" } @@ -11592,7 +11446,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, + "peer": true, "dependencies": { "defaults": "^1.0.3" } @@ -11601,19 +11455,19 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "peer": true }, "node_modules/whatwg-fetch": { "version": "3.6.19", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", - "dev": true + "peer": true }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, + "peer": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -11638,7 +11492,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "peer": true }, "node_modules/word-wrap": { "version": "1.2.5", @@ -11669,8 +11523,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/write-file-atomic": { "version": "4.0.2", @@ -11689,7 +11542,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -11716,7 +11569,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, + "peer": true, "engines": { "node": ">=0.4" } @@ -11733,8 +11586,7 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { "version": "1.10.2", @@ -11776,7 +11628,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -11790,7 +11641,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -11800,7 +11650,6 @@ "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, "requires": { "@babel/highlight": "^7.22.13", "chalk": "^2.4.2" @@ -11810,7 +11659,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -11819,7 +11667,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -11830,7 +11677,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -11838,20 +11684,17 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -11861,14 +11704,12 @@ "@babel/compat-data": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", - "dev": true + "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==" }, "@babel/core": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", @@ -11891,7 +11732,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", - "dev": true, "requires": { "@babel/types": "^7.23.3", "@jridgewell/gen-mapping": "^0.3.2", @@ -11903,7 +11743,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -11912,7 +11751,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, "requires": { "@babel/types": "^7.22.15" } @@ -11921,7 +11759,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, "requires": { "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.15", @@ -11934,7 +11771,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", @@ -11951,7 +11787,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -11962,7 +11797,6 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", - "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -11974,14 +11808,12 @@ "@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-function-name": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, "requires": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -11991,7 +11823,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -12000,7 +11831,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, "requires": { "@babel/types": "^7.23.0" } @@ -12009,7 +11839,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, "requires": { "@babel/types": "^7.22.15" } @@ -12018,7 +11847,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -12031,7 +11859,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -12039,14 +11866,12 @@ "@babel/helper-plugin-utils": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" }, "@babel/helper-remap-async-to-generator": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -12057,7 +11882,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -12068,7 +11892,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -12077,7 +11900,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -12086,7 +11908,6 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -12094,26 +11915,22 @@ "@babel/helper-string-parser": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" }, "@babel/helper-validator-identifier": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" }, "@babel/helper-wrap-function": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, "requires": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -12124,7 +11941,6 @@ "version": "7.23.2", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, "requires": { "@babel/template": "^7.22.15", "@babel/traverse": "^7.23.2", @@ -12135,7 +11951,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -12146,7 +11961,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -12155,7 +11969,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -12166,7 +11979,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -12174,20 +11986,17 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -12197,14 +12006,12 @@ "@babel/parser": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", - "dev": true + "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12213,7 +12020,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -12224,7 +12030,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -12234,7 +12039,7 @@ "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.20.2", @@ -12246,7 +12051,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -12256,7 +12060,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz", "integrity": "sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==", - "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-default-from": "^7.23.3" @@ -12266,7 +12070,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -12276,7 +12080,7 @@ "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, + "peer": true, "requires": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -12289,7 +12093,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -12299,7 +12103,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -12310,14 +12114,12 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12335,7 +12137,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } @@ -12344,7 +12145,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -12353,7 +12153,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12362,7 +12161,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz", "integrity": "sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==", - "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12371,7 +12170,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -12380,7 +12178,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12389,7 +12186,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12398,7 +12194,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12407,7 +12202,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -12416,7 +12210,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12425,7 +12218,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -12434,7 +12226,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -12443,7 +12234,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12452,7 +12242,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -12461,7 +12250,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12470,7 +12258,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12479,7 +12266,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12488,7 +12274,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -12497,7 +12282,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -12506,7 +12290,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -12515,7 +12298,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -12525,7 +12307,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12534,7 +12315,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz", "integrity": "sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==", - "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -12546,7 +12326,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -12557,7 +12336,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12566,7 +12344,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz", "integrity": "sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12575,7 +12352,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -12585,7 +12361,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz", "integrity": "sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==", - "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -12596,7 +12371,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.15", @@ -12613,7 +12387,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -12623,7 +12396,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12632,7 +12404,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -12642,7 +12413,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12651,7 +12421,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz", "integrity": "sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -12661,7 +12430,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -12671,7 +12439,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz", "integrity": "sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -12681,7 +12448,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-flow": "^7.23.3" @@ -12691,7 +12457,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12700,7 +12465,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -12711,7 +12475,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz", "integrity": "sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -12721,7 +12484,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12730,7 +12492,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz", "integrity": "sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -12740,7 +12501,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12749,7 +12509,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -12759,7 +12518,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -12770,7 +12528,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -12782,7 +12539,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -12792,7 +12548,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -12802,7 +12557,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12811,7 +12565,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz", "integrity": "sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -12821,7 +12574,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz", "integrity": "sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -12831,7 +12583,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz", "integrity": "sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==", - "dev": true, "requires": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -12844,7 +12595,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" @@ -12854,7 +12604,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz", "integrity": "sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -12864,7 +12613,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz", "integrity": "sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -12875,7 +12623,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12884,7 +12631,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -12894,7 +12640,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz", "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -12906,7 +12651,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12915,7 +12659,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz", "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -12924,7 +12667,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.0", "@babel/helper-module-imports": "^7.16.0", @@ -12946,7 +12688,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12955,7 +12697,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12974,7 +12716,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -12984,7 +12725,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12993,7 +12733,7 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", - "dev": true, + "peer": true, "requires": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -13007,7 +12747,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -13016,7 +12755,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -13026,7 +12764,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -13035,7 +12772,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -13044,7 +12780,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -13053,7 +12788,6 @@ "version": "7.16.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", - "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", @@ -13064,7 +12798,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -13073,7 +12806,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -13083,7 +12815,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -13093,7 +12824,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -13103,7 +12833,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", - "dev": true, "requires": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -13191,7 +12920,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.0.tgz", "integrity": "sha512-e5NE1EoPMpoHFkyFkMSj2h9tu7OolARcUHki8mnBv4NiFK9so+UrhbvT9mV99tMJOUEx8BOj67T6dXvGcTeYeQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", @@ -13202,7 +12930,6 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -13227,7 +12954,6 @@ "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.5", "@babel/helper-validator-option": "^7.14.5", @@ -13238,7 +12964,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", - "dev": true, + "peer": true, "requires": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", @@ -13251,7 +12977,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, + "peer": true, "requires": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -13261,13 +12987,13 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "peer": true }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, + "peer": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13278,14 +13004,12 @@ "@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "@babel/runtime": { "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } @@ -13294,7 +13018,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, "requires": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -13305,7 +13028,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", - "dev": true, "requires": { "@babel/code-frame": "^7.22.13", "@babel/generator": "^7.23.3", @@ -13323,7 +13045,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", - "dev": true, "requires": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20", @@ -13411,13 +13132,13 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true + "peer": true }, "@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, + "peer": true, "requires": { "@hapi/hoek": "^9.0.0" } @@ -13545,7 +13266,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", - "dev": true, + "peer": true, "requires": { "@jest/types": "^27.5.1" }, @@ -13554,7 +13275,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "peer": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -13567,7 +13288,7 @@ "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "dev": true, + "peer": true, "requires": { "@types/yargs-parser": "*" } @@ -13795,7 +13516,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -13805,26 +13525,22 @@ "@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" }, "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "@jridgewell/trace-mapping": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -13860,7 +13576,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.3.4.tgz", "integrity": "sha512-FxqouQ2UXErwqwU+tWDbMC7HxT8A+AzAaCE723H0SWjOxLPlkChp7P1QOEdOpnA7G/Ss6hl3uS9AWRVypP5kBg==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-clean": "^9.2.1", "@react-native-community/cli-config": "^9.2.1", @@ -13885,7 +13601,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -13898,7 +13614,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "peer": true } } }, @@ -13906,7 +13622,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -13921,7 +13637,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "requires": { "pump": "^3.0.0" } @@ -13930,13 +13646,13 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true + "peer": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "requires": { "path-key": "^2.0.0" } @@ -13945,13 +13661,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true + "peer": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "requires": { "shebang-regex": "^1.0.0" } @@ -13960,13 +13676,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true + "peer": true }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "requires": { "isexe": "^2.0.0" } @@ -13977,7 +13693,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -13989,7 +13705,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -14002,7 +13718,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -14017,7 +13733,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "requires": { "pump": "^3.0.0" } @@ -14026,13 +13742,13 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true + "peer": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "requires": { "path-key": "^2.0.0" } @@ -14041,19 +13757,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true + "peer": true }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "peer": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "requires": { "shebang-regex": "^1.0.0" } @@ -14062,13 +13778,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true + "peer": true }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "requires": { "isexe": "^2.0.0" } @@ -14079,7 +13795,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-tools": "^9.2.1", "cosmiconfig": "^5.1.0", @@ -14092,7 +13808,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "dev": true + "peer": true } } }, @@ -14100,7 +13816,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==", - "dev": true, + "peer": true, "requires": { "serve-static": "^1.13.1" } @@ -14109,7 +13825,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-config": "^9.2.1", "@react-native-community/cli-platform-ios": "^9.3.0", @@ -14133,13 +13849,13 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true + "peer": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -14152,7 +13868,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "peer": true } } }, @@ -14160,7 +13876,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -14175,7 +13891,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "requires": { "pump": "^3.0.0" } @@ -14184,13 +13900,13 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true + "peer": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "requires": { "path-key": "^2.0.0" } @@ -14199,13 +13915,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true + "peer": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "requires": { "shebang-regex": "^1.0.0" } @@ -14214,13 +13930,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true + "peer": true }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "peer": true, "requires": { "ansi-regex": "^4.1.0" } @@ -14229,7 +13945,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "requires": { "isexe": "^2.0.0" } @@ -14240,7 +13956,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.4.tgz", "integrity": "sha512-VqTPA7kknCXgtYlRf+sDWW4yxZ6Gtg1Ga+Rdrn1qSKuo09iJ8YKPoQYOu5nqbIYJQAEhorWQyo1VvNgd0wd49w==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-platform-android": "^9.3.4", "@react-native-community/cli-tools": "^9.2.1", @@ -14253,7 +13969,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.4.tgz", "integrity": "sha512-BTKmTMYFuWtMqimFQJfhRyhIWw1m+5N5svR1S5+DqPcyFuSXrpNYDWNSFR8E105xUbFANmsCZZQh6n1WlwMpOA==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -14268,7 +13984,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -14281,7 +13997,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -14296,7 +14012,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "requires": { "pump": "^3.0.0" } @@ -14305,13 +14021,13 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true + "peer": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "requires": { "path-key": "^2.0.0" } @@ -14320,19 +14036,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true + "peer": true }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "peer": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "requires": { "shebang-regex": "^1.0.0" } @@ -14341,13 +14057,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true + "peer": true }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "requires": { "isexe": "^2.0.0" } @@ -14358,7 +14074,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -14371,7 +14087,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "peer": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -14384,7 +14100,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "peer": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -14399,7 +14115,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "peer": true, "requires": { "pump": "^3.0.0" } @@ -14408,13 +14124,13 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true + "peer": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, + "peer": true, "requires": { "path-key": "^2.0.0" } @@ -14423,19 +14139,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true + "peer": true }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "peer": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "peer": true, "requires": { "shebang-regex": "^1.0.0" } @@ -14444,13 +14160,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true + "peer": true }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "peer": true, "requires": { "isexe": "^2.0.0" } @@ -14461,7 +14177,7 @@ "version": "9.3.3", "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.3.3.tgz", "integrity": "sha512-lPBw6XieNdj2AbWDN0Rc+jNOx8hBgSQyv0gUAm01qtJe4I9FjSMU6nOGTxMpWpICo6TYl/cmPGXOzbfpwxwtkQ==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-server-api": "^9.2.1", "@react-native-community/cli-tools": "^9.2.1", @@ -14479,7 +14195,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", - "dev": true, + "peer": true, "requires": { "@react-native-community/cli-debugger-ui": "^9.0.0", "@react-native-community/cli-tools": "^9.2.1", @@ -14496,7 +14212,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, + "peer": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -14509,7 +14225,7 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, + "peer": true, "requires": { "@types/yargs-parser": "*" } @@ -14518,7 +14234,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, + "peer": true, "requires": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -14532,7 +14248,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", - "dev": true, + "peer": true, "requires": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", @@ -14549,7 +14265,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, + "peer": true, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -14559,7 +14275,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "peer": true, "requires": { "p-locate": "^5.0.0" } @@ -14568,7 +14284,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "peer": true, "requires": { "yocto-queue": "^0.1.0" } @@ -14577,7 +14293,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, + "peer": true, "requires": { "p-limit": "^3.0.2" } @@ -14588,7 +14304,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==", - "dev": true, + "peer": true, "requires": { "joi": "^17.2.1" } @@ -14597,19 +14313,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==", - "dev": true + "peer": true }, "@react-native/normalize-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==", - "dev": true + "peer": true }, "@react-native/polyfills": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", - "dev": true + "peer": true }, "@react-native/virtualized-lists": { "version": "0.72.8", @@ -14625,7 +14341,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dev": true, + "peer": true, "requires": { "@hapi/hoek": "^9.0.0" } @@ -14634,13 +14350,13 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true + "peer": true }, "@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true + "peer": true }, "@sinclair/typebox": { "version": "0.27.8", @@ -14666,6 +14382,42 @@ "@sinonjs/commons": "^3.0.0" } }, + "@testing-library/react-native": { + "version": "12.4.3", + "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-12.4.3.tgz", + "integrity": "sha512-WLE7VbbR5jZJQl3vfNK7Wt+IHnzhOxyu95Mr56EHmzH3XhC8DkrPVAnUq9asq/QWj4aGnymbinFx6zZys/WZmA==", + "dev": true, + "requires": { + "jest-matcher-utils": "^29.7.0", + "pretty-format": "^29.7.0", + "redent": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + } + } + }, "@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -14719,14 +14471,12 @@ "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" }, "@types/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" } @@ -14735,7 +14485,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, "requires": { "@types/istanbul-lib-report": "*" } @@ -14759,8 +14508,7 @@ "@types/node": { "version": "16.11.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", - "dev": true + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" }, "@types/parse-json": { "version": "4.0.0", @@ -14819,8 +14567,7 @@ "@types/yargs-parser": { "version": "20.2.1", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" }, "@typescript-eslint/eslint-plugin": { "version": "5.5.0", @@ -14979,7 +14726,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, + "peer": true, "requires": { "event-target-shim": "^5.0.0" } @@ -14988,13 +14735,13 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", "integrity": "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==", - "dev": true + "peer": true }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, + "peer": true, "requires": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -15039,7 +14786,7 @@ "version": "1.4.10", "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "dev": true + "peer": true }, "ansi-escapes": { "version": "4.3.2", @@ -15054,7 +14801,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "dev": true, + "peer": true, "requires": { "colorette": "^1.0.7", "slice-ansi": "^2.0.0", @@ -15065,13 +14812,13 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true + "peer": true }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "peer": true, "requires": { "ansi-regex": "^4.1.0" } @@ -15081,14 +14828,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -15097,7 +14842,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -15107,13 +14851,12 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "dev": true + "peer": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -15128,13 +14871,13 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "peer": true }, "ast-types": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "dev": true, + "peer": true, "requires": { "tslib": "^2.0.1" }, @@ -15143,7 +14886,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "peer": true } } }, @@ -15151,19 +14894,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true + "peer": true }, "async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true + "peer": true }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true + "peer": true }, "at-least-node": { "version": "1.0.0", @@ -15175,7 +14918,7 @@ "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "dev": true, + "peer": true, "requires": {} }, "babel-jest": { @@ -15222,7 +14965,6 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "dev": true, "requires": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.4.3", @@ -15233,7 +14975,6 @@ "version": "0.8.6", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", - "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.4.3", "core-js-compat": "^3.33.1" @@ -15243,7 +14984,6 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", - "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.4.3" } @@ -15252,7 +14992,7 @@ "version": "7.0.0-beta.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "dev": true + "peer": true }, "babel-preset-current-node-syntax": { "version": "1.0.1", @@ -15278,7 +15018,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "dev": true, + "peer": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.0.0", @@ -15322,20 +15062,19 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "peer": true }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "peer": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -15346,7 +15085,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -15356,7 +15094,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -15365,7 +15102,6 @@ "version": "4.22.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001541", "electron-to-chromium": "^1.4.535", @@ -15386,7 +15122,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, "requires": { "node-int64": "^0.4.0" } @@ -15395,7 +15130,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, + "peer": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -15404,20 +15139,19 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true + "peer": true }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "dev": true, + "peer": true, "requires": { "callsites": "^2.0.0" }, @@ -15426,7 +15160,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "dev": true + "peer": true } } }, @@ -15434,7 +15168,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "dev": true, + "peer": true, "requires": { "caller-callsite": "^2.0.0" } @@ -15448,20 +15182,17 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "caniuse-lite": { "version": "1.0.30001563", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", - "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==", - "dev": true + "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==" }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15476,8 +15207,7 @@ "ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" }, "cjs-module-lexer": { "version": "1.2.3", @@ -15495,7 +15225,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, + "peer": true, "requires": { "restore-cursor": "^3.1.0" } @@ -15504,7 +15234,7 @@ "version": "2.9.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "dev": true + "peer": true }, "cliui": { "version": "7.0.4", @@ -15521,13 +15251,13 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true + "peer": true }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, + "peer": true, "requires": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -15550,7 +15280,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -15558,38 +15287,37 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colorette": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true + "peer": true }, "command-exists": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true + "peer": true }, "commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true + "peer": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "peer": true }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, + "peer": true, "requires": { "mime-db": ">= 1.43.0 < 2" } @@ -15598,7 +15326,7 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, + "peer": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -15613,7 +15341,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "requires": { "ms": "2.0.0" } @@ -15622,21 +15350,20 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true } } }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, + "peer": true, "requires": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -15648,7 +15375,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "requires": { "ms": "2.0.0" } @@ -15657,21 +15384,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true } } }, "convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "core-js-compat": { "version": "3.33.3", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", - "dev": true, "requires": { "browserslist": "^4.22.1" } @@ -15680,13 +15405,13 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "peer": true }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, + "peer": true, "requires": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", @@ -15698,7 +15423,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, + "peer": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -15748,13 +15473,12 @@ "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "dev": true + "peer": true }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -15763,7 +15487,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true + "peer": true }, "dedent": { "version": "0.7.0", @@ -15787,7 +15511,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, + "peer": true, "requires": { "clone": "^1.0.2" } @@ -15812,19 +15536,19 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", - "dev": true + "peer": true }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true + "peer": true }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true + "peer": true }, "detect-newline": { "version": "3.1.0", @@ -15860,13 +15584,12 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "peer": true }, "electron-to-chromium": { "version": "1.4.588", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz", - "integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==", - "dev": true + "integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==" }, "emittery": { "version": "0.13.1", @@ -15877,20 +15600,18 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true + "peer": true }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -15916,13 +15637,12 @@ "version": "7.11.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", - "dev": true + "peer": true }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -15931,7 +15651,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, + "peer": true, "requires": { "stackframe": "^1.3.4" } @@ -15940,7 +15660,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", - "dev": true, + "peer": true, "requires": { "accepts": "~1.3.7", "escape-html": "~1.0.3" @@ -15949,20 +15669,18 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "peer": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint": { "version": "8.3.0", @@ -16166,8 +15884,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.4.0", @@ -16196,20 +15913,19 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true + "peer": true }, "event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true + "peer": true }, "execa": { "version": "5.1.1", @@ -16313,7 +16029,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, "requires": { "bser": "2.1.1" } @@ -16331,7 +16046,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -16340,7 +16054,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, + "peer": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -16355,7 +16069,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "requires": { "ms": "2.0.0" } @@ -16364,7 +16078,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true } } }, @@ -16372,7 +16086,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, + "peer": true, "requires": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -16383,7 +16097,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, + "peer": true, "requires": { "locate-path": "^3.0.0" } @@ -16392,7 +16106,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, + "peer": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -16402,7 +16116,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, + "peer": true, "requires": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -16412,7 +16126,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, + "peer": true, "requires": { "p-limit": "^2.0.0" } @@ -16421,13 +16135,13 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true + "peer": true }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, + "peer": true, "requires": { "find-up": "^3.0.0" } @@ -16436,7 +16150,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "peer": true } } }, @@ -16444,7 +16158,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -16470,19 +16183,19 @@ "version": "0.121.0", "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", - "dev": true + "peer": true }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true + "peer": true }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "peer": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -16492,21 +16205,18 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "optional": true }, "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -16517,14 +16227,12 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-package-type": { "version": "0.1.0", @@ -16542,7 +16250,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16564,8 +16271,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { "version": "11.0.4", @@ -16584,14 +16290,12 @@ "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -16599,20 +16303,19 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "hermes-estree": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==", - "dev": true + "peer": true }, "hermes-parser": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==", - "dev": true, + "peer": true, "requires": { "hermes-estree": "0.8.0" } @@ -16621,7 +16324,7 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", - "dev": true, + "peer": true, "requires": { "source-map": "^0.7.3" }, @@ -16630,7 +16333,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true + "peer": true } } }, @@ -16644,7 +16347,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, + "peer": true, "requires": { "depd": "2.0.0", "inherits": "2.0.4", @@ -16657,7 +16360,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true + "peer": true } } }, @@ -16671,7 +16374,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "peer": true }, "ignore": { "version": "5.1.9", @@ -16683,13 +16386,13 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", - "dev": true + "peer": true }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "dev": true, + "peer": true, "requires": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" @@ -16708,8 +16411,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "indent-string": { "version": "4.0.0", @@ -16721,7 +16423,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -16730,14 +16431,12 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, "requires": { "loose-envify": "^1.0.0" } @@ -16746,7 +16445,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true + "peer": true }, "is-absolute": { "version": "1.0.0", @@ -16761,14 +16460,12 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-core-module": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -16777,7 +16474,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true + "peer": true }, "is-extglob": { "version": "2.1.1", @@ -16789,7 +16486,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true + "peer": true }, "is-generator-fn": { "version": "2.1.0", @@ -16886,13 +16583,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true + "peer": true }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-path-cwd": { "version": "2.2.0", @@ -16910,7 +16606,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, + "peer": true, "requires": { "isobject": "^3.0.1" } @@ -16943,7 +16639,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true + "peer": true }, "is-windows": { "version": "1.0.2", @@ -16955,25 +16651,24 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true + "peer": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "peer": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true + "peer": true }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -17673,7 +17368,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, + "peer": true, "requires": { "@types/node": "*", "graceful-fs": "^4.2.9" @@ -17895,7 +17590,7 @@ "version": "17.11.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "dev": true, + "peer": true, "requires": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -17907,14 +17602,12 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -17924,19 +17617,19 @@ "version": "250230.2.1", "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==", - "dev": true + "peer": true }, "jsc-safe-url": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", - "dev": true + "peer": true }, "jscodeshift": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "dev": true, + "peer": true, "requires": { "@babel/core": "^7.13.16", "@babel/parser": "^7.13.16", @@ -17963,7 +17656,7 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, + "peer": true, "requires": { "glob": "^7.1.3" } @@ -17972,7 +17665,7 @@ "version": "0.8.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", - "dev": true, + "peer": true, "requires": { "rimraf": "~2.6.2" } @@ -17981,7 +17674,7 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, + "peer": true, "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -17993,14 +17686,13 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "peer": true }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -18023,14 +17715,13 @@ "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, + "peer": true, "requires": { "graceful-fs": "^4.1.6" } @@ -18039,13 +17730,13 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "peer": true }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, + "peer": true, "requires": { "graceful-fs": "^4.1.9" } @@ -18053,14 +17744,12 @@ "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, "levn": { "version": "0.4.1", @@ -18082,7 +17771,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -18090,8 +17778,7 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "lodash.memoize": { "version": "4.1.2", @@ -18109,13 +17796,13 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "dev": true + "peer": true }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, + "peer": true, "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -18125,7 +17812,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "dev": true, + "peer": true, "requires": { "ansi-fragments": "^0.2.1", "dayjs": "^1.8.15", @@ -18136,7 +17823,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, + "peer": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -18147,7 +17834,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -18158,13 +17845,13 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "peer": true }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, + "peer": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -18183,7 +17870,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "peer": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -18195,7 +17882,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -18204,7 +17890,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "requires": { "yallist": "^3.0.2" } @@ -18254,7 +17939,6 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, "requires": { "tmpl": "1.0.5" } @@ -18263,13 +17947,12 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "dev": true + "peer": true }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { "version": "1.4.1", @@ -18281,7 +17964,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.4.tgz", "integrity": "sha512-UBqL2fswJjsq2LlfMPV4ArqzLzjyN0nReKRijP3DdSxZiaJDG4NC9sQoVJHbH1HP5qXQMAK/SftyAx1c1kuy+w==", - "dev": true, + "peer": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/core": "^7.14.0", @@ -18340,13 +18023,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "peer": true }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, + "peer": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -18357,7 +18040,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "requires": { "ms": "2.0.0" } @@ -18366,7 +18049,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", - "dev": true, + "peer": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", @@ -18377,7 +18060,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, + "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -18388,7 +18071,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, + "peer": true, "requires": { "graceful-fs": "^4.1.6" } @@ -18397,13 +18080,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, + "peer": true, "requires": { "glob": "^7.1.3" } @@ -18412,13 +18095,13 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true + "peer": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -18427,7 +18110,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -18438,13 +18121,13 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "peer": true }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, + "peer": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -18463,7 +18146,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "peer": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -18475,7 +18158,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.4.tgz", "integrity": "sha512-cg1TQUKDkKqrIClrqqIGE8ZDa9kRKSjhBtqPtNYt/ZSywXU41SrldfcI5uzPrzcIrYpH5hnN6OCLRACPgy2vsw==", - "dev": true, + "peer": true, "requires": { "@babel/core": "^7.14.0", "hermes-parser": "0.8.0", @@ -18487,7 +18170,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.4.tgz", "integrity": "sha512-76fi9OVytiFVSuGQcNoquVOT7AENd0q3n1WmyBeJ7jvl/UrE3/NN3HTWzu2ezG5IxF3cmo5q1ehi0NEpgwaFGg==", - "dev": true, + "peer": true, "requires": { "metro-core": "0.72.4", "rimraf": "^2.5.4" @@ -18497,7 +18180,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, + "peer": true, "requires": { "glob": "^7.1.3" } @@ -18508,13 +18191,13 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.4.tgz", "integrity": "sha512-DH3cgN4L7IKNCVBy8LBOXQ4tHDdvh7Vl7jWNkQKMOfHWu1EwsTtXD/+zdV7/be4ls/kHxrD0HbGzpK8XhUAHSw==", - "dev": true + "peer": true }, "metro-config": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.4.tgz", "integrity": "sha512-USv+H14D5RrSpfA5t4t5cbF1CnizgYGz6xJ3HB0r/bDYdJdZTVqB3/mMPft7Z5zHslS00JCG7oE51G1CK/FlKw==", - "dev": true, + "peer": true, "requires": { "cosmiconfig": "^5.0.5", "jest-validate": "^26.5.2", @@ -18528,7 +18211,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, + "peer": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -18541,7 +18224,7 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, + "peer": true, "requires": { "@types/yargs-parser": "*" } @@ -18550,19 +18233,19 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true + "peer": true }, "jest-get-type": { "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true + "peer": true }, "jest-validate": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "dev": true, + "peer": true, "requires": { "@jest/types": "^26.6.2", "camelcase": "^6.0.0", @@ -18576,7 +18259,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, + "peer": true, "requires": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -18590,7 +18273,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.4.tgz", "integrity": "sha512-2JNT1nG0UV1uMrQHQOKUSII0sdS6MhVT3mBt2kwfjCvD+jvi1iYhKJ4kYCRlUQw9XNLGZ/B+C0VDQzlf2M3zVw==", - "dev": true, + "peer": true, "requires": { "lodash.throttle": "^4.1.1", "metro-resolver": "0.72.4" @@ -18600,7 +18283,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.4.tgz", "integrity": "sha512-Mv5WgTsYs5svTR/df6jhq2aD4IkAuwV5TutHW0BfEg1YccQt8/v7q5ZypmUOkjdSS9bFR4r3677jalr/ceFypQ==", - "dev": true, + "peer": true, "requires": { "abort-controller": "^3.0.0", "anymatch": "^3.0.3", @@ -18621,7 +18304,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "peer": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -18634,7 +18317,7 @@ "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "dev": true, + "peer": true, "requires": { "@types/yargs-parser": "*" } @@ -18643,7 +18326,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "requires": { "ms": "2.0.0" } @@ -18652,13 +18335,13 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true + "peer": true }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, + "peer": true, "requires": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -18672,7 +18355,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, + "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -18683,13 +18366,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -18700,13 +18383,13 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.4.tgz", "integrity": "sha512-AY1mAT5FKfDRYCthuKo2XHbuhG5TUV4ZpZlJ8peIgkiWICzfy0tau3yu+3jUD456N90CjMCOmdknji4uKiZ8ww==", - "dev": true + "peer": true }, "metro-inspector-proxy": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.4.tgz", "integrity": "sha512-pr+PsbNCZaStWuJRH8oclT170B7NxfgH+UUyTf9/aR+7PjX0gdDabJhPyzA633QgR+EFBaQKZuetHA+f5/cnEQ==", - "dev": true, + "peer": true, "requires": { "connect": "^3.6.5", "debug": "^2.2.0", @@ -18718,7 +18401,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, + "peer": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -18729,7 +18412,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "requires": { "ms": "2.0.0" } @@ -18738,13 +18421,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -18755,13 +18438,13 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "peer": true }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, + "peer": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -18780,7 +18463,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, + "peer": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -18792,7 +18475,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.4.tgz", "integrity": "sha512-84Rrgie3O7Dqkak9ep/eIpMZkEFzpKD4bngPUNimYqAMCExKL7/aymydB27gKcqwus/BVkAV+aOnFsuOhlgnQg==", - "dev": true, + "peer": true, "requires": { "uglify-es": "^3.1.9" } @@ -18801,7 +18484,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.4.tgz", "integrity": "sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA==", - "dev": true, + "peer": true, "requires": { "@babel/core": "^7.14.0", "@babel/plugin-proposal-async-generator-functions": "^7.0.0", @@ -18848,7 +18531,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.4.tgz", "integrity": "sha512-VxM8Cki+/tPAyQRPHEy1bsxAihpxz8cGLdteFo9t0eAJI7/vEegqICxQm4A+RiGQc4f8t2jiwI6YpnDWomI5Gw==", - "dev": true, + "peer": true, "requires": { "@babel/core": "^7.14.0", "babel-preset-fbjs": "^3.4.0", @@ -18863,7 +18546,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.4.tgz", "integrity": "sha512-aHxq/jypzGyi9Ic9woe//RymfxpzWliAkyTmBWPHE9ypGoiobstK0me2j5XuSfzASzCU8wcVt20qy870rxTWLw==", - "dev": true, + "peer": true, "requires": { "absolute-path": "^0.0.0" } @@ -18872,7 +18555,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.4.tgz", "integrity": "sha512-EA0ltqyYFpjOdpoRqE2U9FJleqTOIK+ZLRlLaDrx4yz3zTqUZ16W6w71dq+qrwD8BPg7bPKQu7RluU3K6tI79A==", - "dev": true, + "peer": true, "requires": { "@babel/runtime": "^7.0.0", "react-refresh": "^0.4.0" @@ -18882,7 +18565,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.4.tgz", "integrity": "sha512-P09aMDEPkLo6BM8VYYoTsH/2B1w6t+mrCwNcNJV1zE+57FPiU4fSBlSeM8G9YeYaezDTHimS2JlMozP+2r+trA==", - "dev": true, + "peer": true, "requires": { "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", @@ -18898,7 +18581,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true + "peer": true } } }, @@ -18906,7 +18589,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.4.tgz", "integrity": "sha512-6ZRo66Q4iKiwaQuHjmogkSCCqaSpJ4QzbHsVHRUe57mFIL34lOLYp7aPfmX7NHCmy061HhDox/kGuYZQRmHB3A==", - "dev": true, + "peer": true, "requires": { "invariant": "^2.2.4", "metro-source-map": "0.72.4", @@ -18920,7 +18603,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true + "peer": true } } }, @@ -18928,7 +18611,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.4.tgz", "integrity": "sha512-yxB4v/LxQkmN1rjyyeLiV4x+jwCmId4FTTxNrmTYoi0tFPtOBOeSwuqY08LjxZQMJdZOKXqj2bgIewqFXJEkGw==", - "dev": true, + "peer": true, "requires": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -18941,7 +18624,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.4.tgz", "integrity": "sha512-mIvzy6nRQKMALEdF5g8LXPgCOUi/tGESE5dlb7OSMCj2FAFBm3mTLRrpW5phzK/J6Wg+4Vb9PMS+wGbXR261rA==", - "dev": true, + "peer": true, "requires": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -18962,7 +18645,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -18972,19 +18654,19 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true + "peer": true }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "peer": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, + "peer": true, "requires": { "mime-db": "1.52.0" } @@ -18992,14 +18674,18 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -19008,13 +18694,13 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "peer": true }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, + "peer": true, "requires": { "minimist": "^1.2.6" } @@ -19022,8 +18708,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "natural-compare": { "version": "1.4.0", @@ -19035,31 +18720,31 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true + "peer": true }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "peer": true }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "peer": true }, "nocache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "dev": true + "peer": true }, "node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "dev": true, + "peer": true, "requires": { "minimatch": "^3.0.2" } @@ -19068,7 +18753,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, + "peer": true, "requires": { "whatwg-url": "^5.0.0" } @@ -19076,26 +18761,23 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" }, "node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, "node-stream-zip": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "dev": true + "peer": true }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "npm-run-path": { "version": "4.0.1", @@ -19109,26 +18791,25 @@ "nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" }, "ob1": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.4.tgz", "integrity": "sha512-/iPJKpXpVEZS0subUvjew4ept5LTBxj1hD20A4mAj9CJkGGPgvbBlfYtFEBubBkk4dv4Ef5lajsnRBYPxF74cQ==", - "dev": true + "peer": true }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "peer": true }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, + "peer": true, "requires": { "ee-first": "1.1.1" } @@ -19137,13 +18818,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true + "peer": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -19152,7 +18832,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -19161,7 +18840,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, + "peer": true, "requires": { "is-wsl": "^1.1.0" } @@ -19184,7 +18863,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, + "peer": true, "requires": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -19201,19 +18880,18 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true + "peer": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true + "peer": true }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -19222,7 +18900,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -19239,8 +18916,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "parent-module": { "version": "1.0.1", @@ -19267,19 +18943,17 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true + "peer": true }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "3.1.1", @@ -19290,8 +18964,7 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-type": { "version": "4.0.0", @@ -19302,26 +18975,23 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "peer": true }, "pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" }, "pkg-dir": { "version": "4.2.0", @@ -19376,7 +19046,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "peer": true }, "progress": { "version": "2.0.3", @@ -19388,7 +19058,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dev": true, + "peer": true, "requires": { "asap": "~2.0.6" } @@ -19397,7 +19067,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -19407,7 +19076,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -19435,13 +19103,13 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true + "peer": true }, "react": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", - "dev": true, + "peer": true, "requires": { "loose-envify": "^1.1.0" } @@ -19450,7 +19118,7 @@ "version": "4.24.0", "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz", "integrity": "sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==", - "dev": true, + "peer": true, "requires": { "shell-quote": "^1.6.1", "ws": "^7" @@ -19459,14 +19127,13 @@ "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "react-native": { "version": "0.70.14", "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.14.tgz", "integrity": "sha512-QeZvPJnDkF4K2QB4cX3xZM0gMVqa6r7ema7342PAAJpDvieO9JdI25dBI+hMvMO3jGRS3MUapcPqJvcxLEyNZQ==", - "dev": true, + "peer": true, "requires": { "@jest/create-cache-key-function": "^27.0.1", "@react-native-community/cli": "9.3.4", @@ -19506,7 +19173,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, + "peer": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -19519,7 +19186,7 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, + "peer": true, "requires": { "@types/yargs-parser": "*" } @@ -19528,7 +19195,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, + "peer": true, "requires": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -19540,7 +19207,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, + "peer": true, "requires": { "async-limiter": "~1.0.0" } @@ -19638,7 +19305,7 @@ "version": "0.70.7", "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.7.tgz", "integrity": "sha512-qXE8Jrhc9BmxDAnCmrHFDLJrzgjsE/mH57dtC4IO7K76AwagdXNCMRp5SA8XdHJzvvHWRaghpiFHEMl9TtOBcQ==", - "dev": true, + "peer": true, "requires": { "@babel/parser": "^7.14.0", "flow-parser": "^0.121.0", @@ -19650,29 +19317,48 @@ "version": "0.70.3", "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==", - "dev": true + "peer": true }, "react-refresh": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "dev": true + "peer": true }, "react-shallow-renderer": { "version": "16.15.0", "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "dev": true, + "peer": true, "requires": { "object-assign": "^4.1.1", "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" } }, + "react-test-renderer": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.1.0.tgz", + "integrity": "sha512-OfuueprJFW7h69GN+kr4Ywin7stcuqaYAt1g7airM5cUgP0BoF5G5CXsPGmXeDeEkncb2fqYNECO4y18sSqphg==", + "peer": true, + "requires": { + "react-is": "^18.1.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.22.0" + }, + "dependencies": { + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "peer": true + } + } + }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "peer": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -19683,13 +19369,13 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", - "dev": true + "peer": true }, "recast": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "dev": true, + "peer": true, "requires": { "ast-types": "0.15.2", "esprima": "~4.0.0", @@ -19701,21 +19387,29 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "peer": true } } }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, "requires": { "regenerate": "^1.4.2" } @@ -19723,14 +19417,12 @@ "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -19745,7 +19437,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, "requires": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -19759,7 +19450,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, "requires": { "jsesc": "~0.5.0" }, @@ -19767,28 +19457,25 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" } } }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "peer": true }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -19815,7 +19502,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true + "peer": true }, "resolve.exports": { "version": "2.0.2", @@ -19827,7 +19514,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, + "peer": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -19861,13 +19548,13 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "peer": true }, "scheduler": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", - "dev": true, + "peer": true, "requires": { "loose-envify": "^1.1.0" } @@ -19875,14 +19562,13 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, + "peer": true, "requires": { "debug": "2.6.9", "depd": "2.0.0", @@ -19903,7 +19589,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "peer": true, "requires": { "ms": "2.0.0" }, @@ -19912,7 +19598,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "peer": true } } }, @@ -19920,19 +19606,19 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "peer": true }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "peer": true }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, + "peer": true, "requires": { "ee-first": "1.1.1" } @@ -19941,7 +19627,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true + "peer": true } } }, @@ -19949,13 +19635,13 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "dev": true + "peer": true }, "serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, + "peer": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -19967,19 +19653,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "peer": true }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "peer": true }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, + "peer": true, "requires": { "kind-of": "^6.0.2" } @@ -20003,31 +19689,28 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true + "peer": true }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, + "peer": true, "requires": { "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", @@ -20038,7 +19721,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "peer": true, "requires": { "color-convert": "^1.9.0" } @@ -20047,7 +19730,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "peer": true, "requires": { "color-name": "1.1.3" } @@ -20056,15 +19739,14 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "peer": true } } }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { "version": "0.5.13", @@ -20079,8 +19761,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "stack-utils": { "version": "2.0.6", @@ -20103,13 +19784,13 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true + "peer": true }, "stacktrace-parser": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, + "peer": true, "requires": { "type-fest": "^0.7.1" }, @@ -20118,7 +19799,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true + "peer": true } } }, @@ -20126,13 +19807,13 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true + "peer": true }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "peer": true, "requires": { "safe-buffer": "~5.2.0" }, @@ -20141,7 +19822,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "peer": true } } }, @@ -20159,7 +19840,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -20169,8 +19849,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" } } }, @@ -20178,7 +19857,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -20193,7 +19871,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true + "peer": true }, "strip-final-newline": { "version": "2.0.0", @@ -20201,6 +19879,15 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -20211,13 +19898,12 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", - "dev": true + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -20226,7 +19912,7 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==", - "dev": true, + "peer": true, "requires": { "os-tmpdir": "^1.0.0", "rimraf": "~2.2.6" @@ -20236,7 +19922,7 @@ "version": "2.2.8", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==", - "dev": true + "peer": true } } }, @@ -20261,13 +19947,13 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true + "peer": true }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, + "peer": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -20277,7 +19963,7 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, + "peer": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -20292,7 +19978,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, + "peer": true, "requires": { "safe-buffer": "~5.1.0" } @@ -20302,20 +19988,17 @@ "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -20324,13 +20007,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true + "peer": true }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "peer": true }, "ts-jest": { "version": "29.1.1", @@ -20426,7 +20109,7 @@ "version": "3.3.9", "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, + "peer": true, "requires": { "commander": "~2.13.0", "source-map": "~0.6.1" @@ -20436,7 +20119,7 @@ "version": "2.13.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true + "peer": true } } }, @@ -20449,14 +20132,12 @@ "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" }, "unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -20465,32 +20146,29 @@ "unicode-match-property-value-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "peer": true }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true + "peer": true }, "update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -20509,20 +20187,20 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "dev": true, + "peer": true, "requires": {} }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "peer": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true + "peer": true }, "v8-compile-cache": { "version": "2.3.0", @@ -20545,19 +20223,18 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true + "peer": true }, "vlq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "dev": true + "peer": true }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, "requires": { "makeerror": "1.0.12" } @@ -20566,7 +20243,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, + "peer": true, "requires": { "defaults": "^1.0.3" } @@ -20575,19 +20252,19 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "peer": true }, "whatwg-fetch": { "version": "3.6.19", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", - "dev": true + "peer": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, + "peer": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -20606,7 +20283,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "peer": true }, "word-wrap": { "version": "1.2.5", @@ -20628,8 +20305,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "4.0.2", @@ -20645,7 +20321,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, + "peer": true, "requires": {} }, "xml": { @@ -20658,7 +20334,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "peer": true }, "y18n": { "version": "5.0.8", @@ -20669,8 +20345,7 @@ "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yaml": { "version": "1.10.2", @@ -20702,8 +20377,7 @@ "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/access-checkout-react-native-sdk/package.json b/access-checkout-react-native-sdk/package.json index 0d85e93..0a715a5 100644 --- a/access-checkout-react-native-sdk/package.json +++ b/access-checkout-react-native-sdk/package.json @@ -35,6 +35,7 @@ "@babel/core": "^7.20.0", "@babel/preset-env": "^7.20.0", "@babel/preset-typescript": "^7.16.5", + "@testing-library/react-native": "^12.4.3", "@types/jest": "^27.0.3", "@types/react": "^18.0.24", "@types/react-native": "^0.72.6", @@ -48,15 +49,14 @@ "jest-html-reporter": "^3.10.2", "jest-junit": "^13.0.0", "prettier": "^2.5.0", - "react": "^18.1.0", - "react-native": "^0.70.0", "react-native-builder-bob": "^0.18.2", "ts-jest": "^29.1.1", "typescript": "4.8.4" }, "peerDependencies": { "react": ">=18.1.0", - "react-native": ">=0.70.0" + "react-native": ">=0.70.0", + "react-test-renderer": "18.1.0" }, "react-native-builder-bob": { "source": "src", diff --git a/access-checkout-react-native-sdk/src/AccessCheckout.tsx b/access-checkout-react-native-sdk/src/AccessCheckout.tsx index 33529ba..c3cfbc4 100644 --- a/access-checkout-react-native-sdk/src/AccessCheckout.tsx +++ b/access-checkout-react-native-sdk/src/AccessCheckout.tsx @@ -1,17 +1,17 @@ import { AccessCheckoutReactNative } from './AccessCheckoutReactNative'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import SessionGenerationConfig from './session/SessionGenerationConfig'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import Sessions from './session/Sessions'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import CardValidationConfig from './validation/CardValidationConfig'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import CvcOnlyValidationConfig from './validation/CvcOnlyValidationConfig'; +import type SessionGenerationConfig from './session/SessionGenerationConfig'; +import type Sessions from './session/Sessions'; +interface InitialiseCardValidationConfig { + panId: string; + expiryDateId: string; + cvcId: string; + enablePanFormatting?: boolean; + acceptedCardBrands?: string[]; +} +interface InitialiseCvcOnlyValidationConfig { + cvcId: string; +} export default class AccessCheckout { private readonly ReactNativeSdkVersion = '2.0.1'; static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent'; @@ -46,7 +46,7 @@ export default class AccessCheckout { sessionTypes, reactNativeSdkVersion: this.ReactNativeSdkVersion, }) - // eslint-disable-next-line @typescript-eslint/no-explicit-any, prettier/prettier + // eslint-disable-next-line @typescript-eslint/no-explicit-any .then((bridgeSessions: any) => { const sessions: Sessions = {}; if (bridgeSessions.card) { @@ -66,7 +66,7 @@ export default class AccessCheckout { } initialiseCardValidation( - validationConfig: CardValidationConfig + validationConfig: InitialiseCardValidationConfig ): Promise { return new Promise((resolve, reject) => { AccessCheckoutReactNative.initialiseCardValidation({ @@ -88,7 +88,7 @@ export default class AccessCheckout { } initialiseCvcOnlyValidation( - validationConfig: CvcOnlyValidationConfig + validationConfig: InitialiseCvcOnlyValidationConfig ): Promise { return new Promise((resolve, reject) => { AccessCheckoutReactNative.initialiseCvcOnlyValidation({ diff --git a/access-checkout-react-native-sdk/src/config/CardConfig.ts b/access-checkout-react-native-sdk/src/config/CardConfig.ts new file mode 100644 index 0000000..0a1187c --- /dev/null +++ b/access-checkout-react-native-sdk/src/config/CardConfig.ts @@ -0,0 +1,15 @@ +import type { CardValidationConfig } from '../validation/CardValidationConfig'; + +export default class CardConfig { + panId: string; + expiryDateId: string; + cvcId: string; + validationConfig?: CardValidationConfig; + + constructor({ panId, expiryDateId, cvcId, validationConfig }: CardConfig) { + this.panId = panId; + this.expiryDateId = expiryDateId; + this.cvcId = cvcId; + this.validationConfig = validationConfig; + } +} diff --git a/access-checkout-react-native-sdk/src/config/CvcOnlyConfig.ts b/access-checkout-react-native-sdk/src/config/CvcOnlyConfig.ts new file mode 100644 index 0000000..addde2a --- /dev/null +++ b/access-checkout-react-native-sdk/src/config/CvcOnlyConfig.ts @@ -0,0 +1,11 @@ +import type { CvcValidationConfig } from '../validation/CvcValidationConfig'; + +export default class CvcOnlyConfig { + cvcId: string; + validationConfig?: CvcValidationConfig; + + constructor({ cvcId, validationConfig }: CvcOnlyConfig) { + this.cvcId = cvcId; + this.validationConfig = validationConfig; + } +} diff --git a/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts b/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts new file mode 100644 index 0000000..fa975f4 --- /dev/null +++ b/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts @@ -0,0 +1,88 @@ +import { + AccessCheckout, + CardConfig, + type CardValidationEventListener, + CvcOnlyConfig, + CvcOnlyValidationEventListener, + Sessions, +} from '../index'; +import { useCardValidation } from './useCardValidation'; +import { useCvcOnlyValidation } from './useCvcOnlyValidation'; + +export interface UseAccessCheckoutExports { + initialiseValidation: () => Promise; + generateSessions: (sessionTypes: string[]) => Promise; +} + +export interface UseAccessCheckout { + baseUrl: string; + checkoutId: string; + config: CardConfig | CvcOnlyConfig; +} + +export const useAccessCheckout = ({ + baseUrl, + checkoutId, + config, +}: UseAccessCheckout): UseAccessCheckoutExports => { + const accessCheckout = new AccessCheckout({ + baseUrl: baseUrl, + merchantId: checkoutId, + }); + + /** + * Implementation note: Decided to use classes to benefit from instance checking. + * If using interfaces or types a "type guard" could have been used. the trade off being having to check for + * a specific property that would be unique to that interface/type which in theory it introduces another point of + * failure if the property was to be renamed and not updated in the type guard. + */ + if (config instanceof CardConfig) { + const { initialiseCardValidation } = useCardValidation({ + accessCheckout, + cardValidationConfig: { + panId: config.panId, + expiryDateId: config.expiryDateId, + cvcId: config.cvcId, + enablePanFormatting: config.validationConfig?.enablePanFormatting, + acceptedCardBrands: config.validationConfig?.acceptedCardBrands, + }, + merchantListener: config.validationConfig + ?.validationListener as CardValidationEventListener, + }); + + const generateSessions = (sessionTypes: string[]) => + accessCheckout.generateSessions( + { + panId: config.panId, + expiryDateId: config.expiryDateId, + cvcId: config.cvcId, + }, + sessionTypes + ); + + return { + initialiseValidation: initialiseCardValidation, + generateSessions, + }; + } else { + const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({ + accessCheckout, + cvcOnlyValidationConfig: { cvcId: config.cvcId }, + merchantListener: config.validationConfig + ?.validationListener as CvcOnlyValidationEventListener, + }); + + const generateCvcOnlySession = (sessionTypes: string[]) => + accessCheckout.generateSessions( + { + cvcId: config.cvcId, + }, + sessionTypes + ); + + return { + initialiseValidation: initialiseCvcOnlyValidation, + generateSessions: generateCvcOnlySession, + }; + } +}; diff --git a/access-checkout-react-native-sdk/src/validation/CardValidationHooks.ts b/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts similarity index 68% rename from access-checkout-react-native-sdk/src/validation/CardValidationHooks.ts rename to access-checkout-react-native-sdk/src/hooks/useCardValidation.ts index 3cab171..ad01ccb 100644 --- a/access-checkout-react-native-sdk/src/validation/CardValidationHooks.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts @@ -2,15 +2,10 @@ import { useEffect } from 'react'; import { NativeEventEmitter } from 'react-native'; import AccessCheckout from '../AccessCheckout'; import AccessCheckoutReactNative from '../AccessCheckoutReactNative'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import CardValidationConfig from './CardValidationConfig'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore import { CardValidationEventListener, cardValidationNativeEventListenerOf, -} from './CardValidationEventListener'; +} from '../validation/CardValidationEventListener'; export function useCardValidationEventListener( merchantListener: CardValidationEventListener @@ -33,13 +28,23 @@ export function useCardValidationEventListener( }, []); } -export function useCardValidation( - accessCheckout: AccessCheckout, - cardValidationConfig: CardValidationConfig, - merchantListener: CardValidationEventListener -) { +interface UseCardValidationHook { + accessCheckout: AccessCheckout; + cardValidationConfig: { + panId: string; + expiryDateId: string; + cvcId: string; + enablePanFormatting?: boolean; + acceptedCardBrands?: string[]; + }; + merchantListener: CardValidationEventListener; +} +export function useCardValidation({ + accessCheckout, + cardValidationConfig, + merchantListener, +}: UseCardValidationHook) { useCardValidationEventListener(merchantListener); - const initialiseCardValidation = () => { return accessCheckout.initialiseCardValidation(cardValidationConfig); }; diff --git a/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationHooks.ts b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts similarity index 58% rename from access-checkout-react-native-sdk/src/validation/CvcOnlyValidationHooks.ts rename to access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts index 13c44d3..3dd1b61 100644 --- a/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationHooks.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts @@ -2,16 +2,14 @@ import { useEffect } from 'react'; import { NativeEventEmitter } from 'react-native'; import AccessCheckoutReactNative, { AccessCheckout, - CvcOnlyValidationConfig, - cvcOnlyValidationNativeEventListenerOf, + CardValidationEventListener, } from '../index'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import { CvcOnlyValidationEventListener } from './CvcOnlyValidationEventListener'; +import type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener'; +import { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener'; -export function useCvcOnlyValidationEventListener( +export const useCvcOnlyValidationEventListener = ( merchantListener: CvcOnlyValidationEventListener -) { +) => { useEffect(() => { const nativeEventListener = cvcOnlyValidationNativeEventListenerOf(merchantListener); @@ -28,13 +26,20 @@ export function useCvcOnlyValidationEventListener( eventSubscription.remove(); }; }, []); -} +}; -export function useCvcOnlyValidation( - accessCheckout: AccessCheckout, - cvcOnlyValidationConfig: CvcOnlyValidationConfig, - merchantListener: CvcOnlyValidationEventListener -) { +interface UseCvcOnlyValidationHook { + accessCheckout: AccessCheckout; + cvcOnlyValidationConfig: { + cvcId: string; + }; + merchantListener: CardValidationEventListener; +} +export const useCvcOnlyValidation = ({ + accessCheckout, + cvcOnlyValidationConfig, + merchantListener, +}: UseCvcOnlyValidationHook) => { useCvcOnlyValidationEventListener(merchantListener); const initialiseCvcOnlyValidation = () => { @@ -42,4 +47,4 @@ export function useCvcOnlyValidation( }; return { initialiseCvcOnlyValidation }; -} +}; diff --git a/access-checkout-react-native-sdk/src/index.tsx b/access-checkout-react-native-sdk/src/index.tsx index 183518f..80ef9da 100644 --- a/access-checkout-react-native-sdk/src/index.tsx +++ b/access-checkout-react-native-sdk/src/index.tsx @@ -10,23 +10,19 @@ export { default as SessionType, CARD, CVC } from './session/SessionType'; export { default as Sessions } from './session/Sessions'; -export { default as CardValidationConfig } from './validation/CardValidationConfig'; - -export { default as CvcOnlyValidationConfig } from './validation/CvcOnlyValidationConfig'; - export { default as Brand } from './validation/Brand'; export { default as BrandImage } from './validation/BrandImage'; +export { default as CardConfig } from './config/CardConfig'; +export { default as CvcOnlyConfig } from './config/CvcOnlyConfig'; -export { - CardValidationEventListener, - cardValidationNativeEventListenerOf, -} from './validation/CardValidationEventListener'; +export { CardValidationEventListener } from './validation/CardValidationEventListener'; +export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener'; +export { CvcValidationConfig } from './validation/CvcValidationConfig'; +export { CardValidationConfig } from './validation/CardValidationConfig'; export { - CvcOnlyValidationEventListener, - cvcOnlyValidationNativeEventListenerOf, -} from './validation/CvcOnlyValidationEventListener'; - -export { useCardValidation } from './validation/CardValidationHooks'; -export { useCvcOnlyValidation } from './validation/CvcOnlyValidationHooks'; + useAccessCheckout, + UseAccessCheckout, + UseAccessCheckoutExports, +} from './hooks/useAccessCheckout'; diff --git a/access-checkout-react-native-sdk/src/validation/CardValidationConfig.ts b/access-checkout-react-native-sdk/src/validation/CardValidationConfig.ts index b299036..8947447 100644 --- a/access-checkout-react-native-sdk/src/validation/CardValidationConfig.ts +++ b/access-checkout-react-native-sdk/src/validation/CardValidationConfig.ts @@ -1,29 +1,17 @@ -export default class CardValidationConfig { - panId: string; - expiryDateId: string; - cvcId: string; - enablePanFormatting = false; - acceptedCardBrands: string[] = []; +import type { CardValidationEventListener } from '../index'; + +export class CardValidationConfig { + enablePanFormatting?: boolean; + acceptedCardBrands?: string[]; + validationListener?: CardValidationEventListener; constructor({ - panId, - expiryDateId, - cvcId, - enablePanFormatting, - acceptedCardBrands, - }: { - panId: string; - expiryDateId: string; - cvcId: string; - enablePanFormatting?: boolean; - acceptedCardBrands?: string[]; - }) { - this.panId = panId; - this.expiryDateId = expiryDateId; - this.cvcId = cvcId; - this.enablePanFormatting = enablePanFormatting - ? enablePanFormatting - : false; - this.acceptedCardBrands = acceptedCardBrands ? acceptedCardBrands : []; + validationListener, + enablePanFormatting = false, + acceptedCardBrands = [], + }: CardValidationConfig) { + this.enablePanFormatting = enablePanFormatting; + this.validationListener = validationListener; + this.acceptedCardBrands = acceptedCardBrands; } } diff --git a/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationConfig.ts b/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationConfig.ts deleted file mode 100644 index 752e096..0000000 --- a/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationConfig.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default class CvcOnlyValidationConfig { - cvcId: string; - - constructor({ cvcId }: { cvcId: string }) { - this.cvcId = cvcId; - } -} diff --git a/access-checkout-react-native-sdk/src/validation/CvcValidationConfig.ts b/access-checkout-react-native-sdk/src/validation/CvcValidationConfig.ts new file mode 100644 index 0000000..fd2f6ec --- /dev/null +++ b/access-checkout-react-native-sdk/src/validation/CvcValidationConfig.ts @@ -0,0 +1,9 @@ +import type { CardValidationEventListener } from '../index'; + +export class CvcValidationConfig { + validationListener?: CardValidationEventListener; + + constructor({ validationListener }: CvcValidationConfig) { + this.validationListener = validationListener; + } +} diff --git a/access-checkout-react-native-sdk/test/AccessCheckout.spec.ts b/access-checkout-react-native-sdk/test/AccessCheckout.spec.ts index 7f35596..e020db7 100644 --- a/access-checkout-react-native-sdk/test/AccessCheckout.spec.ts +++ b/access-checkout-react-native-sdk/test/AccessCheckout.spec.ts @@ -1,12 +1,10 @@ import * as fs from 'fs'; import { NativeModules } from 'react-native'; -import CvcOnlyValidationConfig from '../src/validation/CvcOnlyValidationConfig'; import { AccessCheckout, CVC } from '../src/'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import Sessions from '../src/session/Sessions'; import SessionType from '../src/session/SessionType'; -import CardValidationConfig from '../src/validation/CardValidationConfig'; import { givenGenerateSessionsBridgeFailsWith, givenGenerateSessionsBridgeReturns, @@ -16,6 +14,7 @@ import { givenCvcOnlyValidationBridgeReturns, hasProperty, } from './test-utils'; +import { CardConfig, CvcOnlyConfig } from '../src'; const baseUrl = 'https://access.worldpay.com'; const merchantId = '123'; @@ -57,7 +56,7 @@ describe('AccessCheckout', () => { const checkout = new AccessCheckout({ baseUrl, merchantId }); describe('independently of the type of session', () => { - const sessionGenerationConfig = new CardValidationConfig({ + const sessionGenerationConfig = new CardConfig({ panId, expiryDateId, cvcId, @@ -93,7 +92,7 @@ describe('AccessCheckout', () => { }); describe('for card only', () => { - const sessionGenerationConfig = new CardValidationConfig({ + const sessionGenerationConfig = new CardConfig({ panId, expiryDateId, cvcId, @@ -118,7 +117,7 @@ describe('AccessCheckout', () => { }); describe('for card and cvc', () => { - const sessionGenerationConfig = new CardValidationConfig({ + const sessionGenerationConfig = new CardConfig({ panId, expiryDateId, cvcId, @@ -165,7 +164,7 @@ describe('AccessCheckout', () => { }); describe('for cvc only', () => { - const sessionGenerationConfig = new CvcOnlyValidationConfig({ + const sessionGenerationConfig = new CvcOnlyConfig({ cvcId, }); const sessionType = [CVC]; @@ -210,7 +209,7 @@ describe('AccessCheckout', () => { describe('Card validation feature', () => { const checkout = new AccessCheckout({ baseUrl, merchantId }); - const validationConfig = new CardValidationConfig({ + const validationConfig = new CardConfig({ panId, expiryDateId, cvcId, @@ -236,7 +235,7 @@ describe('AccessCheckout', () => { describe('Cvc validation feature', () => { const checkout = new AccessCheckout({ baseUrl, merchantId }); - const validationConfig = new CvcOnlyValidationConfig({ + const validationConfig = new CvcOnlyConfig({ cvcId, }); diff --git a/access-checkout-react-native-sdk/test/config/CardConfig.spec.ts b/access-checkout-react-native-sdk/test/config/CardConfig.spec.ts new file mode 100644 index 0000000..29d772b --- /dev/null +++ b/access-checkout-react-native-sdk/test/config/CardConfig.spec.ts @@ -0,0 +1,202 @@ +import CardConfig from '../../src/config/CardConfig'; +import { CardValidationConfig } from '../../src/validation/CardValidationConfig'; +import type { CardValidationEventListener } from '../../src'; + +const panId = '4444'; +const expiryDateId = '12/21'; +const cvcId = '123'; + +describe('CardConfig', () => { + describe('can be constructed', () => { + it('with only a panId, an expiryDateId and a cvcId', () => { + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + }); + + expect(config.panId).toEqual(panId); + expect(config.expiryDateId).toEqual(expiryDateId); + expect(config.cvcId).toEqual(cvcId); + + expect(config.validationConfig?.enablePanFormatting).toBeUndefined(); + expect(config.validationConfig?.acceptedCardBrands).toBeUndefined(); + }); + + it('with an empty validation config object', () => { + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig: {}, + }); + + expect(config.panId).toEqual(panId); + expect(config.expiryDateId).toEqual(expiryDateId); + expect(config.cvcId).toEqual(cvcId); + + expect(config.validationConfig?.enablePanFormatting).toBeUndefined(); + expect(config.validationConfig?.acceptedCardBrands).toBeUndefined(); + }); + + describe('using a validation config object', () => { + it('with an optional validation config flag to enable card number formatting', () => { + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig: { enablePanFormatting: true }, + }); + + expect(config.panId).toEqual(panId); + expect(config.expiryDateId).toEqual(expiryDateId); + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.enablePanFormatting).toEqual(true); + expect(config.validationConfig?.acceptedCardBrands).toBeUndefined(); + expect(config.validationConfig?.validationListener).toBeUndefined(); + }); + + it('with an optional list of card brands to restrict validation to', () => { + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig: { acceptedCardBrands: ['visa', 'mastercard'] }, + }); + + expect(config.panId).toEqual(panId); + expect(config.expiryDateId).toEqual(expiryDateId); + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.acceptedCardBrands).toEqual([ + 'visa', + 'mastercard', + ]); + expect(config.validationConfig?.enablePanFormatting).toBeUndefined(); + expect(config.validationConfig?.validationListener).toBeUndefined(); + }); + + it('with an optional validation listener', () => { + const validationListenerMock = jest.fn() as CardValidationEventListener; + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig: { validationListener: validationListenerMock }, + }); + + expect(config.panId).toEqual(panId); + expect(config.expiryDateId).toEqual(expiryDateId); + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.acceptedCardBrands).toBeUndefined(); + expect(config.validationConfig?.enablePanFormatting).toBeUndefined(); + expect(config.validationConfig?.validationListener).toEqual( + validationListenerMock + ); + }); + }); + }); + + describe('using a validation config class (includes defaults)', () => { + it('with an optional validation config flag to enable card number formatting', () => { + const validationConfig = new CardValidationConfig({ + enablePanFormatting: true, + }); + + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig, + }); + + expect(config.panId).toEqual(panId); + expect(config.expiryDateId).toEqual(expiryDateId); + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.enablePanFormatting).toEqual(true); + expect(config.validationConfig?.acceptedCardBrands).toEqual([]); + expect(config.validationConfig?.validationListener).toBeUndefined(); + }); + + it('with an optional list of card brands to restrict validation to', () => { + const validationConfig = new CardValidationConfig({ + acceptedCardBrands: ['visa', 'mastercard'], + }); + + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig, + }); + + expect(config.panId).toEqual(panId); + expect(config.expiryDateId).toEqual(expiryDateId); + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.acceptedCardBrands).toEqual([ + 'visa', + 'mastercard', + ]); + expect(config.validationConfig?.enablePanFormatting).toEqual(false); + expect(config.validationConfig?.validationListener).toBeUndefined(); + }); + + it('with an optional validation listener', () => { + const validationListenerMock = jest.fn() as CardValidationEventListener; + const validationConfig = new CardValidationConfig({ + validationListener: validationListenerMock, + }); + + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig, + }); + + expect(config.panId).toEqual(panId); + expect(config.expiryDateId).toEqual(expiryDateId); + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.acceptedCardBrands).toEqual([]); + expect(config.validationConfig?.enablePanFormatting).toEqual(false); + expect(config.validationConfig?.validationListener).toEqual( + validationListenerMock + ); + }); + }); + + describe('by default', () => { + it('has no validation configuration', () => { + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + }); + + expect(config.validationConfig).toBeUndefined(); + }); + + it('has card number formatting disabled', () => { + const validationConfig = new CardValidationConfig({}); + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig, + }); + + expect(config.validationConfig?.enablePanFormatting).toEqual(false); + }); + + it('accepts all card brands', () => { + const validationConfig = new CardValidationConfig({}); + const config: CardConfig = new CardConfig({ + panId, + expiryDateId, + cvcId, + validationConfig, + }); + + expect(config.validationConfig?.acceptedCardBrands).toEqual([]); + }); + }); +}); diff --git a/access-checkout-react-native-sdk/test/config/CvcOnlyConfig.spec.ts b/access-checkout-react-native-sdk/test/config/CvcOnlyConfig.spec.ts new file mode 100644 index 0000000..683e347 --- /dev/null +++ b/access-checkout-react-native-sdk/test/config/CvcOnlyConfig.spec.ts @@ -0,0 +1,73 @@ +import CvcOnlyConfig from '../../src/config/CvcOnlyConfig'; +import { CvcValidationConfig } from '../../src/validation/CvcValidationConfig'; +import type { CardValidationEventListener } from '../../src'; + +const cvcId = '123'; + +describe('CvcOnlyConfig', () => { + describe('can be constructed', () => { + it('with only a cvcId', () => { + const config: CvcOnlyConfig = new CvcOnlyConfig({ + cvcId, + }); + + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.validationListener).toBeUndefined(); + }); + + it('with an empty validation config object', () => { + const config: CvcOnlyConfig = new CvcOnlyConfig({ + cvcId, + validationConfig: {}, + }); + + expect(config.cvcId).toEqual(cvcId); + + expect(config.validationConfig?.validationListener).toBeUndefined(); + }); + + describe('using a validation config object', () => { + it('with an optional validation listener', () => { + const validationListenerMock = jest.fn() as CardValidationEventListener; + const config: CvcOnlyConfig = new CvcOnlyConfig({ + cvcId, + validationConfig: { validationListener: validationListenerMock }, + }); + + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.validationListener).toEqual( + validationListenerMock + ); + }); + }); + }); + + describe('using a validation config class (includes defaults)', () => { + it('with an optional validation listener', () => { + const validationListenerMock = jest.fn() as CardValidationEventListener; + const validationConfig = new CvcValidationConfig({ + validationListener: validationListenerMock, + }); + + const config: CvcOnlyConfig = new CvcOnlyConfig({ + cvcId, + validationConfig, + }); + + expect(config.cvcId).toEqual(cvcId); + expect(config.validationConfig?.validationListener).toEqual( + validationListenerMock + ); + }); + }); + + describe('by default', () => { + it('has no validation configuration', () => { + const config: CvcOnlyConfig = new CvcOnlyConfig({ + cvcId, + }); + + expect(config.validationConfig).toBeUndefined(); + }); + }); +}); diff --git a/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts b/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts new file mode 100644 index 0000000..0282bb8 --- /dev/null +++ b/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts @@ -0,0 +1,235 @@ +import { + CardConfig, + CardValidationEventListener, + useAccessCheckout, + type UseAccessCheckoutExports, + AccessCheckout, + type Sessions, + type UseAccessCheckout, + CARD, + CVC, + CvcOnlyConfig, + type CvcOnlyValidationEventListener, +} from '../../src'; +import { isArray, isFunction } from '../test-utils'; +import { CardValidationConfig } from '../../src/validation/CardValidationConfig'; +import { CvcValidationConfig } from '../../src/validation/CvcValidationConfig'; +import { + renderHook, + type RenderHookResult, +} from '@testing-library/react-native'; +describe('useAccessCheckout', () => { + const mockInitialiseCvcOnlyValidation = jest.fn() as () => Promise; + const mockInitialiseCardValidation = jest.fn() as () => Promise; + const mockGenerateSessions = jest.fn() as () => Promise; + + beforeAll(() => { + jest + .spyOn(AccessCheckout.prototype, 'initialiseCvcOnlyValidation') + .mockImplementation(mockInitialiseCvcOnlyValidation); + jest + .spyOn(AccessCheckout.prototype, 'initialiseCardValidation') + .mockImplementation(mockInitialiseCardValidation); + jest + .spyOn(AccessCheckout.prototype, 'generateSessions') + .mockImplementation(mockGenerateSessions); + }); + + afterAll(() => { + jest.restoreAllMocks(); + }); + + describe('using cvc only configuration', () => { + const merchantListener: CvcOnlyValidationEventListener = {}; + + const cardValidationConfig = new CvcValidationConfig({ + validationListener: merchantListener, + }); + const cardConfig = new CvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: cardValidationConfig, + }); + + describe('initialiseCardValidation', () => { + it('returns an object with a initialiseValidation property which is a function', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); + + expect(isArray(result.current)).toEqual(false); + expect(isFunction(result.current.initialiseValidation)).toEqual(true); + }); + + it('function returned is designed to initialise the card validation', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); + + const functionReturned = result.current.initialiseValidation; + + functionReturned(); + + expect(mockInitialiseCvcOnlyValidation).toHaveBeenCalledWith({ + cvcId: 'cvcInput', + }); + }); + }); + + describe('generateSessions', () => { + it('returns an object with a generateSessions property which is a function', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); + + expect(isArray(result.current)).toEqual(false); + expect(isFunction(result.current.generateSessions)).toEqual(true); + }); + + it('function returned is designed to generate sessions', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); + + const functionReturned = result.current.generateSessions; + + functionReturned([CVC]); + + expect(mockGenerateSessions).toHaveBeenCalledWith( + { + cvcId: 'cvcInput', + }, + ['CVC'] + ); + }); + }); + }); + + describe('using card configuration', () => { + const merchantListener: CardValidationEventListener = {}; + + const cardValidationConfig = new CardValidationConfig({ + validationListener: merchantListener, + }); + const cardConfig = new CardConfig({ + panId: 'panInput', + expiryDateId: 'expiryDateInput', + cvcId: 'cvcInput', + validationConfig: cardValidationConfig, + }); + + describe('initialiseCardValidation', () => { + it('returns an object with a initialiseValidation property which is a function', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); + + expect(isArray(result.current)).toEqual(false); + expect(isFunction(result.current.initialiseValidation)).toEqual(true); + }); + + it('function returned is designed to initialise the card validation', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); + + const functionReturned = result.current.initialiseValidation; + + functionReturned(); + + expect(mockInitialiseCardValidation).toHaveBeenCalledWith({ + cvcId: 'cvcInput', + expiryDateId: 'expiryDateInput', + panId: 'panInput', + acceptedCardBrands: [], + enablePanFormatting: false, + }); + }); + }); + + describe('generateSessions', () => { + it('returns an object with a generateSessions property which is a function', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); + + expect(isArray(result.current)).toEqual(false); + expect(isFunction(result.current.generateSessions)).toEqual(true); + }); + + it('function returned is designed to generate sessions', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); + + const functionReturned = result.current.generateSessions; + + functionReturned([CARD]); + + expect(mockGenerateSessions).toHaveBeenCalledWith( + { + cvcId: 'cvcInput', + expiryDateId: 'expiryDateInput', + panId: 'panInput', + }, + ['CARD'] + ); + }); + }); + }); +}); diff --git a/access-checkout-react-native-sdk/test/validation/CardValidationHooks.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts similarity index 80% rename from access-checkout-react-native-sdk/test/validation/CardValidationHooks.spec.ts rename to access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts index 80f0456..6e23c19 100644 --- a/access-checkout-react-native-sdk/test/validation/CardValidationHooks.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts @@ -1,26 +1,27 @@ import React from 'react'; import { AccessCheckout, - CardValidationConfig, + CardConfig, CardValidationEventListener, } from '../../src'; import { useCardValidationEventListener, useCardValidation, -} from '../../src/validation/CardValidationHooks'; +} from '../../src/hooks/useCardValidation'; import { emitNativeEvent, nativeEventSubscriptionMock, } from '../__mocks__/react-native'; import { isArray, isFunction } from '../test-utils'; +import { CardValidationConfig } from '../../src/validation/CardValidationConfig'; // eslint-disable-next-line @typescript-eslint/no-explicit-any let useEffectCleanUpFunction: any; -jest.spyOn(React, 'useEffect').mockImplementation(f => { +jest.spyOn(React, 'useEffect').mockImplementation((f) => { useEffectCleanUpFunction = f(); }); -describe('CardValidationHooks', function () { +describe('useCardValidation', () => { describe('useCardValidationEventListener', () => { it('registers a NativeEvent listener for "AccessCheckoutCardValidationEvent" event', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -62,19 +63,23 @@ describe('CardValidationHooks', function () { baseUrl: '', merchantId: '', }); - const validationConfig = new CardValidationConfig({ + const cardValidationConfig = new CardValidationConfig({ + validationListener: merchantListener, + }); + const cardConfig = new CardConfig({ panId: 'panInput', expiryDateId: 'expiryDateInput', cvcId: 'cvcInput', + validationConfig: cardValidationConfig, }); it('returns an object with a initialiseCardValidation property which is a function', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - const hooksValues: any = useCardValidation( + const hooksValues: any = useCardValidation({ accessCheckout, - validationConfig, - merchantListener - ); + cardValidationConfig: cardConfig, + merchantListener, + }); expect(isArray(hooksValues)).toEqual(false); expect(isFunction(hooksValues.initialiseCardValidation)).toEqual(true); @@ -85,17 +90,17 @@ describe('CardValidationHooks', function () { spy.mockResolvedValue(true); // eslint-disable-next-line @typescript-eslint/no-explicit-any - const hooksValues: any = useCardValidation( + const hooksValues: any = useCardValidation({ accessCheckout, - validationConfig, - merchantListener - ); + cardValidationConfig: cardConfig, + merchantListener, + }); const functionReturned = hooksValues.initialiseCardValidation; functionReturned(); expect(accessCheckout.initialiseCardValidation).toHaveBeenCalledWith( - validationConfig + cardConfig ); }); }); diff --git a/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationHooks.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts similarity index 76% rename from access-checkout-react-native-sdk/test/validation/CvcOnlyValidationHooks.spec.ts rename to access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts index a7b80f2..c172517 100644 --- a/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationHooks.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts @@ -1,26 +1,27 @@ import React from 'react'; import { AccessCheckout, - CvcOnlyValidationConfig, + CvcOnlyConfig, CvcOnlyValidationEventListener, } from '../../src'; import { useCvcOnlyValidation, useCvcOnlyValidationEventListener, -} from '../../src/validation/CvcOnlyValidationHooks'; +} from '../../src/hooks/useCvcOnlyValidation'; import { emitNativeEvent, nativeEventSubscriptionMock, } from '../__mocks__/react-native'; -import { isArray, isFunction } from '../test-utils'; // eslint-disable-next-line @typescript-eslint/no-explicit-any +import { isArray, isFunction } from '../test-utils'; +import { CvcValidationConfig } from '../../src/validation/CvcValidationConfig'; // eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any let useEffectCleanUpFunction: any; -jest.spyOn(React, 'useEffect').mockImplementation(f => { +jest.spyOn(React, 'useEffect').mockImplementation((f) => { useEffectCleanUpFunction = f(); }); -describe('CvcOnlyValidationHooks', function () { +describe('useCvcOnlyValidation', () => { describe('useCvcOnlyValidationEventListener', () => { it('registers a NativeEvent listener for "AccessCheckoutCvcOnlyValidationEvent" event', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -62,17 +63,21 @@ describe('CvcOnlyValidationHooks', function () { baseUrl: '', merchantId: '', }); - const validationConfig = new CvcOnlyValidationConfig({ + const cvcOnlyValidationConfig = new CvcValidationConfig({ + validationListener: merchantListener, + }); + const cvcOnlyConfig = new CvcOnlyConfig({ cvcId: 'cvcInput', + validationConfig: cvcOnlyValidationConfig, }); it('returns an object with a initialiseCvcOnlyValidation property which is a function', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - const hooksValues: any = useCvcOnlyValidation( + const hooksValues: any = useCvcOnlyValidation({ accessCheckout, - validationConfig, - merchantListener - ); + cvcOnlyValidationConfig: cvcOnlyConfig, + merchantListener, + }); expect(isArray(hooksValues)).toEqual(false); expect(isFunction(hooksValues.initialiseCvcOnlyValidation)).toEqual(true); @@ -83,17 +88,17 @@ describe('CvcOnlyValidationHooks', function () { spy.mockResolvedValue(true); // eslint-disable-next-line @typescript-eslint/no-explicit-any - const hooksValues: any = useCvcOnlyValidation( + const hooksValues: any = useCvcOnlyValidation({ accessCheckout, - validationConfig, - merchantListener - ); + cvcOnlyValidationConfig: cvcOnlyConfig, + merchantListener, + }); const functionReturned = hooksValues.initialiseCvcOnlyValidation; functionReturned(); expect(accessCheckout.initialiseCvcOnlyValidation).toHaveBeenCalledWith( - validationConfig + cvcOnlyConfig ); }); }); diff --git a/access-checkout-react-native-sdk/test/validation/CardValidationConfig.spec.ts b/access-checkout-react-native-sdk/test/validation/CardValidationConfig.spec.ts deleted file mode 100644 index c788cac..0000000 --- a/access-checkout-react-native-sdk/test/validation/CardValidationConfig.spec.ts +++ /dev/null @@ -1,71 +0,0 @@ -import CardValidationConfig from '../../src/validation/CardValidationConfig'; - -const panId = '4444'; -const expiryDateId = '12/21'; -const cvcId = '123'; - -describe('CardValidationConfig', () => { - describe('can be constructed', () => { - it('with only a panId, an expiryDateId and a cvcId', () => { - const config: CardValidationConfig = new CardValidationConfig({ - panId, - expiryDateId, - cvcId, - }); - - expect(config.panId).toEqual(panId); - expect(config.expiryDateId).toEqual(expiryDateId); - expect(config.cvcId).toEqual(cvcId); - }); - - it('with an optional flag to enable card number formatting', () => { - const config: CardValidationConfig = new CardValidationConfig({ - panId, - expiryDateId, - cvcId, - enablePanFormatting: true, - }); - - expect(config.panId).toEqual(panId); - expect(config.expiryDateId).toEqual(expiryDateId); - expect(config.cvcId).toEqual(cvcId); - expect(config.enablePanFormatting).toEqual(true); - }); - - it('with an optional list of card brands to restrict validation to', () => { - const config: CardValidationConfig = new CardValidationConfig({ - panId, - expiryDateId, - cvcId, - acceptedCardBrands: ['visa', 'mastercard'], - }); - - expect(config.panId).toEqual(panId); - expect(config.expiryDateId).toEqual(expiryDateId); - expect(config.cvcId).toEqual(cvcId); - expect(config.acceptedCardBrands).toEqual(['visa', 'mastercard']); - }); - }); - - describe('by default', () => { - it('has card number formatting disabled', () => { - const config: CardValidationConfig = new CardValidationConfig({ - panId, - expiryDateId, - cvcId, - }); - - expect(config.enablePanFormatting).toEqual(false); - }); - - it('accepts all card brands', () => { - const config: CardValidationConfig = new CardValidationConfig({ - panId, - expiryDateId, - cvcId, - }); - - expect(config.acceptedCardBrands).toEqual([]); - }); - }); -}); diff --git a/access-checkout-react-native-sdk/test/validation/CardValidationEventListener.spec.ts b/access-checkout-react-native-sdk/test/validation/CardValidationEventListener.spec.ts index a63d3d1..0a755b6 100644 --- a/access-checkout-react-native-sdk/test/validation/CardValidationEventListener.spec.ts +++ b/access-checkout-react-native-sdk/test/validation/CardValidationEventListener.spec.ts @@ -1,10 +1,6 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import Brand from '../../src/validation/Brand'; -import { - CardValidationEventListener, - cardValidationNativeEventListenerOf, -} from '../../src'; +import type Brand from '../../src/validation/Brand'; +import type { CardValidationEventListener } from '../../src'; +import { cardValidationNativeEventListenerOf } from '../../src/validation/CardValidationEventListener'; describe('CardValidationEventListener', () => { describe('can be instantiated', () => { diff --git a/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationConfig.spec.ts b/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationConfig.spec.ts deleted file mode 100644 index 3c2f1f9..0000000 --- a/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationConfig.spec.ts +++ /dev/null @@ -1,13 +0,0 @@ -import CvcOnlyValidationConfig from '../../src/validation/CvcOnlyValidationConfig'; - -const cvcId = '123'; - -describe('CvcOnlyValidationConfig', () => { - it('can only be constructed with a cvcId', () => { - const config: CvcOnlyValidationConfig = new CvcOnlyValidationConfig({ - cvcId, - }); - - expect(config.cvcId).toEqual(cvcId); - }); -}); diff --git a/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationEventListener.spec.ts b/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationEventListener.spec.ts index ce500a9..9467b19 100644 --- a/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationEventListener.spec.ts +++ b/access-checkout-react-native-sdk/test/validation/CvcOnlyValidationEventListener.spec.ts @@ -1,7 +1,5 @@ -import { - CvcOnlyValidationEventListener, - cvcOnlyValidationNativeEventListenerOf, -} from '../../src'; +import type { CvcOnlyValidationEventListener } from '../../src'; +import { cvcOnlyValidationNativeEventListenerOf } from '../../src/validation/CvcOnlyValidationEventListener'; describe('CvcOnlyValidationEventListener', () => { describe('can be instantiated', () => { diff --git a/demo-app/src/card-flow/CardFlow.tsx b/demo-app/src/card-flow/CardFlow.tsx index a91d48e..cf79f39 100644 --- a/demo-app/src/card-flow/CardFlow.tsx +++ b/demo-app/src/card-flow/CardFlow.tsx @@ -1,16 +1,15 @@ import React, { useState } from 'react'; import { Text } from 'react-native'; import { - AccessCheckout, Brand, CARD, + CardConfig, CardValidationConfig, CardValidationEventListener, CVC, Sessions, - useCardValidation, -} from '../../../access-checkout-react-native-sdk/src/index'; -import type SessionGenerationConfig from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; + useAccessCheckout, +} from '../../../access-checkout-react-native-sdk/src'; import CardBrandImage from '../common/CardBrandImage'; import CvcField from '../common/CvcField'; import ErrorView from '../common/ErrorView'; @@ -50,18 +49,6 @@ export default function CardFlow() { const [error, setError] = useState(); - const accessCheckout = new AccessCheckout({ - baseUrl: 'https://npe.access.worldpay.com', - merchantId: 'identity', - }); - - const validationConfig = new CardValidationConfig({ - panId: 'panInput', - expiryDateId: 'expiryDateInput', - cvcId: 'cvcInput', - enablePanFormatting: true, - }); - const validationEventListener: CardValidationEventListener = { onCardBrandChanged(brand?: Brand): void { if (!brand) { @@ -104,14 +91,26 @@ export default function CardFlow() { }, }; - const { initialiseCardValidation } = useCardValidation( - accessCheckout, - validationConfig, - validationEventListener - ); + const cardValidationConfig = new CardValidationConfig({ + enablePanFormatting: true, + validationListener: validationEventListener, + }); + + const cardConfig = new CardConfig({ + panId: 'panInput', + expiryDateId: 'expiryDateInput', + cvcId: 'cvcInput', + validationConfig: cardValidationConfig, + }); + + const { initialiseValidation, generateSessions } = useAccessCheckout({ + baseUrl: 'https://npe.access.worldpay.com', + checkoutId: 'identity', + config: cardConfig, + }); const onLayout = () => { - initialiseCardValidation() + initialiseValidation() .then(() => { console.info('Card Validation successfully initialised'); }) @@ -120,21 +119,14 @@ export default function CardFlow() { }); }; - function generateSession() { + function createSession() { const sessionTypes = generateCardAndCvcSessions ? [CARD, CVC] : [CARD]; setShowSpinner(true); setIsEditable(false); setSubmitBtnEnabled(false); - const sessionGenerationConfig: SessionGenerationConfig = { - panId: 'panInput', - expiryDateId: 'expiryDateInput', - cvcId: 'cvcInput', - }; - - accessCheckout - .generateSessions(sessionGenerationConfig, sessionTypes) + generateSessions(sessionTypes) .then((sessions: Sessions) => { console.info('Successfully generated session(s)'); @@ -219,7 +211,7 @@ export default function CardFlow() { diff --git a/demo-app/src/cvc-flow/CvcFlow.tsx b/demo-app/src/cvc-flow/CvcFlow.tsx index 6c52f03..b420822 100644 --- a/demo-app/src/cvc-flow/CvcFlow.tsx +++ b/demo-app/src/cvc-flow/CvcFlow.tsx @@ -1,14 +1,13 @@ import React, { useState } from 'react'; import { Text } from 'react-native'; import { - AccessCheckout, CVC, - CvcOnlyValidationConfig, + CvcOnlyConfig, CvcOnlyValidationEventListener, Sessions, - useCvcOnlyValidation, + useAccessCheckout, + CvcValidationConfig, } from '../../../access-checkout-react-native-sdk/src'; -import type SessionGenerationConfig from '../../../access-checkout-react-native-sdk/src/session/SessionGenerationConfig'; import styles from '../card-flow/style.js'; import CvcField from '../common/CvcField'; import ErrorView from '../common/ErrorView'; @@ -30,15 +29,6 @@ export default function CvcFlow() { const [error, setError] = useState(); - const accessCheckout = new AccessCheckout({ - baseUrl: 'https://npe.access.worldpay.com', - merchantId: 'identity', - }); - - const cvcOnlyValidationConfig = new CvcOnlyValidationConfig({ - cvcId: 'cvcInput', - }); - const cvcOnlyValidationEventListener: CvcOnlyValidationEventListener = { onCvcValidChanged(isValid: boolean): void { setCvcIsValid(isValid); @@ -52,14 +42,23 @@ export default function CvcFlow() { }, }; - const { initialiseCvcOnlyValidation } = useCvcOnlyValidation( - accessCheckout, - cvcOnlyValidationConfig, - cvcOnlyValidationEventListener - ); + const validationConfig = new CvcValidationConfig({ + validationListener: cvcOnlyValidationEventListener, + }); + + const cvcValidationConfig = new CvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: validationConfig, + }); + + const { initialiseValidation, generateSessions } = useAccessCheckout({ + baseUrl: 'https://npe.access.worldpay.com', + checkoutId: 'identity', + config: cvcValidationConfig, + }); const onLayout = () => { - initialiseCvcOnlyValidation() + initialiseValidation() .then(() => { console.info('Cvc Only Validation successfully initialised'); }) @@ -68,18 +67,11 @@ export default function CvcFlow() { }); }; - function generateSession() { - const sessionTypes = [CVC]; - + function createSession() { setShowSpinner(true); setIsEditable(false); - const sessionGenerationConfig: SessionGenerationConfig = { - cvcId: 'cvcInput', - }; - - accessCheckout - .generateSessions(sessionGenerationConfig, sessionTypes) + generateSessions([CVC]) .then((sessions: Sessions) => { console.info('Successfully generated session(s)'); @@ -130,7 +122,7 @@ export default function CvcFlow() { From 9f45362780aec7fa8a57f0841b1fc5e40f9d682a Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Fri, 12 Jan 2024 13:57:27 +0000 Subject: [PATCH 16/26] US1764971: Clean up --- .../test/hooks/useAccessCheckout.spec.ts | 4 ++-- .../test/hooks/useCardValidation.spec.ts | 2 +- .../test/hooks/useCvcOnlyValidation.spec.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts b/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts index 0282bb8..849c338 100644 --- a/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts @@ -10,10 +10,10 @@ import { CVC, CvcOnlyConfig, type CvcOnlyValidationEventListener, + CvcValidationConfig, + CardValidationConfig, } from '../../src'; import { isArray, isFunction } from '../test-utils'; -import { CardValidationConfig } from '../../src/validation/CardValidationConfig'; -import { CvcValidationConfig } from '../../src/validation/CvcValidationConfig'; import { renderHook, type RenderHookResult, diff --git a/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts index 6e23c19..3d6bbb9 100644 --- a/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts @@ -3,6 +3,7 @@ import { AccessCheckout, CardConfig, CardValidationEventListener, + CardValidationConfig, } from '../../src'; import { useCardValidationEventListener, @@ -13,7 +14,6 @@ import { nativeEventSubscriptionMock, } from '../__mocks__/react-native'; import { isArray, isFunction } from '../test-utils'; -import { CardValidationConfig } from '../../src/validation/CardValidationConfig'; // eslint-disable-next-line @typescript-eslint/no-explicit-any let useEffectCleanUpFunction: any; diff --git a/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts index c172517..650ebea 100644 --- a/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts @@ -3,6 +3,7 @@ import { AccessCheckout, CvcOnlyConfig, CvcOnlyValidationEventListener, + CvcValidationConfig, } from '../../src'; import { useCvcOnlyValidation, @@ -13,7 +14,6 @@ import { nativeEventSubscriptionMock, } from '../__mocks__/react-native'; import { isArray, isFunction } from '../test-utils'; -import { CvcValidationConfig } from '../../src/validation/CvcValidationConfig'; // eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any let useEffectCleanUpFunction: any; From da7549be4880b636e45fd5bce25f6a49c56b643f Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Mon, 15 Jan 2024 08:29:09 +0000 Subject: [PATCH 17/26] US1764971: Re-build lib files --- .../lib/commonjs/ui/AccessCheckoutTextInput.js | 6 ++---- .../lib/commonjs/ui/AccessCheckoutTextInput.js.map | 2 +- .../lib/module/ui/AccessCheckoutTextInput.js | 6 ++---- .../lib/module/ui/AccessCheckoutTextInput.js.map | 2 +- .../lib/typescript/ui/AccessCheckoutTextInput.d.ts | 4 +--- 5 files changed, 7 insertions(+), 13 deletions(-) diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js index 7c0b49a..c4825bb 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js @@ -22,8 +22,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * textColor: only applies to input text. * fontFamily: applies to both placeholder text and input text. * fontSize:applies to both placeholder text and input text. - * fontStyle:applies to both placeholder text and input text. - * fontWeight:applies to both placeholder text and input text. */ /** @@ -40,7 +38,7 @@ const AccessCheckoutTextInput = props => { editable } = props; const { - textColor, + color, fontFamily, fontSize, ...otherStyles @@ -58,7 +56,7 @@ const AccessCheckoutTextInput = props => { fontFamily, fontSize }, - textColor: textColor, + color: color, editable: editable })); }; diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map index 53a8a3c..c4fd98b 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map @@ -1 +1 @@ -{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","textColor","fontFamily","fontSize","otherStyles","StyleSheet","flatten","createElement","View","flex","font","_default","exports"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type StyleProp,\n StyleSheet,\n type TextStyle,\n View,\n type ViewStyle,\n} from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n * fontStyle:applies to both placeholder text and input text.\n * fontWeight:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n textColor?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n textColor?: ColorValue;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { textColor, fontFamily, fontSize, ...otherStyles } =\n StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOsB,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMG,0BAA0B,GAC9B,IAAAC,mCAAsB,EACpB,yBACF,CAAC;AACH,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,SAAS;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GACvDC,uBAAU,CAACC,OAAO,CAAC,CAACR,KAAK,CAAC,CAAC;EAC7B,oBACEb,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACnB,YAAA,CAAAoB,IAAI;IAACV,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBnB,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACf,0BAA0B;IACzBI,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAEW,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBV,WAAW,EAAEA,WAAY;IACzBW,IAAI,EAAE;MACJR,UAAU;MACVC;IACF,CAAE;IACFF,SAAS,EAAEA,SAAU;IACrBD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAAC,IAAAW,QAAA,GAAAC,OAAA,CAAArB,OAAA,GAEaG,uBAAuB"} \ No newline at end of file +{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","otherStyles","StyleSheet","flatten","createElement","View","flex","font","_default","exports"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type StyleProp,\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([\n style,\n ]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMsB,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMG,0BAA0B,GAC9B,IAAAC,mCAAsB,EACpB,yBACF,CAAC;AACH,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GAAGC,uBAAU,CAACC,OAAO,CAAC,CACzER,KAAK,CACN,CAAC;EACF,oBACEb,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACnB,YAAA,CAAAoB,IAAI;IAACV,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBnB,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACf,0BAA0B;IACzBI,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAEW,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBV,WAAW,EAAEA,WAAY;IACzBW,IAAI,EAAE;MACJR,UAAU;MACVC;IACF,CAAE;IACFF,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAAC,IAAAW,QAAA,GAAAC,OAAA,CAAArB,OAAA,GAEaG,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js index f390b6e..48c0453 100644 --- a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js @@ -16,8 +16,6 @@ import { requireNativeComponent, StyleSheet, View } from 'react-native'; * textColor: only applies to input text. * fontFamily: applies to both placeholder text and input text. * fontSize:applies to both placeholder text and input text. - * fontStyle:applies to both placeholder text and input text. - * fontWeight:applies to both placeholder text and input text. */ /** @@ -34,7 +32,7 @@ const AccessCheckoutTextInput = props => { editable } = props; const { - textColor, + color, fontFamily, fontSize, ...otherStyles @@ -52,7 +50,7 @@ const AccessCheckoutTextInput = props => { fontFamily, fontSize }, - textColor: textColor, + color: color, editable: editable })); }; diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map index 6d3e62d..3e8de71 100644 --- a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map @@ -1 +1 @@ -{"version":3,"names":["React","requireNativeComponent","StyleSheet","View","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","textColor","fontFamily","fontSize","otherStyles","flatten","createElement","flex","font"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type StyleProp,\n StyleSheet,\n type TextStyle,\n View,\n type ViewStyle,\n} from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n * fontStyle:applies to both placeholder text and input text.\n * fontWeight:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n textColor?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n textColor?: ColorValue;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { textColor, fontFamily, fontSize, ...otherStyles } =\n StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,sBAAsB,EAEtBC,UAAU,EAEVC,IAAI,QAEC,cAAc;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMC,0BAA0B,GAC9BH,sBAAsB,CACpB,yBACF,CAAC;AACH,MAAMI,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,SAAS;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GACvDb,UAAU,CAACc,OAAO,CAAC,CAACP,KAAK,CAAC,CAAC;EAC7B,oBACET,KAAA,CAAAiB,aAAA,CAACd,IAAI;IAACM,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBf,KAAA,CAAAiB,aAAA,CAACb,0BAA0B;IACzBG,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAES,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBR,WAAW,EAAEA,WAAY;IACzBS,IAAI,EAAE;MACJN,UAAU;MACVC;IACF,CAAE;IACFF,SAAS,EAAEA,SAAU;IACrBD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAED,eAAeN,uBAAuB"} \ No newline at end of file +{"version":3,"names":["React","requireNativeComponent","StyleSheet","View","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","otherStyles","flatten","createElement","flex","font"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type StyleProp,\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([\n style,\n ]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,sBAAsB,EAEtBC,UAAU,EACVC,IAAI,QAEC,cAAc;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMC,0BAA0B,GAC9BH,sBAAsB,CACpB,yBACF,CAAC;AACH,MAAMI,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GAAGb,UAAU,CAACc,OAAO,CAAC,CACzEP,KAAK,CACN,CAAC;EACF,oBACET,KAAA,CAAAiB,aAAA,CAACd,IAAI;IAACM,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBf,KAAA,CAAAiB,aAAA,CAACb,0BAA0B;IACzBG,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAES,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBR,WAAW,EAAEA,WAAY;IACzBS,IAAI,EAAE;MACJN,UAAU;MACVC;IACF,CAAE;IACFF,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAED,eAAeN,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts b/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts index b529a44..db3846e 100644 --- a/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts @@ -22,11 +22,9 @@ interface AccessCheckoutTextInputProps { * textColor: only applies to input text. * fontFamily: applies to both placeholder text and input text. * fontSize:applies to both placeholder text and input text. - * fontStyle:applies to both placeholder text and input text. - * fontWeight:applies to both placeholder text and input text. */ interface AccessCheckoutTextInputStyle extends ViewStyle { - textColor?: ColorValue; + color?: ColorValue; fontFamily?: string; fontSize?: number; } From 6e5d26683acf69fb4857a1bd603c7a93f895ba06 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Mon, 15 Jan 2024 08:56:49 +0000 Subject: [PATCH 18/26] US1764971: Re-build dependency files to fix an error caused when installing dependencies --- .../project.pbxproj | 102 +- .../lib/commonjs/AccessCheckout.js | 4 +- .../lib/commonjs/AccessCheckout.js.map | 2 +- .../lib/commonjs/config/CardConfig.js | 4 +- .../lib/commonjs/config/CvcOnlyConfig.js | 4 +- .../lib/commonjs/session/SessionType.js | 4 +- .../validation/CardValidationConfig.js | 4 +- .../validation/CvcValidationConfig.js | 4 +- .../lib/module/AccessCheckout.js | 4 +- .../lib/module/config/CardConfig.js | 4 +- .../lib/module/config/CvcOnlyConfig.js | 4 +- .../lib/module/session/SessionType.js | 4 +- .../module/validation/CardValidationConfig.js | 4 +- .../module/validation/CvcValidationConfig.js | 4 +- .../package-lock.json | 12308 +++++++++++----- access-checkout-react-native-sdk/package.json | 6 +- 16 files changed, 8616 insertions(+), 3850 deletions(-) diff --git a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj index 16f52ce..81afd06 100644 --- a/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj +++ b/access-checkout-react-native-sdk/ios/AccessCheckoutReactNative.xcodeproj/project.pbxproj @@ -7,8 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 1CC8928EBC7BA5C6989817C6 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 973FA82098C3170A2141C869 /* Pods_AccessCheckoutReactNativeUnitTests.framework */; }; - 3C0D48D587E87DACB3E53576 /* Pods_AccessCheckoutReactNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EA125B27E2E84EB311DAA1B /* Pods_AccessCheckoutReactNative.framework */; }; 46D3A9632B3447AE0056016D /* SessionGenerationTestUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D3A9622B3447AE0056016D /* SessionGenerationTestUIViewController.swift */; }; 46D3A9652B34494B0056016D /* SessionGenerationTest.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46D3A9642B34494B0056016D /* SessionGenerationTest.storyboard */; }; 46D3A9682B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46D3A9672B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift */; }; @@ -49,6 +47,8 @@ 51D03E9C27A8611D009781EB /* CardValidationTest.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 51D03E9B27A8611D009781EB /* CardValidationTest.storyboard */; }; 51D03EBC27A8658B009781EB /* CardValidationTestUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51D03EBB27A8658B009781EB /* CardValidationTestUIViewController.swift */; }; 64ADC9392816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64ADC9382816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift */; }; + 73C5BACCFF4D7E62A00D43D3 /* Pods_AccessCheckoutReactNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EC909E2384C1C3F6C902F7D /* Pods_AccessCheckoutReactNative.framework */; }; + B992525A1622EE868830F720 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E673532F5581758BAAC54B89 /* Pods_AccessCheckoutReactNativeUnitTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -69,7 +69,8 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 15BE4712608F8E988DB45B98 /* Pods-AccessCheckoutReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.debug.xcconfig"; sourceTree = ""; }; + 0CAB15C0F73790190291BAD5 /* Pods-AccessCheckoutReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.debug.xcconfig"; sourceTree = ""; }; + 0F4E0D504060610D97F4C1F2 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; sourceTree = ""; }; 46D3A9622B3447AE0056016D /* SessionGenerationTestUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionGenerationTestUIViewController.swift; sourceTree = ""; }; 46D3A9642B34494B0056016D /* SessionGenerationTest.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SessionGenerationTest.storyboard; sourceTree = ""; }; 46D3A9672B3461030056016D /* AccessCheckoutReactNativeTestImplementation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessCheckoutReactNativeTestImplementation.swift; sourceTree = ""; }; @@ -114,12 +115,11 @@ 51D03E8027A8601B009781EB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 51D03E9B27A8611D009781EB /* CardValidationTest.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CardValidationTest.storyboard; sourceTree = ""; }; 51D03EBB27A8658B009781EB /* CardValidationTestUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardValidationTestUIViewController.swift; sourceTree = ""; }; - 60352FB6B516E97491CD890B /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig"; sourceTree = ""; }; + 5EC909E2384C1C3F6C902F7D /* Pods_AccessCheckoutReactNative.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNative.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 64ADC9382816E1510045BA58 /* AccessCheckoutReactNativeSessionAcceptanceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccessCheckoutReactNativeSessionAcceptanceTests.swift; sourceTree = ""; }; - 973FA82098C3170A2141C869 /* Pods_AccessCheckoutReactNativeUnitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNativeUnitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9EA125B27E2E84EB311DAA1B /* Pods_AccessCheckoutReactNative.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNative.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A52DA71C26BDE615849C74B7 /* Pods-AccessCheckoutReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.release.xcconfig"; sourceTree = ""; }; - E43A9F2DDFBFE934BFCDB703 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; sourceTree = ""; }; + B75286E22315FE2FFBAD12AB /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig"; sourceTree = ""; }; + E477C2239E194152C52F38B4 /* Pods-AccessCheckoutReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AccessCheckoutReactNative.release.xcconfig"; path = "Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative.release.xcconfig"; sourceTree = ""; }; + E673532F5581758BAAC54B89 /* Pods_AccessCheckoutReactNativeUnitTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AccessCheckoutReactNativeUnitTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -127,7 +127,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3C0D48D587E87DACB3E53576 /* Pods_AccessCheckoutReactNative.framework in Frameworks */, + 73C5BACCFF4D7E62A00D43D3 /* Pods_AccessCheckoutReactNative.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -136,7 +136,7 @@ buildActionMask = 2147483647; files = ( 516A9F612757D3B800E9B00E /* AccessCheckoutReactNative.framework in Frameworks */, - 1CC8928EBC7BA5C6989817C6 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */, + B992525A1622EE868830F720 /* Pods_AccessCheckoutReactNativeUnitTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -150,22 +150,13 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 02AADC24B98CA8C53FB1C1E4 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 9EA125B27E2E84EB311DAA1B /* Pods_AccessCheckoutReactNative.framework */, - 973FA82098C3170A2141C869 /* Pods_AccessCheckoutReactNativeUnitTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 0B03ABF5587A3A533DCAD4DF /* Pods */ = { isa = PBXGroup; children = ( - 15BE4712608F8E988DB45B98 /* Pods-AccessCheckoutReactNative.debug.xcconfig */, - A52DA71C26BDE615849C74B7 /* Pods-AccessCheckoutReactNative.release.xcconfig */, - E43A9F2DDFBFE934BFCDB703 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */, - 60352FB6B516E97491CD890B /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */, + 0CAB15C0F73790190291BAD5 /* Pods-AccessCheckoutReactNative.debug.xcconfig */, + E477C2239E194152C52F38B4 /* Pods-AccessCheckoutReactNative.release.xcconfig */, + B75286E22315FE2FFBAD12AB /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */, + 0F4E0D504060610D97F4C1F2 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -187,7 +178,7 @@ 51D03E6727A85FBA009781EB /* AccessCheckoutReactNativeUnitTestsApp */, 516A9F582757D3B800E9B00E /* Products */, 0B03ABF5587A3A533DCAD4DF /* Pods */, - 02AADC24B98CA8C53FB1C1E4 /* Frameworks */, + BF7EC299304792913C9DCC8B /* Frameworks */, ); sourceTree = ""; }; @@ -303,6 +294,15 @@ path = AccessCheckoutReactNativeUnitTestsApp; sourceTree = ""; }; + BF7EC299304792913C9DCC8B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5EC909E2384C1C3F6C902F7D /* Pods_AccessCheckoutReactNative.framework */, + E673532F5581758BAAC54B89 /* Pods_AccessCheckoutReactNativeUnitTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -321,12 +321,12 @@ isa = PBXNativeTarget; buildConfigurationList = 516A9F6B2757D3B800E9B00E /* Build configuration list for PBXNativeTarget "AccessCheckoutReactNative" */; buildPhases = ( - 66EB6E8DF9509768BE5ABD93 /* [CP] Check Pods Manifest.lock */, + 56D9D7010C55496B513D0145 /* [CP] Check Pods Manifest.lock */, 516A9F522757D3B800E9B00E /* Headers */, 516A9F532757D3B800E9B00E /* Sources */, 516A9F542757D3B800E9B00E /* Frameworks */, 516A9F552757D3B800E9B00E /* Resources */, - CD3F96AD3EA7B44F1C952171 /* [CP] Copy Pods Resources */, + E60407863366B6070048DC96 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -341,12 +341,12 @@ isa = PBXNativeTarget; buildConfigurationList = 516A9F6E2757D3B800E9B00E /* Build configuration list for PBXNativeTarget "AccessCheckoutReactNativeUnitTests" */; buildPhases = ( - 6BDB455C4DEEB4CDDADAB492 /* [CP] Check Pods Manifest.lock */, + FE858CC61B34F6EB3932177A /* [CP] Check Pods Manifest.lock */, 516A9F5C2757D3B800E9B00E /* Sources */, 516A9F5D2757D3B800E9B00E /* Frameworks */, 516A9F5E2757D3B800E9B00E /* Resources */, - 43638F515446F3561A5CEF56 /* [CP] Embed Pods Frameworks */, - EDBFAF282AC052247DFD40E0 /* [CP] Copy Pods Resources */, + 38F89E6325612FA607736717 /* [CP] Embed Pods Frameworks */, + B35099D8AD80C84F3BD51A03 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -451,7 +451,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 43638F515446F3561A5CEF56 /* [CP] Embed Pods Frameworks */ = { + 38F89E6325612FA607736717 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -468,7 +468,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 66EB6E8DF9509768BE5ABD93 /* [CP] Check Pods Manifest.lock */ = { + 56D9D7010C55496B513D0145 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -490,29 +490,24 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 6BDB455C4DEEB4CDDADAB492 /* [CP] Check Pods Manifest.lock */ = { + B35099D8AD80C84F3BD51A03 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-AccessCheckoutReactNativeUnitTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - CD3F96AD3EA7B44F1C952171 /* [CP] Copy Pods Resources */ = { + E60407863366B6070048DC96 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -529,21 +524,26 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNative/Pods-AccessCheckoutReactNative-resources.sh\"\n"; showEnvVarsInLog = 0; }; - EDBFAF282AC052247DFD40E0 /* [CP] Copy Pods Resources */ = { + FE858CC61B34F6EB3932177A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-AccessCheckoutReactNativeUnitTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AccessCheckoutReactNativeUnitTests/Pods-AccessCheckoutReactNativeUnitTests-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -779,7 +779,7 @@ }; 516A9F6C2757D3B800E9B00E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 15BE4712608F8E988DB45B98 /* Pods-AccessCheckoutReactNative.debug.xcconfig */; + baseConfigurationReference = 0CAB15C0F73790190291BAD5 /* Pods-AccessCheckoutReactNative.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; @@ -807,7 +807,7 @@ }; 516A9F6D2757D3B800E9B00E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A52DA71C26BDE615849C74B7 /* Pods-AccessCheckoutReactNative.release.xcconfig */; + baseConfigurationReference = E477C2239E194152C52F38B4 /* Pods-AccessCheckoutReactNative.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; @@ -834,7 +834,7 @@ }; 516A9F6F2757D3B800E9B00E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E43A9F2DDFBFE934BFCDB703 /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */; + baseConfigurationReference = B75286E22315FE2FFBAD12AB /* Pods-AccessCheckoutReactNativeUnitTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CODE_SIGN_STYLE = Automatic; @@ -855,7 +855,7 @@ }; 516A9F702757D3B800E9B00E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 60352FB6B516E97491CD890B /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */; + baseConfigurationReference = 0F4E0D504060610D97F4C1F2 /* Pods-AccessCheckoutReactNativeUnitTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; CODE_SIGN_STYLE = Automatic; diff --git a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js index c39881c..fc6a375 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js +++ b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js @@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { exports.default = void 0; var _AccessCheckoutReactNative = require("./AccessCheckoutReactNative"); function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } class AccessCheckout { constructor({ baseUrl, diff --git a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map index 79f1e3b..9f7adb3 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAczD,MAAMU,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAA1B,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACyB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAAvB,eAAA,CA3FoBuB,cAAc,6BAES,mCAAmC;AAAAvB,eAAA,CAF1DuB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAczD,MAAMW,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAxB,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACuB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAArB,eAAA,CA3FoBqB,cAAc,6BAES,mCAAmC;AAAArB,eAAA,CAF1DqB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js b/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js index 91bd2ac..52e411a 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js @@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } class CardConfig { constructor({ panId, diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js b/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js index a026339..0bc5c37 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js @@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } class CvcOnlyConfig { constructor({ cvcId, diff --git a/access-checkout-react-native-sdk/lib/commonjs/session/SessionType.js b/access-checkout-react-native-sdk/lib/commonjs/session/SessionType.js index 8471500..3f99c37 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/session/SessionType.js +++ b/access-checkout-react-native-sdk/lib/commonjs/session/SessionType.js @@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = exports.CVC = exports.CARD = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } class SessionType {} exports.default = SessionType; _defineProperty(SessionType, "CARD", 'CARD'); diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js index c11503c..b7f72b8 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js @@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", { }); exports.CardValidationConfig = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } class CardValidationConfig { constructor({ validationListener, diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js index 1ba9512..42edbb0 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js @@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", { }); exports.CvcValidationConfig = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } class CvcValidationConfig { constructor({ validationListener diff --git a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js index 2059b18..f321247 100644 --- a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js +++ b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js @@ -1,6 +1,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } import { AccessCheckoutReactNative } from './AccessCheckoutReactNative'; export default class AccessCheckout { constructor({ diff --git a/access-checkout-react-native-sdk/lib/module/config/CardConfig.js b/access-checkout-react-native-sdk/lib/module/config/CardConfig.js index 5a1e44d..60eb607 100644 --- a/access-checkout-react-native-sdk/lib/module/config/CardConfig.js +++ b/access-checkout-react-native-sdk/lib/module/config/CardConfig.js @@ -1,6 +1,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } export default class CardConfig { constructor({ panId, diff --git a/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js b/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js index c4698e8..94af14d 100644 --- a/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js +++ b/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js @@ -1,6 +1,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } export default class CvcOnlyConfig { constructor({ cvcId, diff --git a/access-checkout-react-native-sdk/lib/module/session/SessionType.js b/access-checkout-react-native-sdk/lib/module/session/SessionType.js index 38e9cfe..9abba90 100644 --- a/access-checkout-react-native-sdk/lib/module/session/SessionType.js +++ b/access-checkout-react-native-sdk/lib/module/session/SessionType.js @@ -1,6 +1,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } export default class SessionType {} _defineProperty(SessionType, "CARD", 'CARD'); _defineProperty(SessionType, "CVC", 'CVC'); diff --git a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js b/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js index 4646778..8afc85b 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js @@ -1,6 +1,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } export class CardValidationConfig { constructor({ validationListener, diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js b/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js index f6da987..b263d4e 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js @@ -1,6 +1,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } export class CvcValidationConfig { constructor({ validationListener diff --git a/access-checkout-react-native-sdk/package-lock.json b/access-checkout-react-native-sdk/package-lock.json index 388eb91..fcc6afd 100644 --- a/access-checkout-react-native-sdk/package-lock.json +++ b/access-checkout-react-native-sdk/package-lock.json @@ -26,20 +26,32 @@ "jest-html-reporter": "^3.10.2", "jest-junit": "^13.0.0", "prettier": "^2.5.0", + "react": "^18.1.0", + "react-native": "^0.70.0", "react-native-builder-bob": "^0.18.2", + "react-test-renderer": "18.1.0", "ts-jest": "^29.1.1", "typescript": "4.8.4" }, "peerDependencies": { "react": ">=18.1.0", - "react-native": ">=0.70.0", - "react-test-renderer": "18.1.0" + "react-native": ">=0.70.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -49,96 +61,43 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -154,11 +113,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, "dependencies": { - "@babel/types": "^7.23.3", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -171,6 +131,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -182,6 +143,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -190,13 +152,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -205,16 +168,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz", + "integrity": "sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -230,6 +194,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -243,9 +208,10 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -261,6 +227,7 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -269,6 +236,7 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -281,6 +249,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -292,6 +261,7 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, "dependencies": { "@babel/types": "^7.23.0" }, @@ -303,6 +273,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -314,6 +285,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -332,6 +304,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -343,6 +316,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -351,6 +325,7 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -367,6 +342,7 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -383,6 +359,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -394,6 +371,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -405,6 +383,7 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -413,9 +392,10 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -424,14 +404,16 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -440,6 +422,7 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -450,22 +433,24 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", + "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -475,66 +460,11 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -546,6 +476,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -560,6 +491,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -573,9 +505,10 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -592,7 +525,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.20.2", @@ -611,6 +544,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -626,7 +560,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz", "integrity": "sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-default-from": "^7.23.3" @@ -643,7 +577,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -660,7 +594,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", - "peer": true, + "dev": true, "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -680,7 +614,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -697,7 +631,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -714,6 +648,7 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, "engines": { "node": ">=6.9.0" }, @@ -725,6 +660,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -748,6 +684,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -759,6 +696,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -773,6 +711,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -784,7 +723,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz", "integrity": "sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -799,6 +738,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -810,6 +750,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -824,6 +765,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -838,6 +780,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -852,6 +795,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -863,6 +807,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -871,11 +816,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", - "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -888,6 +834,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -899,6 +846,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -910,6 +858,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -921,6 +870,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -932,6 +882,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -943,6 +894,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -954,6 +906,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -968,6 +921,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -979,11 +933,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -996,6 +951,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1011,6 +967,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1022,9 +979,10 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz", - "integrity": "sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz", + "integrity": "sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -1042,6 +1000,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1058,6 +1017,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1069,9 +1029,10 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz", - "integrity": "sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1086,6 +1047,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1098,9 +1060,10 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz", - "integrity": "sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1114,15 +1077,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", @@ -1139,6 +1102,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -1154,6 +1118,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1168,6 +1133,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1183,6 +1149,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1194,9 +1161,10 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz", - "integrity": "sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1212,6 +1180,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1224,9 +1193,10 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz", - "integrity": "sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1242,6 +1212,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-flow": "^7.23.3" @@ -1254,11 +1225,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1271,6 +1244,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -1284,9 +1258,10 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz", - "integrity": "sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1302,6 +1277,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1313,9 +1289,10 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz", - "integrity": "sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1331,6 +1308,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1345,6 +1323,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1360,6 +1339,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -1376,6 +1356,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -1393,6 +1374,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1408,6 +1390,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1423,6 +1406,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1434,9 +1418,10 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz", - "integrity": "sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1449,9 +1434,10 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz", - "integrity": "sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1464,9 +1450,10 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz", - "integrity": "sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -1485,6 +1472,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" @@ -1497,9 +1485,10 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz", - "integrity": "sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1512,9 +1501,10 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz", - "integrity": "sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1531,6 +1521,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1545,6 +1536,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1557,9 +1549,10 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz", - "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -1577,6 +1570,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1588,11 +1582,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz", - "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1602,15 +1597,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", - "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" }, "engines": { "node": ">=6.9.0" @@ -1620,12 +1616,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz", - "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.16.0" + "@babel/plugin-transform-react-jsx": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1638,7 +1634,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1653,7 +1649,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1665,13 +1661,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz", - "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1684,6 +1680,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -1699,6 +1696,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1710,16 +1708,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", - "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", - "peer": true, + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz", + "integrity": "sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==", + "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "semver": "^6.3.1" }, "engines": { @@ -1733,6 +1731,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1747,6 +1746,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1762,6 +1762,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1776,6 +1777,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1790,6 +1792,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1801,13 +1804,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", - "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1820,6 +1825,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1834,6 +1840,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1849,6 +1856,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1864,6 +1872,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1876,17 +1885,18 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.8.tgz", + "integrity": "sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA==", + "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -1907,25 +1917,25 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.7", "@babel/plugin-transform-async-to-generator": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", "@babel/plugin-transform-computed-properties": "^7.23.3", "@babel/plugin-transform-destructuring": "^7.23.3", "@babel/plugin-transform-dotall-regex": "^7.23.3", "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", "@babel/plugin-transform-member-expression-literals": "^7.23.3", "@babel/plugin-transform-modules-amd": "^7.23.3", "@babel/plugin-transform-modules-commonjs": "^7.23.3", @@ -1933,15 +1943,15 @@ "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", "@babel/plugin-transform-parameters": "^7.23.3", "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", "@babel/plugin-transform-property-literals": "^7.23.3", "@babel/plugin-transform-regenerator": "^7.23.3", "@babel/plugin-transform-reserved-words": "^7.23.3", @@ -1955,9 +1965,9 @@ "@babel/plugin-transform-unicode-regex": "^7.23.3", "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1969,13 +1979,14 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.0.tgz", - "integrity": "sha512-e5NE1EoPMpoHFkyFkMSj2h9tu7OolARcUHki8mnBv4NiFK9so+UrhbvT9mV99tMJOUEx8BOj67T6dXvGcTeYeQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-flow-strip-types": "^7.16.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1988,6 +1999,7 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1998,17 +2010,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.0.tgz", - "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-react-jsx-development": "^7.16.0", - "@babel/plugin-transform-react-pure-annotations": "^7.16.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -2018,13 +2030,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", - "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.16.1" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -2034,15 +2049,15 @@ } }, "node_modules/@babel/register": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", - "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", - "peer": true, + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", + "dev": true, "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.5", + "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "engines": { @@ -2056,7 +2071,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "peer": true, + "dev": true, "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -2069,7 +2084,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver" } @@ -2078,7 +2093,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "peer": true, + "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2087,23 +2102,32 @@ "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true }, "node_modules/@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", + "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", + "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, "node_modules/@babel/template": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -2114,19 +2138,20 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2134,11 +2159,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, @@ -2152,24 +2178,51 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", - "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.0.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/argparse": { @@ -2179,9 +2232,9 @@ "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2193,31 +2246,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2230,15 +2258,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint/eslintrc/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -2251,39 +2270,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "peer": true + "dev": true }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "peer": true, + "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -2302,15 +2343,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -2337,6 +2369,76 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/core": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", @@ -2385,54 +2487,92 @@ } }, "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/core/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/@jest/create-cache-key-function": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", - "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", - "peer": true, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "@jest/types": "^27.5.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "peer": true, + "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -2448,11 +2588,81 @@ "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "peer": true, + "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, + "node_modules/@jest/create-cache-key-function/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/create-cache-key-function/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -2493,15 +2703,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/expect-utils/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/fake-timers": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", @@ -2577,6 +2778,64 @@ } } }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", @@ -2620,6 +2879,18 @@ "node": ">=10" } }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/reporters/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -2708,6 +2979,76 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", @@ -2725,24 +3066,96 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "engines": { + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { "node": ">=6.0.0" } }, @@ -2750,6 +3163,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -2757,12 +3171,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz", + "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==", + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2807,7 +3223,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.3.4.tgz", "integrity": "sha512-FxqouQ2UXErwqwU+tWDbMC7HxT8A+AzAaCE723H0SWjOxLPlkChp7P1QOEdOpnA7G/Ss6hl3uS9AWRVypP5kBg==", - "peer": true, + "dev": true, "dependencies": { "@react-native-community/cli-clean": "^9.2.1", "@react-native-community/cli-config": "^9.2.1", @@ -2838,7 +3254,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", - "peer": true, + "dev": true, "dependencies": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -2846,11 +3262,60 @@ "prompts": "^2.4.0" } }, + "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@react-native-community/cli-clean/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -2866,7 +3331,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -2884,7 +3349,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -2892,11 +3357,20 @@ "node": ">=6" } }, + "node_modules/@react-native-community/cli-clean/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-clean/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -2905,7 +3379,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "dependencies": { "path-key": "^2.0.0" }, @@ -2917,7 +3391,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -2926,7 +3400,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver" } @@ -2935,7 +3409,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -2947,16 +3421,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-clean/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2968,7 +3454,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", - "peer": true, + "dev": true, "dependencies": { "@react-native-community/cli-tools": "^9.2.1", "cosmiconfig": "^5.1.0", @@ -2981,7 +3467,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -2990,7 +3476,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==", - "peer": true, + "dev": true, "dependencies": { "serve-static": "^1.13.1" } @@ -2999,7 +3485,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==", - "peer": true, + "dev": true, "dependencies": { "@react-native-community/cli-config": "^9.2.1", "@react-native-community/cli-platform-ios": "^9.3.0", @@ -3023,16 +3509,65 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "peer": true, + "dev": true, "engines": { "node": ">=6" } }, + "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@react-native-community/cli-doctor/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -3048,7 +3583,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver" } @@ -3057,7 +3592,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3075,7 +3610,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -3083,11 +3618,20 @@ "node": ">=6" } }, + "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-doctor/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3096,7 +3640,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3108,7 +3652,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -3117,7 +3661,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3129,7 +3673,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3138,7 +3682,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "peer": true, + "dev": true, "dependencies": { "ansi-regex": "^4.1.0" }, @@ -3146,11 +3690,23 @@ "node": ">=6" } }, + "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-doctor/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3162,7 +3718,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.4.tgz", "integrity": "sha512-VqTPA7kknCXgtYlRf+sDWW4yxZ6Gtg1Ga+Rdrn1qSKuo09iJ8YKPoQYOu5nqbIYJQAEhorWQyo1VvNgd0wd49w==", - "peer": true, + "dev": true, "dependencies": { "@react-native-community/cli-platform-android": "^9.3.4", "@react-native-community/cli-tools": "^9.2.1", @@ -3171,42 +3727,161 @@ "ip": "^1.1.5" } }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.4.tgz", - "integrity": "sha512-BTKmTMYFuWtMqimFQJfhRyhIWw1m+5N5svR1S5+DqPcyFuSXrpNYDWNSFR8E105xUbFANmsCZZQh6n1WlwMpOA==", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "execa": "^1.0.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.3", - "logkitty": "^0.7.1", - "slash": "^3.0.0" - } - }, - "node_modules/@react-native-community/cli-platform-android/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4.8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.4.tgz", + "integrity": "sha512-BTKmTMYFuWtMqimFQJfhRyhIWw1m+5N5svR1S5+DqPcyFuSXrpNYDWNSFR8E105xUbFANmsCZZQh6n1WlwMpOA==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "logkitty": "^0.7.1", + "slash": "^3.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, "node_modules/@react-native-community/cli-platform-android/node_modules/execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3224,7 +3899,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -3232,11 +3907,20 @@ "node": ">=6" } }, + "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-platform-android/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3245,7 +3929,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3257,7 +3941,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -3266,7 +3950,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver" } @@ -3275,7 +3959,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3287,16 +3971,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-platform-android/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3308,7 +4004,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==", - "peer": true, + "dev": true, "dependencies": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -3317,11 +4013,60 @@ "ora": "^5.4.1" } }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@react-native-community/cli-platform-ios/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -3337,7 +4082,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3355,7 +4100,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -3363,11 +4108,20 @@ "node": ">=6" } }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-platform-ios/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3376,7 +4130,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3388,7 +4142,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -3397,7 +4151,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver" } @@ -3406,7 +4160,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3418,16 +4172,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-platform-ios/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3439,7 +4205,7 @@ "version": "9.3.3", "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.3.3.tgz", "integrity": "sha512-lPBw6XieNdj2AbWDN0Rc+jNOx8hBgSQyv0gUAm01qtJe4I9FjSMU6nOGTxMpWpICo6TYl/cmPGXOzbfpwxwtkQ==", - "peer": true, + "dev": true, "dependencies": { "@react-native-community/cli-server-api": "^9.2.1", "@react-native-community/cli-tools": "^9.2.1", @@ -3453,28 +4219,98 @@ "readline": "^1.3.0" } }, - "node_modules/@react-native-community/cli-server-api": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", - "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", - "peer": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "@react-native-community/cli-debugger-ui": "^9.0.0", - "@react-native-community/cli-tools": "^9.2.1", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.0", - "nocache": "^3.0.1", - "pretty-format": "^26.6.2", - "serve-static": "^1.13.1", - "ws": "^7.5.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { + "node_modules/@react-native-community/cli-plugin-metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", + "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", + "dev": true, + "dependencies": { + "@react-native-community/cli-debugger-ui": "^9.0.0", + "@react-native-community/cli-tools": "^9.2.1", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.0", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^7.5.1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, + "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -3490,16 +4326,74 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "peer": true, + "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, + "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@react-native-community/cli-server-api/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, + "dev": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -3510,11 +4404,50 @@ "node": ">= 10" } }, + "node_modules/@react-native-community/cli-server-api/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/@react-native-community/cli-server-api/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@react-native-community/cli-tools": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", - "peer": true, + "dev": true, "dependencies": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", @@ -3527,11 +4460,60 @@ "shell-quote": "^1.7.3" } }, + "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@react-native-community/cli-tools/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "peer": true, + "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3543,11 +4525,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@react-native-community/cli-tools/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-tools/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "peer": true, + "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -3558,26 +4549,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@react-native-community/cli-tools/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "peer": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@react-native-community/cli-tools/node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "peer": true, + "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -3588,20 +4564,81 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-types": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==", - "peer": true, + "dev": true, "dependencies": { "joi": "^17.2.1" } }, + "node_modules/@react-native-community/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@react-native-community/cli/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -3617,7 +4654,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver" } @@ -3626,7 +4663,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -3644,7 +4681,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -3652,11 +4689,20 @@ "node": ">=6" } }, + "node_modules/@react-native-community/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3665,7 +4711,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "dependencies": { "path-key": "^2.0.0" }, @@ -3677,7 +4723,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -3686,7 +4732,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "dependencies": { "shebang-regex": "^1.0.0" }, @@ -3698,16 +4744,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/@react-native-community/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3719,19 +4777,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==", - "peer": true + "dev": true }, "node_modules/@react-native/normalize-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==", - "peer": true + "dev": true }, "node_modules/@react-native/polyfills": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", - "peer": true + "dev": true }, "node_modules/@react-native/virtualized-lists": { "version": "0.72.8", @@ -3750,7 +4808,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "peer": true, + "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -3759,13 +4817,13 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "peer": true + "dev": true }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "peer": true + "dev": true }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -3813,38 +4871,6 @@ } } }, - "node_modules/@testing-library/react-native/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/react-native/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@testing-library/react-native/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -3859,9 +4885,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -3878,9 +4904,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -3896,14 +4922,16 @@ } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -3912,47 +4940,202 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "27.0.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz", - "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==", + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, "dependencies": { - "jest-diff": "^27.0.0", + "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" } }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@types/jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@types/jest/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@types/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/@types/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" + "version": "20.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.1.tgz", + "integrity": "sha512-DsXojJUES2M+FE8CpptJTKpg+r54moV9ZEncPstni1WHFmTcCzeFLnMFfyhCVS8XNOy/OQG+8lVxRLRrVHmV5A==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, "node_modules/@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", "dev": true }, "node_modules/@types/react": { - "version": "18.2.38", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz", - "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==", + "version": "18.2.47", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz", + "integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -3961,9 +5144,9 @@ } }, "node_modules/@types/react-native": { - "version": "0.72.7", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.7.tgz", - "integrity": "sha512-LvxJD7VINBiJVcY9UgUVcmPMPiKGO5jHjPM6JrchfP+z1zx0AENL6UOGng1ueaHTRROMTVxZRzO7WVi6DFrMyw==", + "version": "0.72.8", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.8.tgz", + "integrity": "sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==", "dev": true, "dependencies": { "@react-native/virtualized-lists": "^0.72.4", @@ -3971,9 +5154,15 @@ } }, "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true }, "node_modules/@types/stack-utils": { @@ -3983,32 +5172,35 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.31", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", - "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.5.0.tgz", - "integrity": "sha512-4bV6fulqbuaO9UMXU0Ia0o6z6if+kmMRW8rMRyfqXj/eGrZZRGedS4n0adeGNnjr8LKAM495hrQ7Tea52UWmQA==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "5.5.0", - "@typescript-eslint/scope-manager": "5.5.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -4061,62 +5253,16 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.5.0.tgz", - "integrity": "sha512-kjWeeVU+4lQ1SLYErRKV5yDXbWDPkpbzTUUlfAUifPYvpX0qZlrcCZ96/6oWxt3QxtK5WVhXz+KsnwW9cIW+3A==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.5.0", - "@typescript-eslint/types": "5.5.0", - "@typescript-eslint/typescript-estree": "5.5.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.5.0.tgz", - "integrity": "sha512-JsXBU+kgQOAgzUn2jPrLA+Rd0Y1dswOlX3hp8MuRO1hQDs6xgHtbCXEiAu7bz5hyVURxbXcA2draasMbNqrhmg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.5.0", - "@typescript-eslint/types": "5.5.0", - "@typescript-eslint/typescript-estree": "5.5.0", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4135,13 +5281,32 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.5.0.tgz", - "integrity": "sha512-0/r656RmRLo7CbN4Mdd+xZyPJ/fPCKhYdU6mnZx+8msAD8nJSP8EyCFkzbd6vNVZzZvWlMYrSNekqGrCBqFQhg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.5.0", - "@typescript-eslint/visitor-keys": "5.5.0" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4149,12 +5314,20 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.5.0.tgz", - "integrity": "sha512-OaYTqkW3GnuHxqsxxJ6KypIKd5Uw7bFiQJZRyNi1jbMJnK3Hc/DR4KwB6KJj6PBRkJJoaNwzMNv9vtTk87JhOg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4165,17 +5338,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.5.0.tgz", - "integrity": "sha512-pVn8btYUiYrjonhMAO0yG8lm7RApzy2L4RC7Td/mC/qFkyf6vRbGyZozoA94+w6D2Y2GRqpMoCWcwx/EUOzyoQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.5.0", - "@typescript-eslint/visitor-keys": "5.5.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -4224,14 +5397,73 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.5.0.tgz", - "integrity": "sha512-4GzJ1kRtsWzHhdM40tv0ZKHNSbkDhF0Woi/TDwVJX6UICwJItvP7ZTXbjTkCdrors7ww0sYe0t+cIKDAJwZ7Kw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.5.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4241,11 +5473,17 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "peer": true, + "dev": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -4257,13 +5495,13 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", "integrity": "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==", - "peer": true + "dev": true }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "peer": true, + "dev": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -4273,9 +5511,9 @@ } }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4326,7 +5564,7 @@ "version": "1.4.10", "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "peer": true + "dev": true }, "node_modules/ansi-escapes": { "version": "4.3.2", @@ -4347,7 +5585,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "peer": true, + "dev": true, "dependencies": { "colorette": "^1.0.7", "slice-ansi": "^2.0.0", @@ -4358,7 +5596,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "peer": true, + "dev": true, "engines": { "node": ">=6" } @@ -4367,7 +5605,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "peer": true, + "dev": true, "dependencies": { "ansi-regex": "^4.1.0" }, @@ -4379,28 +5617,28 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4413,12 +5651,13 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "peer": true + "dev": true }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -4436,13 +5675,13 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "peer": true + "dev": true }, "node_modules/ast-types": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "peer": true, + "dev": true, "dependencies": { "tslib": "^2.0.1" }, @@ -4450,17 +5689,11 @@ "node": ">=4" } }, - "node_modules/ast-types/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "peer": true - }, "node_modules/astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -4469,28 +5702,19 @@ "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "peer": true + "dev": true }, "node_modules/async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "peer": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } + "dev": true }, "node_modules/babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "peer": true, + "dev": true, "peerDependencies": { "@babel/core": "^7.0.0-0" } @@ -4516,6 +5740,76 @@ "@babel/core": "^7.8.0" } }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -4548,12 +5842,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "semver": "^6.3.1" }, "peerDependencies": { @@ -4561,11 +5856,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "core-js-compat": "^3.33.1" }, "peerDependencies": { @@ -4573,11 +5869,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", + "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.4.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4587,7 +5884,7 @@ "version": "7.0.0-beta.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "peer": true + "dev": true }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", @@ -4616,7 +5913,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "peer": true, + "dev": true, "dependencies": { "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.0.0", @@ -4669,12 +5966,14 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -4688,14 +5987,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "peer": true + ] }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "peer": true, + "dev": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -4706,6 +6004,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4715,6 +6014,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -4723,9 +6023,10 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, "funding": [ { "type": "opencollective", @@ -4741,9 +6042,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -4769,6 +6070,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "dependencies": { "node-int64": "^0.4.0" } @@ -4777,6 +6079,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "funding": [ { "type": "github", @@ -4791,7 +6094,6 @@ "url": "https://feross.org/support" } ], - "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -4800,13 +6102,14 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } @@ -4815,7 +6118,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "peer": true, + "dev": true, "dependencies": { "callsites": "^2.0.0" }, @@ -4827,7 +6130,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -4836,7 +6139,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "peer": true, + "dev": true, "dependencies": { "caller-callsite": "^2.0.0" }, @@ -4857,14 +6160,16 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001563", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", - "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==", + "version": "1.0.30001576", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", + "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -4881,18 +6186,17 @@ ] }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, "node_modules/char-regex": { @@ -4908,6 +6212,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -4937,7 +6242,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "peer": true, + "dev": true, "dependencies": { "restore-cursor": "^3.1.0" }, @@ -4946,10 +6251,10 @@ } }, "node_modules/cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "peer": true, + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, "engines": { "node": ">=6" }, @@ -4958,21 +6263,24 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "peer": true, + "dev": true, "engines": { "node": ">=0.8" } @@ -4981,7 +6289,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "peer": true, + "dev": true, "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -5008,38 +6316,37 @@ "dev": true }, "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/colorette": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "peer": true + "dev": true }, "node_modules/command-exists": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "peer": true + "dev": true }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "peer": true, + "dev": true, "engines": { "node": "^12.20.0 || >=14" } @@ -5048,13 +6355,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "peer": true + "dev": true }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "peer": true, + "dev": true, "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5066,7 +6373,7 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "peer": true, + "dev": true, "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -5084,7 +6391,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "dependencies": { "ms": "2.0.0" } @@ -5093,18 +6400,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "peer": true, + "dev": true, "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -5119,7 +6427,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "dependencies": { "ms": "2.0.0" } @@ -5128,19 +6436,21 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz", + "integrity": "sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==", + "dev": true, "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", @@ -5151,13 +6461,13 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "peer": true + "dev": true }, "node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "peer": true, + "dev": true, "dependencies": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", @@ -5168,11 +6478,24 @@ "node": ">=4" } }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cosmiconfig/node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "peer": true, + "dev": true, "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -5181,6 +6504,15 @@ "node": ">=4" } }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -5202,6 +6534,76 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5217,15 +6619,15 @@ } }, "node_modules/csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, "node_modules/dateformat": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.2.tgz", - "integrity": "sha1-mk30v/FYrC80vGN6vbFUcWB+Flk=", + "integrity": "sha512-EelsCzH0gMC2YmXuMeaZ3c6md1sUJQxyb1XXc4xaisi/K6qKukqZhKPrEQyRkdNIncgYyLoDTReq0nNyuKerTg==", "dev": true, "engines": { "node": "*" @@ -5235,12 +6637,13 @@ "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "peer": true + "dev": true }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -5257,16 +6660,24 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, "node_modules/deep-is": { "version": "0.1.4", @@ -5287,7 +6698,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "peer": true, + "dev": true, "dependencies": { "clone": "^1.0.2" }, @@ -5296,9 +6707,9 @@ } }, "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, "dependencies": { "globby": "^11.0.1", @@ -5321,13 +6732,13 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", - "peer": true + "dev": true }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } @@ -5336,7 +6747,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -5352,12 +6763,12 @@ } }, "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { @@ -5388,12 +6799,13 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "peer": true + "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.588", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz", - "integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==" + "version": "1.4.630", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.630.tgz", + "integrity": "sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg==", + "dev": true }, "node_modules/emittery": { "version": "0.13.1", @@ -5410,13 +6822,14 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } @@ -5425,36 +6838,16 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/enquirer/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" + "once": "^1.4.0" } }, "node_modules/envinfo": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", - "peer": true, + "dev": true, "bin": { "envinfo": "dist/cli.js" }, @@ -5466,6 +6859,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -5474,7 +6868,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "peer": true, + "dev": true, "dependencies": { "stackframe": "^1.3.4" } @@ -5483,7 +6877,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", - "peer": true, + "dev": true, "dependencies": { "accepts": "~1.3.7", "escape-html": "~1.0.3" @@ -5496,6 +6890,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, "engines": { "node": ">=6" } @@ -5504,60 +6899,61 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "peer": true + "dev": true }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", - "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", - "ajv": "^6.10.0", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.1.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.2.0", - "semver": "^7.2.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -5570,9 +6966,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -5582,15 +6978,15 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" }, "peerDependencies": { "eslint": ">=7.28.0", @@ -5603,58 +6999,83 @@ } }, "node_modules/eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "estraverse": "^4.1.1" }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=7.0.0" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/eslint/node_modules/escape-string-regexp": { @@ -5669,58 +7090,71 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10.13.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -5733,40 +7167,46 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/eslint/node_modules/lru-cache": { + "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, "node_modules/eslint/node_modules/type-fest": { @@ -5781,30 +7221,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/espree": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", - "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.6.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5814,9 +7252,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -5825,6 +7263,15 @@ "node": ">=0.10" } }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -5837,7 +7284,7 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -5846,10 +7293,20 @@ "node": ">=4.0" } }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5858,7 +7315,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.6" } @@ -5867,7 +7324,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "peer": true, + "dev": true, "engines": { "node": ">=6" } @@ -5895,15 +7352,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -5929,15 +7377,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expect/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5945,15 +7384,15 @@ "dev": true }, "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5963,7 +7402,19 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/fast-json-stable-stringify": { @@ -5975,13 +7426,13 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -5991,6 +7442,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, "dependencies": { "bser": "2.1.1" } @@ -6011,6 +7463,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6022,7 +7475,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "peer": true, + "dev": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -6040,7 +7493,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "dependencies": { "ms": "2.0.0" } @@ -6049,13 +7502,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "peer": true, + "dev": true, "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -6069,7 +7522,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "peer": true, + "dev": true, "dependencies": { "locate-path": "^3.0.0" }, @@ -6081,7 +7534,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "peer": true, + "dev": true, "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -6094,7 +7547,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "peer": true, + "dev": true, "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -6103,11 +7556,26 @@ "node": ">=6" } }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/find-cache-dir/node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "peer": true, + "dev": true, "dependencies": { "p-limit": "^2.0.0" }, @@ -6119,7 +7587,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -6128,7 +7596,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "peer": true, + "dev": true, "dependencies": { "find-up": "^3.0.0" }, @@ -6140,7 +7608,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver" } @@ -6149,6 +7617,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6158,12 +7627,13 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -6171,16 +7641,16 @@ } }, "node_modules/flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/flow-parser": { "version": "0.121.0", "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", - "peer": true, + "dev": true, "engines": { "node": ">=0.4.0" } @@ -6189,7 +7659,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.6" } @@ -6198,7 +7668,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "peer": true, + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -6211,12 +7681,14 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -6230,20 +7702,16 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -6252,6 +7720,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -6278,14 +7747,15 @@ } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -6297,36 +7767,37 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "engines": { "node": ">=4" } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -6339,38 +7810,47 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { - "node": ">= 0.4.0" + "node": ">=4" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, "node_modules/hermes-estree": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==", - "peer": true + "dev": true }, "node_modules/hermes-parser": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==", - "peer": true, + "dev": true, "dependencies": { "hermes-estree": "0.8.0" } @@ -6379,7 +7859,7 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", - "peer": true, + "dev": true, "dependencies": { "source-map": "^0.7.3" }, @@ -6391,7 +7871,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "peer": true, + "dev": true, "engines": { "node": ">= 8" } @@ -6406,7 +7886,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "peer": true, + "dev": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -6422,24 +7902,25 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } }, "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=8.12.0" + "node": ">=10.17.0" } }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, "funding": [ { "type": "github", @@ -6453,13 +7934,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "peer": true + ] }, "node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -6469,7 +7949,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", - "peer": true, + "dev": true, "bin": { "image-size": "bin/image-size.js" }, @@ -6478,14 +7958,26 @@ } }, "node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "peer": true, + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "engines": { "node": ">=4" } @@ -6512,7 +8004,8 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "engines": { "node": ">=0.8.19" } @@ -6529,7 +8022,8 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6538,12 +8032,14 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -6552,7 +8048,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "peer": true + "dev": true }, "node_modules/is-absolute": { "version": "1.0.0", @@ -6570,14 +8066,16 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6587,7 +8085,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -6595,7 +8093,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6605,7 +8103,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -6620,9 +8118,9 @@ } }, "node_modules/is-git-dirty": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-git-dirty/-/is-git-dirty-2.0.1.tgz", - "integrity": "sha512-zn3CNLDbSR+y7+VDDw7/SwTRRuECn4OpAyelo5MDN+gVxdzM8SUDd51ZwPIOxhljED44Riu0jiiNtC8w0bcLdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-git-dirty/-/is-git-dirty-2.0.2.tgz", + "integrity": "sha512-U3YCo+GKR/rDsY7r0v/LBICbQwsx859tDQnAT+v0E/zCDeWbQ1TUt1FtyExeyik7VIJlYOLHCIifLdz71HDalg==", "dev": true, "dependencies": { "execa": "^4.0.3", @@ -6670,6 +8168,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-git-dirty/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, "node_modules/is-git-repository": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-git-repository/-/is-git-repository-2.0.0.tgz", @@ -6718,6 +8225,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-git-repository/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -6734,7 +8250,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "peer": true, + "dev": true, "engines": { "node": ">=8" } @@ -6743,6 +8259,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -6769,7 +8286,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "peer": true, + "dev": true, "dependencies": { "isobject": "^3.0.1" }, @@ -6817,7 +8334,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "peer": true, + "dev": true, "engines": { "node": ">=10" }, @@ -6838,7 +8355,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -6847,26 +8364,27 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "peer": true + "dev": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -6902,6 +8420,27 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -6969,21 +8508,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -7016,66 +8540,75 @@ } }, "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", @@ -7109,45 +8642,74 @@ } } }, - "node_modules/jest-cli/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-cli/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=12" + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/jest-config": { @@ -7195,60 +8757,159 @@ } } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-config/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "has-flag": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, "node_modules/jest-docblock": { @@ -7280,46 +8941,75 @@ } }, "node_modules/jest-each/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-each/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -7338,12 +9028,12 @@ } }, "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { @@ -7392,31 +9082,10 @@ "typescript": "^3.7.x || ^4.3.x || ^5.x" } }, - "node_modules/jest-html-reporter/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-html-reporter/node_modules/xmlbuilder": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.0.0.tgz", - "integrity": "sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==", - "dev": true, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-junit": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.0.0.tgz", - "integrity": "sha512-JSHR+Dhb32FGJaiKkqsB7AR3OqWKtldLd6ZH2+FJ8D4tsweb8Id8zEVReU4+OlrRO1ZluqJLQEETm+Q6/KilBg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", + "integrity": "sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==", "dev": true, "dependencies": { "mkdirp": "^1.0.4", @@ -7428,27 +9097,6 @@ "node": ">=10.12.0" } }, - "node_modules/jest-junit/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-junit/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/jest-leak-detector": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", @@ -7462,47 +9110,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -7519,70 +9126,75 @@ } }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", @@ -7603,38 +9215,76 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -7708,6 +9358,76 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runner": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", @@ -7740,19 +9460,74 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/jest-runtime": { @@ -7785,14 +9560,84 @@ "strip-bom": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/jest-serializer": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "peer": true, + "dev": true, "dependencies": { "@types/node": "*", "graceful-fs": "^4.2.9" @@ -7833,48 +9678,61 @@ } }, "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, "node_modules/jest-snapshot/node_modules/lru-cache": { @@ -7889,26 +9747,6 @@ "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -7924,6 +9762,18 @@ "node": ">=10" } }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -7947,6 +9797,76 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-validate": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", @@ -7964,76 +9884,175 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, "node_modules/jest-worker": { @@ -8051,6 +10070,15 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -8067,9 +10095,9 @@ } }, "node_modules/jetifier": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", - "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-2.0.0.tgz", + "integrity": "sha512-J4Au9KuT74te+PCCCHKgAjyLlEa+2VyIAEPNCdE5aNkAJ6FAJcAqcdzEkSnzNksIa9NkGmC4tPiClk2e7tCJuQ==", "dev": true, "optional": true, "bin": { @@ -8082,7 +10110,7 @@ "version": "17.11.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "peer": true, + "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -8094,12 +10122,14 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -8112,19 +10142,19 @@ "version": "250230.2.1", "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==", - "peer": true + "dev": true }, "node_modules/jsc-safe-url": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", - "peer": true + "dev": true }, "node_modules/jscodeshift": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "peer": true, + "dev": true, "dependencies": { "@babel/core": "^7.13.16", "@babel/parser": "^7.13.16", @@ -8153,11 +10183,69 @@ "@babel/preset-env": "^7.1.6" } }, + "node_modules/jscodeshift/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jscodeshift/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jscodeshift/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/jscodeshift/node_modules/rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "peer": true, + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -8165,11 +10253,23 @@ "rimraf": "bin.js" } }, + "node_modules/jscodeshift/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jscodeshift/node_modules/temp": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", - "peer": true, + "dev": true, "dependencies": { "rimraf": "~2.6.2" }, @@ -8181,7 +10281,7 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "peer": true, + "dev": true, "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -8192,6 +10292,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -8199,11 +10300,17 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "peer": true + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -8220,13 +10327,14 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -8238,16 +10346,25 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "peer": true, + "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8256,7 +10373,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "peer": true, + "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.9" } @@ -8265,6 +10382,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, "engines": { "node": ">=6" } @@ -8273,6 +10391,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, "engines": { "node": ">=6" } @@ -8300,6 +10419,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -8310,12 +10430,13 @@ "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, "node_modules/lodash.merge": { @@ -8328,13 +10449,13 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "peer": true + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "peer": true, + "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -8346,36 +10467,139 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/logkitty": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "peer": true, + "dev": true, + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "ansi-fragments": "^0.2.1", - "dayjs": "^1.8.15", - "yargs": "^15.1.0" + "color-convert": "^2.0.1" }, - "bin": { - "logkitty": "bin/logkitty.js" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/logkitty/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, + "node_modules/logkitty/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/logkitty/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/logkitty/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8389,13 +10613,13 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "peer": true + "dev": true }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, + "dev": true, "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -8417,7 +10641,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, + "dev": true, "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -8430,6 +10654,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -8441,6 +10666,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -8503,6 +10729,7 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "dependencies": { "tmpl": "1.0.5" } @@ -8511,12 +10738,13 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "peer": true + "dev": true }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", @@ -8531,7 +10759,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.4.tgz", "integrity": "sha512-UBqL2fswJjsq2LlfMPV4ArqzLzjyN0nReKRijP3DdSxZiaJDG4NC9sQoVJHbH1HP5qXQMAK/SftyAx1c1kuy+w==", - "peer": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/core": "^7.14.0", @@ -8593,7 +10821,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.4.tgz", "integrity": "sha512-cg1TQUKDkKqrIClrqqIGE8ZDa9kRKSjhBtqPtNYt/ZSywXU41SrldfcI5uzPrzcIrYpH5hnN6OCLRACPgy2vsw==", - "peer": true, + "dev": true, "dependencies": { "@babel/core": "^7.14.0", "hermes-parser": "0.8.0", @@ -8605,7 +10833,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.4.tgz", "integrity": "sha512-76fi9OVytiFVSuGQcNoquVOT7AENd0q3n1WmyBeJ7jvl/UrE3/NN3HTWzu2ezG5IxF3cmo5q1ehi0NEpgwaFGg==", - "peer": true, + "dev": true, "dependencies": { "metro-core": "0.72.4", "rimraf": "^2.5.4" @@ -8615,13 +10843,13 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.4.tgz", "integrity": "sha512-DH3cgN4L7IKNCVBy8LBOXQ4tHDdvh7Vl7jWNkQKMOfHWu1EwsTtXD/+zdV7/be4ls/kHxrD0HbGzpK8XhUAHSw==", - "peer": true + "dev": true }, "node_modules/metro-cache/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "peer": true, + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -8633,7 +10861,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.4.tgz", "integrity": "sha512-USv+H14D5RrSpfA5t4t5cbF1CnizgYGz6xJ3HB0r/bDYdJdZTVqB3/mMPft7Z5zHslS00JCG7oE51G1CK/FlKw==", - "peer": true, + "dev": true, "dependencies": { "cosmiconfig": "^5.0.5", "jest-validate": "^26.5.2", @@ -8647,7 +10875,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, + "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -8663,16 +10891,31 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "peer": true, + "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, + "node_modules/metro-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/metro-config/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "peer": true, + "dev": true, "engines": { "node": ">=10" }, @@ -8680,11 +10923,54 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/metro-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/metro-config/node_modules/jest-get-type": { "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "peer": true, + "dev": true, "engines": { "node": ">= 10.14.2" } @@ -8693,7 +10979,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "peer": true, + "dev": true, "dependencies": { "@jest/types": "^26.6.2", "camelcase": "^6.0.0", @@ -8710,7 +10996,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, + "dev": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -8721,11 +11007,29 @@ "node": ">= 10" } }, + "node_modules/metro-config/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/metro-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/metro-core": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.4.tgz", "integrity": "sha512-2JNT1nG0UV1uMrQHQOKUSII0sdS6MhVT3mBt2kwfjCvD+jvi1iYhKJ4kYCRlUQw9XNLGZ/B+C0VDQzlf2M3zVw==", - "peer": true, + "dev": true, "dependencies": { "lodash.throttle": "^4.1.1", "metro-resolver": "0.72.4" @@ -8735,7 +11039,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.4.tgz", "integrity": "sha512-Mv5WgTsYs5svTR/df6jhq2aD4IkAuwV5TutHW0BfEg1YccQt8/v7q5ZypmUOkjdSS9bFR4r3677jalr/ceFypQ==", - "peer": true, + "dev": true, "dependencies": { "abort-controller": "^3.0.0", "anymatch": "^3.0.3", @@ -8758,7 +11062,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "peer": true, + "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -8774,25 +11078,83 @@ "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "peer": true, + "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, + "node_modules/metro-file-map/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-file-map/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/metro-file-map/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "dependencies": { "ms": "2.0.0" } }, + "node_modules/metro-file-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/metro-file-map/node_modules/jest-regex-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "peer": true, + "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } @@ -8801,7 +11163,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "peer": true, + "dev": true, "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -8818,7 +11180,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "peer": true, + "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -8828,17 +11190,11 @@ "node": ">= 10.13.0" } }, - "node_modules/metro-file-map/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true - }, - "node_modules/metro-file-map/node_modules/supports-color": { + "node_modules/metro-file-map/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "peer": true, + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -8849,17 +11205,35 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/metro-file-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/metro-file-map/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/metro-hermes-compiler": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.4.tgz", "integrity": "sha512-AY1mAT5FKfDRYCthuKo2XHbuhG5TUV4ZpZlJ8peIgkiWICzfy0tau3yu+3jUD456N90CjMCOmdknji4uKiZ8ww==", - "peer": true + "dev": true }, "node_modules/metro-inspector-proxy": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.4.tgz", "integrity": "sha512-pr+PsbNCZaStWuJRH8oclT170B7NxfgH+UUyTf9/aR+7PjX0gdDabJhPyzA633QgR+EFBaQKZuetHA+f5/cnEQ==", - "peer": true, + "dev": true, "dependencies": { "connect": "^3.6.5", "debug": "^2.2.0", @@ -8870,22 +11244,55 @@ "metro-inspector-proxy": "src/cli.js" } }, + "node_modules/metro-inspector-proxy/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/metro-inspector-proxy/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, + "node_modules/metro-inspector-proxy/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-inspector-proxy/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/metro-inspector-proxy/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "dependencies": { "ms": "2.0.0" } @@ -8894,13 +11301,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "node_modules/metro-inspector-proxy/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8910,17 +11317,38 @@ "node": ">=8" } }, + "node_modules/metro-inspector-proxy/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/metro-inspector-proxy/node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "peer": true + "dev": true }, "node_modules/metro-inspector-proxy/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, + "dev": true, "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -8942,7 +11370,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, + "dev": true, "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -8955,7 +11383,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.4.tgz", "integrity": "sha512-84Rrgie3O7Dqkak9ep/eIpMZkEFzpKD4bngPUNimYqAMCExKL7/aymydB27gKcqwus/BVkAV+aOnFsuOhlgnQg==", - "peer": true, + "dev": true, "dependencies": { "uglify-es": "^3.1.9" } @@ -8964,7 +11392,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.4.tgz", "integrity": "sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA==", - "peer": true, + "dev": true, "dependencies": { "@babel/core": "^7.14.0", "@babel/plugin-proposal-async-generator-functions": "^7.0.0", @@ -9014,7 +11442,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.4.tgz", "integrity": "sha512-VxM8Cki+/tPAyQRPHEy1bsxAihpxz8cGLdteFo9t0eAJI7/vEegqICxQm4A+RiGQc4f8t2jiwI6YpnDWomI5Gw==", - "peer": true, + "dev": true, "dependencies": { "@babel/core": "^7.14.0", "babel-preset-fbjs": "^3.4.0", @@ -9032,7 +11460,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.4.tgz", "integrity": "sha512-aHxq/jypzGyi9Ic9woe//RymfxpzWliAkyTmBWPHE9ypGoiobstK0me2j5XuSfzASzCU8wcVt20qy870rxTWLw==", - "peer": true, + "dev": true, "dependencies": { "absolute-path": "^0.0.0" } @@ -9041,7 +11469,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.4.tgz", "integrity": "sha512-EA0ltqyYFpjOdpoRqE2U9FJleqTOIK+ZLRlLaDrx4yz3zTqUZ16W6w71dq+qrwD8BPg7bPKQu7RluU3K6tI79A==", - "peer": true, + "dev": true, "dependencies": { "@babel/runtime": "^7.0.0", "react-refresh": "^0.4.0" @@ -9051,7 +11479,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.4.tgz", "integrity": "sha512-P09aMDEPkLo6BM8VYYoTsH/2B1w6t+mrCwNcNJV1zE+57FPiU4fSBlSeM8G9YeYaezDTHimS2JlMozP+2r+trA==", - "peer": true, + "dev": true, "dependencies": { "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", @@ -9067,7 +11495,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -9076,7 +11504,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.4.tgz", "integrity": "sha512-6ZRo66Q4iKiwaQuHjmogkSCCqaSpJ4QzbHsVHRUe57mFIL34lOLYp7aPfmX7NHCmy061HhDox/kGuYZQRmHB3A==", - "peer": true, + "dev": true, "dependencies": { "invariant": "^2.2.4", "metro-source-map": "0.72.4", @@ -9096,7 +11524,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -9105,7 +11533,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.4.tgz", "integrity": "sha512-yxB4v/LxQkmN1rjyyeLiV4x+jwCmId4FTTxNrmTYoi0tFPtOBOeSwuqY08LjxZQMJdZOKXqj2bgIewqFXJEkGw==", - "peer": true, + "dev": true, "dependencies": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -9118,7 +11546,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.4.tgz", "integrity": "sha512-mIvzy6nRQKMALEdF5g8LXPgCOUi/tGESE5dlb7OSMCj2FAFBm3mTLRrpW5phzK/J6Wg+4Vb9PMS+wGbXR261rA==", - "peer": true, + "dev": true, "dependencies": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -9135,28 +11563,77 @@ "nullthrows": "^1.1.1" } }, + "node_modules/metro/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/metro/node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "peer": true + "dev": true }, "node_modules/metro/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, + "node_modules/metro/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/metro/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "dependencies": { "ms": "2.0.0" } @@ -9165,18 +11642,27 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", - "peer": true, + "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", "klaw": "^1.0.0" } }, + "node_modules/metro/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/metro/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "peer": true, + "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -9186,11 +11672,26 @@ "node": ">= 10.13.0" } }, + "node_modules/metro/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/metro/node_modules/jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "peer": true, + "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -9199,13 +11700,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "node_modules/metro/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "peer": true, + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -9217,31 +11718,28 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/metro/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "peer": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, "node_modules/metro/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9251,17 +11749,38 @@ "node": ">=8" } }, + "node_modules/metro/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/metro/node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "peer": true + "dev": true }, "node_modules/metro/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, + "dev": true, "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -9283,7 +11802,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, + "dev": true, "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -9296,6 +11815,7 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -9308,7 +11828,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "peer": true, + "dev": true, "bin": { "mime": "cli.js" }, @@ -9320,7 +11840,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.6" } @@ -9329,7 +11849,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "peer": true, + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -9341,6 +11861,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { "node": ">=6" } @@ -9358,6 +11879,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9369,39 +11891,46 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "peer": true, + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "peer": true, - "dependencies": { - "minimist": "^1.2.6" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.6" } @@ -9410,19 +11939,19 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "peer": true + "dev": true }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "peer": true + "dev": true }, "node_modules/nocache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "peer": true, + "dev": true, "engines": { "node": ">=12.0.0" } @@ -9431,7 +11960,7 @@ "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "peer": true, + "dev": true, "dependencies": { "minimatch": "^3.0.2" }, @@ -9443,7 +11972,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "peer": true, + "dev": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -9462,18 +11991,20 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node_modules/node-stream-zip": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "peer": true, + "dev": true, "engines": { "node": ">=0.12.0" }, @@ -9486,6 +12017,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -9505,19 +12037,20 @@ "node_modules/nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true }, "node_modules/ob1": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.4.tgz", "integrity": "sha512-/iPJKpXpVEZS0subUvjew4ept5LTBxj1hD20A4mAj9CJkGGPgvbBlfYtFEBubBkk4dv4Ef5lajsnRBYPxF74cQ==", - "peer": true + "dev": true }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -9526,7 +12059,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "peer": true, + "dev": true, "dependencies": { "ee-first": "1.1.1" }, @@ -9538,7 +12071,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } @@ -9546,7 +12079,8 @@ "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } @@ -9555,6 +12089,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -9569,7 +12104,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "peer": true, + "dev": true, "dependencies": { "is-wsl": "^1.1.0" }, @@ -9578,17 +12113,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -9598,7 +12133,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "peer": true, + "dev": true, "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -9617,11 +12152,81 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -9630,20 +12235,21 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9653,11 +12259,27 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { @@ -9679,6 +12301,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "engines": { "node": ">=6" } @@ -9717,7 +12340,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } @@ -9726,6 +12349,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } @@ -9733,7 +12357,8 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -9750,7 +12375,8 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", @@ -9764,12 +12390,14 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -9781,7 +12409,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "peer": true, + "dev": true, "engines": { "node": ">=6" } @@ -9790,6 +12418,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, "engines": { "node": ">= 6" } @@ -9816,15 +12445,18 @@ } }, "node_modules/prettier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.0.tgz", - "integrity": "sha512-FM/zAKgWTxj40rH03VxzIPdXmj39SwSjwG0heUcNFwI+EMZJnY93yAiKXM3dObIKAM5TA88werc8T/EwhB45eg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-linter-helpers": { @@ -9840,17 +12472,17 @@ } }, "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -9869,22 +12501,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "peer": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } + "dev": true }, "node_modules/promise": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "peer": true, + "dev": true, "dependencies": { "asap": "~2.0.6" } @@ -9893,6 +12516,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -9905,15 +12529,16 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -9959,7 +12584,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.6" } @@ -9968,7 +12593,7 @@ "version": "18.1.0", "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", - "peer": true, + "dev": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -9980,22 +12605,44 @@ "version": "4.24.0", "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz", "integrity": "sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==", - "peer": true, + "dev": true, "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" } }, + "node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/react-native": { "version": "0.70.14", "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.14.tgz", "integrity": "sha512-QeZvPJnDkF4K2QB4cX3xZM0gMVqa6r7ema7342PAAJpDvieO9JdI25dBI+hMvMO3jGRS3MUapcPqJvcxLEyNZQ==", - "peer": true, + "dev": true, "dependencies": { "@jest/create-cache-key-function": "^27.0.1", "@react-native-community/cli": "9.3.4", @@ -10041,30 +12688,30 @@ } }, "node_modules/react-native-builder-bob": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/react-native-builder-bob/-/react-native-builder-bob-0.18.2.tgz", - "integrity": "sha512-HA7ryoG99tkWh92s7Qb/619qAAfa3TMAKP4Q5l/smqZQwnJ77z5ESiPgRZl8gQMiCnrmmPVb/c5yUscKOL9GdQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.10", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/preset-env": "^7.12.11", - "@babel/preset-flow": "^7.12.1", - "@babel/preset-react": "^7.12.10", - "@babel/preset-typescript": "^7.12.7", - "browserslist": "^4.16.0", - "chalk": "^4.1.0", - "cosmiconfig": "^7.0.0", + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/react-native-builder-bob/-/react-native-builder-bob-0.18.3.tgz", + "integrity": "sha512-togj+ClsPAsTK3ZFmFZVIftUIkxvN1YxJws0/6sQIlAr14U3rvtBseOQAQM0Pora1GD2aObdBVHDVhKBHWojLA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.18.5", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/preset-env": "^7.18.2", + "@babel/preset-flow": "^7.17.12", + "@babel/preset-react": "^7.17.12", + "@babel/preset-typescript": "^7.17.12", + "browserslist": "^4.20.4", + "cosmiconfig": "^7.0.1", "cross-spawn": "^7.0.3", "dedent": "^0.7.0", - "del": "^6.0.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", + "del": "^6.1.1", + "fs-extra": "^10.1.0", + "glob": "^8.0.3", "is-git-dirty": "^2.0.1", - "json5": "^2.1.3", - "prompts": "^2.4.0", + "json5": "^2.2.1", + "kleur": "^4.1.4", + "prompts": "^2.4.2", "which": "^2.0.2", - "yargs": "^16.2.0" + "yargs": "^17.5.1" }, "bin": { "bob": "bin/bob" @@ -10073,13 +12720,22 @@ "node": ">= 10.0.0" }, "optionalDependencies": { - "jetifier": "^1.6.6" + "jetifier": "^2.0.0" + } + }, + "node_modules/react-native-builder-bob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/react-native-builder-bob/node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", @@ -10092,35 +12748,43 @@ "node": ">=10" } }, + "node_modules/react-native-builder-bob/node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, "node_modules/react-native-builder-bob/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/react-native-builder-bob/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/react-native-builder-bob/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/react-native-builder-bob/node_modules/jsonfile": { @@ -10135,19 +12799,31 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/react-native-builder-bob/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/react-native-builder-bob/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" + } + }, + "node_modules/react-native-builder-bob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/react-native-builder-bob/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -10157,7 +12833,7 @@ "version": "0.70.7", "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.7.tgz", "integrity": "sha512-qXE8Jrhc9BmxDAnCmrHFDLJrzgjsE/mH57dtC4IO7K76AwagdXNCMRp5SA8XdHJzvvHWRaghpiFHEMl9TtOBcQ==", - "peer": true, + "dev": true, "dependencies": { "@babel/parser": "^7.14.0", "flow-parser": "^0.121.0", @@ -10169,13 +12845,13 @@ "version": "0.70.3", "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==", - "peer": true + "dev": true }, "node_modules/react-native/node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, + "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -10191,16 +12867,86 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "peer": true, + "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, + "node_modules/react-native/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-native/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-native/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-native/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/react-native/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/react-native/node_modules/pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, + "dev": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -10211,20 +12957,29 @@ "node": ">= 10" } }, - "node_modules/react-native/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "peer": true, + "node_modules/react-native/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/react-native/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "async-limiter": "~1.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/react-refresh": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -10233,7 +12988,7 @@ "version": "16.15.0", "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "peer": true, + "dev": true, "dependencies": { "object-assign": "^4.1.1", "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" @@ -10246,7 +13001,7 @@ "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.1.0.tgz", "integrity": "sha512-OfuueprJFW7h69GN+kr4Ywin7stcuqaYAt1g7airM5cUgP0BoF5G5CXsPGmXeDeEkncb2fqYNECO4y18sSqphg==", - "peer": true, + "dev": true, "dependencies": { "react-is": "^18.1.0", "react-shallow-renderer": "^16.15.0", @@ -10256,17 +13011,11 @@ "react": "^18.1.0" } }, - "node_modules/react-test-renderer/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "peer": true - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "peer": true, + "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -10280,13 +13029,13 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", - "peer": true + "dev": true }, "node_modules/recast": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "peer": true, + "dev": true, "dependencies": { "ast-types": "0.15.2", "esprima": "~4.0.0", @@ -10297,12 +13046,6 @@ "node": ">= 4" } }, - "node_modules/recast/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "peer": true - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -10319,12 +13062,14 @@ "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -10333,34 +13078,25 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -10377,6 +13113,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -10388,6 +13125,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, "bin": { "jsesc": "bin/jsesc" } @@ -10395,7 +13133,8 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -10404,15 +13143,20 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "peer": true + "dev": true }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10430,7 +13174,7 @@ "node": ">=8" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { + "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -10439,15 +13183,6 @@ "node": ">=8" } }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -10461,7 +13196,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "peer": true, + "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -10522,13 +13257,13 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "peer": true + "dev": true }, "node_modules/scheduler": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", - "peer": true, + "dev": true, "dependencies": { "loose-envify": "^1.1.0" } @@ -10537,6 +13272,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -10545,7 +13281,7 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "peer": true, + "dev": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -10569,7 +13305,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "dependencies": { "ms": "2.0.0" } @@ -10578,13 +13314,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "peer": true, + "dev": true, "bin": { "mime": "cli.js" }, @@ -10596,13 +13332,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "peer": true + "dev": true }, "node_modules/send/node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "peer": true, + "dev": true, "dependencies": { "ee-first": "1.1.1" }, @@ -10614,7 +13350,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } @@ -10623,7 +13359,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -10632,7 +13368,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "peer": true, + "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -10647,19 +13383,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "peer": true + "dev": true }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "peer": true + "dev": true }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "peer": true, + "dev": true, "dependencies": { "kind-of": "^6.0.2" }, @@ -10692,7 +13428,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "peer": true, + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10700,17 +13436,20 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "engines": { "node": ">=8" } @@ -10719,7 +13458,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "peer": true, + "dev": true, "dependencies": { "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", @@ -10729,37 +13468,11 @@ "node": ">=6" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -10777,7 +13490,8 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/stack-utils": { "version": "2.0.6", @@ -10804,13 +13518,13 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "peer": true + "dev": true }, "node_modules/stacktrace-parser": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "peer": true, + "dev": true, "dependencies": { "type-fest": "^0.7.1" }, @@ -10822,7 +13536,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "peer": true, + "dev": true, "engines": { "node": ">=8" } @@ -10831,7 +13545,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.6" } @@ -10840,7 +13554,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "peer": true, + "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -10849,6 +13563,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -10862,8 +13577,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "peer": true + ] }, "node_modules/string-length": { "version": "4.0.2", @@ -10882,6 +13596,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10895,6 +13610,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { "node": ">=8" } @@ -10903,6 +13619,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10923,7 +13640,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -10965,27 +13682,40 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", - "peer": true + "dev": true }, "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/temp": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==", + "dev": true, "engines": [ "node >=0.8.0" ], - "peer": true, "dependencies": { "os-tmpdir": "^1.0.0", "rimraf": "~2.2.6" @@ -10995,7 +13725,7 @@ "version": "2.2.8", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==", - "peer": true, + "dev": true, "bin": { "rimraf": "bin.js" } @@ -11017,20 +13747,20 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/throat": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "peer": true + "dev": true }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "peer": true, + "dev": true, "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -11040,7 +13770,7 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "peer": true, + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11055,7 +13785,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "peer": true, + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -11063,12 +13793,14 @@ "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, "engines": { "node": ">=4" } @@ -11077,6 +13809,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -11088,7 +13821,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "peer": true, + "dev": true, "engines": { "node": ">=0.6" } @@ -11097,7 +13830,7 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true + "dev": true }, "node_modules/ts-jest": { "version": "29.1.1", @@ -11175,19 +13908,10 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/tsutils": { @@ -11205,6 +13929,12 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -11256,7 +13986,7 @@ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", - "peer": true, + "dev": true, "dependencies": { "commander": "~2.13.0", "source-map": "~0.6.1" @@ -11272,21 +14002,28 @@ "version": "2.13.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "peer": true + "dev": true }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, "engines": { "node": ">=4" } @@ -11295,6 +14032,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -11307,6 +14045,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, "engines": { "node": ">=4" } @@ -11315,6 +14054,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, "engines": { "node": ">=4" } @@ -11323,7 +14063,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "peer": true, + "dev": true, "engines": { "node": ">= 4.0.0" } @@ -11332,7 +14072,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } @@ -11341,6 +14081,7 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -11379,7 +14120,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peer": true, + "dev": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } @@ -11388,27 +14129,30 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "peer": true + "dev": true }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.4.0" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } }, "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -11423,7 +14167,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.8" } @@ -11432,12 +14176,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "peer": true + "dev": true }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, "dependencies": { "makeerror": "1.0.12" } @@ -11446,7 +14191,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "peer": true, + "dev": true, "dependencies": { "defaults": "^1.0.3" } @@ -11455,19 +14200,19 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "peer": true + "dev": true }, "node_modules/whatwg-fetch": { - "version": "3.6.19", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", - "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", - "peer": true + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "dev": true }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, + "dev": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -11492,16 +14237,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "peer": true - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -11520,10 +14256,44 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/write-file-atomic": { "version": "4.0.2", @@ -11539,37 +14309,34 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" } }, "node_modules/xml": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, + "node_modules/xmlbuilder": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.0.0.tgz", + "integrity": "sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==", + "dev": true, + "engines": { + "node": ">=8.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "peer": true, + "dev": true, "engines": { "node": ">=0.4" } @@ -11586,7 +14353,8 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", @@ -11598,36 +14366,37 @@ } }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "engines": { "node": ">=10" }, @@ -11637,90 +14406,54 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, "requires": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } } }, "@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==" + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true }, "@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -11729,11 +14462,12 @@ } }, "@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, "requires": { - "@babel/types": "^7.23.3", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -11743,6 +14477,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -11751,33 +14486,36 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, "requires": { "@babel/types": "^7.22.15" } }, "@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz", + "integrity": "sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -11787,6 +14525,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -11794,9 +14533,10 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -11808,12 +14548,14 @@ "@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true }, "@babel/helper-function-name": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, "requires": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -11823,6 +14565,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -11831,6 +14574,7 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, "requires": { "@babel/types": "^7.23.0" } @@ -11839,6 +14583,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, "requires": { "@babel/types": "^7.22.15" } @@ -11847,6 +14592,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -11859,6 +14605,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -11866,12 +14613,14 @@ "@babel/helper-plugin-utils": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true }, "@babel/helper-remap-async-to-generator": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -11882,6 +14631,7 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -11892,6 +14642,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -11900,6 +14651,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -11908,29 +14660,34 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, "requires": { "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true }, "@babel/helper-validator-identifier": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true }, "@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true }, "@babel/helper-wrap-function": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, "requires": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -11938,80 +14695,38 @@ } }, "@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", + "dev": true, "requires": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" } }, "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } } }, "@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==" + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12020,6 +14735,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -12027,9 +14743,10 @@ } }, "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -12039,7 +14756,7 @@ "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "peer": true, + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.20.2", @@ -12051,6 +14768,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -12060,7 +14778,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz", "integrity": "sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==", - "peer": true, + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-default-from": "^7.23.3" @@ -12070,7 +14788,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "peer": true, + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -12080,7 +14798,7 @@ "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "peer": true, + "dev": true, "requires": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -12093,7 +14811,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "peer": true, + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -12103,7 +14821,7 @@ "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "peer": true, + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -12114,12 +14832,14 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12137,6 +14857,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } @@ -12145,6 +14866,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -12153,6 +14875,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12161,7 +14884,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz", "integrity": "sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==", - "peer": true, + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12170,6 +14893,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -12178,6 +14902,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12186,6 +14911,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12194,6 +14920,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12202,6 +14929,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -12210,22 +14938,25 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", - "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -12234,6 +14965,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12242,6 +14974,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -12250,6 +14983,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12258,6 +14992,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12266,6 +15001,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12274,6 +15010,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -12282,22 +15019,25 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -12307,14 +15047,16 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz", - "integrity": "sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz", + "integrity": "sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -12326,6 +15068,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, "requires": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -12336,14 +15079,16 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz", - "integrity": "sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12352,15 +15097,17 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz", - "integrity": "sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -12368,15 +15115,15 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", @@ -12387,6 +15134,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -12396,6 +15144,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12404,6 +15153,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -12413,14 +15163,16 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz", - "integrity": "sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -12430,15 +15182,17 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz", - "integrity": "sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -12448,23 +15202,27 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-flow": "^7.23.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-function-name": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -12472,9 +15230,10 @@ } }, "@babel/plugin-transform-json-strings": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz", - "integrity": "sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -12484,14 +15243,16 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz", - "integrity": "sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -12501,6 +15262,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12509,6 +15271,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -12518,6 +15281,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -12528,6 +15292,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -12539,6 +15304,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -12548,6 +15314,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -12557,32 +15324,36 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz", - "integrity": "sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz", - "integrity": "sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz", - "integrity": "sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, "requires": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -12595,24 +15366,27 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz", - "integrity": "sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz", - "integrity": "sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -12623,6 +15397,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12631,15 +15406,17 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz", - "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -12651,44 +15428,47 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz", - "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz", - "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz", - "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", "dev": true, "requires": { - "@babel/plugin-transform-react-jsx": "^7.16.0" + "@babel/plugin-transform-react-jsx": "^7.22.5" } }, "@babel/plugin-transform-react-jsx-self": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "peer": true, + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12697,25 +15477,26 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "peer": true, + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz", - "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-regenerator": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -12725,21 +15506,22 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", - "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", - "peer": true, + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz", + "integrity": "sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==", + "dev": true, "requires": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "semver": "^6.3.1" } }, @@ -12747,6 +15529,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12755,6 +15538,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -12764,6 +15548,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12772,6 +15557,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12780,24 +15566,28 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typescript": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", - "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" } }, "@babel/plugin-transform-unicode-escapes": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -12806,6 +15596,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -12815,6 +15606,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -12824,23 +15616,25 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.8.tgz", + "integrity": "sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA==", + "dev": true, "requires": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -12861,25 +15655,25 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.7", "@babel/plugin-transform-async-to-generator": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", "@babel/plugin-transform-computed-properties": "^7.23.3", "@babel/plugin-transform-destructuring": "^7.23.3", "@babel/plugin-transform-dotall-regex": "^7.23.3", "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", "@babel/plugin-transform-member-expression-literals": "^7.23.3", "@babel/plugin-transform-modules-amd": "^7.23.3", "@babel/plugin-transform-modules-commonjs": "^7.23.3", @@ -12887,15 +15681,15 @@ "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", "@babel/plugin-transform-parameters": "^7.23.3", "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", "@babel/plugin-transform-property-literals": "^7.23.3", "@babel/plugin-transform-regenerator": "^7.23.3", "@babel/plugin-transform-reserved-words": "^7.23.3", @@ -12909,27 +15703,29 @@ "@babel/plugin-transform-unicode-regex": "^7.23.3", "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "core-js-compat": "^3.31.0", "semver": "^6.3.1" } }, "@babel/preset-flow": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.0.tgz", - "integrity": "sha512-e5NE1EoPMpoHFkyFkMSj2h9tu7OolARcUHki8mnBv4NiFK9so+UrhbvT9mV99tMJOUEx8BOj67T6dXvGcTeYeQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", + "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-flow-strip-types": "^7.16.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" } }, "@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -12937,39 +15733,42 @@ } }, "@babel/preset-react": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.0.tgz", - "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-react-jsx-development": "^7.16.0", - "@babel/plugin-transform-react-pure-annotations": "^7.16.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" } }, "@babel/preset-typescript": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", - "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.16.1" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" } }, "@babel/register": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", - "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", - "peer": true, + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", + "dev": true, "requires": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.5", + "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "dependencies": { @@ -12977,7 +15776,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "peer": true, + "dev": true, "requires": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -12987,13 +15786,13 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true + "dev": true }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "peer": true, + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13004,20 +15803,31 @@ "@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true }, "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", + "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", + "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + } } }, "@babel/template": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, "requires": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -13025,28 +15835,30 @@ } }, "@babel/traverse": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "dev": true, "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } @@ -13057,20 +15869,35 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", - "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.0.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { @@ -13081,44 +15908,22 @@ "dev": true }, "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^2.0.1" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "argparse": "^2.0.1" + } }, "type-fest": { "version": "0.20.2", @@ -13128,36 +15933,48 @@ } } }, + "@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true + }, "@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "peer": true + "dev": true }, "@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "peer": true, + "dev": true, "requires": { "@hapi/hoek": "^9.0.0" } }, "@humanwhocodes/config-array": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", - "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -13171,14 +15988,6 @@ "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } } }, "@istanbuljs/schema": { @@ -13199,6 +16008,57 @@ "jest-message-util": "^29.7.0", "jest-util": "^29.7.0", "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "@jest/core": { @@ -13238,27 +16098,53 @@ }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -13266,7 +16152,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", - "peer": true, + "dev": true, "requires": { "@jest/types": "^27.5.1" }, @@ -13275,7 +16161,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "peer": true, + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -13288,10 +16174,59 @@ "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "peer": true, + "dev": true, "requires": { "@types/yargs-parser": "*" } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -13324,14 +16259,6 @@ "dev": true, "requires": { "jest-get-type": "^29.6.3" - }, - "dependencies": { - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true - } } }, "@jest/fake-timers": { @@ -13392,6 +16319,46 @@ "v8-to-istanbul": "^9.0.1" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "istanbul-lib-instrument": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", @@ -13423,6 +16390,15 @@ "lru-cache": "^6.0.0" } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -13496,6 +16472,57 @@ "pirates": "^4.0.4", "slash": "^3.0.0", "write-file-atomic": "^4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "@jest/types": { @@ -13510,12 +16537,64 @@ "@types/node": "*", "@types/yargs": "^17.0.8", "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -13525,22 +16604,26 @@ "@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true }, "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz", + "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==", + "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -13576,7 +16659,7 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.3.4.tgz", "integrity": "sha512-FxqouQ2UXErwqwU+tWDbMC7HxT8A+AzAaCE723H0SWjOxLPlkChp7P1QOEdOpnA7G/Ss6hl3uS9AWRVypP5kBg==", - "peer": true, + "dev": true, "requires": { "@react-native-community/cli-clean": "^9.2.1", "@react-native-community/cli-config": "^9.2.1", @@ -13597,11 +16680,45 @@ "semver": "^6.3.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -13614,7 +16731,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true + "dev": true } } }, @@ -13622,7 +16739,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -13637,22 +16754,28 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "requires": { "pump": "^3.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -13661,13 +16784,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -13676,13 +16799,22 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -13693,7 +16825,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", - "peer": true, + "dev": true, "requires": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -13701,11 +16833,45 @@ "prompts": "^2.4.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -13718,7 +16884,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -13733,22 +16899,28 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "requires": { "pump": "^3.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -13757,19 +16929,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true + "dev": true }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -13778,13 +16950,22 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -13795,7 +16976,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", - "peer": true, + "dev": true, "requires": { "@react-native-community/cli-tools": "^9.2.1", "cosmiconfig": "^5.1.0", @@ -13808,7 +16989,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "peer": true + "dev": true } } }, @@ -13816,7 +16997,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==", - "peer": true, + "dev": true, "requires": { "serve-static": "^1.13.1" } @@ -13825,7 +17006,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==", - "peer": true, + "dev": true, "requires": { "@react-native-community/cli-config": "^9.2.1", "@react-native-community/cli-platform-ios": "^9.3.0", @@ -13849,13 +17030,47 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "peer": true + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -13868,7 +17083,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true + "dev": true } } }, @@ -13876,7 +17091,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -13891,22 +17106,28 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "requires": { "pump": "^3.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -13915,13 +17136,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -13930,22 +17151,31 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true + "dev": true }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "peer": true, + "dev": true, "requires": { "ansi-regex": "^4.1.0" } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -13956,20 +17186,71 @@ "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.4.tgz", "integrity": "sha512-VqTPA7kknCXgtYlRf+sDWW4yxZ6Gtg1Ga+Rdrn1qSKuo09iJ8YKPoQYOu5nqbIYJQAEhorWQyo1VvNgd0wd49w==", - "peer": true, + "dev": true, "requires": { "@react-native-community/cli-platform-android": "^9.3.4", "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", "hermes-profile-transformer": "^0.0.6", "ip": "^1.1.5" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "@react-native-community/cli-platform-android": { "version": "9.3.4", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.4.tgz", "integrity": "sha512-BTKmTMYFuWtMqimFQJfhRyhIWw1m+5N5svR1S5+DqPcyFuSXrpNYDWNSFR8E105xUbFANmsCZZQh6n1WlwMpOA==", - "peer": true, + "dev": true, "requires": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -13980,11 +17261,45 @@ "slash": "^3.0.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -13997,7 +17312,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -14012,22 +17327,28 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "requires": { "pump": "^3.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -14036,19 +17357,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true + "dev": true }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -14057,13 +17378,22 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -14074,7 +17404,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==", - "peer": true, + "dev": true, "requires": { "@react-native-community/cli-tools": "^9.2.1", "chalk": "^4.1.2", @@ -14083,11 +17413,45 @@ "ora": "^5.4.1" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -14100,7 +17464,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "peer": true, + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -14115,22 +17479,28 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, + "dev": true, "requires": { "pump": "^3.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "peer": true + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "peer": true, + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -14139,19 +17509,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true + "dev": true }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -14160,42 +17530,102 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "dev": true, "requires": { "isexe": "^2.0.0" } } } }, - "@react-native-community/cli-plugin-metro": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.3.3.tgz", - "integrity": "sha512-lPBw6XieNdj2AbWDN0Rc+jNOx8hBgSQyv0gUAm01qtJe4I9FjSMU6nOGTxMpWpICo6TYl/cmPGXOzbfpwxwtkQ==", - "peer": true, - "requires": { - "@react-native-community/cli-server-api": "^9.2.1", - "@react-native-community/cli-tools": "^9.2.1", - "chalk": "^4.1.2", - "metro": "0.72.4", - "metro-config": "0.72.4", - "metro-core": "0.72.4", - "metro-react-native-babel-transformer": "0.72.4", - "metro-resolver": "0.72.4", - "metro-runtime": "0.72.4", - "readline": "^1.3.0" - } - }, + "@react-native-community/cli-plugin-metro": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.3.3.tgz", + "integrity": "sha512-lPBw6XieNdj2AbWDN0Rc+jNOx8hBgSQyv0gUAm01qtJe4I9FjSMU6nOGTxMpWpICo6TYl/cmPGXOzbfpwxwtkQ==", + "dev": true, + "requires": { + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "metro": "0.72.4", + "metro-config": "0.72.4", + "metro-core": "0.72.4", + "metro-react-native-babel-transformer": "0.72.4", + "metro-resolver": "0.72.4", + "metro-runtime": "0.72.4", + "readline": "^1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@react-native-community/cli-server-api": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", - "peer": true, + "dev": true, "requires": { "@react-native-community/cli-debugger-ui": "^9.0.0", "@react-native-community/cli-tools": "^9.2.1", @@ -14212,7 +17642,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -14225,22 +17655,84 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "peer": true, + "dev": true, "requires": { "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, + "dev": true, "requires": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", "ansi-styles": "^4.0.0", "react-is": "^17.0.1" } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} } } }, @@ -14248,7 +17740,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", - "peer": true, + "dev": true, "requires": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", @@ -14261,42 +17753,82 @@ "shell-quote": "^1.7.3" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "peer": true, + "dev": true, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "peer": true, + "dev": true, "requires": { "p-locate": "^5.0.0" } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "peer": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, "p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "peer": true, + "dev": true, "requires": { "p-limit": "^3.0.2" } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -14304,7 +17836,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==", - "peer": true, + "dev": true, "requires": { "joi": "^17.2.1" } @@ -14313,19 +17845,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==", - "peer": true + "dev": true }, "@react-native/normalize-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==", - "peer": true + "dev": true }, "@react-native/polyfills": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", - "peer": true + "dev": true }, "@react-native/virtualized-lists": { "version": "0.72.8", @@ -14341,7 +17873,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "peer": true, + "dev": true, "requires": { "@hapi/hoek": "^9.0.0" } @@ -14350,13 +17882,13 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "peer": true + "dev": true }, "@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "peer": true + "dev": true }, "@sinclair/typebox": { "version": "0.27.8", @@ -14391,31 +17923,6 @@ "jest-matcher-utils": "^29.7.0", "pretty-format": "^29.7.0", "redent": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - } } }, "@types/babel__core": { @@ -14432,9 +17939,9 @@ } }, "@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -14451,9 +17958,9 @@ } }, "@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "requires": { "@babel/types": "^7.20.7" @@ -14469,14 +17976,16 @@ } }, "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true }, "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" } @@ -14485,47 +17994,164 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, "requires": { "@types/istanbul-lib-report": "*" } }, "@types/jest": { - "version": "27.0.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz", - "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==", + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, "requires": { - "jest-diff": "^27.0.0", + "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" + "version": "20.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.1.tgz", + "integrity": "sha512-DsXojJUES2M+FE8CpptJTKpg+r54moV9ZEncPstni1WHFmTcCzeFLnMFfyhCVS8XNOy/OQG+8lVxRLRrVHmV5A==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", "dev": true }, "@types/react": { - "version": "18.2.38", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz", - "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==", + "version": "18.2.47", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz", + "integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==", "dev": true, "requires": { "@types/prop-types": "*", @@ -14534,9 +18160,9 @@ } }, "@types/react-native": { - "version": "0.72.7", - "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.7.tgz", - "integrity": "sha512-LvxJD7VINBiJVcY9UgUVcmPMPiKGO5jHjPM6JrchfP+z1zx0AENL6UOGng1ueaHTRROMTVxZRzO7WVi6DFrMyw==", + "version": "0.72.8", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.8.tgz", + "integrity": "sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==", "dev": true, "requires": { "@react-native/virtualized-lists": "^0.72.4", @@ -14544,9 +18170,15 @@ } }, "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true }, "@types/stack-utils": { @@ -14556,32 +18188,116 @@ "dev": true }, "@types/yargs": { - "version": "17.0.31", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", - "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true }, - "@typescript-eslint/eslint-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.5.0.tgz", - "integrity": "sha512-4bV6fulqbuaO9UMXU0Ia0o6z6if+kmMRW8rMRyfqXj/eGrZZRGedS4n0adeGNnjr8LKAM495hrQ7Tea52UWmQA==", + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.5.0", - "@typescript-eslint/scope-manager": "5.5.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { @@ -14611,79 +18327,20 @@ } } }, - "@typescript-eslint/experimental-utils": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.5.0.tgz", - "integrity": "sha512-kjWeeVU+4lQ1SLYErRKV5yDXbWDPkpbzTUUlfAUifPYvpX0qZlrcCZ96/6oWxt3QxtK5WVhXz+KsnwW9cIW+3A==", + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.5.0", - "@typescript-eslint/types": "5.5.0", - "@typescript-eslint/typescript-estree": "5.5.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "@typescript-eslint/parser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.5.0.tgz", - "integrity": "sha512-JsXBU+kgQOAgzUn2jPrLA+Rd0Y1dswOlX3hp8MuRO1hQDs6xgHtbCXEiAu7bz5hyVURxbXcA2draasMbNqrhmg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.5.0", - "@typescript-eslint/types": "5.5.0", - "@typescript-eslint/typescript-estree": "5.5.0", - "debug": "^4.3.2" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.5.0.tgz", - "integrity": "sha512-0/r656RmRLo7CbN4Mdd+xZyPJ/fPCKhYdU6mnZx+8msAD8nJSP8EyCFkzbd6vNVZzZvWlMYrSNekqGrCBqFQhg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.5.0", - "@typescript-eslint/visitor-keys": "5.5.0" - } - }, - "@typescript-eslint/types": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.5.0.tgz", - "integrity": "sha512-OaYTqkW3GnuHxqsxxJ6KypIKd5Uw7bFiQJZRyNi1jbMJnK3Hc/DR4KwB6KJj6PBRkJJoaNwzMNv9vtTk87JhOg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.5.0.tgz", - "integrity": "sha512-pVn8btYUiYrjonhMAO0yG8lm7RApzy2L4RC7Td/mC/qFkyf6vRbGyZozoA94+w6D2Y2GRqpMoCWcwx/EUOzyoQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.5.0", - "@typescript-eslint/visitor-keys": "5.5.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "semver": "^7.3.7" }, "dependencies": { "lru-cache": { @@ -14713,20 +18370,26 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.5.0.tgz", - "integrity": "sha512-4GzJ1kRtsWzHhdM40tv0ZKHNSbkDhF0Woi/TDwVJX6UICwJItvP7ZTXbjTkCdrors7ww0sYe0t+cIKDAJwZ7Kw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.5.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "peer": true, + "dev": true, "requires": { "event-target-shim": "^5.0.0" } @@ -14735,22 +18398,22 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", "integrity": "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==", - "peer": true + "dev": true }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "peer": true, + "dev": true, "requires": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true }, "acorn-jsx": { @@ -14786,7 +18449,7 @@ "version": "1.4.10", "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "peer": true + "dev": true }, "ansi-escapes": { "version": "4.3.2", @@ -14801,7 +18464,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "peer": true, + "dev": true, "requires": { "colorette": "^1.0.7", "slice-ansi": "^2.0.0", @@ -14812,13 +18475,13 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "peer": true + "dev": true }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "peer": true, + "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -14828,20 +18491,23 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" } }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -14851,12 +18517,13 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "peer": true + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -14871,54 +18538,40 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "peer": true + "dev": true }, "ast-types": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "peer": true, + "dev": true, "requires": { "tslib": "^2.0.1" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "peer": true - } } }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "peer": true + "dev": true }, "async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "peer": true + "dev": true }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "peer": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, "babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "peer": true, + "dev": true, "requires": {} }, "babel-jest": { @@ -14934,6 +18587,57 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "babel-plugin-istanbul": { @@ -14962,37 +18666,40 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", + "dev": true, "requires": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "semver": "^6.3.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "core-js-compat": "^3.33.1" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", + "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.4.4" } }, "babel-plugin-syntax-trailing-function-commas": { "version": "7.0.0-beta.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "peer": true + "dev": true }, "babel-preset-current-node-syntax": { "version": "1.0.1", @@ -15018,7 +18725,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "peer": true, + "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.0.0", @@ -15062,19 +18769,20 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "peer": true + "dev": true }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "peer": true, + "dev": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -15085,6 +18793,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -15094,18 +18803,20 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } }, "browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, "requires": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" } }, @@ -15122,6 +18833,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "requires": { "node-int64": "^0.4.0" } @@ -15130,7 +18842,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "peer": true, + "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -15139,19 +18851,20 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "peer": true + "dev": true }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "peer": true, + "dev": true, "requires": { "callsites": "^2.0.0" }, @@ -15160,7 +18873,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "peer": true + "dev": true } } }, @@ -15168,7 +18881,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "peer": true, + "dev": true, "requires": { "caller-callsite": "^2.0.0" } @@ -15182,20 +18895,24 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "caniuse-lite": { - "version": "1.0.30001563", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", - "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==" + "version": "1.0.30001576", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", + "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", + "dev": true }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "char-regex": { @@ -15207,7 +18924,8 @@ "ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true }, "cjs-module-lexer": { "version": "1.2.3", @@ -15225,25 +18943,25 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "peer": true, + "dev": true, "requires": { "restore-cursor": "^3.1.0" } }, "cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "peer": true + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, @@ -15251,13 +18969,13 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "peer": true + "dev": true }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "peer": true, + "dev": true, "requires": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -15277,47 +18995,49 @@ "dev": true }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "colorette": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "peer": true + "dev": true }, "command-exists": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "peer": true + "dev": true }, "commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "peer": true + "dev": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "peer": true + "dev": true }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "peer": true, + "dev": true, "requires": { "mime-db": ">= 1.43.0 < 2" } @@ -15326,7 +19046,7 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "peer": true, + "dev": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -15341,7 +19061,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "requires": { "ms": "2.0.0" } @@ -15350,20 +19070,21 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true } } }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "peer": true, + "dev": true, "requires": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -15375,7 +19096,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "requires": { "ms": "2.0.0" } @@ -15384,34 +19105,36 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true } } }, "convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz", + "integrity": "sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==", + "dev": true, "requires": { - "browserslist": "^4.22.1" + "browserslist": "^4.22.2" } }, "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "peer": true + "dev": true }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "peer": true, + "dev": true, "requires": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", @@ -15419,15 +19142,31 @@ "parse-json": "^4.0.0" }, "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "peer": true, + "dev": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true } } }, @@ -15444,6 +19183,57 @@ "jest-config": "^29.7.0", "jest-util": "^29.7.0", "prompts": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "cross-spawn": { @@ -15458,27 +19248,28 @@ } }, "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, "dateformat": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.2.tgz", - "integrity": "sha1-mk30v/FYrC80vGN6vbFUcWB+Flk=", + "integrity": "sha512-EelsCzH0gMC2YmXuMeaZ3c6md1sUJQxyb1XXc4xaisi/K6qKukqZhKPrEQyRkdNIncgYyLoDTReq0nNyuKerTg==", "dev": true }, "dayjs": { "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "peer": true + "dev": true }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -15487,13 +19278,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "peer": true + "dev": true }, "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "requires": {} }, "deep-is": { "version": "0.1.4", @@ -15511,15 +19303,15 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "peer": true, + "dev": true, "requires": { "clone": "^1.0.2" } }, "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, "requires": { "globby": "^11.0.1", @@ -15536,19 +19328,19 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", - "peer": true + "dev": true }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "peer": true + "dev": true }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "peer": true + "dev": true }, "detect-newline": { "version": "3.1.0", @@ -15557,9 +19349,9 @@ "dev": true }, "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true }, "dir-glob": { @@ -15584,12 +19376,13 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "peer": true + "dev": true }, "electron-to-chromium": { - "version": "1.4.588", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz", - "integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==" + "version": "1.4.630", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.630.tgz", + "integrity": "sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg==", + "dev": true }, "emittery": { "version": "0.13.1", @@ -15600,49 +19393,35 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "peer": true + "dev": true }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - } + "once": "^1.4.0" } }, "envinfo": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", - "peer": true + "dev": true }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -15651,7 +19430,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "peer": true, + "dev": true, "requires": { "stackframe": "^1.3.4" } @@ -15660,7 +19439,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", - "peer": true, + "dev": true, "requires": { "accepts": "~1.3.7", "escape-html": "~1.0.3" @@ -15669,111 +19448,154 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "peer": true + "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true }, "eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", - "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.0.4", - "@humanwhocodes/config-array": "^0.6.0", - "ajv": "^6.10.0", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.1.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.2.0", - "semver": "^7.2.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { - "is-glob": "^4.0.3" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "type-fest": "^0.20.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "type-fest": "^0.20.2" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -15783,28 +19605,31 @@ "argparse": "^2.0.1" } }, - "lru-cache": { + "locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "yallist": "^4.0.0" + "p-locate": "^5.0.0" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "has-flag": "^4.0.0" } }, "type-fest": { @@ -15812,87 +19637,73 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, "eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "requires": {} }, "eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } + "estraverse": "^4.1.1" } }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "espree": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", - "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.6.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" } }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, "esrecurse": { @@ -15902,30 +19713,39 @@ "dev": true, "requires": { "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "peer": true + "dev": true }, "event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "peer": true + "dev": true }, "execa": { "version": "5.1.1", @@ -15942,14 +19762,6 @@ "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - } } }, "exit": { @@ -15969,14 +19781,6 @@ "jest-matcher-utils": "^29.7.0", "jest-message-util": "^29.7.0", "jest-util": "^29.7.0" - }, - "dependencies": { - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true - } } }, "fast-deep-equal": { @@ -15986,15 +19790,15 @@ "dev": true }, "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -16002,6 +19806,17 @@ "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "fast-json-stable-stringify": { @@ -16013,13 +19828,13 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -16029,6 +19844,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, "requires": { "bser": "2.1.1" } @@ -16046,6 +19862,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -16054,7 +19871,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "peer": true, + "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -16069,7 +19886,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "requires": { "ms": "2.0.0" } @@ -16078,7 +19895,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true } } }, @@ -16086,7 +19903,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "peer": true, + "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -16097,7 +19914,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "peer": true, + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -16106,7 +19923,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "peer": true, + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -16116,17 +19933,26 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "peer": true, + "dev": true, "requires": { "pify": "^4.0.1", "semver": "^5.6.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "peer": true, + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -16135,13 +19961,13 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "peer": true + "dev": true }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "peer": true, + "dev": true, "requires": { "find-up": "^3.0.0" } @@ -16150,7 +19976,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true + "dev": true } } }, @@ -16158,44 +19984,46 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "requires": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "flow-parser": { "version": "0.121.0", "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", - "peer": true + "dev": true }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "peer": true + "dev": true }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "peer": true, + "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -16205,34 +20033,33 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "optional": true }, "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true }, "get-package-type": { "version": "0.1.0", @@ -16247,75 +20074,86 @@ "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } }, "hermes-estree": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==", - "peer": true + "dev": true }, "hermes-parser": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==", - "peer": true, + "dev": true, "requires": { "hermes-estree": "0.8.0" } @@ -16324,7 +20162,7 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", - "peer": true, + "dev": true, "requires": { "source-map": "^0.7.3" }, @@ -16333,7 +20171,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "peer": true + "dev": true } } }, @@ -16347,7 +20185,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "peer": true, + "dev": true, "requires": { "depd": "2.0.0", "inherits": "2.0.4", @@ -16360,42 +20198,50 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "peer": true + "dev": true } } }, "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "peer": true + "dev": true }, "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true }, "image-size": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", - "peer": true + "dev": true }, "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "peer": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } } }, "import-local": { @@ -16411,7 +20257,8 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true }, "indent-string": { "version": "4.0.0", @@ -16422,7 +20269,8 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -16431,12 +20279,14 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, "requires": { "loose-envify": "^1.0.0" } @@ -16445,7 +20295,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "peer": true + "dev": true }, "is-absolute": { "version": "1.0.0", @@ -16460,33 +20310,35 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "peer": true + "dev": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "peer": true + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -16495,9 +20347,9 @@ "dev": true }, "is-git-dirty": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-git-dirty/-/is-git-dirty-2.0.1.tgz", - "integrity": "sha512-zn3CNLDbSR+y7+VDDw7/SwTRRuECn4OpAyelo5MDN+gVxdzM8SUDd51ZwPIOxhljED44Riu0jiiNtC8w0bcLdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-git-dirty/-/is-git-dirty-2.0.2.tgz", + "integrity": "sha512-U3YCo+GKR/rDsY7r0v/LBICbQwsx859tDQnAT+v0E/zCDeWbQ1TUt1FtyExeyik7VIJlYOLHCIifLdz71HDalg==", "dev": true, "requires": { "execa": "^4.0.3", @@ -16529,6 +20381,12 @@ "requires": { "pump": "^3.0.0" } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true } } }, @@ -16567,6 +20425,12 @@ "requires": { "pump": "^3.0.0" } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true } } }, @@ -16583,12 +20447,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "peer": true + "dev": true }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-path-cwd": { "version": "2.2.0", @@ -16606,7 +20471,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "peer": true, + "dev": true, "requires": { "isobject": "^3.0.1" } @@ -16639,7 +20504,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "peer": true + "dev": true }, "is-windows": { "version": "1.0.2", @@ -16651,29 +20516,30 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "peer": true + "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "peer": true + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "peer": true + "dev": true }, "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true }, "istanbul-lib-instrument": { @@ -16698,6 +20564,23 @@ "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "istanbul-lib-source-maps": { @@ -16742,17 +20625,6 @@ "execa": "^5.0.0", "jest-util": "^29.7.0", "p-limit": "^3.1.0" - }, - "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - } } }, "jest-circus": { @@ -16784,43 +20656,53 @@ }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": {} + "requires": { + "color-convert": "^2.0.1" + } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "yocto-queue": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -16843,37 +20725,54 @@ "yargs": "^17.3.1" }, "dependencies": { - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "color-convert": "^2.0.1" } }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -16908,46 +20807,117 @@ }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-docblock": { @@ -16973,33 +20943,53 @@ }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "color-name": "~1.1.4" } }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -17018,9 +21008,9 @@ } }, "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true }, "jest-haste-map": { @@ -17055,46 +21045,18 @@ "mkdirp": "^1.0.3", "strip-ansi": "6.0.1", "xmlbuilder": "15.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "xmlbuilder": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.0.0.tgz", - "integrity": "sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==", - "dev": true - } } }, "jest-junit": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.0.0.tgz", - "integrity": "sha512-JSHR+Dhb32FGJaiKkqsB7AR3OqWKtldLd6ZH2+FJ8D4tsweb8Id8zEVReU4+OlrRO1ZluqJLQEETm+Q6/KilBg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz", + "integrity": "sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==", "dev": true, "requires": { "mkdirp": "^1.0.4", "strip-ansi": "^6.0.1", "uuid": "^8.3.2", "xml": "^1.0.1" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } } }, "jest-leak-detector": { @@ -17105,37 +21067,6 @@ "requires": { "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - } } }, "jest-matcher-utils": { @@ -17151,51 +21082,53 @@ }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "color-name": "~1.1.4" } }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "has-flag": "^4.0.0" } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true } } }, @@ -17216,30 +21149,54 @@ "stack-utils": "^2.0.3" }, "dependencies": { - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } + "color-convert": "^2.0.1" } }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -17282,6 +21239,57 @@ "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-resolve-dependencies": { @@ -17323,13 +21331,53 @@ "source-map-support": "0.5.13" }, "dependencies": { - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "yocto-queue": "^0.1.0" + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } @@ -17362,13 +21410,64 @@ "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-serializer": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "peer": true, + "dev": true, "requires": { "@types/node": "*", "graceful-fs": "^4.2.9" @@ -17403,33 +21502,43 @@ }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "color-name": "~1.1.4" } }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "lru-cache": { @@ -17441,23 +21550,6 @@ "yallist": "^4.0.0" } }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -17467,6 +21559,15 @@ "lru-cache": "^6.0.0" } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -17487,6 +21588,57 @@ "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-validate": { @@ -17504,10 +21656,13 @@ }, "dependencies": { "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, "camelcase": { "version": "6.3.0", @@ -17515,28 +21670,45 @@ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "has-flag": "^4.0.0" } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true } } }, @@ -17554,6 +21726,57 @@ "emittery": "^0.13.1", "jest-util": "^29.7.0", "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-worker": { @@ -17568,6 +21791,12 @@ "supports-color": "^8.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -17580,9 +21809,9 @@ } }, "jetifier": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", - "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-2.0.0.tgz", + "integrity": "sha512-J4Au9KuT74te+PCCCHKgAjyLlEa+2VyIAEPNCdE5aNkAJ6FAJcAqcdzEkSnzNksIa9NkGmC4tPiClk2e7tCJuQ==", "dev": true, "optional": true }, @@ -17590,7 +21819,7 @@ "version": "17.11.0", "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "peer": true, + "dev": true, "requires": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -17602,12 +21831,14 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -17617,19 +21848,19 @@ "version": "250230.2.1", "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==", - "peer": true + "dev": true }, "jsc-safe-url": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", - "peer": true + "dev": true }, "jscodeshift": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "peer": true, + "dev": true, "requires": { "@babel/core": "^7.13.16", "@babel/parser": "^7.13.16", @@ -17652,20 +21883,69 @@ "write-file-atomic": "^2.3.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "peer": true, + "dev": true, "requires": { "glob": "^7.1.3" } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "temp": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", - "peer": true, + "dev": true, "requires": { "rimraf": "~2.6.2" } @@ -17674,7 +21954,7 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "peer": true, + "dev": true, "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -17686,13 +21966,20 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "peer": true + "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -17709,34 +21996,44 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "peer": true, + "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "peer": true + "dev": true }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "peer": true, + "dev": true, "requires": { "graceful-fs": "^4.1.9" } @@ -17744,12 +22041,14 @@ "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true }, "levn": { "version": "0.4.1", @@ -17771,6 +22070,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -17778,12 +22078,13 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, "lodash.merge": { @@ -17796,45 +22097,120 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "peer": true + "dev": true }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "peer": true, + "dev": true, "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "logkitty": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "peer": true, + "dev": true, "requires": { "ansi-fragments": "^0.2.1", "dayjs": "^1.8.15", "yargs": "^15.1.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, + "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -17845,13 +22221,13 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "peer": true + "dev": true }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, + "dev": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -17870,7 +22246,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -17882,6 +22258,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -17890,6 +22267,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "requires": { "yallist": "^3.0.2" } @@ -17939,6 +22317,7 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "requires": { "tmpl": "1.0.5" } @@ -17947,12 +22326,13 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "peer": true + "dev": true }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { "version": "1.4.1", @@ -17964,7 +22344,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.4.tgz", "integrity": "sha512-UBqL2fswJjsq2LlfMPV4ArqzLzjyN0nReKRijP3DdSxZiaJDG4NC9sQoVJHbH1HP5qXQMAK/SftyAx1c1kuy+w==", - "peer": true, + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/core": "^7.14.0", @@ -18019,28 +22399,62 @@ "yargs": "^15.3.1" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "peer": true + "dev": true }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "requires": { "ms": "2.0.0" } @@ -18049,29 +22463,46 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", - "peer": true, + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", "klaw": "^1.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "peer": true, + "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "peer": true, + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -18080,13 +22511,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "peer": true, + "dev": true, "requires": { "glob": "^7.1.3" } @@ -18095,13 +22526,13 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true + "dev": true }, "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "peer": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -18110,24 +22541,31 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, + "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "peer": true + "dev": true }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, + "dev": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -18146,7 +22584,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -18158,7 +22596,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.4.tgz", "integrity": "sha512-cg1TQUKDkKqrIClrqqIGE8ZDa9kRKSjhBtqPtNYt/ZSywXU41SrldfcI5uzPrzcIrYpH5hnN6OCLRACPgy2vsw==", - "peer": true, + "dev": true, "requires": { "@babel/core": "^7.14.0", "hermes-parser": "0.8.0", @@ -18170,7 +22608,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.4.tgz", "integrity": "sha512-76fi9OVytiFVSuGQcNoquVOT7AENd0q3n1WmyBeJ7jvl/UrE3/NN3HTWzu2ezG5IxF3cmo5q1ehi0NEpgwaFGg==", - "peer": true, + "dev": true, "requires": { "metro-core": "0.72.4", "rimraf": "^2.5.4" @@ -18180,7 +22618,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "peer": true, + "dev": true, "requires": { "glob": "^7.1.3" } @@ -18191,13 +22629,13 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.4.tgz", "integrity": "sha512-DH3cgN4L7IKNCVBy8LBOXQ4tHDdvh7Vl7jWNkQKMOfHWu1EwsTtXD/+zdV7/be4ls/kHxrD0HbGzpK8XhUAHSw==", - "peer": true + "dev": true }, "metro-config": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.4.tgz", "integrity": "sha512-USv+H14D5RrSpfA5t4t5cbF1CnizgYGz6xJ3HB0r/bDYdJdZTVqB3/mMPft7Z5zHslS00JCG7oE51G1CK/FlKw==", - "peer": true, + "dev": true, "requires": { "cosmiconfig": "^5.0.5", "jest-validate": "^26.5.2", @@ -18211,7 +22649,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -18224,28 +22662,68 @@ "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "peer": true, + "dev": true, "requires": { "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "peer": true + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "jest-get-type": { "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "peer": true + "dev": true }, "jest-validate": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "peer": true, + "dev": true, "requires": { "@jest/types": "^26.6.2", "camelcase": "^6.0.0", @@ -18259,12 +22737,27 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" + "has-flag": "^4.0.0" } } } @@ -18273,7 +22766,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.4.tgz", "integrity": "sha512-2JNT1nG0UV1uMrQHQOKUSII0sdS6MhVT3mBt2kwfjCvD+jvi1iYhKJ4kYCRlUQw9XNLGZ/B+C0VDQzlf2M3zVw==", - "peer": true, + "dev": true, "requires": { "lodash.throttle": "^4.1.1", "metro-resolver": "0.72.4" @@ -18283,7 +22776,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.4.tgz", "integrity": "sha512-Mv5WgTsYs5svTR/df6jhq2aD4IkAuwV5TutHW0BfEg1YccQt8/v7q5ZypmUOkjdSS9bFR4r3677jalr/ceFypQ==", - "peer": true, + "dev": true, "requires": { "abort-controller": "^3.0.0", "anymatch": "^3.0.3", @@ -18304,7 +22797,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "peer": true, + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -18317,31 +22810,71 @@ "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "peer": true, + "dev": true, "requires": { "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "requires": { "ms": "2.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-regex-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "peer": true + "dev": true }, "jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "peer": true, + "dev": true, "requires": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -18355,24 +22888,35 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "peer": true, + "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "peer": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -18383,13 +22927,13 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.4.tgz", "integrity": "sha512-AY1mAT5FKfDRYCthuKo2XHbuhG5TUV4ZpZlJ8peIgkiWICzfy0tau3yu+3jUD456N90CjMCOmdknji4uKiZ8ww==", - "peer": true + "dev": true }, "metro-inspector-proxy": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.4.tgz", "integrity": "sha512-pr+PsbNCZaStWuJRH8oclT170B7NxfgH+UUyTf9/aR+7PjX0gdDabJhPyzA633QgR+EFBaQKZuetHA+f5/cnEQ==", - "peer": true, + "dev": true, "requires": { "connect": "^3.6.5", "debug": "^2.2.0", @@ -18397,22 +22941,46 @@ "yargs": "^15.3.1" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "requires": { "ms": "2.0.0" } @@ -18421,30 +22989,37 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, + "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "peer": true + "dev": true }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, + "dev": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -18463,7 +23038,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -18475,7 +23050,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.4.tgz", "integrity": "sha512-84Rrgie3O7Dqkak9ep/eIpMZkEFzpKD4bngPUNimYqAMCExKL7/aymydB27gKcqwus/BVkAV+aOnFsuOhlgnQg==", - "peer": true, + "dev": true, "requires": { "uglify-es": "^3.1.9" } @@ -18484,7 +23059,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.4.tgz", "integrity": "sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA==", - "peer": true, + "dev": true, "requires": { "@babel/core": "^7.14.0", "@babel/plugin-proposal-async-generator-functions": "^7.0.0", @@ -18531,7 +23106,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.4.tgz", "integrity": "sha512-VxM8Cki+/tPAyQRPHEy1bsxAihpxz8cGLdteFo9t0eAJI7/vEegqICxQm4A+RiGQc4f8t2jiwI6YpnDWomI5Gw==", - "peer": true, + "dev": true, "requires": { "@babel/core": "^7.14.0", "babel-preset-fbjs": "^3.4.0", @@ -18546,7 +23121,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.4.tgz", "integrity": "sha512-aHxq/jypzGyi9Ic9woe//RymfxpzWliAkyTmBWPHE9ypGoiobstK0me2j5XuSfzASzCU8wcVt20qy870rxTWLw==", - "peer": true, + "dev": true, "requires": { "absolute-path": "^0.0.0" } @@ -18555,7 +23130,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.4.tgz", "integrity": "sha512-EA0ltqyYFpjOdpoRqE2U9FJleqTOIK+ZLRlLaDrx4yz3zTqUZ16W6w71dq+qrwD8BPg7bPKQu7RluU3K6tI79A==", - "peer": true, + "dev": true, "requires": { "@babel/runtime": "^7.0.0", "react-refresh": "^0.4.0" @@ -18565,7 +23140,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.4.tgz", "integrity": "sha512-P09aMDEPkLo6BM8VYYoTsH/2B1w6t+mrCwNcNJV1zE+57FPiU4fSBlSeM8G9YeYaezDTHimS2JlMozP+2r+trA==", - "peer": true, + "dev": true, "requires": { "@babel/traverse": "^7.14.0", "@babel/types": "^7.0.0", @@ -18581,7 +23156,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true + "dev": true } } }, @@ -18589,7 +23164,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.4.tgz", "integrity": "sha512-6ZRo66Q4iKiwaQuHjmogkSCCqaSpJ4QzbHsVHRUe57mFIL34lOLYp7aPfmX7NHCmy061HhDox/kGuYZQRmHB3A==", - "peer": true, + "dev": true, "requires": { "invariant": "^2.2.4", "metro-source-map": "0.72.4", @@ -18603,7 +23178,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true + "dev": true } } }, @@ -18611,7 +23186,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.4.tgz", "integrity": "sha512-yxB4v/LxQkmN1rjyyeLiV4x+jwCmId4FTTxNrmTYoi0tFPtOBOeSwuqY08LjxZQMJdZOKXqj2bgIewqFXJEkGw==", - "peer": true, + "dev": true, "requires": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -18624,7 +23199,7 @@ "version": "0.72.4", "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.4.tgz", "integrity": "sha512-mIvzy6nRQKMALEdF5g8LXPgCOUi/tGESE5dlb7OSMCj2FAFBm3mTLRrpW5phzK/J6Wg+4Vb9PMS+wGbXR261rA==", - "peer": true, + "dev": true, "requires": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -18645,6 +23220,7 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -18654,19 +23230,19 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "peer": true + "dev": true }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "peer": true + "dev": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "peer": true, + "dev": true, "requires": { "mime-db": "1.52.0" } @@ -18674,7 +23250,8 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true }, "min-indent": { "version": "1.0.1", @@ -18686,6 +23263,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -18694,57 +23272,61 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "peer": true + "dev": true }, "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "peer": true, - "requires": { - "minimist": "^1.2.6" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "peer": true + "dev": true }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "peer": true + "dev": true }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "peer": true + "dev": true }, "nocache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "peer": true + "dev": true }, "node-dir": { "version": "0.1.17", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "peer": true, + "dev": true, "requires": { "minimatch": "^3.0.2" } @@ -18753,7 +23335,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "peer": true, + "dev": true, "requires": { "whatwg-url": "^5.0.0" } @@ -18761,23 +23343,26 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true }, "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node-stream-zip": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "peer": true + "dev": true }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "npm-run-path": { "version": "4.0.1", @@ -18791,25 +23376,26 @@ "nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true }, "ob1": { "version": "0.72.4", "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.4.tgz", "integrity": "sha512-/iPJKpXpVEZS0subUvjew4ept5LTBxj1hD20A4mAj9CJkGGPgvbBlfYtFEBubBkk4dv4Ef5lajsnRBYPxF74cQ==", - "peer": true + "dev": true }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "peer": true + "dev": true }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "peer": true, + "dev": true, "requires": { "ee-first": "1.1.1" } @@ -18818,12 +23404,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "peer": true + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "requires": { "wrappy": "1" } @@ -18832,6 +23419,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -18840,30 +23428,30 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "peer": true, + "dev": true, "requires": { "is-wsl": "^1.1.0" } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "peer": true, + "dev": true, "requires": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -18874,34 +23462,98 @@ "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "peer": true + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "peer": true + "dev": true }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } } }, "p-map": { @@ -18916,7 +23568,8 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "parent-module": { "version": "1.0.1", @@ -18943,17 +23596,19 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "peer": true + "dev": true }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true }, "path-key": { "version": "3.1.1", @@ -18964,7 +23619,8 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "path-type": { "version": "4.0.0", @@ -18975,23 +23631,26 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "peer": true + "dev": true }, "pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true }, "pkg-dir": { "version": "4.2.0", @@ -19009,9 +23668,9 @@ "dev": true }, "prettier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.0.tgz", - "integrity": "sha512-FM/zAKgWTxj40rH03VxzIPdXmj39SwSjwG0heUcNFwI+EMZJnY93yAiKXM3dObIKAM5TA88werc8T/EwhB45eg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true }, "prettier-linter-helpers": { @@ -19024,14 +23683,14 @@ } }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { @@ -19046,19 +23705,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "peer": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "promise": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "peer": true, + "dev": true, "requires": { "asap": "~2.0.6" } @@ -19067,6 +23720,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -19076,15 +23730,16 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, "pure-rand": { @@ -19103,13 +23758,13 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "peer": true + "dev": true }, "react": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", - "peer": true, + "dev": true, "requires": { "loose-envify": "^1.1.0" } @@ -19118,22 +23773,32 @@ "version": "4.24.0", "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz", "integrity": "sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==", - "peer": true, + "dev": true, "requires": { "shell-quote": "^1.6.1", "ws": "^7" + }, + "dependencies": { + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + } } }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "react-native": { "version": "0.70.14", "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.14.tgz", "integrity": "sha512-QeZvPJnDkF4K2QB4cX3xZM0gMVqa6r7ema7342PAAJpDvieO9JdI25dBI+hMvMO3jGRS3MUapcPqJvcxLEyNZQ==", - "peer": true, + "dev": true, "requires": { "@jest/create-cache-key-function": "^27.0.1", "@react-native-community/cli": "9.3.4", @@ -19173,29 +23838,78 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "color-name": "~1.1.4" } }, - "@types/yargs": { - "version": "15.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", - "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "peer": true, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, "requires": { - "@types/yargs-parser": "*" + "minimist": "^1.2.6" } }, "pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, + "dev": true, "requires": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -19203,49 +23917,64 @@ "react-is": "^17.0.1" } }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "peer": true, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { - "async-limiter": "~1.0.0" + "has-flag": "^4.0.0" } } } }, "react-native-builder-bob": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/react-native-builder-bob/-/react-native-builder-bob-0.18.2.tgz", - "integrity": "sha512-HA7ryoG99tkWh92s7Qb/619qAAfa3TMAKP4Q5l/smqZQwnJ77z5ESiPgRZl8gQMiCnrmmPVb/c5yUscKOL9GdQ==", - "dev": true, - "requires": { - "@babel/core": "^7.12.10", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/preset-env": "^7.12.11", - "@babel/preset-flow": "^7.12.1", - "@babel/preset-react": "^7.12.10", - "@babel/preset-typescript": "^7.12.7", - "browserslist": "^4.16.0", - "chalk": "^4.1.0", - "cosmiconfig": "^7.0.0", + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/react-native-builder-bob/-/react-native-builder-bob-0.18.3.tgz", + "integrity": "sha512-togj+ClsPAsTK3ZFmFZVIftUIkxvN1YxJws0/6sQIlAr14U3rvtBseOQAQM0Pora1GD2aObdBVHDVhKBHWojLA==", + "dev": true, + "requires": { + "@babel/core": "^7.18.5", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/preset-env": "^7.18.2", + "@babel/preset-flow": "^7.17.12", + "@babel/preset-react": "^7.17.12", + "@babel/preset-typescript": "^7.17.12", + "browserslist": "^4.20.4", + "cosmiconfig": "^7.0.1", "cross-spawn": "^7.0.3", "dedent": "^0.7.0", - "del": "^6.0.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", + "del": "^6.1.1", + "fs-extra": "^10.1.0", + "glob": "^8.0.3", "is-git-dirty": "^2.0.1", - "jetifier": "^1.6.6", - "json5": "^2.1.3", - "prompts": "^2.4.0", + "jetifier": "^2.0.0", + "json5": "^2.2.1", + "kleur": "^4.1.4", + "prompts": "^2.4.2", "which": "^2.0.2", - "yargs": "^16.2.0" + "yargs": "^17.5.1" }, "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -19255,26 +23984,34 @@ "yaml": "^1.10.0" } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" } }, "jsonfile": { @@ -19287,16 +24024,25 @@ "universalify": "^2.0.0" } }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true } } @@ -19305,7 +24051,7 @@ "version": "0.70.7", "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.7.tgz", "integrity": "sha512-qXE8Jrhc9BmxDAnCmrHFDLJrzgjsE/mH57dtC4IO7K76AwagdXNCMRp5SA8XdHJzvvHWRaghpiFHEMl9TtOBcQ==", - "peer": true, + "dev": true, "requires": { "@babel/parser": "^7.14.0", "flow-parser": "^0.121.0", @@ -19317,19 +24063,19 @@ "version": "0.70.3", "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==", - "peer": true + "dev": true }, "react-refresh": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "peer": true + "dev": true }, "react-shallow-renderer": { "version": "16.15.0", "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "peer": true, + "dev": true, "requires": { "object-assign": "^4.1.1", "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" @@ -19339,26 +24085,18 @@ "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.1.0.tgz", "integrity": "sha512-OfuueprJFW7h69GN+kr4Ywin7stcuqaYAt1g7airM5cUgP0BoF5G5CXsPGmXeDeEkncb2fqYNECO4y18sSqphg==", - "peer": true, + "dev": true, "requires": { "react-is": "^18.1.0", "react-shallow-renderer": "^16.15.0", "scheduler": "^0.22.0" - }, - "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "peer": true - } } }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "peer": true, + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -19369,26 +24107,18 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", - "peer": true + "dev": true }, "recast": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "peer": true, + "dev": true, "requires": { "ast-types": "0.15.2", "esprima": "~4.0.0", "source-map": "~0.6.1", "tslib": "^2.0.1" - }, - "dependencies": { - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "peer": true - } } }, "redent": { @@ -19404,39 +24134,38 @@ "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, "requires": { "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true }, "regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, "requires": { "@babel/runtime": "^7.8.4" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, "requires": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -19450,6 +24179,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, "requires": { "jsesc": "~0.5.0" }, @@ -19457,28 +24187,32 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true } } }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "peer": true + "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -19488,21 +24222,13 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "peer": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true }, "resolve.exports": { "version": "2.0.2", @@ -19514,7 +24240,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "peer": true, + "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -19548,13 +24274,13 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "peer": true + "dev": true }, "scheduler": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", - "peer": true, + "dev": true, "requires": { "loose-envify": "^1.1.0" } @@ -19562,13 +24288,14 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true }, "send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "peer": true, + "dev": true, "requires": { "debug": "2.6.9", "depd": "2.0.0", @@ -19589,7 +24316,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "dev": true, "requires": { "ms": "2.0.0" }, @@ -19598,7 +24325,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "dev": true } } }, @@ -19606,19 +24333,19 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "peer": true + "dev": true }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "peer": true + "dev": true }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "peer": true, + "dev": true, "requires": { "ee-first": "1.1.1" } @@ -19627,7 +24354,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "peer": true + "dev": true } } }, @@ -19635,13 +24362,13 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "peer": true + "dev": true }, "serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "peer": true, + "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -19653,19 +24380,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "peer": true + "dev": true }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "peer": true + "dev": true }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "peer": true, + "dev": true, "requires": { "kind-of": "^6.0.2" } @@ -19689,64 +24416,42 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "peer": true + "dev": true }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "peer": true, + "dev": true, "requires": { "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - } } }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-support": { "version": "0.5.13", @@ -19761,7 +24466,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "stack-utils": { "version": "2.0.6", @@ -19784,13 +24490,13 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "peer": true + "dev": true }, "stacktrace-parser": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "peer": true, + "dev": true, "requires": { "type-fest": "^0.7.1" }, @@ -19799,7 +24505,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "peer": true + "dev": true } } }, @@ -19807,13 +24513,13 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "peer": true + "dev": true }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "peer": true, + "dev": true, "requires": { "safe-buffer": "~5.2.0" }, @@ -19822,7 +24528,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "peer": true + "dev": true } } }, @@ -19840,6 +24546,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -19849,7 +24556,8 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true } } }, @@ -19857,6 +24565,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -19871,7 +24580,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "peer": true + "dev": true }, "strip-final-newline": { "version": "2.0.0", @@ -19898,21 +24607,28 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", - "peer": true + "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "temp": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==", - "peer": true, + "dev": true, "requires": { "os-tmpdir": "^1.0.0", "rimraf": "~2.2.6" @@ -19922,7 +24638,7 @@ "version": "2.2.8", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==", - "peer": true + "dev": true } } }, @@ -19940,20 +24656,20 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "throat": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "peer": true + "dev": true }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "peer": true, + "dev": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -19963,7 +24679,7 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "peer": true, + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -19978,7 +24694,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "peer": true, + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -19988,17 +24704,20 @@ "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } @@ -20007,13 +24726,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "peer": true + "dev": true }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true + "dev": true }, "ts-jest": { "version": "29.1.1", @@ -20054,19 +24773,13 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "tsutils": { @@ -20076,6 +24789,14 @@ "dev": true, "requires": { "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "type-check": { @@ -20109,7 +24830,7 @@ "version": "3.3.9", "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "peer": true, + "dev": true, "requires": { "commander": "~2.13.0", "source-map": "~0.6.1" @@ -20119,25 +24840,33 @@ "version": "2.13.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "peer": true + "dev": true } } }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -20146,29 +24875,32 @@ "unicode-match-property-value-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "peer": true + "dev": true }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "peer": true + "dev": true }, "update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -20187,31 +24919,31 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peer": true, + "dev": true, "requires": {} }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "peer": true + "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "peer": true + "dev": true }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, "v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.12", @@ -20223,18 +24955,19 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "peer": true + "dev": true }, "vlq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "peer": true + "dev": true }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, "requires": { "makeerror": "1.0.12" } @@ -20243,7 +24976,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "peer": true, + "dev": true, "requires": { "defaults": "^1.0.3" } @@ -20252,19 +24985,19 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "peer": true + "dev": true }, "whatwg-fetch": { - "version": "3.6.19", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", - "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", - "peer": true + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "dev": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, + "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -20283,12 +25016,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "peer": true - }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrap-ansi": { @@ -20300,12 +25027,39 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "write-file-atomic": { "version": "4.0.2", @@ -20318,23 +25072,31 @@ } }, "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "peer": true, - "requires": {} + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } }, "xml": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, + "xmlbuilder": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.0.0.tgz", + "integrity": "sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==", "dev": true }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "peer": true + "dev": true }, "y18n": { "version": "5.0.8", @@ -20345,7 +25107,8 @@ "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "yaml": { "version": "1.10.2", @@ -20354,30 +25117,31 @@ "dev": true }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/access-checkout-react-native-sdk/package.json b/access-checkout-react-native-sdk/package.json index 0a715a5..a66a617 100644 --- a/access-checkout-react-native-sdk/package.json +++ b/access-checkout-react-native-sdk/package.json @@ -49,14 +49,16 @@ "jest-html-reporter": "^3.10.2", "jest-junit": "^13.0.0", "prettier": "^2.5.0", + "react": "^18.1.0", + "react-native": "^0.70.0", "react-native-builder-bob": "^0.18.2", + "react-test-renderer": "18.1.0", "ts-jest": "^29.1.1", "typescript": "4.8.4" }, "peerDependencies": { "react": ">=18.1.0", - "react-native": ">=0.70.0", - "react-test-renderer": "18.1.0" + "react-native": ">=0.70.0" }, "react-native-builder-bob": { "source": "src", From d0c1e275c9e975158dd9b60b1fa244b39ff7b7b3 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Mon, 15 Jan 2024 16:06:02 +0000 Subject: [PATCH 19/26] US1764971: expose useCvcOnlyConfig and useCardConfig to provide better experience when initialising configuration for useAccessCheckout Added ValidationListenerException to ensure an error is raised when attempting to use initialiseValidation when no validationConfig is provided, This provides the developers with a clear readable error message and enhances their debugging experience. --- .../.prettierrc.json | 3 +- .../lib/commonjs/hooks/useAccessCheckout.js | 4 +- .../commonjs/hooks/useAccessCheckout.js.map | 2 +- .../lib/commonjs/hooks/useCardConfig.js | 26 +++ .../lib/commonjs/hooks/useCardConfig.js.map | 1 + .../lib/commonjs/hooks/useCardValidation.js | 27 +++- .../commonjs/hooks/useCardValidation.js.map | 2 +- .../lib/commonjs/hooks/useCvcOnlyConfig.js | 24 +++ .../commonjs/hooks/useCvcOnlyConfig.js.map | 1 + .../commonjs/hooks/useCvcOnlyValidation.js | 27 +++- .../hooks/useCvcOnlyValidation.js.map | 2 +- .../lib/commonjs/index.js | 26 +++ .../lib/commonjs/index.js.map | 2 +- .../validation/ValidationListenerException.js | 15 ++ .../ValidationListenerException.js.map | 1 + .../lib/module/hooks/useAccessCheckout.js | 4 +- .../lib/module/hooks/useAccessCheckout.js.map | 2 +- .../lib/module/hooks/useCardConfig.js | 18 +++ .../lib/module/hooks/useCardConfig.js.map | 1 + .../lib/module/hooks/useCardValidation.js | 27 +++- .../lib/module/hooks/useCardValidation.js.map | 2 +- .../lib/module/hooks/useCvcOnlyConfig.js | 17 ++ .../lib/module/hooks/useCvcOnlyConfig.js.map | 1 + .../lib/module/hooks/useCvcOnlyValidation.js | 27 +++- .../module/hooks/useCvcOnlyValidation.js.map | 2 +- .../lib/module/index.js | 2 + .../lib/module/index.js.map | 2 +- .../validation/ValidationListenerException.js | 8 + .../ValidationListenerException.js.map | 1 + .../lib/typescript/hooks/useCardConfig.d.ts | 13 ++ .../typescript/hooks/useCardValidation.d.ts | 6 +- .../typescript/hooks/useCvcOnlyConfig.d.ts | 9 ++ .../hooks/useCvcOnlyValidation.d.ts | 6 +- .../lib/typescript/index.d.ts | 2 + .../ValidationListenerException.d.ts | 3 + .../src/hooks/useAccessCheckout.ts | 4 +- .../src/hooks/useCardConfig.ts | 32 ++++ .../src/hooks/useCardValidation.ts | 32 +++- .../src/hooks/useCvcOnlyConfig.ts | 27 ++++ .../src/hooks/useCvcOnlyValidation.ts | 33 +++- .../src/index.tsx | 4 + .../validation/ValidationListenerException.ts | 7 + .../test/hooks/useAccessCheckout.spec.ts | 150 ++++++++++++------ .../test/hooks/useCardConfig.spec.ts | 117 ++++++++++++++ .../test/hooks/useCardValidation.spec.ts | 16 +- .../test/hooks/useCvcOnlyConfig.spec.ts | 34 ++++ .../test/hooks/useCvcOnlyValidation.spec.ts | 16 +- .../test/test-utils.ts | 7 +- .../ValidationListenerException.spec.ts | 11 ++ demo-app/src/card-flow/CardFlow.tsx | 25 ++- demo-app/src/cvc-flow/CvcFlow.tsx | 21 ++- 51 files changed, 712 insertions(+), 140 deletions(-) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js create mode 100644 access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js create mode 100644 access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/ValidationListenerException.js create mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/ValidationListenerException.js.map create mode 100644 access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js create mode 100644 access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js create mode 100644 access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js.map create mode 100644 access-checkout-react-native-sdk/lib/module/validation/ValidationListenerException.js create mode 100644 access-checkout-react-native-sdk/lib/module/validation/ValidationListenerException.js.map create mode 100644 access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyConfig.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/validation/ValidationListenerException.d.ts create mode 100644 access-checkout-react-native-sdk/src/hooks/useCardConfig.ts create mode 100644 access-checkout-react-native-sdk/src/hooks/useCvcOnlyConfig.ts create mode 100644 access-checkout-react-native-sdk/src/validation/ValidationListenerException.ts create mode 100644 access-checkout-react-native-sdk/test/hooks/useCardConfig.spec.ts create mode 100644 access-checkout-react-native-sdk/test/hooks/useCvcOnlyConfig.spec.ts create mode 100644 access-checkout-react-native-sdk/test/validation/ValidationListenerException.spec.ts diff --git a/access-checkout-react-native-sdk/.prettierrc.json b/access-checkout-react-native-sdk/.prettierrc.json index 6707610..e354e3b 100644 --- a/access-checkout-react-native-sdk/.prettierrc.json +++ b/access-checkout-react-native-sdk/.prettierrc.json @@ -3,5 +3,6 @@ "singleQuote": true, "tabWidth": 2, "trailingComma": "es5", - "useTabs": false + "useTabs": false, + "printWidth": 120 } diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js index 89dc8f3..c87af17 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js @@ -36,7 +36,7 @@ const useAccessCheckout = ({ enablePanFormatting: (_config$validationCon = config.validationConfig) === null || _config$validationCon === void 0 ? void 0 : _config$validationCon.enablePanFormatting, acceptedCardBrands: (_config$validationCon2 = config.validationConfig) === null || _config$validationCon2 === void 0 ? void 0 : _config$validationCon2.acceptedCardBrands }, - merchantListener: (_config$validationCon3 = config.validationConfig) === null || _config$validationCon3 === void 0 ? void 0 : _config$validationCon3.validationListener + validationListener: (_config$validationCon3 = config.validationConfig) === null || _config$validationCon3 === void 0 ? void 0 : _config$validationCon3.validationListener }); const generateSessions = sessionTypes => accessCheckout.generateSessions({ panId: config.panId, @@ -56,7 +56,7 @@ const useAccessCheckout = ({ cvcOnlyValidationConfig: { cvcId: config.cvcId }, - merchantListener: (_config$validationCon4 = config.validationConfig) === null || _config$validationCon4 === void 0 ? void 0 : _config$validationCon4.validationListener + validationListener: (_config$validationCon4 = config.validationConfig) === null || _config$validationCon4 === void 0 ? void 0 : _config$validationCon4.validationListener }); const generateCvcOnlySession = sessionTypes => accessCheckout.generateSessions({ cvcId: config.cvcId diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map index 3cf46e4..92912ff 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["_index","require","_useCardValidation","_useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","AccessCheckout","merchantId","CardConfig","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","useCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","merchantListener","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","useCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession","exports"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({\n baseUrl,\n checkoutId,\n config,\n}: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n merchantListener: config.validationConfig\n ?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n merchantListener: config.validationConfig\n ?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAaO,MAAMG,iBAAiB,GAAGA,CAAC;EAChCC,OAAO;EACPC,UAAU;EACVC;AACiB,CAAC,KAA+B;EACjD,MAAMC,cAAc,GAAG,IAAIC,qBAAc,CAAC;IACxCJ,OAAO,EAAEA,OAAO;IAChBK,UAAU,EAAEJ;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYI,iBAAU,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAG,IAAAC,oCAAiB,EAAC;MACrDR,cAAc;MACdS,oBAAoB,EAAE;QACpBC,KAAK,EAAEX,MAAM,CAACW,KAAK;QACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;QACjCC,KAAK,EAAEb,MAAM,CAACa,KAAK;QACnBC,mBAAmB,GAAAT,qBAAA,GAAEL,MAAM,CAACe,gBAAgB,cAAAV,qBAAA,uBAAvBA,qBAAA,CAAyBS,mBAAmB;QACjEE,kBAAkB,GAAAV,sBAAA,GAAEN,MAAM,CAACe,gBAAgB,cAAAT,sBAAA,uBAAvBA,sBAAA,CAAyBU;MAC/C,CAAC;MACDC,gBAAgB,GAAAV,sBAAA,GAAEP,MAAM,CAACe,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CACdW;IACN,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9CnB,cAAc,CAACkB,gBAAgB,CAC7B;MACER,KAAK,EAAEX,MAAM,CAACW,KAAK;MACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;MACjCC,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDO,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEb,wBAAwB;MAC9CW;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAG,IAAAC,0CAAoB,EAAC;MAC3DvB,cAAc;MACdwB,uBAAuB,EAAE;QAAEZ,KAAK,EAAEb,MAAM,CAACa;MAAM,CAAC;MAChDI,gBAAgB,GAAAK,sBAAA,GAAEtB,MAAM,CAACe,gBAAgB,cAAAO,sBAAA,uBAAvBA,sBAAA,CACdJ;IACN,CAAC,CAAC;IAEF,MAAMQ,sBAAsB,GAAIN,YAAsB,IACpDnB,cAAc,CAACkB,gBAAgB,CAC7B;MACEN,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDO,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEO;IACpB,CAAC;EACH;AACF,CAAC;AAACC,OAAA,CAAA9B,iBAAA,GAAAA,iBAAA"} \ No newline at end of file +{"version":3,"names":["_index","require","_useCardValidation","_useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","AccessCheckout","merchantId","CardConfig","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","useCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","useCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession","exports"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({\n baseUrl,\n checkoutId,\n config,\n}: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n validationListener: config.validationConfig\n ?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n validationListener: config.validationConfig\n ?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAaO,MAAMG,iBAAiB,GAAGA,CAAC;EAChCC,OAAO;EACPC,UAAU;EACVC;AACiB,CAAC,KAA+B;EACjD,MAAMC,cAAc,GAAG,IAAIC,qBAAc,CAAC;IACxCJ,OAAO,EAAEA,OAAO;IAChBK,UAAU,EAAEJ;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYI,iBAAU,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAG,IAAAC,oCAAiB,EAAC;MACrDR,cAAc;MACdS,oBAAoB,EAAE;QACpBC,KAAK,EAAEX,MAAM,CAACW,KAAK;QACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;QACjCC,KAAK,EAAEb,MAAM,CAACa,KAAK;QACnBC,mBAAmB,GAAAT,qBAAA,GAAEL,MAAM,CAACe,gBAAgB,cAAAV,qBAAA,uBAAvBA,qBAAA,CAAyBS,mBAAmB;QACjEE,kBAAkB,GAAAV,sBAAA,GAAEN,MAAM,CAACe,gBAAgB,cAAAT,sBAAA,uBAAvBA,sBAAA,CAAyBU;MAC/C,CAAC;MACDC,kBAAkB,GAAAV,sBAAA,GAAEP,MAAM,CAACe,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CAChBU;IACN,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9ClB,cAAc,CAACiB,gBAAgB,CAC7B;MACEP,KAAK,EAAEX,MAAM,CAACW,KAAK;MACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;MACjCC,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEZ,wBAAwB;MAC9CU;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAG,IAAAC,0CAAoB,EAAC;MAC3DtB,cAAc;MACduB,uBAAuB,EAAE;QAAEX,KAAK,EAAEb,MAAM,CAACa;MAAM,CAAC;MAChDI,kBAAkB,GAAAI,sBAAA,GAAErB,MAAM,CAACe,gBAAgB,cAAAM,sBAAA,uBAAvBA,sBAAA,CAChBJ;IACN,CAAC,CAAC;IAEF,MAAMQ,sBAAsB,GAAIN,YAAsB,IACpDlB,cAAc,CAACiB,gBAAgB,CAC7B;MACEL,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEO;IACpB,CAAC;EACH;AACF,CAAC;AAACC,OAAA,CAAA7B,iBAAA,GAAAA,iBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js new file mode 100644 index 0000000..a47aa2d --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.useCardConfig = void 0; +var _CardValidationConfig = require("../validation/CardValidationConfig"); +var _CardConfig = _interopRequireDefault(require("../config/CardConfig")); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +const useCardConfig = props => { + const cardConfig = new _CardConfig.default({ + panId: props.panId, + expiryDateId: props.expiryDateId, + cvcId: props.cvcId + }); + if (props.validationConfig) { + cardConfig.validationConfig = new _CardValidationConfig.CardValidationConfig({ + acceptedCardBrands: props.validationConfig.acceptedCardBrands, + enablePanFormatting: props.validationConfig.enablePanFormatting, + validationListener: props.validationConfig.validationListener + }); + } + return cardConfig; +}; +exports.useCardConfig = useCardConfig; +//# sourceMappingURL=useCardConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map new file mode 100644 index 0000000..c252f25 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_CardValidationConfig","require","_CardConfig","_interopRequireDefault","obj","__esModule","default","useCardConfig","props","cardConfig","CardConfig","panId","expiryDateId","cvcId","validationConfig","CardValidationConfig","acceptedCardBrands","enablePanFormatting","validationListener","exports"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { CardValidationConfig } from '../validation/CardValidationConfig';\nimport CardConfig from '../config/CardConfig';\n\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n };\n}\n\nexport const useCardConfig = (props: UseCardConfig): CardConfig => {\n const cardConfig = new CardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new CardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":";;;;;;AACA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA8C,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAavC,MAAMG,aAAa,GAAIC,KAAoB,IAAiB;EACjE,MAAMC,UAAU,GAAG,IAAIC,mBAAU,CAAC;IAChCC,KAAK,EAAEH,KAAK,CAACG,KAAK;IAClBC,YAAY,EAAEJ,KAAK,CAACI,YAAY;IAChCC,KAAK,EAAEL,KAAK,CAACK;EACf,CAAC,CAAC;EAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;IAC1BL,UAAU,CAACK,gBAAgB,GAAG,IAAIC,0CAAoB,CAAC;MACrDC,kBAAkB,EAAER,KAAK,CAACM,gBAAgB,CAACE,kBAAkB;MAC7DC,mBAAmB,EAAET,KAAK,CAACM,gBAAgB,CAACG,mBAAmB;MAC/DC,kBAAkB,EAAEV,KAAK,CAACM,gBAAgB,CAACI;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOT,UAAU;AACnB,CAAC;AAACU,OAAA,CAAAZ,aAAA,GAAAA,aAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js index 3f4b242..c4c5ddd 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js @@ -10,10 +10,15 @@ var _reactNative = require("react-native"); var _AccessCheckout = _interopRequireDefault(require("../AccessCheckout")); var _AccessCheckoutReactNative = _interopRequireDefault(require("../AccessCheckoutReactNative")); var _CardValidationEventListener = require("../validation/CardValidationEventListener"); +var _ValidationListenerException = require("../validation/ValidationListenerException"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function useCardValidationEventListener(merchantListener) { +function useCardValidationEventListener(validationListener) { (0, _react.useEffect)(() => { - const nativeEventListener = (0, _CardValidationEventListener.cardValidationNativeEventListenerOf)(merchantListener); + //Safe-guard in the case where no validation listener was configured we avoid registering the native listener + if (!validationListener) { + return; + } + const nativeEventListener = (0, _CardValidationEventListener.cardValidationNativeEventListenerOf)(validationListener); const nativeEventEmitter = new _reactNative.NativeEventEmitter(_AccessCheckoutReactNative.default); const eventSubscription = nativeEventEmitter.addListener(_AccessCheckout.default.CardValidationEventType, nativeEventListener); return () => { @@ -24,10 +29,24 @@ function useCardValidationEventListener(merchantListener) { function useCardValidation({ accessCheckout, cardValidationConfig, - merchantListener + validationListener }) { - useCardValidationEventListener(merchantListener); + /* + Implementation Note: To allow the hook to render and use hooks correctly: + `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + was provided in order to register the native event. + */ + useCardValidationEventListener(validationListener); const initialiseCardValidation = () => { + /* + Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional. + We added a safe-guard that will raise a ValidationListenerException which prevents the + `initialiseCardValidation` method from being called when no validationConfig is provided. + This provides the developers with a clear readable error message and enhances their debugging experience. + */ + if (!validationListener) { + throw new _ValidationListenerException.ValidationListenerException(); + } return accessCheckout.initialiseCardValidation(cardValidationConfig); }; return { diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map index 2a1cde7..1033354 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map @@ -1 +1 @@ -{"version":3,"names":["_react","require","_reactNative","_AccessCheckout","_interopRequireDefault","_AccessCheckoutReactNative","_CardValidationEventListener","obj","__esModule","default","useCardValidationEventListener","merchantListener","useEffect","nativeEventListener","cardValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\n\nexport function useCardValidationEventListener(\n merchantListener: CardValidationEventListener\n) {\n useEffect(() => {\n const nativeEventListener =\n cardValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n merchantListener: CardValidationEventListener;\n}\nexport function useCardValidation({\n accessCheckout,\n cardValidationConfig,\n merchantListener,\n}: UseCardValidationHook) {\n useCardValidationEventListener(merchantListener);\n const initialiseCardValidation = () => {\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAGmD,SAAAG,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5C,SAASG,8BAA8BA,CAC5CC,gBAA6C,EAC7C;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,mBAAmB,GACvB,IAAAC,gEAAmC,EAACH,gBAAgB,CAAC;IACvD,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,kCACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,uBAAc,CAACC,uBAAuB,EACtCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAaO,SAASC,iBAAiBA,CAAC;EAChCC,cAAc;EACdC,oBAAoB;EACpBd;AACqB,CAAC,EAAE;EACxBD,8BAA8B,CAACC,gBAAgB,CAAC;EAChD,MAAMe,wBAAwB,GAAGA,CAAA,KAAM;IACrC,OAAOF,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file +{"version":3,"names":["_react","require","_reactNative","_AccessCheckout","_interopRequireDefault","_AccessCheckoutReactNative","_CardValidationEventListener","_ValidationListenerException","obj","__esModule","default","useCardValidationEventListener","validationListener","useEffect","nativeEventListener","cardValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation","ValidationListenerException"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport function useCardValidationEventListener(\n validationListener: CardValidationEventListener\n) {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener =\n cardValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n validationListener: CardValidationEventListener;\n}\n\nexport function useCardValidation({\n accessCheckout,\n cardValidationConfig,\n validationListener,\n}: UseCardValidationHook) {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCardValidationEventListener(validationListener);\n\n const initialiseCardValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCardValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAIA,IAAAM,4BAAA,GAAAN,OAAA;AAAwF,SAAAG,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjF,SAASG,8BAA8BA,CAC5CC,kBAA+C,EAC/C;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd;IACA,IAAI,CAACD,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAME,mBAAmB,GACvB,IAAAC,gEAAmC,EAACH,kBAAkB,CAAC;IACzD,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,kCACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,uBAAc,CAACC,uBAAuB,EACtCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAcO,SAASC,iBAAiBA,CAAC;EAChCC,cAAc;EACdC,oBAAoB;EACpBd;AACqB,CAAC,EAAE;EACxB;AACF;AACA;AACA;AACA;EACED,8BAA8B,CAACC,kBAAkB,CAAC;EAElD,MAAMe,wBAAwB,GAAGA,CAAA,KAAM;IACrC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACf,kBAAkB,EAAE;MACvB,MAAM,IAAIgB,wDAA2B,CAAC,CAAC;IACzC;IACA,OAAOH,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js new file mode 100644 index 0000000..ac0119a --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.useCvcOnlyConfig = useCvcOnlyConfig; +var _CvcOnlyConfig = _interopRequireDefault(require("../config/CvcOnlyConfig")); +var _CvcValidationConfig = require("../validation/CvcValidationConfig"); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function useCvcOnlyConfig({ + cvcId, + validationConfig +}) { + const cardConfig = new _CvcOnlyConfig.default({ + cvcId + }); + if (validationConfig) { + cardConfig.validationConfig = new _CvcValidationConfig.CvcValidationConfig({ + validationListener: validationConfig.validationListener + }); + } + return cardConfig; +} +//# sourceMappingURL=useCvcOnlyConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js.map new file mode 100644 index 0000000..00b9d47 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_CvcOnlyConfig","_interopRequireDefault","require","_CvcValidationConfig","obj","__esModule","default","useCvcOnlyConfig","cvcId","validationConfig","cardConfig","CvcOnlyConfig","CvcValidationConfig","validationListener"],"sources":["useCvcOnlyConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport CvcOnlyConfig from '../config/CvcOnlyConfig';\nimport { CvcValidationConfig } from '../validation/CvcValidationConfig';\n\nexport interface UseCvcOnlyConfig {\n cvcId: string;\n validationConfig?: {\n validationListener: CardValidationEventListener;\n };\n}\n\nexport function useCvcOnlyConfig({\n cvcId,\n validationConfig,\n}: UseCvcOnlyConfig) {\n const cardConfig = new CvcOnlyConfig({\n cvcId,\n });\n\n if (validationConfig) {\n cardConfig.validationConfig = new CvcValidationConfig({\n validationListener: validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n}\n"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAAwE,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASjE,SAASG,gBAAgBA,CAAC;EAC/BC,KAAK;EACLC;AACgB,CAAC,EAAE;EACnB,MAAMC,UAAU,GAAG,IAAIC,sBAAa,CAAC;IACnCH;EACF,CAAC,CAAC;EAEF,IAAIC,gBAAgB,EAAE;IACpBC,UAAU,CAACD,gBAAgB,GAAG,IAAIG,wCAAmB,CAAC;MACpDC,kBAAkB,EAAEJ,gBAAgB,CAACI;IACvC,CAAC,CAAC;EACJ;EAEA,OAAOH,UAAU;AACnB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js index 4619eac..b476f9b 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js @@ -8,11 +8,16 @@ var _react = require("react"); var _reactNative = require("react-native"); var _index = _interopRequireWildcard(require("../index")); var _CvcOnlyValidationEventListener = require("../validation/CvcOnlyValidationEventListener"); +var _ValidationListenerException = require("../validation/ValidationListenerException"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } -const useCvcOnlyValidationEventListener = merchantListener => { +const useCvcOnlyValidationEventListener = validationListener => { (0, _react.useEffect)(() => { - const nativeEventListener = (0, _CvcOnlyValidationEventListener.cvcOnlyValidationNativeEventListenerOf)(merchantListener); + //Safe-guard in the case where no validation listener was configured we avoid registering the native listener + if (!validationListener) { + return; + } + const nativeEventListener = (0, _CvcOnlyValidationEventListener.cvcOnlyValidationNativeEventListenerOf)(validationListener); const nativeEventEmitter = new _reactNative.NativeEventEmitter(_index.default); const eventSubscription = nativeEventEmitter.addListener(_index.AccessCheckout.CvcOnlyValidationEventType, nativeEventListener); return () => { @@ -24,10 +29,24 @@ exports.useCvcOnlyValidationEventListener = useCvcOnlyValidationEventListener; const useCvcOnlyValidation = ({ accessCheckout, cvcOnlyValidationConfig, - merchantListener + validationListener }) => { - useCvcOnlyValidationEventListener(merchantListener); + /* + Implementation Note: To allow the hook to render and use hooks correctly: + `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + was provided in order to register the native event. + */ + useCvcOnlyValidationEventListener(validationListener); const initialiseCvcOnlyValidation = () => { + /* + Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional. + We added a safe-guard that will raise a ValidationListenerException which prevents the + `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided. + This provides the developers with a clear readable error message and enhances their debugging experience. + */ + if (!validationListener) { + throw new _ValidationListenerException.ValidationListenerException(); + } return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig); }; return { diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map index dedbc70..a2afc9b 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map @@ -1 +1 @@ -{"version":3,"names":["_react","require","_reactNative","_index","_interopRequireWildcard","_CvcOnlyValidationEventListener","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","useCvcOnlyValidationEventListener","merchantListener","useEffect","nativeEventListener","cvcOnlyValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CvcOnlyValidationEventType","remove","exports","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CardValidationEventListener,\n} from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\n\nexport const useCvcOnlyValidationEventListener = (\n merchantListener: CvcOnlyValidationEventListener\n) => {\n useEffect(() => {\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n merchantListener: CardValidationEventListener;\n}\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n merchantListener,\n}: UseCvcOnlyValidationHook) => {\n useCvcOnlyValidationEventListener(merchantListener);\n\n const initialiseCvcOnlyValidation = () => {\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AAKA,IAAAI,+BAAA,GAAAJ,OAAA;AAAsG,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAE/F,MAAMY,iCAAiC,GAC5CC,gBAAgD,IAC7C;EACH,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,mBAAmB,GACvB,IAAAC,sEAAsC,EAACH,gBAAgB,CAAC;IAC1D,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,cACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,qBAAc,CAACC,0BAA0B,EACzCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAACC,OAAA,CAAAb,iCAAA,GAAAA,iCAAA;AASK,MAAMc,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBf;AACwB,CAAC,KAAK;EAC9BD,iCAAiC,CAACC,gBAAgB,CAAC;EAEnD,MAAMgB,2BAA2B,GAAGA,CAAA,KAAM;IACxC,OAAOF,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC;AAACJ,OAAA,CAAAC,oBAAA,GAAAA,oBAAA"} \ No newline at end of file +{"version":3,"names":["_react","require","_reactNative","_index","_interopRequireWildcard","_CvcOnlyValidationEventListener","_ValidationListenerException","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","useCvcOnlyValidationEventListener","validationListener","useEffect","nativeEventListener","cvcOnlyValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CvcOnlyValidationEventType","remove","exports","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation","ValidationListenerException"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CardValidationEventListener,\n} from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport const useCvcOnlyValidationEventListener = (\n validationListener: CvcOnlyValidationEventListener\n) => {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n validationListener: CardValidationEventListener;\n}\n\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n validationListener,\n}: UseCvcOnlyValidationHook) => {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCvcOnlyValidationEventListener(validationListener);\n const initialiseCvcOnlyValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AAKA,IAAAI,+BAAA,GAAAJ,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAAwF,SAAAM,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAEjF,MAAMY,iCAAiC,GAC5CC,kBAAkD,IAC/C;EACH,IAAAC,gBAAS,EAAC,MAAM;IACd;IACA,IAAI,CAACD,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAME,mBAAmB,GACvB,IAAAC,sEAAsC,EAACH,kBAAkB,CAAC;IAC5D,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,cACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,qBAAc,CAACC,0BAA0B,EACzCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAACC,OAAA,CAAAb,iCAAA,GAAAA,iCAAA;AAUK,MAAMc,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBf;AACwB,CAAC,KAAK;EAC9B;AACF;AACA;AACA;AACA;EACED,iCAAiC,CAACC,kBAAkB,CAAC;EACrD,MAAMgB,2BAA2B,GAAGA,CAAA,KAAM;IACxC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAAChB,kBAAkB,EAAE;MACvB,MAAM,IAAIiB,wDAA2B,CAAC,CAAC;IACzC;IAEA,OAAOH,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC;AAACJ,OAAA,CAAAC,oBAAA,GAAAA,oBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js b/access-checkout-react-native-sdk/lib/commonjs/index.js index 5ea8508..e9e5475 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js @@ -99,6 +99,18 @@ Object.defineProperty(exports, "UseAccessCheckoutExports", { return _useAccessCheckout.UseAccessCheckoutExports; } }); +Object.defineProperty(exports, "UseCardConfig", { + enumerable: true, + get: function () { + return _useCardConfig.UseCardConfig; + } +}); +Object.defineProperty(exports, "UseCvcOnlyConfig", { + enumerable: true, + get: function () { + return _useCvcOnlyConfig.UseCvcOnlyConfig; + } +}); exports.default = void 0; Object.defineProperty(exports, "useAccessCheckout", { enumerable: true, @@ -106,6 +118,18 @@ Object.defineProperty(exports, "useAccessCheckout", { return _useAccessCheckout.useAccessCheckout; } }); +Object.defineProperty(exports, "useCardConfig", { + enumerable: true, + get: function () { + return _useCardConfig.useCardConfig; + } +}); +Object.defineProperty(exports, "useCvcOnlyConfig", { + enumerable: true, + get: function () { + return _useCvcOnlyConfig.useCvcOnlyConfig; + } +}); var _AccessCheckoutReactNative = _interopRequireDefault(require("./AccessCheckoutReactNative")); var _AccessCheckout = _interopRequireDefault(require("./AccessCheckout")); var _SessionGenerationConfig = _interopRequireDefault(require("./session/SessionGenerationConfig")); @@ -119,6 +143,8 @@ var _CardValidationEventListener = require("./validation/CardValidationEventList var _CvcOnlyValidationEventListener = require("./validation/CvcOnlyValidationEventListener"); var _CvcValidationConfig = require("./validation/CvcValidationConfig"); var _CardValidationConfig = require("./validation/CardValidationConfig"); +var _useCardConfig = require("./hooks/useCardConfig"); +var _useCvcOnlyConfig = require("./hooks/useCvcOnlyConfig"); var _useAccessCheckout = require("./hooks/useAccessCheckout"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js.map b/access-checkout-react-native-sdk/lib/commonjs/index.js.map index d7fa2f4..d9a377f 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_Brand","_BrandImage","_CardConfig","_CvcOnlyConfig","_CardValidationEventListener","_CvcOnlyValidationEventListener","_CvcValidationConfig","_CardValidationConfig","_useAccessCheckout","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/CardConfig';\nexport { default as CvcOnlyConfig } from './config/CvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { CvcValidationConfig } from './validation/CvcValidationConfig';\nexport { CardValidationConfig } from './validation/CardValidationConfig';\nexport {\n useAccessCheckout,\n UseAccessCheckout,\n UseAccessCheckoutExports,\n} from './hooks/useAccessCheckout';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,cAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AACA,IAAAW,+BAAA,GAAAX,OAAA;AAEA,IAAAY,oBAAA,GAAAZ,OAAA;AACA,IAAAa,qBAAA,GAAAb,OAAA;AACA,IAAAc,kBAAA,GAAAd,OAAA;AAImC,SAAAe,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAZ,wBAAAY,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAzB,uBAAAqC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GAzBpBkB,kCAAyB"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_Brand","_BrandImage","_CardConfig","_CvcOnlyConfig","_CardValidationEventListener","_CvcOnlyValidationEventListener","_CvcValidationConfig","_CardValidationConfig","_useCardConfig","_useCvcOnlyConfig","_useAccessCheckout","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/CardConfig';\nexport { default as CvcOnlyConfig } from './config/CvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { CvcValidationConfig } from './validation/CvcValidationConfig';\nexport { CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { useCardConfig, UseCardConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig';\n\nexport {\n useAccessCheckout,\n UseAccessCheckout,\n UseAccessCheckoutExports,\n} from './hooks/useAccessCheckout';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,cAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AACA,IAAAW,+BAAA,GAAAX,OAAA;AAEA,IAAAY,oBAAA,GAAAZ,OAAA;AACA,IAAAa,qBAAA,GAAAb,OAAA;AAEA,IAAAc,cAAA,GAAAd,OAAA;AACA,IAAAe,iBAAA,GAAAf,OAAA;AAEA,IAAAgB,kBAAA,GAAAhB,OAAA;AAImC,SAAAiB,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAd,wBAAAc,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAA3B,uBAAAuC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GA7BpBkB,kCAAyB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/ValidationListenerException.js b/access-checkout-react-native-sdk/lib/commonjs/validation/ValidationListenerException.js new file mode 100644 index 0000000..d0a87e3 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/ValidationListenerException.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ValidationListenerException = void 0; +class ValidationListenerException extends Error { + constructor() { + super(); + this.name = 'ValidationListenerError'; + this.message = `Validation listener was undefined. When using validation methods such as 'initialiseValidation' a validation listener needs to be provided.`; + } +} +exports.ValidationListenerException = ValidationListenerException; +//# sourceMappingURL=ValidationListenerException.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/ValidationListenerException.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/ValidationListenerException.js.map new file mode 100644 index 0000000..70ba54d --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/ValidationListenerException.js.map @@ -0,0 +1 @@ +{"version":3,"names":["ValidationListenerException","Error","constructor","name","message","exports"],"sources":["ValidationListenerException.ts"],"sourcesContent":["export class ValidationListenerException extends Error {\n constructor() {\n super();\n this.name = 'ValidationListenerError';\n this.message = `Validation listener was undefined. When using validation methods such as 'initialiseValidation' a validation listener needs to be provided.`;\n }\n}\n"],"mappings":";;;;;;AAAO,MAAMA,2BAA2B,SAASC,KAAK,CAAC;EACrDC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,IAAI,GAAG,yBAAyB;IACrC,IAAI,CAACC,OAAO,GAAI,6IAA4I;EAC9J;AACF;AAACC,OAAA,CAAAL,2BAAA,GAAAA,2BAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js index 86e30c8..7e44cfa 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js @@ -30,7 +30,7 @@ export const useAccessCheckout = ({ enablePanFormatting: (_config$validationCon = config.validationConfig) === null || _config$validationCon === void 0 ? void 0 : _config$validationCon.enablePanFormatting, acceptedCardBrands: (_config$validationCon2 = config.validationConfig) === null || _config$validationCon2 === void 0 ? void 0 : _config$validationCon2.acceptedCardBrands }, - merchantListener: (_config$validationCon3 = config.validationConfig) === null || _config$validationCon3 === void 0 ? void 0 : _config$validationCon3.validationListener + validationListener: (_config$validationCon3 = config.validationConfig) === null || _config$validationCon3 === void 0 ? void 0 : _config$validationCon3.validationListener }); const generateSessions = sessionTypes => accessCheckout.generateSessions({ panId: config.panId, @@ -50,7 +50,7 @@ export const useAccessCheckout = ({ cvcOnlyValidationConfig: { cvcId: config.cvcId }, - merchantListener: (_config$validationCon4 = config.validationConfig) === null || _config$validationCon4 === void 0 ? void 0 : _config$validationCon4.validationListener + validationListener: (_config$validationCon4 = config.validationConfig) === null || _config$validationCon4 === void 0 ? void 0 : _config$validationCon4.validationListener }); const generateCvcOnlySession = sessionTypes => accessCheckout.generateSessions({ cvcId: config.cvcId diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map index 9fff0c0..3585a16 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckout","CardConfig","useCardValidation","useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","merchantId","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","merchantListener","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({\n baseUrl,\n checkoutId,\n config,\n}: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n merchantListener: config.validationConfig\n ?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n merchantListener: config.validationConfig\n ?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":"AAAA,SACEA,cAAc,EACdC,UAAU,QAKL,UAAU;AACjB,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,oBAAoB,QAAQ,wBAAwB;AAa7D,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAChCC,OAAO;EACPC,UAAU;EACVC;AACiB,CAAC,KAA+B;EACjD,MAAMC,cAAc,GAAG,IAAIR,cAAc,CAAC;IACxCK,OAAO,EAAEA,OAAO;IAChBI,UAAU,EAAEH;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYN,UAAU,EAAE;IAAA,IAAAS,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAGX,iBAAiB,CAAC;MACrDM,cAAc;MACdM,oBAAoB,EAAE;QACpBC,KAAK,EAAER,MAAM,CAACQ,KAAK;QACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;QACjCC,KAAK,EAAEV,MAAM,CAACU,KAAK;QACnBC,mBAAmB,GAAAR,qBAAA,GAAEH,MAAM,CAACY,gBAAgB,cAAAT,qBAAA,uBAAvBA,qBAAA,CAAyBQ,mBAAmB;QACjEE,kBAAkB,GAAAT,sBAAA,GAAEJ,MAAM,CAACY,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CAAyBS;MAC/C,CAAC;MACDC,gBAAgB,GAAAT,sBAAA,GAAEL,MAAM,CAACY,gBAAgB,cAAAP,sBAAA,uBAAvBA,sBAAA,CACdU;IACN,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9ChB,cAAc,CAACe,gBAAgB,CAC7B;MACER,KAAK,EAAER,MAAM,CAACQ,KAAK;MACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;MACjCC,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDO,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEZ,wBAAwB;MAC9CU;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAGxB,oBAAoB,CAAC;MAC3DK,cAAc;MACdoB,uBAAuB,EAAE;QAAEX,KAAK,EAAEV,MAAM,CAACU;MAAM,CAAC;MAChDI,gBAAgB,GAAAK,sBAAA,GAAEnB,MAAM,CAACY,gBAAgB,cAAAO,sBAAA,uBAAvBA,sBAAA,CACdJ;IACN,CAAC,CAAC;IAEF,MAAMO,sBAAsB,GAAIL,YAAsB,IACpDhB,cAAc,CAACe,gBAAgB,CAC7B;MACEN,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDO,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEM;IACpB,CAAC;EACH;AACF,CAAC"} \ No newline at end of file +{"version":3,"names":["AccessCheckout","CardConfig","useCardValidation","useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","merchantId","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({\n baseUrl,\n checkoutId,\n config,\n}: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n validationListener: config.validationConfig\n ?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n validationListener: config.validationConfig\n ?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":"AAAA,SACEA,cAAc,EACdC,UAAU,QAKL,UAAU;AACjB,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,oBAAoB,QAAQ,wBAAwB;AAa7D,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAChCC,OAAO;EACPC,UAAU;EACVC;AACiB,CAAC,KAA+B;EACjD,MAAMC,cAAc,GAAG,IAAIR,cAAc,CAAC;IACxCK,OAAO,EAAEA,OAAO;IAChBI,UAAU,EAAEH;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYN,UAAU,EAAE;IAAA,IAAAS,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAGX,iBAAiB,CAAC;MACrDM,cAAc;MACdM,oBAAoB,EAAE;QACpBC,KAAK,EAAER,MAAM,CAACQ,KAAK;QACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;QACjCC,KAAK,EAAEV,MAAM,CAACU,KAAK;QACnBC,mBAAmB,GAAAR,qBAAA,GAAEH,MAAM,CAACY,gBAAgB,cAAAT,qBAAA,uBAAvBA,qBAAA,CAAyBQ,mBAAmB;QACjEE,kBAAkB,GAAAT,sBAAA,GAAEJ,MAAM,CAACY,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CAAyBS;MAC/C,CAAC;MACDC,kBAAkB,GAAAT,sBAAA,GAAEL,MAAM,CAACY,gBAAgB,cAAAP,sBAAA,uBAAvBA,sBAAA,CAChBS;IACN,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9Cf,cAAc,CAACc,gBAAgB,CAC7B;MACEP,KAAK,EAAER,MAAM,CAACQ,KAAK;MACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;MACjCC,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEX,wBAAwB;MAC9CS;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAGvB,oBAAoB,CAAC;MAC3DK,cAAc;MACdmB,uBAAuB,EAAE;QAAEV,KAAK,EAAEV,MAAM,CAACU;MAAM,CAAC;MAChDI,kBAAkB,GAAAI,sBAAA,GAAElB,MAAM,CAACY,gBAAgB,cAAAM,sBAAA,uBAAvBA,sBAAA,CAChBJ;IACN,CAAC,CAAC;IAEF,MAAMO,sBAAsB,GAAIL,YAAsB,IACpDf,cAAc,CAACc,gBAAgB,CAC7B;MACEL,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEM;IACpB,CAAC;EACH;AACF,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js new file mode 100644 index 0000000..771a215 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js @@ -0,0 +1,18 @@ +import { CardValidationConfig } from '../validation/CardValidationConfig'; +import CardConfig from '../config/CardConfig'; +export const useCardConfig = props => { + const cardConfig = new CardConfig({ + panId: props.panId, + expiryDateId: props.expiryDateId, + cvcId: props.cvcId + }); + if (props.validationConfig) { + cardConfig.validationConfig = new CardValidationConfig({ + acceptedCardBrands: props.validationConfig.acceptedCardBrands, + enablePanFormatting: props.validationConfig.enablePanFormatting, + validationListener: props.validationConfig.validationListener + }); + } + return cardConfig; +}; +//# sourceMappingURL=useCardConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map new file mode 100644 index 0000000..a49b15c --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CardValidationConfig","CardConfig","useCardConfig","props","cardConfig","panId","expiryDateId","cvcId","validationConfig","acceptedCardBrands","enablePanFormatting","validationListener"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { CardValidationConfig } from '../validation/CardValidationConfig';\nimport CardConfig from '../config/CardConfig';\n\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n };\n}\n\nexport const useCardConfig = (props: UseCardConfig): CardConfig => {\n const cardConfig = new CardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new CardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":"AACA,SAASA,oBAAoB,QAAQ,oCAAoC;AACzE,OAAOC,UAAU,MAAM,sBAAsB;AAa7C,OAAO,MAAMC,aAAa,GAAIC,KAAoB,IAAiB;EACjE,MAAMC,UAAU,GAAG,IAAIH,UAAU,CAAC;IAChCI,KAAK,EAAEF,KAAK,CAACE,KAAK;IAClBC,YAAY,EAAEH,KAAK,CAACG,YAAY;IAChCC,KAAK,EAAEJ,KAAK,CAACI;EACf,CAAC,CAAC;EAEF,IAAIJ,KAAK,CAACK,gBAAgB,EAAE;IAC1BJ,UAAU,CAACI,gBAAgB,GAAG,IAAIR,oBAAoB,CAAC;MACrDS,kBAAkB,EAAEN,KAAK,CAACK,gBAAgB,CAACC,kBAAkB;MAC7DC,mBAAmB,EAAEP,KAAK,CAACK,gBAAgB,CAACE,mBAAmB;MAC/DC,kBAAkB,EAAER,KAAK,CAACK,gBAAgB,CAACG;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOP,UAAU;AACnB,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js index cd1cd26..2ffd26a 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js @@ -3,9 +3,14 @@ import { NativeEventEmitter } from 'react-native'; import AccessCheckout from '../AccessCheckout'; import AccessCheckoutReactNative from '../AccessCheckoutReactNative'; import { cardValidationNativeEventListenerOf } from '../validation/CardValidationEventListener'; -export function useCardValidationEventListener(merchantListener) { +import { ValidationListenerException } from '../validation/ValidationListenerException'; +export function useCardValidationEventListener(validationListener) { useEffect(() => { - const nativeEventListener = cardValidationNativeEventListenerOf(merchantListener); + //Safe-guard in the case where no validation listener was configured we avoid registering the native listener + if (!validationListener) { + return; + } + const nativeEventListener = cardValidationNativeEventListenerOf(validationListener); const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative); const eventSubscription = nativeEventEmitter.addListener(AccessCheckout.CardValidationEventType, nativeEventListener); return () => { @@ -16,10 +21,24 @@ export function useCardValidationEventListener(merchantListener) { export function useCardValidation({ accessCheckout, cardValidationConfig, - merchantListener + validationListener }) { - useCardValidationEventListener(merchantListener); + /* + Implementation Note: To allow the hook to render and use hooks correctly: + `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + was provided in order to register the native event. + */ + useCardValidationEventListener(validationListener); const initialiseCardValidation = () => { + /* + Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional. + We added a safe-guard that will raise a ValidationListenerException which prevents the + `initialiseCardValidation` method from being called when no validationConfig is provided. + This provides the developers with a clear readable error message and enhances their debugging experience. + */ + if (!validationListener) { + throw new ValidationListenerException(); + } return accessCheckout.initialiseCardValidation(cardValidationConfig); }; return { diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map index 877fba9..5192423 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map @@ -1 +1 @@ -{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckout","AccessCheckoutReactNative","cardValidationNativeEventListenerOf","useCardValidationEventListener","merchantListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\n\nexport function useCardValidationEventListener(\n merchantListener: CardValidationEventListener\n) {\n useEffect(() => {\n const nativeEventListener =\n cardValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n merchantListener: CardValidationEventListener;\n}\nexport function useCardValidation({\n accessCheckout,\n cardValidationConfig,\n merchantListener,\n}: UseCardValidationHook) {\n useCardValidationEventListener(merchantListener);\n const initialiseCardValidation = () => {\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,yBAAyB,MAAM,8BAA8B;AACpE,SAEEC,mCAAmC,QAC9B,2CAA2C;AAElD,OAAO,SAASC,8BAA8BA,CAC5CC,gBAA6C,EAC7C;EACAN,SAAS,CAAC,MAAM;IACd,MAAMO,mBAAmB,GACvBH,mCAAmC,CAACE,gBAAgB,CAAC;IACvD,MAAME,kBAAkB,GAAG,IAAIP,kBAAkB,CAC/CE,yBACF,CAAC;IAED,MAAMM,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDR,cAAc,CAACS,uBAAuB,EACtCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAaA,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,cAAc;EACdC,oBAAoB;EACpBT;AACqB,CAAC,EAAE;EACxBD,8BAA8B,CAACC,gBAAgB,CAAC;EAChD,MAAMU,wBAAwB,GAAGA,CAAA,KAAM;IACrC,OAAOF,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file +{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckout","AccessCheckoutReactNative","cardValidationNativeEventListenerOf","ValidationListenerException","useCardValidationEventListener","validationListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport function useCardValidationEventListener(\n validationListener: CardValidationEventListener\n) {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener =\n cardValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n validationListener: CardValidationEventListener;\n}\n\nexport function useCardValidation({\n accessCheckout,\n cardValidationConfig,\n validationListener,\n}: UseCardValidationHook) {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCardValidationEventListener(validationListener);\n\n const initialiseCardValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCardValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,yBAAyB,MAAM,8BAA8B;AACpE,SAEEC,mCAAmC,QAC9B,2CAA2C;AAClD,SAASC,2BAA2B,QAAQ,2CAA2C;AAEvF,OAAO,SAASC,8BAA8BA,CAC5CC,kBAA+C,EAC/C;EACAP,SAAS,CAAC,MAAM;IACd;IACA,IAAI,CAACO,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAMC,mBAAmB,GACvBJ,mCAAmC,CAACG,kBAAkB,CAAC;IACzD,MAAME,kBAAkB,GAAG,IAAIR,kBAAkB,CAC/CE,yBACF,CAAC;IAED,MAAMO,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDT,cAAc,CAACU,uBAAuB,EACtCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAcA,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,cAAc;EACdC,oBAAoB;EACpBT;AACqB,CAAC,EAAE;EACxB;AACF;AACA;AACA;AACA;EACED,8BAA8B,CAACC,kBAAkB,CAAC;EAElD,MAAMU,wBAAwB,GAAGA,CAAA,KAAM;IACrC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACV,kBAAkB,EAAE;MACvB,MAAM,IAAIF,2BAA2B,CAAC,CAAC;IACzC;IACA,OAAOU,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js new file mode 100644 index 0000000..1896f4f --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js @@ -0,0 +1,17 @@ +import CvcOnlyConfig from '../config/CvcOnlyConfig'; +import { CvcValidationConfig } from '../validation/CvcValidationConfig'; +export function useCvcOnlyConfig({ + cvcId, + validationConfig +}) { + const cardConfig = new CvcOnlyConfig({ + cvcId + }); + if (validationConfig) { + cardConfig.validationConfig = new CvcValidationConfig({ + validationListener: validationConfig.validationListener + }); + } + return cardConfig; +} +//# sourceMappingURL=useCvcOnlyConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js.map new file mode 100644 index 0000000..cf16edb --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["CvcOnlyConfig","CvcValidationConfig","useCvcOnlyConfig","cvcId","validationConfig","cardConfig","validationListener"],"sources":["useCvcOnlyConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport CvcOnlyConfig from '../config/CvcOnlyConfig';\nimport { CvcValidationConfig } from '../validation/CvcValidationConfig';\n\nexport interface UseCvcOnlyConfig {\n cvcId: string;\n validationConfig?: {\n validationListener: CardValidationEventListener;\n };\n}\n\nexport function useCvcOnlyConfig({\n cvcId,\n validationConfig,\n}: UseCvcOnlyConfig) {\n const cardConfig = new CvcOnlyConfig({\n cvcId,\n });\n\n if (validationConfig) {\n cardConfig.validationConfig = new CvcValidationConfig({\n validationListener: validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n}\n"],"mappings":"AACA,OAAOA,aAAa,MAAM,yBAAyB;AACnD,SAASC,mBAAmB,QAAQ,mCAAmC;AASvE,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,KAAK;EACLC;AACgB,CAAC,EAAE;EACnB,MAAMC,UAAU,GAAG,IAAIL,aAAa,CAAC;IACnCG;EACF,CAAC,CAAC;EAEF,IAAIC,gBAAgB,EAAE;IACpBC,UAAU,CAACD,gBAAgB,GAAG,IAAIH,mBAAmB,CAAC;MACpDK,kBAAkB,EAAEF,gBAAgB,CAACE;IACvC,CAAC,CAAC;EACJ;EAEA,OAAOD,UAAU;AACnB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js index 7a00955..d4dc3a1 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js @@ -2,9 +2,14 @@ import { useEffect } from 'react'; import { NativeEventEmitter } from 'react-native'; import AccessCheckoutReactNative, { AccessCheckout } from '../index'; import { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener'; -export const useCvcOnlyValidationEventListener = merchantListener => { +import { ValidationListenerException } from '../validation/ValidationListenerException'; +export const useCvcOnlyValidationEventListener = validationListener => { useEffect(() => { - const nativeEventListener = cvcOnlyValidationNativeEventListenerOf(merchantListener); + //Safe-guard in the case where no validation listener was configured we avoid registering the native listener + if (!validationListener) { + return; + } + const nativeEventListener = cvcOnlyValidationNativeEventListenerOf(validationListener); const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative); const eventSubscription = nativeEventEmitter.addListener(AccessCheckout.CvcOnlyValidationEventType, nativeEventListener); return () => { @@ -15,10 +20,24 @@ export const useCvcOnlyValidationEventListener = merchantListener => { export const useCvcOnlyValidation = ({ accessCheckout, cvcOnlyValidationConfig, - merchantListener + validationListener }) => { - useCvcOnlyValidationEventListener(merchantListener); + /* + Implementation Note: To allow the hook to render and use hooks correctly: + `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + was provided in order to register the native event. + */ + useCvcOnlyValidationEventListener(validationListener); const initialiseCvcOnlyValidation = () => { + /* + Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional. + We added a safe-guard that will raise a ValidationListenerException which prevents the + `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided. + This provides the developers with a clear readable error message and enhances their debugging experience. + */ + if (!validationListener) { + throw new ValidationListenerException(); + } return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig); }; return { diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map index 0ad65ca..85d328d 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map @@ -1 +1 @@ -{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckoutReactNative","AccessCheckout","cvcOnlyValidationNativeEventListenerOf","useCvcOnlyValidationEventListener","merchantListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CvcOnlyValidationEventType","remove","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CardValidationEventListener,\n} from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\n\nexport const useCvcOnlyValidationEventListener = (\n merchantListener: CvcOnlyValidationEventListener\n) => {\n useEffect(() => {\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(merchantListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n merchantListener: CardValidationEventListener;\n}\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n merchantListener,\n}: UseCvcOnlyValidationHook) => {\n useCvcOnlyValidationEventListener(merchantListener);\n\n const initialiseCvcOnlyValidation = () => {\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,yBAAyB,IAC9BC,cAAc,QAET,UAAU;AAEjB,SAASC,sCAAsC,QAAQ,8CAA8C;AAErG,OAAO,MAAMC,iCAAiC,GAC5CC,gBAAgD,IAC7C;EACHN,SAAS,CAAC,MAAM;IACd,MAAMO,mBAAmB,GACvBH,sCAAsC,CAACE,gBAAgB,CAAC;IAC1D,MAAME,kBAAkB,GAAG,IAAIP,kBAAkB,CAC/CC,yBACF,CAAC;IAED,MAAMO,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDP,cAAc,CAACQ,0BAA0B,EACzCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AASD,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBT;AACwB,CAAC,KAAK;EAC9BD,iCAAiC,CAACC,gBAAgB,CAAC;EAEnD,MAAMU,2BAA2B,GAAGA,CAAA,KAAM;IACxC,OAAOF,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC"} \ No newline at end of file +{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckoutReactNative","AccessCheckout","cvcOnlyValidationNativeEventListenerOf","ValidationListenerException","useCvcOnlyValidationEventListener","validationListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CvcOnlyValidationEventType","remove","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CardValidationEventListener,\n} from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport const useCvcOnlyValidationEventListener = (\n validationListener: CvcOnlyValidationEventListener\n) => {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n validationListener: CardValidationEventListener;\n}\n\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n validationListener,\n}: UseCvcOnlyValidationHook) => {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCvcOnlyValidationEventListener(validationListener);\n const initialiseCvcOnlyValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,yBAAyB,IAC9BC,cAAc,QAET,UAAU;AAEjB,SAASC,sCAAsC,QAAQ,8CAA8C;AACrG,SAASC,2BAA2B,QAAQ,2CAA2C;AAEvF,OAAO,MAAMC,iCAAiC,GAC5CC,kBAAkD,IAC/C;EACHP,SAAS,CAAC,MAAM;IACd;IACA,IAAI,CAACO,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAMC,mBAAmB,GACvBJ,sCAAsC,CAACG,kBAAkB,CAAC;IAC5D,MAAME,kBAAkB,GAAG,IAAIR,kBAAkB,CAC/CC,yBACF,CAAC;IAED,MAAMQ,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDR,cAAc,CAACS,0BAA0B,EACzCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAUD,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBT;AACwB,CAAC,KAAK;EAC9B;AACF;AACA;AACA;AACA;EACED,iCAAiC,CAACC,kBAAkB,CAAC;EACrD,MAAMU,2BAA2B,GAAGA,CAAA,KAAM;IACxC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACV,kBAAkB,EAAE;MACvB,MAAM,IAAIF,2BAA2B,CAAC,CAAC;IACzC;IAEA,OAAOU,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js b/access-checkout-react-native-sdk/lib/module/index.js index 713bd81..e348437 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js +++ b/access-checkout-react-native-sdk/lib/module/index.js @@ -12,5 +12,7 @@ export { CardValidationEventListener } from './validation/CardValidationEventLis export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener'; export { CvcValidationConfig } from './validation/CvcValidationConfig'; export { CardValidationConfig } from './validation/CardValidationConfig'; +export { useCardConfig, UseCardConfig } from './hooks/useCardConfig'; +export { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig'; export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js.map b/access-checkout-react-native-sdk/lib/module/index.js.map index f601f86..dee73d6 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js.map +++ b/access-checkout-react-native-sdk/lib/module/index.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","Brand","BrandImage","CardConfig","CvcOnlyConfig","CardValidationEventListener","CvcOnlyValidationEventListener","CvcValidationConfig","CardValidationConfig","useAccessCheckout","UseAccessCheckout","UseAccessCheckoutExports"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/CardConfig';\nexport { default as CvcOnlyConfig } from './config/CvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { CvcValidationConfig } from './validation/CvcValidationConfig';\nexport { CardValidationConfig } from './validation/CardValidationConfig';\nexport {\n useAccessCheckout,\n UseAccessCheckout,\n UseAccessCheckoutExports,\n} from './hooks/useAccessCheckout';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,KAAK,QAAQ,oBAAoB;AAErD,SAASP,OAAO,IAAIQ,UAAU,QAAQ,yBAAyB;AAC/D,SAASR,OAAO,IAAIS,UAAU,QAAQ,qBAAqB;AAC3D,SAAST,OAAO,IAAIU,aAAa,QAAQ,wBAAwB;AAEjE,SAASC,2BAA2B,QAAQ,0CAA0C;AACtF,SAASC,8BAA8B,QAAQ,6CAA6C;AAE5F,SAASC,mBAAmB,QAAQ,kCAAkC;AACtE,SAASC,oBAAoB,QAAQ,mCAAmC;AACxE,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,wBAAwB,QACnB,2BAA2B"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","Brand","BrandImage","CardConfig","CvcOnlyConfig","CardValidationEventListener","CvcOnlyValidationEventListener","CvcValidationConfig","CardValidationConfig","useCardConfig","UseCardConfig","useCvcOnlyConfig","UseCvcOnlyConfig","useAccessCheckout","UseAccessCheckout","UseAccessCheckoutExports"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/CardConfig';\nexport { default as CvcOnlyConfig } from './config/CvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { CvcValidationConfig } from './validation/CvcValidationConfig';\nexport { CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { useCardConfig, UseCardConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig';\n\nexport {\n useAccessCheckout,\n UseAccessCheckout,\n UseAccessCheckoutExports,\n} from './hooks/useAccessCheckout';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,KAAK,QAAQ,oBAAoB;AAErD,SAASP,OAAO,IAAIQ,UAAU,QAAQ,yBAAyB;AAC/D,SAASR,OAAO,IAAIS,UAAU,QAAQ,qBAAqB;AAC3D,SAAST,OAAO,IAAIU,aAAa,QAAQ,wBAAwB;AAEjE,SAASC,2BAA2B,QAAQ,0CAA0C;AACtF,SAASC,8BAA8B,QAAQ,6CAA6C;AAE5F,SAASC,mBAAmB,QAAQ,kCAAkC;AACtE,SAASC,oBAAoB,QAAQ,mCAAmC;AAExE,SAASC,aAAa,EAAEC,aAAa,QAAQ,uBAAuB;AACpE,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,0BAA0B;AAE7E,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,wBAAwB,QACnB,2BAA2B"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/ValidationListenerException.js b/access-checkout-react-native-sdk/lib/module/validation/ValidationListenerException.js new file mode 100644 index 0000000..77bfa23 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/validation/ValidationListenerException.js @@ -0,0 +1,8 @@ +export class ValidationListenerException extends Error { + constructor() { + super(); + this.name = 'ValidationListenerError'; + this.message = `Validation listener was undefined. When using validation methods such as 'initialiseValidation' a validation listener needs to be provided.`; + } +} +//# sourceMappingURL=ValidationListenerException.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/ValidationListenerException.js.map b/access-checkout-react-native-sdk/lib/module/validation/ValidationListenerException.js.map new file mode 100644 index 0000000..8c14608 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/validation/ValidationListenerException.js.map @@ -0,0 +1 @@ +{"version":3,"names":["ValidationListenerException","Error","constructor","name","message"],"sources":["ValidationListenerException.ts"],"sourcesContent":["export class ValidationListenerException extends Error {\n constructor() {\n super();\n this.name = 'ValidationListenerError';\n this.message = `Validation listener was undefined. When using validation methods such as 'initialiseValidation' a validation listener needs to be provided.`;\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,2BAA2B,SAASC,KAAK,CAAC;EACrDC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,IAAI,GAAG,yBAAyB;IACrC,IAAI,CAACC,OAAO,GAAI,6IAA4I;EAC9J;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts new file mode 100644 index 0000000..b270dbd --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts @@ -0,0 +1,13 @@ +import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; +import CardConfig from '../config/CardConfig'; +export interface UseCardConfig { + panId: string; + expiryDateId: string; + cvcId: string; + validationConfig?: { + acceptedCardBrands?: string[]; + enablePanFormatting?: boolean; + validationListener: CardValidationEventListener; + }; +} +export declare const useCardConfig: (props: UseCardConfig) => CardConfig; diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts index a83f884..392a077 100644 --- a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts @@ -1,6 +1,6 @@ import AccessCheckout from '../AccessCheckout'; import { CardValidationEventListener } from '../validation/CardValidationEventListener'; -export declare function useCardValidationEventListener(merchantListener: CardValidationEventListener): void; +export declare function useCardValidationEventListener(validationListener: CardValidationEventListener): void; interface UseCardValidationHook { accessCheckout: AccessCheckout; cardValidationConfig: { @@ -10,9 +10,9 @@ interface UseCardValidationHook { enablePanFormatting?: boolean; acceptedCardBrands?: string[]; }; - merchantListener: CardValidationEventListener; + validationListener: CardValidationEventListener; } -export declare function useCardValidation({ accessCheckout, cardValidationConfig, merchantListener, }: UseCardValidationHook): { +export declare function useCardValidation({ accessCheckout, cardValidationConfig, validationListener, }: UseCardValidationHook): { initialiseCardValidation: () => Promise; }; export {}; diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyConfig.d.ts new file mode 100644 index 0000000..eafeca2 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyConfig.d.ts @@ -0,0 +1,9 @@ +import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; +import CvcOnlyConfig from '../config/CvcOnlyConfig'; +export interface UseCvcOnlyConfig { + cvcId: string; + validationConfig?: { + validationListener: CardValidationEventListener; + }; +} +export declare function useCvcOnlyConfig({ cvcId, validationConfig, }: UseCvcOnlyConfig): CvcOnlyConfig; diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyValidation.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyValidation.d.ts index bccdbd6..323b831 100644 --- a/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyValidation.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyValidation.d.ts @@ -1,14 +1,14 @@ import { AccessCheckout, CardValidationEventListener } from '../index'; import type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener'; -export declare const useCvcOnlyValidationEventListener: (merchantListener: CvcOnlyValidationEventListener) => void; +export declare const useCvcOnlyValidationEventListener: (validationListener: CvcOnlyValidationEventListener) => void; interface UseCvcOnlyValidationHook { accessCheckout: AccessCheckout; cvcOnlyValidationConfig: { cvcId: string; }; - merchantListener: CardValidationEventListener; + validationListener: CardValidationEventListener; } -export declare const useCvcOnlyValidation: ({ accessCheckout, cvcOnlyValidationConfig, merchantListener, }: UseCvcOnlyValidationHook) => { +export declare const useCvcOnlyValidation: ({ accessCheckout, cvcOnlyValidationConfig, validationListener, }: UseCvcOnlyValidationHook) => { initialiseCvcOnlyValidation: () => Promise; }; export {}; diff --git a/access-checkout-react-native-sdk/lib/typescript/index.d.ts b/access-checkout-react-native-sdk/lib/typescript/index.d.ts index 9740e4a..cd56e6e 100644 --- a/access-checkout-react-native-sdk/lib/typescript/index.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/index.d.ts @@ -12,4 +12,6 @@ export { CardValidationEventListener } from './validation/CardValidationEventLis export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener'; export { CvcValidationConfig } from './validation/CvcValidationConfig'; export { CardValidationConfig } from './validation/CardValidationConfig'; +export { useCardConfig, UseCardConfig } from './hooks/useCardConfig'; +export { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig'; export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports, } from './hooks/useAccessCheckout'; diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/ValidationListenerException.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/ValidationListenerException.d.ts new file mode 100644 index 0000000..9acb2d5 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/validation/ValidationListenerException.d.ts @@ -0,0 +1,3 @@ +export declare class ValidationListenerException extends Error { + constructor(); +} diff --git a/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts b/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts index fa975f4..4be3919 100644 --- a/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts +++ b/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts @@ -46,7 +46,7 @@ export const useAccessCheckout = ({ enablePanFormatting: config.validationConfig?.enablePanFormatting, acceptedCardBrands: config.validationConfig?.acceptedCardBrands, }, - merchantListener: config.validationConfig + validationListener: config.validationConfig ?.validationListener as CardValidationEventListener, }); @@ -68,7 +68,7 @@ export const useAccessCheckout = ({ const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({ accessCheckout, cvcOnlyValidationConfig: { cvcId: config.cvcId }, - merchantListener: config.validationConfig + validationListener: config.validationConfig ?.validationListener as CvcOnlyValidationEventListener, }); diff --git a/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts b/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts new file mode 100644 index 0000000..008ba4e --- /dev/null +++ b/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts @@ -0,0 +1,32 @@ +import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; +import { CardValidationConfig } from '../validation/CardValidationConfig'; +import CardConfig from '../config/CardConfig'; + +export interface UseCardConfig { + panId: string; + expiryDateId: string; + cvcId: string; + validationConfig?: { + acceptedCardBrands?: string[]; + enablePanFormatting?: boolean; + validationListener: CardValidationEventListener; + }; +} + +export const useCardConfig = (props: UseCardConfig): CardConfig => { + const cardConfig = new CardConfig({ + panId: props.panId, + expiryDateId: props.expiryDateId, + cvcId: props.cvcId, + }); + + if (props.validationConfig) { + cardConfig.validationConfig = new CardValidationConfig({ + acceptedCardBrands: props.validationConfig.acceptedCardBrands, + enablePanFormatting: props.validationConfig.enablePanFormatting, + validationListener: props.validationConfig.validationListener, + }); + } + + return cardConfig; +}; diff --git a/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts b/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts index ad01ccb..bf9609e 100644 --- a/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts @@ -6,13 +6,19 @@ import { CardValidationEventListener, cardValidationNativeEventListenerOf, } from '../validation/CardValidationEventListener'; +import { ValidationListenerException } from '../validation/ValidationListenerException'; export function useCardValidationEventListener( - merchantListener: CardValidationEventListener + validationListener: CardValidationEventListener ) { useEffect(() => { + //Safe-guard in the case where no validation listener was configured we avoid registering the native listener + if (!validationListener) { + return; + } + const nativeEventListener = - cardValidationNativeEventListenerOf(merchantListener); + cardValidationNativeEventListenerOf(validationListener); const nativeEventEmitter = new NativeEventEmitter( AccessCheckoutReactNative ); @@ -37,15 +43,31 @@ interface UseCardValidationHook { enablePanFormatting?: boolean; acceptedCardBrands?: string[]; }; - merchantListener: CardValidationEventListener; + validationListener: CardValidationEventListener; } + export function useCardValidation({ accessCheckout, cardValidationConfig, - merchantListener, + validationListener, }: UseCardValidationHook) { - useCardValidationEventListener(merchantListener); + /* + Implementation Note: To allow the hook to render and use hooks correctly: + `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + was provided in order to register the native event. + */ + useCardValidationEventListener(validationListener); + const initialiseCardValidation = () => { + /* + Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional. + We added a safe-guard that will raise a ValidationListenerException which prevents the + `initialiseCardValidation` method from being called when no validationConfig is provided. + This provides the developers with a clear readable error message and enhances their debugging experience. + */ + if (!validationListener) { + throw new ValidationListenerException(); + } return accessCheckout.initialiseCardValidation(cardValidationConfig); }; diff --git a/access-checkout-react-native-sdk/src/hooks/useCvcOnlyConfig.ts b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyConfig.ts new file mode 100644 index 0000000..a9e59bd --- /dev/null +++ b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyConfig.ts @@ -0,0 +1,27 @@ +import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; +import CvcOnlyConfig from '../config/CvcOnlyConfig'; +import { CvcValidationConfig } from '../validation/CvcValidationConfig'; + +export interface UseCvcOnlyConfig { + cvcId: string; + validationConfig?: { + validationListener: CardValidationEventListener; + }; +} + +export function useCvcOnlyConfig({ + cvcId, + validationConfig, +}: UseCvcOnlyConfig) { + const cardConfig = new CvcOnlyConfig({ + cvcId, + }); + + if (validationConfig) { + cardConfig.validationConfig = new CvcValidationConfig({ + validationListener: validationConfig.validationListener, + }); + } + + return cardConfig; +} diff --git a/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts index 3dd1b61..caabd66 100644 --- a/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts @@ -6,13 +6,19 @@ import AccessCheckoutReactNative, { } from '../index'; import type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener'; import { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener'; +import { ValidationListenerException } from '../validation/ValidationListenerException'; export const useCvcOnlyValidationEventListener = ( - merchantListener: CvcOnlyValidationEventListener + validationListener: CvcOnlyValidationEventListener ) => { useEffect(() => { + //Safe-guard in the case where no validation listener was configured we avoid registering the native listener + if (!validationListener) { + return; + } + const nativeEventListener = - cvcOnlyValidationNativeEventListenerOf(merchantListener); + cvcOnlyValidationNativeEventListenerOf(validationListener); const nativeEventEmitter = new NativeEventEmitter( AccessCheckoutReactNative ); @@ -33,16 +39,31 @@ interface UseCvcOnlyValidationHook { cvcOnlyValidationConfig: { cvcId: string; }; - merchantListener: CardValidationEventListener; + validationListener: CardValidationEventListener; } + export const useCvcOnlyValidation = ({ accessCheckout, cvcOnlyValidationConfig, - merchantListener, + validationListener, }: UseCvcOnlyValidationHook) => { - useCvcOnlyValidationEventListener(merchantListener); - + /* + Implementation Note: To allow the hook to render and use hooks correctly: + `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + was provided in order to register the native event. + */ + useCvcOnlyValidationEventListener(validationListener); const initialiseCvcOnlyValidation = () => { + /* + Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional. + We added a safe-guard that will raise a ValidationListenerException which prevents the + `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided. + This provides the developers with a clear readable error message and enhances their debugging experience. + */ + if (!validationListener) { + throw new ValidationListenerException(); + } + return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig); }; diff --git a/access-checkout-react-native-sdk/src/index.tsx b/access-checkout-react-native-sdk/src/index.tsx index 80ef9da..0768938 100644 --- a/access-checkout-react-native-sdk/src/index.tsx +++ b/access-checkout-react-native-sdk/src/index.tsx @@ -21,6 +21,10 @@ export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEv export { CvcValidationConfig } from './validation/CvcValidationConfig'; export { CardValidationConfig } from './validation/CardValidationConfig'; + +export { useCardConfig, UseCardConfig } from './hooks/useCardConfig'; +export { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig'; + export { useAccessCheckout, UseAccessCheckout, diff --git a/access-checkout-react-native-sdk/src/validation/ValidationListenerException.ts b/access-checkout-react-native-sdk/src/validation/ValidationListenerException.ts new file mode 100644 index 0000000..0ee9ad6 --- /dev/null +++ b/access-checkout-react-native-sdk/src/validation/ValidationListenerException.ts @@ -0,0 +1,7 @@ +export class ValidationListenerException extends Error { + constructor() { + super(); + this.name = 'ValidationListenerError'; + this.message = `Validation listener was undefined. When using validation methods such as 'initialiseValidation' a validation listener needs to be provided.`; + } +} diff --git a/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts b/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts index 849c338..a3ae466 100644 --- a/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts @@ -8,10 +8,10 @@ import { type UseAccessCheckout, CARD, CVC, - CvcOnlyConfig, type CvcOnlyValidationEventListener, - CvcValidationConfig, CardValidationConfig, + useCvcOnlyConfig, + useCardConfig, } from '../../src'; import { isArray, isFunction } from '../test-utils'; import { @@ -42,12 +42,26 @@ describe('useAccessCheckout', () => { describe('using cvc only configuration', () => { const merchantListener: CvcOnlyValidationEventListener = {}; - const cardValidationConfig = new CvcValidationConfig({ - validationListener: merchantListener, - }); - const cardConfig = new CvcOnlyConfig({ - cvcId: 'cvcInput', - validationConfig: cardValidationConfig, + it('should error when trying to use initialiseValidation when no validationConfig was provided', async () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + }), + }) + ); + + const functionReturned = result.current.initialiseValidation; + + expect(() => functionReturned()).toThrowError( + `Validation listener was undefined. When using validation methods such as 'initialiseValidation' a validation listener needs to be provided.` + ); + expect(mockInitialiseCvcOnlyValidation).not.toHaveBeenCalled(); }); describe('initialiseCardValidation', () => { @@ -59,7 +73,12 @@ describe('useAccessCheckout', () => { useAccessCheckout({ baseUrl: '', checkoutId: '', - config: cardConfig, + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }), }) ); @@ -75,59 +94,75 @@ describe('useAccessCheckout', () => { useAccessCheckout({ baseUrl: '', checkoutId: '', - config: cardConfig, + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }), }) ); const functionReturned = result.current.initialiseValidation; + expect(functionReturned).toBeDefined(); functionReturned(); expect(mockInitialiseCvcOnlyValidation).toHaveBeenCalledWith({ cvcId: 'cvcInput', }); }); - }); - describe('generateSessions', () => { - it('returns an object with a generateSessions property which is a function', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: cardConfig, - }) - ); + describe('generateSessions', () => { + it('returns an object with a generateSessions property which is a function', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }), + }) + ); - expect(isArray(result.current)).toEqual(false); - expect(isFunction(result.current.generateSessions)).toEqual(true); - }); + expect(isArray(result.current)).toEqual(false); + expect(isFunction(result.current.generateSessions)).toEqual(true); + }); - it('function returned is designed to generate sessions', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: cardConfig, - }) - ); + it('function returned is designed to generate sessions', () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }), + }) + ); - const functionReturned = result.current.generateSessions; + const functionReturned = result.current.generateSessions; - functionReturned([CVC]); + functionReturned([CVC]); - expect(mockGenerateSessions).toHaveBeenCalledWith( - { - cvcId: 'cvcInput', - }, - ['CVC'] - ); + expect(mockGenerateSessions).toHaveBeenCalledWith( + { + cvcId: 'cvcInput', + }, + ['CVC'] + ); + }); }); }); }); @@ -145,6 +180,31 @@ describe('useAccessCheckout', () => { validationConfig: cardValidationConfig, }); + it('should error when trying to use initialiseValidation when no validationConfig was provided', async () => { + const { + result, + }: RenderHookResult = + renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCardConfig({ + cvcId: 'cvcInput', + panId: 'panId', + expiryDateId: 'expiryDateId', + }), + }) + ); + + const functionReturned = result.current.initialiseValidation; + + expect(() => functionReturned()).toThrowError( + `Validation listener was undefined. When using validation methods such as 'initialiseValidation' a validation listener needs to be provided.` + ); + + expect(mockInitialiseCardValidation).not.toHaveBeenCalled(); + }); + describe('initialiseCardValidation', () => { it('returns an object with a initialiseValidation property which is a function', () => { const { diff --git a/access-checkout-react-native-sdk/test/hooks/useCardConfig.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCardConfig.spec.ts new file mode 100644 index 0000000..a7a48af --- /dev/null +++ b/access-checkout-react-native-sdk/test/hooks/useCardConfig.spec.ts @@ -0,0 +1,117 @@ +import { CardConfig, useCardConfig } from '../../src'; +import type { CardValidationEventListener } from '../../lib/typescript'; + +describe('useCardConfig', () => { + it('creates card config with minimal configuration', () => { + const cardConfig: CardConfig = useCardConfig({ + panId: 'panID', + expiryDateId: 'expiryDateId', + cvcId: 'cvcInput', + }); + + expect(cardConfig).toEqual({ + cvcId: 'cvcInput', + expiryDateId: 'expiryDateId', + panId: 'panID', + validationConfig: undefined, + }); + }); + + describe('creates card config with card validation fields', () => { + it('with required validationListener', () => { + const merchantListener = jest.fn(); + const cardConfig: CardConfig = useCardConfig({ + panId: 'panID', + expiryDateId: 'expiryDateId', + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener as CardValidationEventListener, + }, + }); + + expect(cardConfig).toEqual({ + cvcId: 'cvcInput', + expiryDateId: 'expiryDateId', + panId: 'panID', + validationConfig: { + acceptedCardBrands: [], + enablePanFormatting: false, + validationListener: merchantListener, + }, + }); + }); + + it('with optional acceptedCardBrands', () => { + const merchantListener = jest.fn(); + const cardConfig: CardConfig = useCardConfig({ + panId: 'panID', + expiryDateId: 'expiryDateId', + cvcId: 'cvcInput', + validationConfig: { + acceptedCardBrands: ['visa', 'mastercard'], + validationListener: merchantListener as CardValidationEventListener, + }, + }); + + expect(cardConfig).toEqual({ + cvcId: 'cvcInput', + expiryDateId: 'expiryDateId', + panId: 'panID', + validationConfig: { + acceptedCardBrands: ['visa', 'mastercard'], + enablePanFormatting: false, + validationListener: merchantListener, + }, + }); + }); + + it('with optional enablePanFormatting', () => { + const merchantListener = jest.fn(); + const cardConfig: CardConfig = useCardConfig({ + panId: 'panID', + expiryDateId: 'expiryDateId', + cvcId: 'cvcInput', + validationConfig: { + enablePanFormatting: true, + validationListener: merchantListener as CardValidationEventListener, + }, + }); + + expect(cardConfig).toEqual({ + cvcId: 'cvcInput', + expiryDateId: 'expiryDateId', + panId: 'panID', + validationConfig: { + acceptedCardBrands: [], + enablePanFormatting: true, + validationListener: merchantListener, + }, + }); + }); + + it('with all options', () => { + const merchantListener = jest.fn(); + const cardConfig: CardConfig = useCardConfig({ + panId: 'panID', + expiryDateId: 'expiryDateId', + cvcId: 'cvcInput', + validationConfig: { + acceptedCardBrands: ['visa', 'mastercard'], + enablePanFormatting: true, + validationListener: merchantListener as CardValidationEventListener, + }, + }); + + expect(cardConfig).toEqual({ + cvcId: 'cvcInput', + expiryDateId: 'expiryDateId', + panId: 'panID', + validationConfig: { + acceptedCardBrands: ['visa', 'mastercard'], + enablePanFormatting: true, + validationListener: merchantListener, + }, + }); + }); + }); +}); diff --git a/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts index 3d6bbb9..2b1aa0b 100644 --- a/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts @@ -26,13 +26,13 @@ describe('useCardValidation', () => { it('registers a NativeEvent listener for "AccessCheckoutCardValidationEvent" event', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let panValid: any = undefined; - const merchantListener: CardValidationEventListener = { + const validationListener: CardValidationEventListener = { onPanValidChanged(isValid: boolean): void { panValid = isValid; }, }; - useCardValidationEventListener(merchantListener); + useCardValidationEventListener(validationListener); // Emitting a fake native event using the mock in order to check listener is correctly registered emitNativeEvent('AccessCheckoutCardValidationEvent', { @@ -46,8 +46,8 @@ describe('useCardValidation', () => { }); it('registers the NativeEvent listener so that it is removed when useEffect cleans up', () => { - const merchantListener: CardValidationEventListener = {}; - useCardValidationEventListener(merchantListener); + const validationListener: CardValidationEventListener = {}; + useCardValidationEventListener(validationListener); // manually calling clean up function returned by useEffect in implementation useEffectCleanUpFunction(); @@ -57,14 +57,14 @@ describe('useCardValidation', () => { }); describe('useCardValidation', () => { - const merchantListener: CardValidationEventListener = {}; + const validationListener: CardValidationEventListener = {}; const accessCheckout = new AccessCheckout({ baseUrl: '', merchantId: '', }); const cardValidationConfig = new CardValidationConfig({ - validationListener: merchantListener, + validationListener: validationListener, }); const cardConfig = new CardConfig({ panId: 'panInput', @@ -78,7 +78,7 @@ describe('useCardValidation', () => { const hooksValues: any = useCardValidation({ accessCheckout, cardValidationConfig: cardConfig, - merchantListener, + validationListener: validationListener, }); expect(isArray(hooksValues)).toEqual(false); @@ -93,7 +93,7 @@ describe('useCardValidation', () => { const hooksValues: any = useCardValidation({ accessCheckout, cardValidationConfig: cardConfig, - merchantListener, + validationListener: validationListener, }); const functionReturned = hooksValues.initialiseCardValidation; diff --git a/access-checkout-react-native-sdk/test/hooks/useCvcOnlyConfig.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyConfig.spec.ts new file mode 100644 index 0000000..dc65945 --- /dev/null +++ b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyConfig.spec.ts @@ -0,0 +1,34 @@ +import { CvcOnlyConfig, useCvcOnlyConfig } from '../../src'; +import type { CardValidationEventListener } from '../../lib/typescript'; + +describe('useCvcOnlyConfig', () => { + it('creates card config with minimal configuration', () => { + const CvcOnlyConfig: CvcOnlyConfig = useCvcOnlyConfig({ + cvcId: 'cvcInput', + }); + + expect(CvcOnlyConfig).toEqual({ + cvcId: 'cvcInput', + validationConfig: undefined, + }); + }); + + describe('creates card config with card validation fields', () => { + it('with required validationListener', () => { + const merchantListener = jest.fn(); + const CvcOnlyConfig: CvcOnlyConfig = useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener as CardValidationEventListener, + }, + }); + + expect(CvcOnlyConfig).toEqual({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }); + }); + }); +}); diff --git a/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts index 650ebea..32ab46d 100644 --- a/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts @@ -26,13 +26,13 @@ describe('useCvcOnlyValidation', () => { it('registers a NativeEvent listener for "AccessCheckoutCvcOnlyValidationEvent" event', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let cvcValid: any = undefined; - const merchantListener: CvcOnlyValidationEventListener = { + const validationListener: CvcOnlyValidationEventListener = { onCvcValidChanged(isValid: boolean): void { cvcValid = isValid; }, }; - useCvcOnlyValidationEventListener(merchantListener); + useCvcOnlyValidationEventListener(validationListener); // Emitting a fake native event using the mock in order to check listener is correctly registered emitNativeEvent('AccessCheckoutCvcOnlyValidationEvent', { @@ -46,8 +46,8 @@ describe('useCvcOnlyValidation', () => { }); it('registers the NativeEvent listener so that it is removed when useEffect cleans up', () => { - const merchantListener: CvcOnlyValidationEventListener = {}; - useCvcOnlyValidationEventListener(merchantListener); + const validationListener: CvcOnlyValidationEventListener = {}; + useCvcOnlyValidationEventListener(validationListener); // manually calling clean up function returned by useEffect in implementation useEffectCleanUpFunction(); @@ -57,14 +57,14 @@ describe('useCvcOnlyValidation', () => { }); describe('useCvcOnlyValidation', () => { - const merchantListener: CvcOnlyValidationEventListener = {}; + const validationListener: CvcOnlyValidationEventListener = {}; const accessCheckout = new AccessCheckout({ baseUrl: '', merchantId: '', }); const cvcOnlyValidationConfig = new CvcValidationConfig({ - validationListener: merchantListener, + validationListener: validationListener, }); const cvcOnlyConfig = new CvcOnlyConfig({ cvcId: 'cvcInput', @@ -76,7 +76,7 @@ describe('useCvcOnlyValidation', () => { const hooksValues: any = useCvcOnlyValidation({ accessCheckout, cvcOnlyValidationConfig: cvcOnlyConfig, - merchantListener, + validationListener: validationListener, }); expect(isArray(hooksValues)).toEqual(false); @@ -91,7 +91,7 @@ describe('useCvcOnlyValidation', () => { const hooksValues: any = useCvcOnlyValidation({ accessCheckout, cvcOnlyValidationConfig: cvcOnlyConfig, - merchantListener, + validationListener: validationListener, }); const functionReturned = hooksValues.initialiseCvcOnlyValidation; diff --git a/access-checkout-react-native-sdk/test/test-utils.ts b/access-checkout-react-native-sdk/test/test-utils.ts index ca8db82..308fe8f 100644 --- a/access-checkout-react-native-sdk/test/test-utils.ts +++ b/access-checkout-react-native-sdk/test/test-utils.ts @@ -11,7 +11,7 @@ export function givenGenerateSessionsBridgeReturns({ const mock = NativeModules.AccessCheckoutReactNative.generateSessions; mock.mockReturnValueOnce( - new Promise(resolve => { + new Promise((resolve) => { resolve(sessions); }) ); @@ -31,7 +31,7 @@ export function givenGenerateSessionsBridgeFailsWith(error: Error) { export function givenCardValidationBridgeReturns(returnValue: boolean) { const mock = NativeModules.AccessCheckoutReactNative.initialiseCardValidation; mock.mockReturnValueOnce( - new Promise(resolve => { + new Promise((resolve) => { resolve(returnValue); }) ); @@ -52,7 +52,7 @@ export function givenCvcOnlyValidationBridgeReturns(returnValue: boolean) { const mock = NativeModules.AccessCheckoutReactNative.initialiseCvcOnlyValidation; mock.mockReturnValueOnce( - new Promise(resolve => { + new Promise((resolve) => { resolve(returnValue); }) ); @@ -72,7 +72,6 @@ export function givenCvcOnlyValidationBridgeFailsWith(error: Error) { // eslint-disable-next-line @typescript-eslint/no-explicit-any export function isArray(variable: any) { - console.log(Object.prototype.toString.call(variable)); return Object.prototype.toString.call(variable) === '[object Array]'; } diff --git a/access-checkout-react-native-sdk/test/validation/ValidationListenerException.spec.ts b/access-checkout-react-native-sdk/test/validation/ValidationListenerException.spec.ts new file mode 100644 index 0000000..869fd95 --- /dev/null +++ b/access-checkout-react-native-sdk/test/validation/ValidationListenerException.spec.ts @@ -0,0 +1,11 @@ +import { ValidationListenerException } from '../../src/validation/ValidationListenerException'; + +describe('ValidationListenerException', () => { + it('by default it should construct error with name and message', () => { + const error = new ValidationListenerException(); + expect(error.name).toEqual('ValidationListenerError'); + expect(error.message).toEqual( + `Validation listener was undefined. When using validation methods such as 'initialiseValidation' a validation listener needs to be provided.` + ); + }); +}); diff --git a/demo-app/src/card-flow/CardFlow.tsx b/demo-app/src/card-flow/CardFlow.tsx index cf79f39..aecdae6 100644 --- a/demo-app/src/card-flow/CardFlow.tsx +++ b/demo-app/src/card-flow/CardFlow.tsx @@ -3,12 +3,11 @@ import { Text } from 'react-native'; import { Brand, CARD, - CardConfig, - CardValidationConfig, CardValidationEventListener, CVC, Sessions, useAccessCheckout, + useCardConfig, } from '../../../access-checkout-react-native-sdk/src'; import CardBrandImage from '../common/CardBrandImage'; import CvcField from '../common/CvcField'; @@ -91,22 +90,18 @@ export default function CardFlow() { }, }; - const cardValidationConfig = new CardValidationConfig({ - enablePanFormatting: true, - validationListener: validationEventListener, - }); - - const cardConfig = new CardConfig({ - panId: 'panInput', - expiryDateId: 'expiryDateInput', - cvcId: 'cvcInput', - validationConfig: cardValidationConfig, - }); - const { initialiseValidation, generateSessions } = useAccessCheckout({ baseUrl: 'https://npe.access.worldpay.com', checkoutId: 'identity', - config: cardConfig, + config: useCardConfig({ + panId: 'panInput', + expiryDateId: 'expiryDateInput', + cvcId: 'cvcInput', + validationConfig: { + enablePanFormatting: true, + validationListener: validationEventListener, + }, + }), }); const onLayout = () => { diff --git a/demo-app/src/cvc-flow/CvcFlow.tsx b/demo-app/src/cvc-flow/CvcFlow.tsx index b420822..be8b1e0 100644 --- a/demo-app/src/cvc-flow/CvcFlow.tsx +++ b/demo-app/src/cvc-flow/CvcFlow.tsx @@ -2,11 +2,10 @@ import React, { useState } from 'react'; import { Text } from 'react-native'; import { CVC, - CvcOnlyConfig, CvcOnlyValidationEventListener, Sessions, useAccessCheckout, - CvcValidationConfig, + useCvcOnlyConfig, } from '../../../access-checkout-react-native-sdk/src'; import styles from '../card-flow/style.js'; import CvcField from '../common/CvcField'; @@ -29,6 +28,8 @@ export default function CvcFlow() { const [error, setError] = useState(); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore const cvcOnlyValidationEventListener: CvcOnlyValidationEventListener = { onCvcValidChanged(isValid: boolean): void { setCvcIsValid(isValid); @@ -42,19 +43,15 @@ export default function CvcFlow() { }, }; - const validationConfig = new CvcValidationConfig({ - validationListener: cvcOnlyValidationEventListener, - }); - - const cvcValidationConfig = new CvcOnlyConfig({ - cvcId: 'cvcInput', - validationConfig: validationConfig, - }); - const { initialiseValidation, generateSessions } = useAccessCheckout({ baseUrl: 'https://npe.access.worldpay.com', checkoutId: 'identity', - config: cvcValidationConfig, + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: cvcOnlyValidationEventListener, + }, + }), }); const onLayout = () => { From c7ea7b22daf32cdfd634441d67d001814630ca88 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Mon, 22 Jan 2024 09:48:41 +0000 Subject: [PATCH 20/26] US1764971: Fix prettier --- .../src/ui/AccessCheckoutTextInput.tsx | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx index a71af92..eadb39d 100644 --- a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx +++ b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx @@ -1,11 +1,5 @@ import React from 'react'; -import { - requireNativeComponent, - type StyleProp, - StyleSheet, - View, - type ViewStyle, -} from 'react-native'; +import { requireNativeComponent, type StyleProp, StyleSheet, View, type ViewStyle } from 'react-native'; import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet'; /** @@ -55,15 +49,10 @@ interface RTCAccessCheckoutTextInputProps { color?: ColorValue; } -const RTCAccessCheckoutTextInput = - requireNativeComponent( - 'AccessCheckoutTextInput' - ); +const RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput'); const AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => { const { nativeID, testID, style, placeholder, editable } = props; - const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([ - style, - ]); + const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([style]); return ( Date: Mon, 22 Jan 2024 09:49:37 +0000 Subject: [PATCH 21/26] US1764971: rebuild lib files --- .../lib/commonjs/AccessCheckout.js.map | 2 +- .../lib/commonjs/ui/AccessCheckoutTextInput.js.map | 2 +- .../lib/module/AccessCheckout.js.map | 2 +- .../lib/module/ui/AccessCheckoutTextInput.js.map | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map index 9f7adb3..f25c076 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAczD,MAAMW,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAxB,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACuB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAArB,eAAA,CA3FoBqB,cAAc,6BAES,mCAAmC;AAAArB,eAAA,CAF1DqB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.1';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAczD,MAAMW,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAxB,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACuB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAArB,eAAA,CA3FoBqB,cAAc,6BAES,mCAAmC;AAAArB,eAAA,CAF1DqB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map index c4fd98b..2cc553b 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map @@ -1 +1 @@ -{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","otherStyles","StyleSheet","flatten","createElement","View","flex","font","_default","exports"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type StyleProp,\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([\n style,\n ]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMsB,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMG,0BAA0B,GAC9B,IAAAC,mCAAsB,EACpB,yBACF,CAAC;AACH,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GAAGC,uBAAU,CAACC,OAAO,CAAC,CACzER,KAAK,CACN,CAAC;EACF,oBACEb,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACnB,YAAA,CAAAoB,IAAI;IAACV,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBnB,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACf,0BAA0B;IACzBI,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAEW,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBV,WAAW,EAAEA,WAAY;IACzBW,IAAI,EAAE;MACJR,UAAU;MACVC;IACF,CAAE;IACFF,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAAC,IAAAW,QAAA,GAAAC,OAAA,CAAArB,OAAA,GAEaG,uBAAuB"} \ No newline at end of file +{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","otherStyles","StyleSheet","flatten","createElement","View","flex","font","_default","exports"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport { requireNativeComponent, type StyleProp, StyleSheet, View, type ViewStyle } from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput');\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAwG,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMG,0BAA0B,GAAG,IAAAC,mCAAsB,EAAkC,yBAAyB,CAAC;AACrH,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GAAGC,uBAAU,CAACC,OAAO,CAAC,CAACR,KAAK,CAAC,CAAC;EACnF,oBACEb,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACnB,YAAA,CAAAoB,IAAI;IAACV,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBnB,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACf,0BAA0B;IACzBI,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAEW,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBV,WAAW,EAAEA,WAAY;IACzBW,IAAI,EAAE;MACJR,UAAU;MACVC;IACF,CAAE;IACFF,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAAC,IAAAW,QAAA,GAAAC,OAAA,CAAArB,OAAA,GAEaG,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map index 5d142c6..cbf8673 100644 --- a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","AccessCheckout","constructor","baseUrl","merchantId","_defineProperty","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.0';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;AAAA,SAASA,yBAAyB,QAAQ,6BAA6B;AAcvE,eAAe,MAAMC,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAC,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAE,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACM,gBAAgB,CAAC;QACzCH,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEL,uBAAuB,CAACK,KAAK;QACpCC,YAAY,EAAEN,uBAAuB,CAACM,YAAY;QAClDC,KAAK,EAAEP,uBAAuB,CAACO,KAAK;QACpCN,YAAY;QACZO,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAX,OAAO,CAACS,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACwB,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAAC4B,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAAClB,eAAA,CA3FoBJ,cAAc,6BAES,mCAAmC;AAAAI,eAAA,CAF1DJ,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","AccessCheckout","constructor","baseUrl","merchantId","_defineProperty","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.1';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;AAAA,SAASA,yBAAyB,QAAQ,6BAA6B;AAcvE,eAAe,MAAMC,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAC,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAE,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACM,gBAAgB,CAAC;QACzCH,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEL,uBAAuB,CAACK,KAAK;QACpCC,YAAY,EAAEN,uBAAuB,CAACM,YAAY;QAClDC,KAAK,EAAEP,uBAAuB,CAACO,KAAK;QACpCN,YAAY;QACZO,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAX,OAAO,CAACS,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACwB,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAAC4B,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAAClB,eAAA,CA3FoBJ,cAAc,6BAES,mCAAmC;AAAAI,eAAA,CAF1DJ,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map index 3e8de71..c623652 100644 --- a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map @@ -1 +1 @@ -{"version":3,"names":["React","requireNativeComponent","StyleSheet","View","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","otherStyles","flatten","createElement","flex","font"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type StyleProp,\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput =\n requireNativeComponent(\n 'AccessCheckoutTextInput'\n );\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([\n style,\n ]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,sBAAsB,EAEtBC,UAAU,EACVC,IAAI,QAEC,cAAc;;AAGrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMC,0BAA0B,GAC9BH,sBAAsB,CACpB,yBACF,CAAC;AACH,MAAMI,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GAAGb,UAAU,CAACc,OAAO,CAAC,CACzEP,KAAK,CACN,CAAC;EACF,oBACET,KAAA,CAAAiB,aAAA,CAACd,IAAI;IAACM,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBf,KAAA,CAAAiB,aAAA,CAACb,0BAA0B;IACzBG,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAES,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBR,WAAW,EAAEA,WAAY;IACzBS,IAAI,EAAE;MACJN,UAAU;MACVC;IACF,CAAE;IACFF,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAED,eAAeN,uBAAuB"} \ No newline at end of file +{"version":3,"names":["React","requireNativeComponent","StyleSheet","View","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","otherStyles","flatten","createElement","flex","font"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport { requireNativeComponent, type StyleProp, StyleSheet, View, type ViewStyle } from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput');\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,sBAAsB,EAAkBC,UAAU,EAAEC,IAAI,QAAwB,cAAc;;AAGvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMC,0BAA0B,GAAGH,sBAAsB,CAAkC,yBAAyB,CAAC;AACrH,MAAMI,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GAAGb,UAAU,CAACc,OAAO,CAAC,CAACP,KAAK,CAAC,CAAC;EACnF,oBACET,KAAA,CAAAiB,aAAA,CAACd,IAAI;IAACM,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBf,KAAA,CAAAiB,aAAA,CAACb,0BAA0B;IACzBG,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAES,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBR,WAAW,EAAEA,WAAY;IACzBS,IAAI,EAAE;MACJN,UAAU;MACVC;IACF,CAAE;IACFF,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAED,eAAeN,uBAAuB"} \ No newline at end of file From d75a377fa87ac43a2b2529c87eb76eb6753a4f80 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Mon, 22 Jan 2024 14:41:35 +0000 Subject: [PATCH 22/26] US1764971: Differentiate between props interface and config classes as it was creating confusion by renaming CardConfig and CvconlyConfig classes and validation classes to be prefixed with Merchant --- .../lib/commonjs/AccessCheckout.js.map | 2 +- .../lib/commonjs/config/CardConfig.js.map | 1 - .../lib/commonjs/config/CvcOnlyConfig.js.map | 1 - .../{CardConfig.js => MerchantCardConfig.js} | 6 +- .../commonjs/config/MerchantCardConfig.js.map | 1 + ...OnlyConfig.js => MerchantCvcOnlyConfig.js} | 6 +- .../config/MerchantCvcOnlyConfig.js.map | 1 + .../commonjs/hooks/useAccessCheckout.js.map | 2 +- .../lib/commonjs/hooks/useCardConfig.js | 8 +- .../lib/commonjs/hooks/useCardConfig.js.map | 2 +- .../lib/commonjs/hooks/useCardValidation.js | 2 +- .../commonjs/hooks/useCardValidation.js.map | 2 +- .../lib/commonjs/hooks/useCvcOnlyConfig.js | 8 +- .../commonjs/hooks/useCvcOnlyConfig.js.map | 2 +- .../commonjs/hooks/useCvcOnlyValidation.js | 2 +- .../hooks/useCvcOnlyValidation.js.map | 2 +- .../lib/commonjs/index.js | 30 ++- .../lib/commonjs/index.js.map | 2 +- .../lib/commonjs/validation/Brand.js.map | 2 +- .../validation/CardValidationConfig.js.map | 1 - .../CardValidationEventListener.js.map | 2 +- .../CvcOnlyValidationEventListener.js.map | 2 +- .../validation/CvcValidationConfig.js.map | 1 - ...fig.js => MerchantCardValidationConfig.js} | 8 +- .../MerchantCardValidationConfig.js.map | 1 + ....js => MerchantCvcOnlyValidationConfig.js} | 8 +- .../MerchantCvcOnlyValidationConfig.js.map | 1 + .../lib/module/AccessCheckout.js.map | 2 +- .../lib/module/config/CardConfig.js.map | 1 - .../lib/module/config/CvcOnlyConfig.js.map | 1 - .../{CardConfig.js => MerchantCardConfig.js} | 4 +- .../module/config/MerchantCardConfig.js.map | 1 + ...OnlyConfig.js => MerchantCvcOnlyConfig.js} | 4 +- .../config/MerchantCvcOnlyConfig.js.map | 1 + .../lib/module/hooks/useAccessCheckout.js.map | 2 +- .../lib/module/hooks/useCardConfig.js | 8 +- .../lib/module/hooks/useCardConfig.js.map | 2 +- .../lib/module/hooks/useCardValidation.js | 2 +- .../lib/module/hooks/useCardValidation.js.map | 2 +- .../lib/module/hooks/useCvcOnlyConfig.js | 8 +- .../lib/module/hooks/useCvcOnlyConfig.js.map | 2 +- .../lib/module/hooks/useCvcOnlyValidation.js | 2 +- .../module/hooks/useCvcOnlyValidation.js.map | 2 +- .../lib/module/index.js | 12 +- .../lib/module/index.js.map | 2 +- .../lib/module/validation/Brand.js.map | 2 +- .../validation/CardValidationConfig.js.map | 1 - .../CardValidationEventListener.js.map | 2 +- .../CvcOnlyValidationEventListener.js.map | 2 +- .../validation/CvcValidationConfig.js.map | 1 - ...fig.js => MerchantCardValidationConfig.js} | 4 +- .../MerchantCardValidationConfig.js.map | 1 + ....js => MerchantCvcOnlyValidationConfig.js} | 4 +- .../MerchantCvcOnlyValidationConfig.js.map | 1 + .../lib/typescript/AccessCheckout.d.ts | 2 +- .../lib/typescript/config/CardConfig.d.ts | 8 - .../lib/typescript/config/CvcOnlyConfig.d.ts | 6 - .../typescript/config/MerchantCardConfig.d.ts | 8 + .../config/MerchantCvcOnlyConfig.d.ts | 6 + .../typescript/hooks/useAccessCheckout.d.ts | 2 +- .../lib/typescript/hooks/useCardConfig.d.ts | 16 +- .../typescript/hooks/useCardValidation.d.ts | 2 +- .../typescript/hooks/useCvcOnlyConfig.d.ts | 11 +- .../lib/typescript/index.d.ts | 14 +- .../lib/typescript/validation/Brand.d.ts | 2 +- .../validation/CvcValidationConfig.d.ts | 5 - ...d.ts => MerchantCardValidationConfig.d.ts} | 4 +- .../MerchantCvcOnlyValidationConfig.d.ts | 5 + .../src/AccessCheckout.tsx | 24 +- .../src/config/CvcOnlyConfig.ts | 11 - .../{CardConfig.ts => MerchantCardConfig.ts} | 8 +- .../src/config/MerchantCvcOnlyConfig.ts | 11 + .../src/hooks/useAccessCheckout.ts | 12 +- .../src/hooks/useCardConfig.ts | 21 +- .../src/hooks/useCardValidation.ts | 19 +- .../src/hooks/useCvcOnlyConfig.ts | 20 +- .../src/hooks/useCvcOnlyValidation.ts | 18 +- .../src/index.tsx | 18 +- .../src/validation/Brand.ts | 4 +- .../validation/CardValidationEventListener.ts | 4 +- .../CvcOnlyValidationEventListener.ts | 4 +- ...fig.ts => MerchantCardValidationConfig.ts} | 4 +- ....ts => MerchantCvcOnlyValidationConfig.ts} | 4 +- .../test/config/CardConfig.spec.ts | 54 ++-- .../test/config/CvcOnlyConfig.spec.ts | 24 +- .../test/hooks/useAccessCheckout.spec.ts | 239 ++++++++---------- .../test/hooks/useCardValidation.spec.ts | 23 +- .../test/hooks/useCvcOnlyValidation.spec.ts | 18 +- demo-app/src/card-flow/CardFlow.tsx | 4 +- demo-app/src/cvc-flow/CvcFlow.tsx | 2 +- 90 files changed, 357 insertions(+), 462 deletions(-) delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js.map rename access-checkout-react-native-sdk/lib/commonjs/config/{CardConfig.js => MerchantCardConfig.js} (91%) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/config/MerchantCardConfig.js.map rename access-checkout-react-native-sdk/lib/commonjs/config/{CvcOnlyConfig.js => MerchantCvcOnlyConfig.js} (89%) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/config/MerchantCvcOnlyConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js.map rename access-checkout-react-native-sdk/lib/commonjs/validation/{CardValidationConfig.js => MerchantCardValidationConfig.js} (84%) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCardValidationConfig.js.map rename access-checkout-react-native-sdk/lib/commonjs/validation/{CvcValidationConfig.js => MerchantCvcOnlyValidationConfig.js} (80%) create mode 100644 access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCvcOnlyValidationConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/module/config/CardConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js.map rename access-checkout-react-native-sdk/lib/module/config/{CardConfig.js => MerchantCardConfig.js} (92%) create mode 100644 access-checkout-react-native-sdk/lib/module/config/MerchantCardConfig.js.map rename access-checkout-react-native-sdk/lib/module/config/{CvcOnlyConfig.js => MerchantCvcOnlyConfig.js} (90%) create mode 100644 access-checkout-react-native-sdk/lib/module/config/MerchantCvcOnlyConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js.map rename access-checkout-react-native-sdk/lib/module/validation/{CardValidationConfig.js => MerchantCardValidationConfig.js} (91%) create mode 100644 access-checkout-react-native-sdk/lib/module/validation/MerchantCardValidationConfig.js.map rename access-checkout-react-native-sdk/lib/module/validation/{CvcValidationConfig.js => MerchantCvcOnlyValidationConfig.js} (88%) create mode 100644 access-checkout-react-native-sdk/lib/module/validation/MerchantCvcOnlyValidationConfig.js.map delete mode 100644 access-checkout-react-native-sdk/lib/typescript/config/CardConfig.d.ts delete mode 100644 access-checkout-react-native-sdk/lib/typescript/config/CvcOnlyConfig.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/config/MerchantCardConfig.d.ts create mode 100644 access-checkout-react-native-sdk/lib/typescript/config/MerchantCvcOnlyConfig.d.ts delete mode 100644 access-checkout-react-native-sdk/lib/typescript/validation/CvcValidationConfig.d.ts rename access-checkout-react-native-sdk/lib/typescript/validation/{CardValidationConfig.d.ts => MerchantCardValidationConfig.d.ts} (71%) create mode 100644 access-checkout-react-native-sdk/lib/typescript/validation/MerchantCvcOnlyValidationConfig.d.ts delete mode 100644 access-checkout-react-native-sdk/src/config/CvcOnlyConfig.ts rename access-checkout-react-native-sdk/src/config/{CardConfig.ts => MerchantCardConfig.ts} (55%) create mode 100644 access-checkout-react-native-sdk/src/config/MerchantCvcOnlyConfig.ts rename access-checkout-react-native-sdk/src/validation/{CardValidationConfig.ts => MerchantCardValidationConfig.ts} (84%) rename access-checkout-react-native-sdk/src/validation/{CvcValidationConfig.ts => MerchantCvcOnlyValidationConfig.ts} (58%) diff --git a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map index f25c076..e4f2d27 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.1';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAczD,MAAMW,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAxB,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACuB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAArB,eAAA,CA3FoBqB,cAAc,6BAES,mCAAmC;AAAArB,eAAA,CAF1DqB,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","AccessCheckout","constructor","baseUrl","merchantId","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","AccessCheckoutReactNative","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation","exports","default"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.1';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType = 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({ baseUrl, merchantId }: { baseUrl: string; merchantId?: string }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(sessionGenerationConfig: SessionGenerationConfig, sessionTypes: string[]): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(validationConfig: InitialiseCardValidationConfig): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(validationConfig: InitialiseCvcOnlyValidationConfig): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAAwE,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAczD,MAAMW,cAAc,CAAC;EAQlCC,WAAWA,CAAC;IAAEC,OAAO;IAAEC;EAAqD,CAAC,EAAE;IAAAxB,eAAA,gCAPtC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAQ9C,IAAI,CAACuB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAC,gBAAgBA,CAACC,uBAAgD,EAAEC,YAAsB,EAAqB;IAC5G,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACN,gBAAgB,CAAC;QACzCF,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEN,uBAAuB,CAACM,KAAK;QACpCC,YAAY,EAAEP,uBAAuB,CAACO,YAAY;QAClDC,KAAK,EAAER,uBAAuB,CAACQ,KAAK;QACpCP,YAAY;QACZQ,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAZ,OAAO,CAACU,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CAACC,gBAAgD,EAAoB;IAC3F,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACa,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CAACH,gBAAmD,EAAoB;IACjG,OAAO,IAAIjB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCC,oDAAyB,CAACiB,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVR,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCa,KAAK,CAAEC,KAAU,IAAK;QACrBb,MAAM,CAACa,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAACM,OAAA,CAAAC,OAAA,GAAA7B,cAAA;AAAArB,eAAA,CA7EoBqB,cAAc,6BAES,mCAAmC;AAAArB,eAAA,CAF1DqB,cAAc,gCAGY,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js.map deleted file mode 100644 index 32b3d1f..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CardConfig","constructor","panId","expiryDateId","cvcId","validationConfig","_defineProperty","exports","default"],"sources":["CardConfig.ts"],"sourcesContent":["import type { CardValidationConfig } from '../validation/CardValidationConfig';\n\nexport default class CardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: CardValidationConfig;\n\n constructor({ panId, expiryDateId, cvcId, validationConfig }: CardConfig) {\n this.panId = panId;\n this.expiryDateId = expiryDateId;\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;;;;;;;AAEe,MAAMA,UAAU,CAAC;EAM9BC,WAAWA,CAAC;IAAEC,KAAK;IAAEC,YAAY;IAAEC,KAAK;IAAEC;EAA6B,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACxE,IAAI,CAACJ,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAR,UAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js.map deleted file mode 100644 index f6ff6c3..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CvcOnlyConfig","constructor","cvcId","validationConfig","_defineProperty","exports","default"],"sources":["CvcOnlyConfig.ts"],"sourcesContent":["import type { CvcValidationConfig } from '../validation/CvcValidationConfig';\n\nexport default class CvcOnlyConfig {\n cvcId: string;\n validationConfig?: CvcValidationConfig;\n\n constructor({ cvcId, validationConfig }: CvcOnlyConfig) {\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;;;;;;;AAEe,MAAMA,aAAa,CAAC;EAIjCC,WAAWA,CAAC;IAAEC,KAAK;IAAEC;EAAgC,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IACtD,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAN,aAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js b/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCardConfig.js similarity index 91% rename from access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js rename to access-checkout-react-native-sdk/lib/commonjs/config/MerchantCardConfig.js index 52e411a..838758b 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/config/CardConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCardConfig.js @@ -7,7 +7,7 @@ exports.default = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -class CardConfig { +class MerchantCardConfig { constructor({ panId, expiryDateId, @@ -24,5 +24,5 @@ class CardConfig { this.validationConfig = validationConfig; } } -exports.default = CardConfig; -//# sourceMappingURL=CardConfig.js.map \ No newline at end of file +exports.default = MerchantCardConfig; +//# sourceMappingURL=MerchantCardConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCardConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCardConfig.js.map new file mode 100644 index 0000000..63716f0 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCardConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["MerchantCardConfig","constructor","panId","expiryDateId","cvcId","validationConfig","_defineProperty","exports","default"],"sources":["MerchantCardConfig.ts"],"sourcesContent":["import type { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig';\n\nexport default class MerchantCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: MerchantCardValidationConfig;\n\n constructor({ panId, expiryDateId, cvcId, validationConfig }: MerchantCardConfig) {\n this.panId = panId;\n this.expiryDateId = expiryDateId;\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;;;;;;;AAEe,MAAMA,kBAAkB,CAAC;EAMtCC,WAAWA,CAAC;IAAEC,KAAK;IAAEC,YAAY;IAAEC,KAAK;IAAEC;EAAqC,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAChF,IAAI,CAACJ,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAR,kBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js b/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCvcOnlyConfig.js similarity index 89% rename from access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js rename to access-checkout-react-native-sdk/lib/commonjs/config/MerchantCvcOnlyConfig.js index 0bc5c37..6abf7fd 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/config/CvcOnlyConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCvcOnlyConfig.js @@ -7,7 +7,7 @@ exports.default = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -class CvcOnlyConfig { +class MerchantCvcOnlyConfig { constructor({ cvcId, validationConfig @@ -18,5 +18,5 @@ class CvcOnlyConfig { this.validationConfig = validationConfig; } } -exports.default = CvcOnlyConfig; -//# sourceMappingURL=CvcOnlyConfig.js.map \ No newline at end of file +exports.default = MerchantCvcOnlyConfig; +//# sourceMappingURL=MerchantCvcOnlyConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCvcOnlyConfig.js.map new file mode 100644 index 0000000..f5ade44 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/config/MerchantCvcOnlyConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["MerchantCvcOnlyConfig","constructor","cvcId","validationConfig","_defineProperty","exports","default"],"sources":["MerchantCvcOnlyConfig.ts"],"sourcesContent":["import type { MerchantCvcOnlyValidationConfig } from '../validation/MerchantCvcOnlyValidationConfig';\n\nexport default class MerchantCvcOnlyConfig {\n cvcId: string;\n validationConfig?: MerchantCvcOnlyValidationConfig;\n\n constructor({ cvcId, validationConfig }: MerchantCvcOnlyConfig) {\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;;;;;;;AAEe,MAAMA,qBAAqB,CAAC;EAIzCC,WAAWA,CAAC;IAAEC,KAAK;IAAEC;EAAwC,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAC9D,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAN,qBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map index 92912ff..29e76d6 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useAccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["_index","require","_useCardValidation","_useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","AccessCheckout","merchantId","CardConfig","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","useCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","useCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession","exports"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({\n baseUrl,\n checkoutId,\n config,\n}: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n validationListener: config.validationConfig\n ?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n validationListener: config.validationConfig\n ?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAaO,MAAMG,iBAAiB,GAAGA,CAAC;EAChCC,OAAO;EACPC,UAAU;EACVC;AACiB,CAAC,KAA+B;EACjD,MAAMC,cAAc,GAAG,IAAIC,qBAAc,CAAC;IACxCJ,OAAO,EAAEA,OAAO;IAChBK,UAAU,EAAEJ;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYI,iBAAU,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAG,IAAAC,oCAAiB,EAAC;MACrDR,cAAc;MACdS,oBAAoB,EAAE;QACpBC,KAAK,EAAEX,MAAM,CAACW,KAAK;QACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;QACjCC,KAAK,EAAEb,MAAM,CAACa,KAAK;QACnBC,mBAAmB,GAAAT,qBAAA,GAAEL,MAAM,CAACe,gBAAgB,cAAAV,qBAAA,uBAAvBA,qBAAA,CAAyBS,mBAAmB;QACjEE,kBAAkB,GAAAV,sBAAA,GAAEN,MAAM,CAACe,gBAAgB,cAAAT,sBAAA,uBAAvBA,sBAAA,CAAyBU;MAC/C,CAAC;MACDC,kBAAkB,GAAAV,sBAAA,GAAEP,MAAM,CAACe,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CAChBU;IACN,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9ClB,cAAc,CAACiB,gBAAgB,CAC7B;MACEP,KAAK,EAAEX,MAAM,CAACW,KAAK;MACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;MACjCC,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEZ,wBAAwB;MAC9CU;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAG,IAAAC,0CAAoB,EAAC;MAC3DtB,cAAc;MACduB,uBAAuB,EAAE;QAAEX,KAAK,EAAEb,MAAM,CAACa;MAAM,CAAC;MAChDI,kBAAkB,GAAAI,sBAAA,GAAErB,MAAM,CAACe,gBAAgB,cAAAM,sBAAA,uBAAvBA,sBAAA,CAChBJ;IACN,CAAC,CAAC;IAEF,MAAMQ,sBAAsB,GAAIN,YAAsB,IACpDlB,cAAc,CAACiB,gBAAgB,CAC7B;MACEL,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEO;IACpB,CAAC;EACH;AACF,CAAC;AAACC,OAAA,CAAA7B,iBAAA,GAAAA,iBAAA"} \ No newline at end of file +{"version":3,"names":["_index","require","_useCardValidation","_useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","AccessCheckout","merchantId","CardConfig","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","useCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","useCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession","exports"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({ baseUrl, checkoutId, config }: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n validationListener: config.validationConfig?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n validationListener: config.validationConfig?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAaO,MAAMG,iBAAiB,GAAGA,CAAC;EAAEC,OAAO;EAAEC,UAAU;EAAEC;AAA0B,CAAC,KAA+B;EACjH,MAAMC,cAAc,GAAG,IAAIC,qBAAc,CAAC;IACxCJ,OAAO,EAAEA,OAAO;IAChBK,UAAU,EAAEJ;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYI,iBAAU,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAG,IAAAC,oCAAiB,EAAC;MACrDR,cAAc;MACdS,oBAAoB,EAAE;QACpBC,KAAK,EAAEX,MAAM,CAACW,KAAK;QACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;QACjCC,KAAK,EAAEb,MAAM,CAACa,KAAK;QACnBC,mBAAmB,GAAAT,qBAAA,GAAEL,MAAM,CAACe,gBAAgB,cAAAV,qBAAA,uBAAvBA,qBAAA,CAAyBS,mBAAmB;QACjEE,kBAAkB,GAAAV,sBAAA,GAAEN,MAAM,CAACe,gBAAgB,cAAAT,sBAAA,uBAAvBA,sBAAA,CAAyBU;MAC/C,CAAC;MACDC,kBAAkB,GAAAV,sBAAA,GAAEP,MAAM,CAACe,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CAAyBU;IAC/C,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9ClB,cAAc,CAACiB,gBAAgB,CAC7B;MACEP,KAAK,EAAEX,MAAM,CAACW,KAAK;MACnBC,YAAY,EAAEZ,MAAM,CAACY,YAAY;MACjCC,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEZ,wBAAwB;MAC9CU;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAG,IAAAC,0CAAoB,EAAC;MAC3DtB,cAAc;MACduB,uBAAuB,EAAE;QAAEX,KAAK,EAAEb,MAAM,CAACa;MAAM,CAAC;MAChDI,kBAAkB,GAAAI,sBAAA,GAAErB,MAAM,CAACe,gBAAgB,cAAAM,sBAAA,uBAAvBA,sBAAA,CAAyBJ;IAC/C,CAAC,CAAC;IAEF,MAAMQ,sBAAsB,GAAIN,YAAsB,IACpDlB,cAAc,CAACiB,gBAAgB,CAC7B;MACEL,KAAK,EAAEb,MAAM,CAACa;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEO;IACpB,CAAC;EACH;AACF,CAAC;AAACC,OAAA,CAAA7B,iBAAA,GAAAA,iBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js index a47aa2d..c998f38 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js @@ -4,17 +4,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.useCardConfig = void 0; -var _CardValidationConfig = require("../validation/CardValidationConfig"); -var _CardConfig = _interopRequireDefault(require("../config/CardConfig")); +var _MerchantCardValidationConfig = require("../validation/MerchantCardValidationConfig"); +var _MerchantCardConfig = _interopRequireDefault(require("../config/MerchantCardConfig")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const useCardConfig = props => { - const cardConfig = new _CardConfig.default({ + const cardConfig = new _MerchantCardConfig.default({ panId: props.panId, expiryDateId: props.expiryDateId, cvcId: props.cvcId }); if (props.validationConfig) { - cardConfig.validationConfig = new _CardValidationConfig.CardValidationConfig({ + cardConfig.validationConfig = new _MerchantCardValidationConfig.MerchantCardValidationConfig({ acceptedCardBrands: props.validationConfig.acceptedCardBrands, enablePanFormatting: props.validationConfig.enablePanFormatting, validationListener: props.validationConfig.validationListener diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map index c252f25..19cc101 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map @@ -1 +1 @@ -{"version":3,"names":["_CardValidationConfig","require","_CardConfig","_interopRequireDefault","obj","__esModule","default","useCardConfig","props","cardConfig","CardConfig","panId","expiryDateId","cvcId","validationConfig","CardValidationConfig","acceptedCardBrands","enablePanFormatting","validationListener","exports"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { CardValidationConfig } from '../validation/CardValidationConfig';\nimport CardConfig from '../config/CardConfig';\n\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n };\n}\n\nexport const useCardConfig = (props: UseCardConfig): CardConfig => {\n const cardConfig = new CardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new CardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":";;;;;;AACA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA8C,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAavC,MAAMG,aAAa,GAAIC,KAAoB,IAAiB;EACjE,MAAMC,UAAU,GAAG,IAAIC,mBAAU,CAAC;IAChCC,KAAK,EAAEH,KAAK,CAACG,KAAK;IAClBC,YAAY,EAAEJ,KAAK,CAACI,YAAY;IAChCC,KAAK,EAAEL,KAAK,CAACK;EACf,CAAC,CAAC;EAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;IAC1BL,UAAU,CAACK,gBAAgB,GAAG,IAAIC,0CAAoB,CAAC;MACrDC,kBAAkB,EAAER,KAAK,CAACM,gBAAgB,CAACE,kBAAkB;MAC7DC,mBAAmB,EAAET,KAAK,CAACM,gBAAgB,CAACG,mBAAmB;MAC/DC,kBAAkB,EAAEV,KAAK,CAACM,gBAAgB,CAACI;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOT,UAAU;AACnB,CAAC;AAACU,OAAA,CAAAZ,aAAA,GAAAA,aAAA"} \ No newline at end of file +{"version":3,"names":["_MerchantCardValidationConfig","require","_MerchantCardConfig","_interopRequireDefault","obj","__esModule","default","useCardConfig","props","cardConfig","MerchantCardConfig","panId","expiryDateId","cvcId","validationConfig","MerchantCardValidationConfig","acceptedCardBrands","enablePanFormatting","validationListener","exports"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig';\nimport MerchantCardConfig from '../config/MerchantCardConfig';\n\nexport interface CardValidationConfig {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n}\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: MerchantCardValidationConfig;\n}\n\nexport const useCardConfig = (props: UseCardConfig): MerchantCardConfig => {\n const cardConfig = new MerchantCardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new MerchantCardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":";;;;;;AACA,IAAAA,6BAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA8D,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAcvD,MAAMG,aAAa,GAAIC,KAAoB,IAAyB;EACzE,MAAMC,UAAU,GAAG,IAAIC,2BAAkB,CAAC;IACxCC,KAAK,EAAEH,KAAK,CAACG,KAAK;IAClBC,YAAY,EAAEJ,KAAK,CAACI,YAAY;IAChCC,KAAK,EAAEL,KAAK,CAACK;EACf,CAAC,CAAC;EAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;IAC1BL,UAAU,CAACK,gBAAgB,GAAG,IAAIC,0DAA4B,CAAC;MAC7DC,kBAAkB,EAAER,KAAK,CAACM,gBAAgB,CAACE,kBAAkB;MAC7DC,mBAAmB,EAAET,KAAK,CAACM,gBAAgB,CAACG,mBAAmB;MAC/DC,kBAAkB,EAAEV,KAAK,CAACM,gBAAgB,CAACI;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOT,UAAU;AACnB,CAAC;AAACU,OAAA,CAAAZ,aAAA,GAAAA,aAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js index c4c5ddd..5f23320 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js @@ -33,7 +33,7 @@ function useCardValidation({ }) { /* Implementation Note: To allow the hook to render and use hooks correctly: - `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + `useCardValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener was provided in order to register the native event. */ useCardValidationEventListener(validationListener); diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map index 1033354..df1db41 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardValidation.js.map @@ -1 +1 @@ -{"version":3,"names":["_react","require","_reactNative","_AccessCheckout","_interopRequireDefault","_AccessCheckoutReactNative","_CardValidationEventListener","_ValidationListenerException","obj","__esModule","default","useCardValidationEventListener","validationListener","useEffect","nativeEventListener","cardValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation","ValidationListenerException"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport function useCardValidationEventListener(\n validationListener: CardValidationEventListener\n) {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener =\n cardValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n validationListener: CardValidationEventListener;\n}\n\nexport function useCardValidation({\n accessCheckout,\n cardValidationConfig,\n validationListener,\n}: UseCardValidationHook) {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCardValidationEventListener(validationListener);\n\n const initialiseCardValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCardValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAIA,IAAAM,4BAAA,GAAAN,OAAA;AAAwF,SAAAG,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjF,SAASG,8BAA8BA,CAC5CC,kBAA+C,EAC/C;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd;IACA,IAAI,CAACD,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAME,mBAAmB,GACvB,IAAAC,gEAAmC,EAACH,kBAAkB,CAAC;IACzD,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,kCACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,uBAAc,CAACC,uBAAuB,EACtCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAcO,SAASC,iBAAiBA,CAAC;EAChCC,cAAc;EACdC,oBAAoB;EACpBd;AACqB,CAAC,EAAE;EACxB;AACF;AACA;AACA;AACA;EACED,8BAA8B,CAACC,kBAAkB,CAAC;EAElD,MAAMe,wBAAwB,GAAGA,CAAA,KAAM;IACrC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACf,kBAAkB,EAAE;MACvB,MAAM,IAAIgB,wDAA2B,CAAC,CAAC;IACzC;IACA,OAAOH,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file +{"version":3,"names":["_react","require","_reactNative","_AccessCheckout","_interopRequireDefault","_AccessCheckoutReactNative","_CardValidationEventListener","_ValidationListenerException","obj","__esModule","default","useCardValidationEventListener","validationListener","useEffect","nativeEventListener","cardValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation","ValidationListenerException"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport function useCardValidationEventListener(validationListener: CardValidationEventListener) {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener = cardValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative);\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n validationListener: CardValidationEventListener;\n}\n\nexport function useCardValidation({ accessCheckout, cardValidationConfig, validationListener }: UseCardValidationHook) {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCardValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCardValidationEventListener(validationListener);\n\n const initialiseCardValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCardValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,0BAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAIA,IAAAM,4BAAA,GAAAN,OAAA;AAAwF,SAAAG,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjF,SAASG,8BAA8BA,CAACC,kBAA+C,EAAE;EAC9F,IAAAC,gBAAS,EAAC,MAAM;IACd;IACA,IAAI,CAACD,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAME,mBAAmB,GAAG,IAAAC,gEAAmC,EAACH,kBAAkB,CAAC;IACnF,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAACC,kCAAyB,CAAC;IAE5E,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,uBAAc,CAACC,uBAAuB,EACtCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAcO,SAASC,iBAAiBA,CAAC;EAAEC,cAAc;EAAEC,oBAAoB;EAAEd;AAA0C,CAAC,EAAE;EACrH;AACF;AACA;AACA;AACA;EACED,8BAA8B,CAACC,kBAAkB,CAAC;EAElD,MAAMe,wBAAwB,GAAGA,CAAA,KAAM;IACrC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACf,kBAAkB,EAAE;MACvB,MAAM,IAAIgB,wDAA2B,CAAC,CAAC;IACzC;IACA,OAAOH,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js index ac0119a..5a71d3d 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js @@ -4,18 +4,18 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.useCvcOnlyConfig = useCvcOnlyConfig; -var _CvcOnlyConfig = _interopRequireDefault(require("../config/CvcOnlyConfig")); -var _CvcValidationConfig = require("../validation/CvcValidationConfig"); +var _MerchantCvcOnlyConfig = _interopRequireDefault(require("../config/MerchantCvcOnlyConfig")); +var _MerchantCvcOnlyValidationConfig = require("../validation/MerchantCvcOnlyValidationConfig"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function useCvcOnlyConfig({ cvcId, validationConfig }) { - const cardConfig = new _CvcOnlyConfig.default({ + const cardConfig = new _MerchantCvcOnlyConfig.default({ cvcId }); if (validationConfig) { - cardConfig.validationConfig = new _CvcValidationConfig.CvcValidationConfig({ + cardConfig.validationConfig = new _MerchantCvcOnlyValidationConfig.MerchantCvcOnlyValidationConfig({ validationListener: validationConfig.validationListener }); } diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js.map index 00b9d47..b0de93a 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyConfig.js.map @@ -1 +1 @@ -{"version":3,"names":["_CvcOnlyConfig","_interopRequireDefault","require","_CvcValidationConfig","obj","__esModule","default","useCvcOnlyConfig","cvcId","validationConfig","cardConfig","CvcOnlyConfig","CvcValidationConfig","validationListener"],"sources":["useCvcOnlyConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport CvcOnlyConfig from '../config/CvcOnlyConfig';\nimport { CvcValidationConfig } from '../validation/CvcValidationConfig';\n\nexport interface UseCvcOnlyConfig {\n cvcId: string;\n validationConfig?: {\n validationListener: CardValidationEventListener;\n };\n}\n\nexport function useCvcOnlyConfig({\n cvcId,\n validationConfig,\n}: UseCvcOnlyConfig) {\n const cardConfig = new CvcOnlyConfig({\n cvcId,\n });\n\n if (validationConfig) {\n cardConfig.validationConfig = new CvcValidationConfig({\n validationListener: validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n}\n"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAAwE,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASjE,SAASG,gBAAgBA,CAAC;EAC/BC,KAAK;EACLC;AACgB,CAAC,EAAE;EACnB,MAAMC,UAAU,GAAG,IAAIC,sBAAa,CAAC;IACnCH;EACF,CAAC,CAAC;EAEF,IAAIC,gBAAgB,EAAE;IACpBC,UAAU,CAACD,gBAAgB,GAAG,IAAIG,wCAAmB,CAAC;MACpDC,kBAAkB,EAAEJ,gBAAgB,CAACI;IACvC,CAAC,CAAC;EACJ;EAEA,OAAOH,UAAU;AACnB"} \ No newline at end of file +{"version":3,"names":["_MerchantCvcOnlyConfig","_interopRequireDefault","require","_MerchantCvcOnlyValidationConfig","obj","__esModule","default","useCvcOnlyConfig","cvcId","validationConfig","cardConfig","MerchantCvcOnlyConfig","MerchantCvcOnlyValidationConfig","validationListener"],"sources":["useCvcOnlyConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport MerchantCvcOnlyConfig from '../config/MerchantCvcOnlyConfig';\nimport { MerchantCvcOnlyValidationConfig } from '../validation/MerchantCvcOnlyValidationConfig';\n\nexport interface CvcOnlyValidationConfig {\n validationListener: CardValidationEventListener;\n}\nexport interface UseCvcOnlyConfig {\n cvcId: string;\n validationConfig?: CvcOnlyValidationConfig;\n}\n\nexport function useCvcOnlyConfig({ cvcId, validationConfig }: UseCvcOnlyConfig) {\n const cardConfig = new MerchantCvcOnlyConfig({\n cvcId,\n });\n\n if (validationConfig) {\n cardConfig.validationConfig = new MerchantCvcOnlyValidationConfig({\n validationListener: validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n}\n"],"mappings":";;;;;;AACA,IAAAA,sBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,gCAAA,GAAAD,OAAA;AAAgG,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAUzF,SAASG,gBAAgBA,CAAC;EAAEC,KAAK;EAAEC;AAAmC,CAAC,EAAE;EAC9E,MAAMC,UAAU,GAAG,IAAIC,8BAAqB,CAAC;IAC3CH;EACF,CAAC,CAAC;EAEF,IAAIC,gBAAgB,EAAE;IACpBC,UAAU,CAACD,gBAAgB,GAAG,IAAIG,gEAA+B,CAAC;MAChEC,kBAAkB,EAAEJ,gBAAgB,CAACI;IACvC,CAAC,CAAC;EACJ;EAEA,OAAOH,UAAU;AACnB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js index b476f9b..9b2464e 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js @@ -33,7 +33,7 @@ const useCvcOnlyValidation = ({ }) => { /* Implementation Note: To allow the hook to render and use hooks correctly: - `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + `useCvcOnlyValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener was provided in order to register the native event. */ useCvcOnlyValidationEventListener(validationListener); diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map index a2afc9b..c70faf8 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCvcOnlyValidation.js.map @@ -1 +1 @@ -{"version":3,"names":["_react","require","_reactNative","_index","_interopRequireWildcard","_CvcOnlyValidationEventListener","_ValidationListenerException","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","useCvcOnlyValidationEventListener","validationListener","useEffect","nativeEventListener","cvcOnlyValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CvcOnlyValidationEventType","remove","exports","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation","ValidationListenerException"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CardValidationEventListener,\n} from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport const useCvcOnlyValidationEventListener = (\n validationListener: CvcOnlyValidationEventListener\n) => {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n validationListener: CardValidationEventListener;\n}\n\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n validationListener,\n}: UseCvcOnlyValidationHook) => {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCvcOnlyValidationEventListener(validationListener);\n const initialiseCvcOnlyValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AAKA,IAAAI,+BAAA,GAAAJ,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAAwF,SAAAM,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAEjF,MAAMY,iCAAiC,GAC5CC,kBAAkD,IAC/C;EACH,IAAAC,gBAAS,EAAC,MAAM;IACd;IACA,IAAI,CAACD,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAME,mBAAmB,GACvB,IAAAC,sEAAsC,EAACH,kBAAkB,CAAC;IAC5D,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAC/CC,cACF,CAAC;IAED,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,qBAAc,CAACC,0BAA0B,EACzCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAACC,OAAA,CAAAb,iCAAA,GAAAA,iCAAA;AAUK,MAAMc,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBf;AACwB,CAAC,KAAK;EAC9B;AACF;AACA;AACA;AACA;EACED,iCAAiC,CAACC,kBAAkB,CAAC;EACrD,MAAMgB,2BAA2B,GAAGA,CAAA,KAAM;IACxC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAAChB,kBAAkB,EAAE;MACvB,MAAM,IAAIiB,wDAA2B,CAAC,CAAC;IACzC;IAEA,OAAOH,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC;AAACJ,OAAA,CAAAC,oBAAA,GAAAA,oBAAA"} \ No newline at end of file +{"version":3,"names":["_react","require","_reactNative","_index","_interopRequireWildcard","_CvcOnlyValidationEventListener","_ValidationListenerException","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","useCvcOnlyValidationEventListener","validationListener","useEffect","nativeEventListener","cvcOnlyValidationNativeEventListenerOf","nativeEventEmitter","NativeEventEmitter","AccessCheckoutReactNative","eventSubscription","addListener","AccessCheckout","CvcOnlyValidationEventType","remove","exports","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation","ValidationListenerException"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, { AccessCheckout, CardValidationEventListener } from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport const useCvcOnlyValidationEventListener = (validationListener: CvcOnlyValidationEventListener) => {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener = cvcOnlyValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative);\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n validationListener: CardValidationEventListener;\n}\n\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n validationListener,\n}: UseCvcOnlyValidationHook) => {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCvcOnlyValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCvcOnlyValidationEventListener(validationListener);\n const initialiseCvcOnlyValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AAEA,IAAAI,+BAAA,GAAAJ,OAAA;AACA,IAAAK,4BAAA,GAAAL,OAAA;AAAwF,SAAAM,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAEjF,MAAMY,iCAAiC,GAAIC,kBAAkD,IAAK;EACvG,IAAAC,gBAAS,EAAC,MAAM;IACd;IACA,IAAI,CAACD,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAME,mBAAmB,GAAG,IAAAC,sEAAsC,EAACH,kBAAkB,CAAC;IACtF,MAAMI,kBAAkB,GAAG,IAAIC,+BAAkB,CAACC,cAAyB,CAAC;IAE5E,MAAMC,iBAAiB,GAAGH,kBAAkB,CAACI,WAAW,CACtDC,qBAAc,CAACC,0BAA0B,EACzCR,mBACF,CAAC;IAED,OAAO,MAAM;MACXK,iBAAiB,CAACI,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAACC,OAAA,CAAAb,iCAAA,GAAAA,iCAAA;AAUK,MAAMc,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBf;AACwB,CAAC,KAAK;EAC9B;AACF;AACA;AACA;AACA;EACED,iCAAiC,CAACC,kBAAkB,CAAC;EACrD,MAAMgB,2BAA2B,GAAGA,CAAA,KAAM;IACxC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAAChB,kBAAkB,EAAE;MACvB,MAAM,IAAIiB,wDAA2B,CAAC,CAAC;IACzC;IAEA,OAAOH,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC;AAACJ,OAAA,CAAAC,oBAAA,GAAAA,oBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js b/access-checkout-react-native-sdk/lib/commonjs/index.js index e9e5475..92cacca 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js @@ -36,13 +36,13 @@ Object.defineProperty(exports, "CVC", { Object.defineProperty(exports, "CardConfig", { enumerable: true, get: function () { - return _CardConfig.default; + return _MerchantCardConfig.default; } }); Object.defineProperty(exports, "CardValidationConfig", { enumerable: true, get: function () { - return _CardValidationConfig.CardValidationConfig; + return _useCardConfig.CardValidationConfig; } }); Object.defineProperty(exports, "CardValidationEventListener", { @@ -54,7 +54,13 @@ Object.defineProperty(exports, "CardValidationEventListener", { Object.defineProperty(exports, "CvcOnlyConfig", { enumerable: true, get: function () { - return _CvcOnlyConfig.default; + return _MerchantCvcOnlyConfig.default; + } +}); +Object.defineProperty(exports, "CvcOnlyValidationConfig", { + enumerable: true, + get: function () { + return _useCvcOnlyConfig.CvcOnlyValidationConfig; } }); Object.defineProperty(exports, "CvcOnlyValidationEventListener", { @@ -63,10 +69,16 @@ Object.defineProperty(exports, "CvcOnlyValidationEventListener", { return _CvcOnlyValidationEventListener.CvcOnlyValidationEventListener; } }); -Object.defineProperty(exports, "CvcValidationConfig", { +Object.defineProperty(exports, "MerchantCardValidationConfig", { + enumerable: true, + get: function () { + return _MerchantCardValidationConfig.MerchantCardValidationConfig; + } +}); +Object.defineProperty(exports, "MerchantCvcOnlyValidationConfig", { enumerable: true, get: function () { - return _CvcValidationConfig.CvcValidationConfig; + return _MerchantCvcOnlyValidationConfig.MerchantCvcOnlyValidationConfig; } }); Object.defineProperty(exports, "SessionGenerationConfig", { @@ -137,12 +149,12 @@ var _SessionType = _interopRequireWildcard(require("./session/SessionType")); var _Sessions = _interopRequireDefault(require("./session/Sessions")); var _Brand = _interopRequireDefault(require("./validation/Brand")); var _BrandImage = _interopRequireDefault(require("./validation/BrandImage")); -var _CardConfig = _interopRequireDefault(require("./config/CardConfig")); -var _CvcOnlyConfig = _interopRequireDefault(require("./config/CvcOnlyConfig")); +var _MerchantCardConfig = _interopRequireDefault(require("./config/MerchantCardConfig")); +var _MerchantCvcOnlyConfig = _interopRequireDefault(require("./config/MerchantCvcOnlyConfig")); var _CardValidationEventListener = require("./validation/CardValidationEventListener"); var _CvcOnlyValidationEventListener = require("./validation/CvcOnlyValidationEventListener"); -var _CvcValidationConfig = require("./validation/CvcValidationConfig"); -var _CardValidationConfig = require("./validation/CardValidationConfig"); +var _MerchantCvcOnlyValidationConfig = require("./validation/MerchantCvcOnlyValidationConfig"); +var _MerchantCardValidationConfig = require("./validation/MerchantCardValidationConfig"); var _useCardConfig = require("./hooks/useCardConfig"); var _useCvcOnlyConfig = require("./hooks/useCvcOnlyConfig"); var _useAccessCheckout = require("./hooks/useAccessCheckout"); diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js.map b/access-checkout-react-native-sdk/lib/commonjs/index.js.map index d9a377f..a0073cc 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_Brand","_BrandImage","_CardConfig","_CvcOnlyConfig","_CardValidationEventListener","_CvcOnlyValidationEventListener","_CvcValidationConfig","_CardValidationConfig","_useCardConfig","_useCvcOnlyConfig","_useAccessCheckout","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/CardConfig';\nexport { default as CvcOnlyConfig } from './config/CvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { CvcValidationConfig } from './validation/CvcValidationConfig';\nexport { CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { useCardConfig, UseCardConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig';\n\nexport {\n useAccessCheckout,\n UseAccessCheckout,\n UseAccessCheckoutExports,\n} from './hooks/useAccessCheckout';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,cAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AACA,IAAAW,+BAAA,GAAAX,OAAA;AAEA,IAAAY,oBAAA,GAAAZ,OAAA;AACA,IAAAa,qBAAA,GAAAb,OAAA;AAEA,IAAAc,cAAA,GAAAd,OAAA;AACA,IAAAe,iBAAA,GAAAf,OAAA;AAEA,IAAAgB,kBAAA,GAAAhB,OAAA;AAImC,SAAAiB,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAd,wBAAAc,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAA3B,uBAAAuC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GA7BpBkB,kCAAyB"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_Brand","_BrandImage","_MerchantCardConfig","_MerchantCvcOnlyConfig","_CardValidationEventListener","_CvcOnlyValidationEventListener","_MerchantCvcOnlyValidationConfig","_MerchantCardValidationConfig","_useCardConfig","_useCvcOnlyConfig","_useAccessCheckout","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/MerchantCardConfig';\nexport { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig';\nexport { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig';\n\nexport { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig';\n\nexport { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,mBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,sBAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AACA,IAAAW,+BAAA,GAAAX,OAAA;AAEA,IAAAY,gCAAA,GAAAZ,OAAA;AACA,IAAAa,6BAAA,GAAAb,OAAA;AAEA,IAAAc,cAAA,GAAAd,OAAA;AACA,IAAAe,iBAAA,GAAAf,OAAA;AAEA,IAAAgB,kBAAA,GAAAhB,OAAA;AAA2G,SAAAiB,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAd,wBAAAc,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAA3B,uBAAAuC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GAzB5FkB,kCAAyB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/Brand.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/Brand.js.map index ced2712..76a7487 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/Brand.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/Brand.js.map @@ -1 +1 @@ -{"version":3,"names":[],"sources":["Brand.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport BrandImage from './BrandImage';\n\nexport default interface Brand {\n name: string;\n images: BrandImage[];\n}\n"],"mappings":""} \ No newline at end of file +{"version":3,"names":[],"sources":["Brand.ts"],"sourcesContent":["import type BrandImage from './BrandImage';\n\nexport default interface Brand {\n name: string;\n images: BrandImage[];\n}\n"],"mappings":""} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js.map deleted file mode 100644 index fa1549d..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CardValidationConfig","constructor","validationListener","enablePanFormatting","acceptedCardBrands","_defineProperty","exports"],"sources":["CardValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class CardValidationConfig {\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n validationListener?: CardValidationEventListener;\n\n constructor({\n validationListener,\n enablePanFormatting = false,\n acceptedCardBrands = [],\n }: CardValidationConfig) {\n this.enablePanFormatting = enablePanFormatting;\n this.validationListener = validationListener;\n this.acceptedCardBrands = acceptedCardBrands;\n }\n}\n"],"mappings":";;;;;;;;;AAEO,MAAMA,oBAAoB,CAAC;EAKhCC,WAAWA,CAAC;IACVC,kBAAkB;IAClBC,mBAAmB,GAAG,KAAK;IAC3BC,kBAAkB,GAAG;EACD,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACvB,IAAI,CAACF,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACE,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF;AAACE,OAAA,CAAAN,oBAAA,GAAAA,oBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationEventListener.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationEventListener.js.map index f561726..e8c76d6 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationEventListener.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationEventListener.js.map @@ -1 +1 @@ -{"version":3,"names":["cardValidationNativeEventListenerOf","delegate","event","type","onCardBrandChanged","value","onPanValidChanged","isValid","onExpiryDateValidChanged","onCvcValidChanged","onValidationSuccess"],"sources":["CardValidationEventListener.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Brand from './Brand';\n\nexport interface CardValidationEventListener {\n onCardBrandChanged?(brand?: Brand): void;\n\n onPanValidChanged?(isValid: boolean): void;\n\n onExpiryDateValidChanged?(isValid: boolean): void;\n\n onCvcValidChanged?(isValid: boolean): void;\n\n onValidationSuccess?(): void;\n}\n\nexport function cardValidationNativeEventListenerOf(\n delegate: CardValidationEventListener\n) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (event: any) {\n if (event.type === 'brand' && delegate.onCardBrandChanged) {\n if (event.value === null) {\n delegate.onCardBrandChanged();\n } else {\n delegate.onCardBrandChanged(event.value as Brand);\n }\n }\n\n if (event.type === 'pan' && delegate.onPanValidChanged) {\n delegate.onPanValidChanged(event.isValid);\n }\n\n if (event.type === 'expiryDate' && delegate.onExpiryDateValidChanged) {\n delegate.onExpiryDateValidChanged(event.isValid);\n }\n\n if (event.type === 'cvc' && delegate.onCvcValidChanged) {\n delegate.onCvcValidChanged(event.isValid);\n }\n\n if (event.type === 'all' && delegate.onValidationSuccess) {\n delegate.onValidationSuccess();\n }\n };\n}\n"],"mappings":";;;;;;AAAA;AACA;;AAeO,SAASA,mCAAmCA,CACjDC,QAAqC,EACrC;EACA;EACA,OAAO,UAAUC,KAAU,EAAE;IAC3B,IAAIA,KAAK,CAACC,IAAI,KAAK,OAAO,IAAIF,QAAQ,CAACG,kBAAkB,EAAE;MACzD,IAAIF,KAAK,CAACG,KAAK,KAAK,IAAI,EAAE;QACxBJ,QAAQ,CAACG,kBAAkB,CAAC,CAAC;MAC/B,CAAC,MAAM;QACLH,QAAQ,CAACG,kBAAkB,CAACF,KAAK,CAACG,KAAc,CAAC;MACnD;IACF;IAEA,IAAIH,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACK,iBAAiB,EAAE;MACtDL,QAAQ,CAACK,iBAAiB,CAACJ,KAAK,CAACK,OAAO,CAAC;IAC3C;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,YAAY,IAAIF,QAAQ,CAACO,wBAAwB,EAAE;MACpEP,QAAQ,CAACO,wBAAwB,CAACN,KAAK,CAACK,OAAO,CAAC;IAClD;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACQ,iBAAiB,EAAE;MACtDR,QAAQ,CAACQ,iBAAiB,CAACP,KAAK,CAACK,OAAO,CAAC;IAC3C;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACS,mBAAmB,EAAE;MACxDT,QAAQ,CAACS,mBAAmB,CAAC,CAAC;IAChC;EACF,CAAC;AACH"} \ No newline at end of file +{"version":3,"names":["cardValidationNativeEventListenerOf","delegate","event","type","onCardBrandChanged","value","onPanValidChanged","isValid","onExpiryDateValidChanged","onCvcValidChanged","onValidationSuccess"],"sources":["CardValidationEventListener.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Brand from './Brand';\n\nexport interface CardValidationEventListener {\n onCardBrandChanged?(brand?: Brand): void;\n\n onPanValidChanged?(isValid: boolean): void;\n\n onExpiryDateValidChanged?(isValid: boolean): void;\n\n onCvcValidChanged?(isValid: boolean): void;\n\n onValidationSuccess?(): void;\n}\n\nexport function cardValidationNativeEventListenerOf(delegate: CardValidationEventListener) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (event: any) {\n if (event.type === 'brand' && delegate.onCardBrandChanged) {\n if (event.value === null) {\n delegate.onCardBrandChanged();\n } else {\n delegate.onCardBrandChanged(event.value as Brand);\n }\n }\n\n if (event.type === 'pan' && delegate.onPanValidChanged) {\n delegate.onPanValidChanged(event.isValid);\n }\n\n if (event.type === 'expiryDate' && delegate.onExpiryDateValidChanged) {\n delegate.onExpiryDateValidChanged(event.isValid);\n }\n\n if (event.type === 'cvc' && delegate.onCvcValidChanged) {\n delegate.onCvcValidChanged(event.isValid);\n }\n\n if (event.type === 'all' && delegate.onValidationSuccess) {\n delegate.onValidationSuccess();\n }\n };\n}\n"],"mappings":";;;;;;AAAA;AACA;;AAeO,SAASA,mCAAmCA,CAACC,QAAqC,EAAE;EACzF;EACA,OAAO,UAAUC,KAAU,EAAE;IAC3B,IAAIA,KAAK,CAACC,IAAI,KAAK,OAAO,IAAIF,QAAQ,CAACG,kBAAkB,EAAE;MACzD,IAAIF,KAAK,CAACG,KAAK,KAAK,IAAI,EAAE;QACxBJ,QAAQ,CAACG,kBAAkB,CAAC,CAAC;MAC/B,CAAC,MAAM;QACLH,QAAQ,CAACG,kBAAkB,CAACF,KAAK,CAACG,KAAc,CAAC;MACnD;IACF;IAEA,IAAIH,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACK,iBAAiB,EAAE;MACtDL,QAAQ,CAACK,iBAAiB,CAACJ,KAAK,CAACK,OAAO,CAAC;IAC3C;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,YAAY,IAAIF,QAAQ,CAACO,wBAAwB,EAAE;MACpEP,QAAQ,CAACO,wBAAwB,CAACN,KAAK,CAACK,OAAO,CAAC;IAClD;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACQ,iBAAiB,EAAE;MACtDR,QAAQ,CAACQ,iBAAiB,CAACP,KAAK,CAACK,OAAO,CAAC;IAC3C;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACS,mBAAmB,EAAE;MACxDT,QAAQ,CAACS,mBAAmB,CAAC,CAAC;IAChC;EACF,CAAC;AACH"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationEventListener.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationEventListener.js.map index c8d2e33..01917ff 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationEventListener.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcOnlyValidationEventListener.js.map @@ -1 +1 @@ -{"version":3,"names":["cvcOnlyValidationNativeEventListenerOf","delegate","event","type","onCvcValidChanged","isValid","onValidationSuccess"],"sources":["CvcOnlyValidationEventListener.ts"],"sourcesContent":["export interface CvcOnlyValidationEventListener {\n onCvcValidChanged?(isValid: boolean): void;\n\n onValidationSuccess?(): void;\n}\n\nexport function cvcOnlyValidationNativeEventListenerOf(\n delegate: CvcOnlyValidationEventListener\n) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (event: any) {\n if (event.type === 'cvc' && delegate.onCvcValidChanged) {\n delegate.onCvcValidChanged(event.isValid);\n }\n\n if (event.type === 'all' && delegate.onValidationSuccess) {\n delegate.onValidationSuccess();\n }\n };\n}\n"],"mappings":";;;;;;AAMO,SAASA,sCAAsCA,CACpDC,QAAwC,EACxC;EACA;EACA,OAAO,UAAUC,KAAU,EAAE;IAC3B,IAAIA,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACG,iBAAiB,EAAE;MACtDH,QAAQ,CAACG,iBAAiB,CAACF,KAAK,CAACG,OAAO,CAAC;IAC3C;IAEA,IAAIH,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACK,mBAAmB,EAAE;MACxDL,QAAQ,CAACK,mBAAmB,CAAC,CAAC;IAChC;EACF,CAAC;AACH"} \ No newline at end of file +{"version":3,"names":["cvcOnlyValidationNativeEventListenerOf","delegate","event","type","onCvcValidChanged","isValid","onValidationSuccess"],"sources":["CvcOnlyValidationEventListener.ts"],"sourcesContent":["export interface CvcOnlyValidationEventListener {\n onCvcValidChanged?(isValid: boolean): void;\n\n onValidationSuccess?(): void;\n}\n\nexport function cvcOnlyValidationNativeEventListenerOf(delegate: CvcOnlyValidationEventListener) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (event: any) {\n if (event.type === 'cvc' && delegate.onCvcValidChanged) {\n delegate.onCvcValidChanged(event.isValid);\n }\n\n if (event.type === 'all' && delegate.onValidationSuccess) {\n delegate.onValidationSuccess();\n }\n };\n}\n"],"mappings":";;;;;;AAMO,SAASA,sCAAsCA,CAACC,QAAwC,EAAE;EAC/F;EACA,OAAO,UAAUC,KAAU,EAAE;IAC3B,IAAIA,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACG,iBAAiB,EAAE;MACtDH,QAAQ,CAACG,iBAAiB,CAACF,KAAK,CAACG,OAAO,CAAC;IAC3C;IAEA,IAAIH,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACK,mBAAmB,EAAE;MACxDL,QAAQ,CAACK,mBAAmB,CAAC,CAAC;IAChC;EACF,CAAC;AACH"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js.map deleted file mode 100644 index f6025b8..0000000 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CvcValidationConfig","constructor","validationListener","_defineProperty","exports"],"sources":["CvcValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class CvcValidationConfig {\n validationListener?: CardValidationEventListener;\n\n constructor({ validationListener }: CvcValidationConfig) {\n this.validationListener = validationListener;\n }\n}\n"],"mappings":";;;;;;;;;AAEO,MAAMA,mBAAmB,CAAC;EAG/BC,WAAWA,CAAC;IAAEC;EAAwC,CAAC,EAAE;IAAAC,eAAA;IACvD,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF;AAACE,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js b/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCardValidationConfig.js similarity index 84% rename from access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js rename to access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCardValidationConfig.js index b7f72b8..a73a4c3 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CardValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCardValidationConfig.js @@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.CardValidationConfig = void 0; +exports.MerchantCardValidationConfig = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -class CardValidationConfig { +class MerchantCardValidationConfig { constructor({ validationListener, enablePanFormatting = false, @@ -21,5 +21,5 @@ class CardValidationConfig { this.acceptedCardBrands = acceptedCardBrands; } } -exports.CardValidationConfig = CardValidationConfig; -//# sourceMappingURL=CardValidationConfig.js.map \ No newline at end of file +exports.MerchantCardValidationConfig = MerchantCardValidationConfig; +//# sourceMappingURL=MerchantCardValidationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCardValidationConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCardValidationConfig.js.map new file mode 100644 index 0000000..960e6d0 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCardValidationConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["MerchantCardValidationConfig","constructor","validationListener","enablePanFormatting","acceptedCardBrands","_defineProperty","exports"],"sources":["MerchantCardValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class MerchantCardValidationConfig {\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n validationListener?: CardValidationEventListener;\n\n constructor({\n validationListener,\n enablePanFormatting = false,\n acceptedCardBrands = [],\n }: MerchantCardValidationConfig) {\n this.enablePanFormatting = enablePanFormatting;\n this.validationListener = validationListener;\n this.acceptedCardBrands = acceptedCardBrands;\n }\n}\n"],"mappings":";;;;;;;;;AAEO,MAAMA,4BAA4B,CAAC;EAKxCC,WAAWA,CAAC;IACVC,kBAAkB;IAClBC,mBAAmB,GAAG,KAAK;IAC3BC,kBAAkB,GAAG;EACO,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC/B,IAAI,CAACF,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACE,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF;AAACE,OAAA,CAAAN,4BAAA,GAAAA,4BAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js b/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCvcOnlyValidationConfig.js similarity index 80% rename from access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js rename to access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCvcOnlyValidationConfig.js index 42edbb0..2dc751d 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/validation/CvcValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCvcOnlyValidationConfig.js @@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.CvcValidationConfig = void 0; +exports.MerchantCvcOnlyValidationConfig = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -class CvcValidationConfig { +class MerchantCvcOnlyValidationConfig { constructor({ validationListener }) { @@ -15,5 +15,5 @@ class CvcValidationConfig { this.validationListener = validationListener; } } -exports.CvcValidationConfig = CvcValidationConfig; -//# sourceMappingURL=CvcValidationConfig.js.map \ No newline at end of file +exports.MerchantCvcOnlyValidationConfig = MerchantCvcOnlyValidationConfig; +//# sourceMappingURL=MerchantCvcOnlyValidationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCvcOnlyValidationConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCvcOnlyValidationConfig.js.map new file mode 100644 index 0000000..bfd22c8 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/commonjs/validation/MerchantCvcOnlyValidationConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["MerchantCvcOnlyValidationConfig","constructor","validationListener","_defineProperty","exports"],"sources":["MerchantCvcOnlyValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class MerchantCvcOnlyValidationConfig {\n validationListener?: CardValidationEventListener;\n\n constructor({ validationListener }: MerchantCvcOnlyValidationConfig) {\n this.validationListener = validationListener;\n }\n}\n"],"mappings":";;;;;;;;;AAEO,MAAMA,+BAA+B,CAAC;EAG3CC,WAAWA,CAAC;IAAEC;EAAoD,CAAC,EAAE;IAAAC,eAAA;IACnE,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF;AAACE,OAAA,CAAAJ,+BAAA,GAAAA,+BAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map index cbf8673..92c8e0b 100644 --- a/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/module/AccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","AccessCheckout","constructor","baseUrl","merchantId","_defineProperty","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.1';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType =\n 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({\n baseUrl,\n merchantId,\n }: {\n baseUrl: string;\n merchantId?: string;\n }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(\n sessionGenerationConfig: SessionGenerationConfig,\n sessionTypes: string[]\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(\n validationConfig: InitialiseCardValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(\n validationConfig: InitialiseCvcOnlyValidationConfig\n ): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;AAAA,SAASA,yBAAyB,QAAQ,6BAA6B;AAcvE,eAAe,MAAMC,cAAc,CAAC;EASlCC,WAAWA,CAAC;IACVC,OAAO;IACPC;EAIF,CAAC,EAAE;IAAAC,eAAA,gCAdsC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAe9C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAE,gBAAgBA,CACdC,uBAAgD,EAChDC,YAAsB,EACH;IACnB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACM,gBAAgB,CAAC;QACzCH,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEL,uBAAuB,CAACK,KAAK;QACpCC,YAAY,EAAEN,uBAAuB,CAACM,YAAY;QAClDC,KAAK,EAAEP,uBAAuB,CAACO,KAAK;QACpCN,YAAY;QACZO,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAX,OAAO,CAACS,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CACtBC,gBAAgD,EAC9B;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACwB,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CACzBH,gBAAmD,EACjC;IAClB,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAAC4B,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAAClB,eAAA,CA3FoBJ,cAAc,6BAES,mCAAmC;AAAAI,eAAA,CAF1DJ,cAAc,gCAI/B,sCAAsC"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","AccessCheckout","constructor","baseUrl","merchantId","_defineProperty","generateSessions","sessionGenerationConfig","sessionTypes","Promise","resolve","reject","panId","expiryDateId","cvcId","reactNativeSdkVersion","ReactNativeSdkVersion","then","bridgeSessions","sessions","card","cvc","catch","error","initialiseCardValidation","validationConfig","enablePanFormatting","acceptedCardBrands","initialiseCvcOnlyValidation"],"sources":["AccessCheckout.tsx"],"sourcesContent":["import { AccessCheckoutReactNative } from './AccessCheckoutReactNative';\nimport type SessionGenerationConfig from './session/SessionGenerationConfig';\nimport type Sessions from './session/Sessions';\n\ninterface InitialiseCardValidationConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n}\ninterface InitialiseCvcOnlyValidationConfig {\n cvcId: string;\n}\nexport default class AccessCheckout {\n private readonly ReactNativeSdkVersion = '2.0.1';\n static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent';\n static readonly CvcOnlyValidationEventType = 'AccessCheckoutCvcOnlyValidationEvent';\n\n baseUrl: string;\n merchantId?: string;\n\n constructor({ baseUrl, merchantId }: { baseUrl: string; merchantId?: string }) {\n this.baseUrl = baseUrl;\n this.merchantId = merchantId;\n }\n\n generateSessions(sessionGenerationConfig: SessionGenerationConfig, sessionTypes: string[]): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.generateSessions({\n baseUrl: this.baseUrl,\n merchantId: this.merchantId,\n panId: sessionGenerationConfig.panId,\n expiryDateId: sessionGenerationConfig.expiryDateId,\n cvcId: sessionGenerationConfig.cvcId,\n sessionTypes,\n reactNativeSdkVersion: this.ReactNativeSdkVersion,\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((bridgeSessions: any) => {\n const sessions: Sessions = {};\n if (bridgeSessions.card) {\n sessions.card = bridgeSessions.card;\n }\n if (bridgeSessions.cvc) {\n sessions.cvc = bridgeSessions.cvc;\n }\n\n resolve(sessions);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCardValidation(validationConfig: InitialiseCardValidationConfig): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCardValidation({\n baseUrl: this.baseUrl,\n panId: validationConfig.panId,\n expiryDateId: validationConfig.expiryDateId,\n cvcId: validationConfig.cvcId,\n enablePanFormatting: validationConfig.enablePanFormatting,\n acceptedCardBrands: validationConfig.acceptedCardBrands,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n\n initialiseCvcOnlyValidation(validationConfig: InitialiseCvcOnlyValidationConfig): Promise {\n return new Promise((resolve, reject) => {\n AccessCheckoutReactNative.initialiseCvcOnlyValidation({\n cvcId: validationConfig.cvcId,\n })\n .then(() => {\n resolve(true);\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .catch((error: any) => {\n reject(error);\n });\n });\n }\n}\n"],"mappings":";;;AAAA,SAASA,yBAAyB,QAAQ,6BAA6B;AAcvE,eAAe,MAAMC,cAAc,CAAC;EAQlCC,WAAWA,CAAC;IAAEC,OAAO;IAAEC;EAAqD,CAAC,EAAE;IAAAC,eAAA,gCAPtC,OAAO;IAAAA,eAAA;IAAAA,eAAA;IAQ9C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAE,gBAAgBA,CAACC,uBAAgD,EAAEC,YAAsB,EAAqB;IAC5G,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACM,gBAAgB,CAAC;QACzCH,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BQ,KAAK,EAAEL,uBAAuB,CAACK,KAAK;QACpCC,YAAY,EAAEN,uBAAuB,CAACM,YAAY;QAClDC,KAAK,EAAEP,uBAAuB,CAACO,KAAK;QACpCN,YAAY;QACZO,qBAAqB,EAAE,IAAI,CAACC;MAC9B,CAAC;MACC;MAAA,CACCC,IAAI,CAAEC,cAAmB,IAAK;QAC7B,MAAMC,QAAkB,GAAG,CAAC,CAAC;QAC7B,IAAID,cAAc,CAACE,IAAI,EAAE;UACvBD,QAAQ,CAACC,IAAI,GAAGF,cAAc,CAACE,IAAI;QACrC;QACA,IAAIF,cAAc,CAACG,GAAG,EAAE;UACtBF,QAAQ,CAACE,GAAG,GAAGH,cAAc,CAACG,GAAG;QACnC;QAEAX,OAAO,CAACS,QAAQ,CAAC;MACnB,CAAC;MACD;MAAA,CACCG,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAC,wBAAwBA,CAACC,gBAAgD,EAAoB;IAC3F,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAACwB,wBAAwB,CAAC;QACjDrB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBS,KAAK,EAAEa,gBAAgB,CAACb,KAAK;QAC7BC,YAAY,EAAEY,gBAAgB,CAACZ,YAAY;QAC3CC,KAAK,EAAEW,gBAAgB,CAACX,KAAK;QAC7BY,mBAAmB,EAAED,gBAAgB,CAACC,mBAAmB;QACzDC,kBAAkB,EAAEF,gBAAgB,CAACE;MACvC,CAAC,CAAC,CACCV,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;EAEAK,2BAA2BA,CAACH,gBAAmD,EAAoB;IACjG,OAAO,IAAIhB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCX,yBAAyB,CAAC4B,2BAA2B,CAAC;QACpDd,KAAK,EAAEW,gBAAgB,CAACX;MAC1B,CAAC,CAAC,CACCG,IAAI,CAAC,MAAM;QACVP,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACD;MAAA,CACCY,KAAK,CAAEC,KAAU,IAAK;QACrBZ,MAAM,CAACY,KAAK,CAAC;MACf,CAAC,CAAC;IACN,CAAC,CAAC;EACJ;AACF;AAAClB,eAAA,CA7EoBJ,cAAc,6BAES,mCAAmC;AAAAI,eAAA,CAF1DJ,cAAc,gCAGY,sCAAsC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/CardConfig.js.map b/access-checkout-react-native-sdk/lib/module/config/CardConfig.js.map deleted file mode 100644 index 2464266..0000000 --- a/access-checkout-react-native-sdk/lib/module/config/CardConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CardConfig","constructor","panId","expiryDateId","cvcId","validationConfig","_defineProperty"],"sources":["CardConfig.ts"],"sourcesContent":["import type { CardValidationConfig } from '../validation/CardValidationConfig';\n\nexport default class CardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: CardValidationConfig;\n\n constructor({ panId, expiryDateId, cvcId, validationConfig }: CardConfig) {\n this.panId = panId;\n this.expiryDateId = expiryDateId;\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;AAEA,eAAe,MAAMA,UAAU,CAAC;EAM9BC,WAAWA,CAAC;IAAEC,KAAK;IAAEC,YAAY;IAAEC,KAAK;IAAEC;EAA6B,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACxE,IAAI,CAACJ,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js.map deleted file mode 100644 index 131c19b..0000000 --- a/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CvcOnlyConfig","constructor","cvcId","validationConfig","_defineProperty"],"sources":["CvcOnlyConfig.ts"],"sourcesContent":["import type { CvcValidationConfig } from '../validation/CvcValidationConfig';\n\nexport default class CvcOnlyConfig {\n cvcId: string;\n validationConfig?: CvcValidationConfig;\n\n constructor({ cvcId, validationConfig }: CvcOnlyConfig) {\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;AAEA,eAAe,MAAMA,aAAa,CAAC;EAIjCC,WAAWA,CAAC;IAAEC,KAAK;IAAEC;EAAgC,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IACtD,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/CardConfig.js b/access-checkout-react-native-sdk/lib/module/config/MerchantCardConfig.js similarity index 92% rename from access-checkout-react-native-sdk/lib/module/config/CardConfig.js rename to access-checkout-react-native-sdk/lib/module/config/MerchantCardConfig.js index 60eb607..e2bc8d9 100644 --- a/access-checkout-react-native-sdk/lib/module/config/CardConfig.js +++ b/access-checkout-react-native-sdk/lib/module/config/MerchantCardConfig.js @@ -1,7 +1,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -export default class CardConfig { +export default class MerchantCardConfig { constructor({ panId, expiryDateId, @@ -18,4 +18,4 @@ export default class CardConfig { this.validationConfig = validationConfig; } } -//# sourceMappingURL=CardConfig.js.map \ No newline at end of file +//# sourceMappingURL=MerchantCardConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/MerchantCardConfig.js.map b/access-checkout-react-native-sdk/lib/module/config/MerchantCardConfig.js.map new file mode 100644 index 0000000..5ff9320 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/config/MerchantCardConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["MerchantCardConfig","constructor","panId","expiryDateId","cvcId","validationConfig","_defineProperty"],"sources":["MerchantCardConfig.ts"],"sourcesContent":["import type { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig';\n\nexport default class MerchantCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: MerchantCardValidationConfig;\n\n constructor({ panId, expiryDateId, cvcId, validationConfig }: MerchantCardConfig) {\n this.panId = panId;\n this.expiryDateId = expiryDateId;\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;AAEA,eAAe,MAAMA,kBAAkB,CAAC;EAMtCC,WAAWA,CAAC;IAAEC,KAAK;IAAEC,YAAY;IAAEC,KAAK;IAAEC;EAAqC,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAChF,IAAI,CAACJ,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js b/access-checkout-react-native-sdk/lib/module/config/MerchantCvcOnlyConfig.js similarity index 90% rename from access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js rename to access-checkout-react-native-sdk/lib/module/config/MerchantCvcOnlyConfig.js index 94af14d..d521098 100644 --- a/access-checkout-react-native-sdk/lib/module/config/CvcOnlyConfig.js +++ b/access-checkout-react-native-sdk/lib/module/config/MerchantCvcOnlyConfig.js @@ -1,7 +1,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -export default class CvcOnlyConfig { +export default class MerchantCvcOnlyConfig { constructor({ cvcId, validationConfig @@ -12,4 +12,4 @@ export default class CvcOnlyConfig { this.validationConfig = validationConfig; } } -//# sourceMappingURL=CvcOnlyConfig.js.map \ No newline at end of file +//# sourceMappingURL=MerchantCvcOnlyConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/config/MerchantCvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/module/config/MerchantCvcOnlyConfig.js.map new file mode 100644 index 0000000..a56dcf3 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/config/MerchantCvcOnlyConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["MerchantCvcOnlyConfig","constructor","cvcId","validationConfig","_defineProperty"],"sources":["MerchantCvcOnlyConfig.ts"],"sourcesContent":["import type { MerchantCvcOnlyValidationConfig } from '../validation/MerchantCvcOnlyValidationConfig';\n\nexport default class MerchantCvcOnlyConfig {\n cvcId: string;\n validationConfig?: MerchantCvcOnlyValidationConfig;\n\n constructor({ cvcId, validationConfig }: MerchantCvcOnlyConfig) {\n this.cvcId = cvcId;\n this.validationConfig = validationConfig;\n }\n}\n"],"mappings":";;;AAEA,eAAe,MAAMA,qBAAqB,CAAC;EAIzCC,WAAWA,CAAC;IAAEC,KAAK;IAAEC;EAAwC,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAC9D,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;EAC1C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map index 3585a16..50e3990 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useAccessCheckout.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckout","CardConfig","useCardValidation","useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","merchantId","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({\n baseUrl,\n checkoutId,\n config,\n}: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n validationListener: config.validationConfig\n ?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n validationListener: config.validationConfig\n ?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":"AAAA,SACEA,cAAc,EACdC,UAAU,QAKL,UAAU;AACjB,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,oBAAoB,QAAQ,wBAAwB;AAa7D,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAChCC,OAAO;EACPC,UAAU;EACVC;AACiB,CAAC,KAA+B;EACjD,MAAMC,cAAc,GAAG,IAAIR,cAAc,CAAC;IACxCK,OAAO,EAAEA,OAAO;IAChBI,UAAU,EAAEH;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYN,UAAU,EAAE;IAAA,IAAAS,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAGX,iBAAiB,CAAC;MACrDM,cAAc;MACdM,oBAAoB,EAAE;QACpBC,KAAK,EAAER,MAAM,CAACQ,KAAK;QACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;QACjCC,KAAK,EAAEV,MAAM,CAACU,KAAK;QACnBC,mBAAmB,GAAAR,qBAAA,GAAEH,MAAM,CAACY,gBAAgB,cAAAT,qBAAA,uBAAvBA,qBAAA,CAAyBQ,mBAAmB;QACjEE,kBAAkB,GAAAT,sBAAA,GAAEJ,MAAM,CAACY,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CAAyBS;MAC/C,CAAC;MACDC,kBAAkB,GAAAT,sBAAA,GAAEL,MAAM,CAACY,gBAAgB,cAAAP,sBAAA,uBAAvBA,sBAAA,CAChBS;IACN,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9Cf,cAAc,CAACc,gBAAgB,CAC7B;MACEP,KAAK,EAAER,MAAM,CAACQ,KAAK;MACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;MACjCC,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEX,wBAAwB;MAC9CS;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAGvB,oBAAoB,CAAC;MAC3DK,cAAc;MACdmB,uBAAuB,EAAE;QAAEV,KAAK,EAAEV,MAAM,CAACU;MAAM,CAAC;MAChDI,kBAAkB,GAAAI,sBAAA,GAAElB,MAAM,CAACY,gBAAgB,cAAAM,sBAAA,uBAAvBA,sBAAA,CAChBJ;IACN,CAAC,CAAC;IAEF,MAAMO,sBAAsB,GAAIL,YAAsB,IACpDf,cAAc,CAACc,gBAAgB,CAC7B;MACEL,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEM;IACpB,CAAC;EACH;AACF,CAAC"} \ No newline at end of file +{"version":3,"names":["AccessCheckout","CardConfig","useCardValidation","useCvcOnlyValidation","useAccessCheckout","baseUrl","checkoutId","config","accessCheckout","merchantId","_config$validationCon","_config$validationCon2","_config$validationCon3","initialiseCardValidation","cardValidationConfig","panId","expiryDateId","cvcId","enablePanFormatting","validationConfig","acceptedCardBrands","validationListener","generateSessions","sessionTypes","initialiseValidation","_config$validationCon4","initialiseCvcOnlyValidation","cvcOnlyValidationConfig","generateCvcOnlySession"],"sources":["useAccessCheckout.ts"],"sourcesContent":["import {\n AccessCheckout,\n CardConfig,\n type CardValidationEventListener,\n CvcOnlyConfig,\n CvcOnlyValidationEventListener,\n Sessions,\n} from '../index';\nimport { useCardValidation } from './useCardValidation';\nimport { useCvcOnlyValidation } from './useCvcOnlyValidation';\n\nexport interface UseAccessCheckoutExports {\n initialiseValidation: () => Promise;\n generateSessions: (sessionTypes: string[]) => Promise;\n}\n\nexport interface UseAccessCheckout {\n baseUrl: string;\n checkoutId: string;\n config: CardConfig | CvcOnlyConfig;\n}\n\nexport const useAccessCheckout = ({ baseUrl, checkoutId, config }: UseAccessCheckout): UseAccessCheckoutExports => {\n const accessCheckout = new AccessCheckout({\n baseUrl: baseUrl,\n merchantId: checkoutId,\n });\n\n /**\n * Implementation note: Decided to use classes to benefit from instance checking.\n * If using interfaces or types a \"type guard\" could have been used. the trade off being having to check for\n * a specific property that would be unique to that interface/type which in theory it introduces another point of\n * failure if the property was to be renamed and not updated in the type guard.\n */\n if (config instanceof CardConfig) {\n const { initialiseCardValidation } = useCardValidation({\n accessCheckout,\n cardValidationConfig: {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n enablePanFormatting: config.validationConfig?.enablePanFormatting,\n acceptedCardBrands: config.validationConfig?.acceptedCardBrands,\n },\n validationListener: config.validationConfig?.validationListener as CardValidationEventListener,\n });\n\n const generateSessions = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n panId: config.panId,\n expiryDateId: config.expiryDateId,\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCardValidation,\n generateSessions,\n };\n } else {\n const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({\n accessCheckout,\n cvcOnlyValidationConfig: { cvcId: config.cvcId },\n validationListener: config.validationConfig?.validationListener as CvcOnlyValidationEventListener,\n });\n\n const generateCvcOnlySession = (sessionTypes: string[]) =>\n accessCheckout.generateSessions(\n {\n cvcId: config.cvcId,\n },\n sessionTypes\n );\n\n return {\n initialiseValidation: initialiseCvcOnlyValidation,\n generateSessions: generateCvcOnlySession,\n };\n }\n};\n"],"mappings":"AAAA,SACEA,cAAc,EACdC,UAAU,QAKL,UAAU;AACjB,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,oBAAoB,QAAQ,wBAAwB;AAa7D,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAAEC,OAAO;EAAEC,UAAU;EAAEC;AAA0B,CAAC,KAA+B;EACjH,MAAMC,cAAc,GAAG,IAAIR,cAAc,CAAC;IACxCK,OAAO,EAAEA,OAAO;IAChBI,UAAU,EAAEH;EACd,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,MAAM,YAAYN,UAAU,EAAE;IAAA,IAAAS,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAChC,MAAM;MAAEC;IAAyB,CAAC,GAAGX,iBAAiB,CAAC;MACrDM,cAAc;MACdM,oBAAoB,EAAE;QACpBC,KAAK,EAAER,MAAM,CAACQ,KAAK;QACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;QACjCC,KAAK,EAAEV,MAAM,CAACU,KAAK;QACnBC,mBAAmB,GAAAR,qBAAA,GAAEH,MAAM,CAACY,gBAAgB,cAAAT,qBAAA,uBAAvBA,qBAAA,CAAyBQ,mBAAmB;QACjEE,kBAAkB,GAAAT,sBAAA,GAAEJ,MAAM,CAACY,gBAAgB,cAAAR,sBAAA,uBAAvBA,sBAAA,CAAyBS;MAC/C,CAAC;MACDC,kBAAkB,GAAAT,sBAAA,GAAEL,MAAM,CAACY,gBAAgB,cAAAP,sBAAA,uBAAvBA,sBAAA,CAAyBS;IAC/C,CAAC,CAAC;IAEF,MAAMC,gBAAgB,GAAIC,YAAsB,IAC9Cf,cAAc,CAACc,gBAAgB,CAC7B;MACEP,KAAK,EAAER,MAAM,CAACQ,KAAK;MACnBC,YAAY,EAAET,MAAM,CAACS,YAAY;MACjCC,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEX,wBAAwB;MAC9CS;IACF,CAAC;EACH,CAAC,MAAM;IAAA,IAAAG,sBAAA;IACL,MAAM;MAAEC;IAA4B,CAAC,GAAGvB,oBAAoB,CAAC;MAC3DK,cAAc;MACdmB,uBAAuB,EAAE;QAAEV,KAAK,EAAEV,MAAM,CAACU;MAAM,CAAC;MAChDI,kBAAkB,GAAAI,sBAAA,GAAElB,MAAM,CAACY,gBAAgB,cAAAM,sBAAA,uBAAvBA,sBAAA,CAAyBJ;IAC/C,CAAC,CAAC;IAEF,MAAMO,sBAAsB,GAAIL,YAAsB,IACpDf,cAAc,CAACc,gBAAgB,CAC7B;MACEL,KAAK,EAAEV,MAAM,CAACU;IAChB,CAAC,EACDM,YACF,CAAC;IAEH,OAAO;MACLC,oBAAoB,EAAEE,2BAA2B;MACjDJ,gBAAgB,EAAEM;IACpB,CAAC;EACH;AACF,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js index 771a215..c11d860 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js @@ -1,13 +1,13 @@ -import { CardValidationConfig } from '../validation/CardValidationConfig'; -import CardConfig from '../config/CardConfig'; +import { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig'; +import MerchantCardConfig from '../config/MerchantCardConfig'; export const useCardConfig = props => { - const cardConfig = new CardConfig({ + const cardConfig = new MerchantCardConfig({ panId: props.panId, expiryDateId: props.expiryDateId, cvcId: props.cvcId }); if (props.validationConfig) { - cardConfig.validationConfig = new CardValidationConfig({ + cardConfig.validationConfig = new MerchantCardValidationConfig({ acceptedCardBrands: props.validationConfig.acceptedCardBrands, enablePanFormatting: props.validationConfig.enablePanFormatting, validationListener: props.validationConfig.validationListener diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map index a49b15c..2de5685 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map @@ -1 +1 @@ -{"version":3,"names":["CardValidationConfig","CardConfig","useCardConfig","props","cardConfig","panId","expiryDateId","cvcId","validationConfig","acceptedCardBrands","enablePanFormatting","validationListener"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { CardValidationConfig } from '../validation/CardValidationConfig';\nimport CardConfig from '../config/CardConfig';\n\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n };\n}\n\nexport const useCardConfig = (props: UseCardConfig): CardConfig => {\n const cardConfig = new CardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new CardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":"AACA,SAASA,oBAAoB,QAAQ,oCAAoC;AACzE,OAAOC,UAAU,MAAM,sBAAsB;AAa7C,OAAO,MAAMC,aAAa,GAAIC,KAAoB,IAAiB;EACjE,MAAMC,UAAU,GAAG,IAAIH,UAAU,CAAC;IAChCI,KAAK,EAAEF,KAAK,CAACE,KAAK;IAClBC,YAAY,EAAEH,KAAK,CAACG,YAAY;IAChCC,KAAK,EAAEJ,KAAK,CAACI;EACf,CAAC,CAAC;EAEF,IAAIJ,KAAK,CAACK,gBAAgB,EAAE;IAC1BJ,UAAU,CAACI,gBAAgB,GAAG,IAAIR,oBAAoB,CAAC;MACrDS,kBAAkB,EAAEN,KAAK,CAACK,gBAAgB,CAACC,kBAAkB;MAC7DC,mBAAmB,EAAEP,KAAK,CAACK,gBAAgB,CAACE,mBAAmB;MAC/DC,kBAAkB,EAAER,KAAK,CAACK,gBAAgB,CAACG;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOP,UAAU;AACnB,CAAC"} \ No newline at end of file +{"version":3,"names":["MerchantCardValidationConfig","MerchantCardConfig","useCardConfig","props","cardConfig","panId","expiryDateId","cvcId","validationConfig","acceptedCardBrands","enablePanFormatting","validationListener"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig';\nimport MerchantCardConfig from '../config/MerchantCardConfig';\n\nexport interface CardValidationConfig {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n}\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: MerchantCardValidationConfig;\n}\n\nexport const useCardConfig = (props: UseCardConfig): MerchantCardConfig => {\n const cardConfig = new MerchantCardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new MerchantCardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":"AACA,SAASA,4BAA4B,QAAQ,4CAA4C;AACzF,OAAOC,kBAAkB,MAAM,8BAA8B;AAc7D,OAAO,MAAMC,aAAa,GAAIC,KAAoB,IAAyB;EACzE,MAAMC,UAAU,GAAG,IAAIH,kBAAkB,CAAC;IACxCI,KAAK,EAAEF,KAAK,CAACE,KAAK;IAClBC,YAAY,EAAEH,KAAK,CAACG,YAAY;IAChCC,KAAK,EAAEJ,KAAK,CAACI;EACf,CAAC,CAAC;EAEF,IAAIJ,KAAK,CAACK,gBAAgB,EAAE;IAC1BJ,UAAU,CAACI,gBAAgB,GAAG,IAAIR,4BAA4B,CAAC;MAC7DS,kBAAkB,EAAEN,KAAK,CAACK,gBAAgB,CAACC,kBAAkB;MAC7DC,mBAAmB,EAAEP,KAAK,CAACK,gBAAgB,CAACE,mBAAmB;MAC/DC,kBAAkB,EAAER,KAAK,CAACK,gBAAgB,CAACG;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOP,UAAU;AACnB,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js index 2ffd26a..e35bed8 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js @@ -25,7 +25,7 @@ export function useCardValidation({ }) { /* Implementation Note: To allow the hook to render and use hooks correctly: - `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + `useCardValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener was provided in order to register the native event. */ useCardValidationEventListener(validationListener); diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map index 5192423..58f61dd 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardValidation.js.map @@ -1 +1 @@ -{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckout","AccessCheckoutReactNative","cardValidationNativeEventListenerOf","ValidationListenerException","useCardValidationEventListener","validationListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport function useCardValidationEventListener(\n validationListener: CardValidationEventListener\n) {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener =\n cardValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n validationListener: CardValidationEventListener;\n}\n\nexport function useCardValidation({\n accessCheckout,\n cardValidationConfig,\n validationListener,\n}: UseCardValidationHook) {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCardValidationEventListener(validationListener);\n\n const initialiseCardValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCardValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,yBAAyB,MAAM,8BAA8B;AACpE,SAEEC,mCAAmC,QAC9B,2CAA2C;AAClD,SAASC,2BAA2B,QAAQ,2CAA2C;AAEvF,OAAO,SAASC,8BAA8BA,CAC5CC,kBAA+C,EAC/C;EACAP,SAAS,CAAC,MAAM;IACd;IACA,IAAI,CAACO,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAMC,mBAAmB,GACvBJ,mCAAmC,CAACG,kBAAkB,CAAC;IACzD,MAAME,kBAAkB,GAAG,IAAIR,kBAAkB,CAC/CE,yBACF,CAAC;IAED,MAAMO,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDT,cAAc,CAACU,uBAAuB,EACtCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAcA,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,cAAc;EACdC,oBAAoB;EACpBT;AACqB,CAAC,EAAE;EACxB;AACF;AACA;AACA;AACA;EACED,8BAA8B,CAACC,kBAAkB,CAAC;EAElD,MAAMU,wBAAwB,GAAGA,CAAA,KAAM;IACrC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACV,kBAAkB,EAAE;MACvB,MAAM,IAAIF,2BAA2B,CAAC,CAAC;IACzC;IACA,OAAOU,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file +{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckout","AccessCheckoutReactNative","cardValidationNativeEventListenerOf","ValidationListenerException","useCardValidationEventListener","validationListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CardValidationEventType","remove","useCardValidation","accessCheckout","cardValidationConfig","initialiseCardValidation"],"sources":["useCardValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckout from '../AccessCheckout';\nimport AccessCheckoutReactNative from '../AccessCheckoutReactNative';\nimport {\n CardValidationEventListener,\n cardValidationNativeEventListenerOf,\n} from '../validation/CardValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport function useCardValidationEventListener(validationListener: CardValidationEventListener) {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener = cardValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative);\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CardValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n}\n\ninterface UseCardValidationHook {\n accessCheckout: AccessCheckout;\n cardValidationConfig: {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n };\n validationListener: CardValidationEventListener;\n}\n\nexport function useCardValidation({ accessCheckout, cardValidationConfig, validationListener }: UseCardValidationHook) {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCardValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCardValidationEventListener(validationListener);\n\n const initialiseCardValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCardValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n return accessCheckout.initialiseCardValidation(cardValidationConfig);\n };\n\n return { initialiseCardValidation };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,cAAc,MAAM,mBAAmB;AAC9C,OAAOC,yBAAyB,MAAM,8BAA8B;AACpE,SAEEC,mCAAmC,QAC9B,2CAA2C;AAClD,SAASC,2BAA2B,QAAQ,2CAA2C;AAEvF,OAAO,SAASC,8BAA8BA,CAACC,kBAA+C,EAAE;EAC9FP,SAAS,CAAC,MAAM;IACd;IACA,IAAI,CAACO,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAMC,mBAAmB,GAAGJ,mCAAmC,CAACG,kBAAkB,CAAC;IACnF,MAAME,kBAAkB,GAAG,IAAIR,kBAAkB,CAACE,yBAAyB,CAAC;IAE5E,MAAMO,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDT,cAAc,CAACU,uBAAuB,EACtCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR;AAcA,OAAO,SAASC,iBAAiBA,CAAC;EAAEC,cAAc;EAAEC,oBAAoB;EAAET;AAA0C,CAAC,EAAE;EACrH;AACF;AACA;AACA;AACA;EACED,8BAA8B,CAACC,kBAAkB,CAAC;EAElD,MAAMU,wBAAwB,GAAGA,CAAA,KAAM;IACrC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACV,kBAAkB,EAAE;MACvB,MAAM,IAAIF,2BAA2B,CAAC,CAAC;IACzC;IACA,OAAOU,cAAc,CAACE,wBAAwB,CAACD,oBAAoB,CAAC;EACtE,CAAC;EAED,OAAO;IAAEC;EAAyB,CAAC;AACrC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js index 1896f4f..35f9f58 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js @@ -1,14 +1,14 @@ -import CvcOnlyConfig from '../config/CvcOnlyConfig'; -import { CvcValidationConfig } from '../validation/CvcValidationConfig'; +import MerchantCvcOnlyConfig from '../config/MerchantCvcOnlyConfig'; +import { MerchantCvcOnlyValidationConfig } from '../validation/MerchantCvcOnlyValidationConfig'; export function useCvcOnlyConfig({ cvcId, validationConfig }) { - const cardConfig = new CvcOnlyConfig({ + const cardConfig = new MerchantCvcOnlyConfig({ cvcId }); if (validationConfig) { - cardConfig.validationConfig = new CvcValidationConfig({ + cardConfig.validationConfig = new MerchantCvcOnlyValidationConfig({ validationListener: validationConfig.validationListener }); } diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js.map index cf16edb..897f175 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyConfig.js.map @@ -1 +1 @@ -{"version":3,"names":["CvcOnlyConfig","CvcValidationConfig","useCvcOnlyConfig","cvcId","validationConfig","cardConfig","validationListener"],"sources":["useCvcOnlyConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport CvcOnlyConfig from '../config/CvcOnlyConfig';\nimport { CvcValidationConfig } from '../validation/CvcValidationConfig';\n\nexport interface UseCvcOnlyConfig {\n cvcId: string;\n validationConfig?: {\n validationListener: CardValidationEventListener;\n };\n}\n\nexport function useCvcOnlyConfig({\n cvcId,\n validationConfig,\n}: UseCvcOnlyConfig) {\n const cardConfig = new CvcOnlyConfig({\n cvcId,\n });\n\n if (validationConfig) {\n cardConfig.validationConfig = new CvcValidationConfig({\n validationListener: validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n}\n"],"mappings":"AACA,OAAOA,aAAa,MAAM,yBAAyB;AACnD,SAASC,mBAAmB,QAAQ,mCAAmC;AASvE,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,KAAK;EACLC;AACgB,CAAC,EAAE;EACnB,MAAMC,UAAU,GAAG,IAAIL,aAAa,CAAC;IACnCG;EACF,CAAC,CAAC;EAEF,IAAIC,gBAAgB,EAAE;IACpBC,UAAU,CAACD,gBAAgB,GAAG,IAAIH,mBAAmB,CAAC;MACpDK,kBAAkB,EAAEF,gBAAgB,CAACE;IACvC,CAAC,CAAC;EACJ;EAEA,OAAOD,UAAU;AACnB"} \ No newline at end of file +{"version":3,"names":["MerchantCvcOnlyConfig","MerchantCvcOnlyValidationConfig","useCvcOnlyConfig","cvcId","validationConfig","cardConfig","validationListener"],"sources":["useCvcOnlyConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport MerchantCvcOnlyConfig from '../config/MerchantCvcOnlyConfig';\nimport { MerchantCvcOnlyValidationConfig } from '../validation/MerchantCvcOnlyValidationConfig';\n\nexport interface CvcOnlyValidationConfig {\n validationListener: CardValidationEventListener;\n}\nexport interface UseCvcOnlyConfig {\n cvcId: string;\n validationConfig?: CvcOnlyValidationConfig;\n}\n\nexport function useCvcOnlyConfig({ cvcId, validationConfig }: UseCvcOnlyConfig) {\n const cardConfig = new MerchantCvcOnlyConfig({\n cvcId,\n });\n\n if (validationConfig) {\n cardConfig.validationConfig = new MerchantCvcOnlyValidationConfig({\n validationListener: validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n}\n"],"mappings":"AACA,OAAOA,qBAAqB,MAAM,iCAAiC;AACnE,SAASC,+BAA+B,QAAQ,+CAA+C;AAU/F,OAAO,SAASC,gBAAgBA,CAAC;EAAEC,KAAK;EAAEC;AAAmC,CAAC,EAAE;EAC9E,MAAMC,UAAU,GAAG,IAAIL,qBAAqB,CAAC;IAC3CG;EACF,CAAC,CAAC;EAEF,IAAIC,gBAAgB,EAAE;IACpBC,UAAU,CAACD,gBAAgB,GAAG,IAAIH,+BAA+B,CAAC;MAChEK,kBAAkB,EAAEF,gBAAgB,CAACE;IACvC,CAAC,CAAC;EACJ;EAEA,OAAOD,UAAU;AACnB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js index d4dc3a1..0ea95e3 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js @@ -24,7 +24,7 @@ export const useCvcOnlyValidation = ({ }) => { /* Implementation Note: To allow the hook to render and use hooks correctly: - `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + `useCvcOnlyValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener was provided in order to register the native event. */ useCvcOnlyValidationEventListener(validationListener); diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map index 85d328d..f9a3d31 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCvcOnlyValidation.js.map @@ -1 +1 @@ -{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckoutReactNative","AccessCheckout","cvcOnlyValidationNativeEventListenerOf","ValidationListenerException","useCvcOnlyValidationEventListener","validationListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CvcOnlyValidationEventType","remove","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, {\n AccessCheckout,\n CardValidationEventListener,\n} from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport const useCvcOnlyValidationEventListener = (\n validationListener: CvcOnlyValidationEventListener\n) => {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener =\n cvcOnlyValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(\n AccessCheckoutReactNative\n );\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n validationListener: CardValidationEventListener;\n}\n\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n validationListener,\n}: UseCvcOnlyValidationHook) => {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCvcOnlyValidationEventListener(validationListener);\n const initialiseCvcOnlyValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,yBAAyB,IAC9BC,cAAc,QAET,UAAU;AAEjB,SAASC,sCAAsC,QAAQ,8CAA8C;AACrG,SAASC,2BAA2B,QAAQ,2CAA2C;AAEvF,OAAO,MAAMC,iCAAiC,GAC5CC,kBAAkD,IAC/C;EACHP,SAAS,CAAC,MAAM;IACd;IACA,IAAI,CAACO,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAMC,mBAAmB,GACvBJ,sCAAsC,CAACG,kBAAkB,CAAC;IAC5D,MAAME,kBAAkB,GAAG,IAAIR,kBAAkB,CAC/CC,yBACF,CAAC;IAED,MAAMQ,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDR,cAAc,CAACS,0BAA0B,EACzCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAUD,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBT;AACwB,CAAC,KAAK;EAC9B;AACF;AACA;AACA;AACA;EACED,iCAAiC,CAACC,kBAAkB,CAAC;EACrD,MAAMU,2BAA2B,GAAGA,CAAA,KAAM;IACxC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACV,kBAAkB,EAAE;MACvB,MAAM,IAAIF,2BAA2B,CAAC,CAAC;IACzC;IAEA,OAAOU,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC"} \ No newline at end of file +{"version":3,"names":["useEffect","NativeEventEmitter","AccessCheckoutReactNative","AccessCheckout","cvcOnlyValidationNativeEventListenerOf","ValidationListenerException","useCvcOnlyValidationEventListener","validationListener","nativeEventListener","nativeEventEmitter","eventSubscription","addListener","CvcOnlyValidationEventType","remove","useCvcOnlyValidation","accessCheckout","cvcOnlyValidationConfig","initialiseCvcOnlyValidation"],"sources":["useCvcOnlyValidation.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { NativeEventEmitter } from 'react-native';\nimport AccessCheckoutReactNative, { AccessCheckout, CardValidationEventListener } from '../index';\nimport type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener';\nimport { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener';\nimport { ValidationListenerException } from '../validation/ValidationListenerException';\n\nexport const useCvcOnlyValidationEventListener = (validationListener: CvcOnlyValidationEventListener) => {\n useEffect(() => {\n //Safe-guard in the case where no validation listener was configured we avoid registering the native listener\n if (!validationListener) {\n return;\n }\n\n const nativeEventListener = cvcOnlyValidationNativeEventListenerOf(validationListener);\n const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative);\n\n const eventSubscription = nativeEventEmitter.addListener(\n AccessCheckout.CvcOnlyValidationEventType,\n nativeEventListener\n );\n\n return () => {\n eventSubscription.remove();\n };\n }, []);\n};\n\ninterface UseCvcOnlyValidationHook {\n accessCheckout: AccessCheckout;\n cvcOnlyValidationConfig: {\n cvcId: string;\n };\n validationListener: CardValidationEventListener;\n}\n\nexport const useCvcOnlyValidation = ({\n accessCheckout,\n cvcOnlyValidationConfig,\n validationListener,\n}: UseCvcOnlyValidationHook) => {\n /*\n Implementation Note: To allow the hook to render and use hooks correctly:\n `useCvcOnlyValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener\n was provided in order to register the native event.\n */\n useCvcOnlyValidationEventListener(validationListener);\n const initialiseCvcOnlyValidation = () => {\n /*\n Implementation Note: Since we do not block the rendering of the hook to allow for `validationConfig` to be optional.\n We added a safe-guard that will raise a ValidationListenerException which prevents the\n `initialiseCvcOnlyValidation` method from being called when no validationConfig is provided.\n This provides the developers with a clear readable error message and enhances their debugging experience.\n */\n if (!validationListener) {\n throw new ValidationListenerException();\n }\n\n return accessCheckout.initialiseCvcOnlyValidation(cvcOnlyValidationConfig);\n };\n\n return { initialiseCvcOnlyValidation };\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,yBAAyB,IAAIC,cAAc,QAAqC,UAAU;AAEjG,SAASC,sCAAsC,QAAQ,8CAA8C;AACrG,SAASC,2BAA2B,QAAQ,2CAA2C;AAEvF,OAAO,MAAMC,iCAAiC,GAAIC,kBAAkD,IAAK;EACvGP,SAAS,CAAC,MAAM;IACd;IACA,IAAI,CAACO,kBAAkB,EAAE;MACvB;IACF;IAEA,MAAMC,mBAAmB,GAAGJ,sCAAsC,CAACG,kBAAkB,CAAC;IACtF,MAAME,kBAAkB,GAAG,IAAIR,kBAAkB,CAACC,yBAAyB,CAAC;IAE5E,MAAMQ,iBAAiB,GAAGD,kBAAkB,CAACE,WAAW,CACtDR,cAAc,CAACS,0BAA0B,EACzCJ,mBACF,CAAC;IAED,OAAO,MAAM;MACXE,iBAAiB,CAACG,MAAM,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAUD,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EACnCC,cAAc;EACdC,uBAAuB;EACvBT;AACwB,CAAC,KAAK;EAC9B;AACF;AACA;AACA;AACA;EACED,iCAAiC,CAACC,kBAAkB,CAAC;EACrD,MAAMU,2BAA2B,GAAGA,CAAA,KAAM;IACxC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACV,kBAAkB,EAAE;MACvB,MAAM,IAAIF,2BAA2B,CAAC,CAAC;IACzC;IAEA,OAAOU,cAAc,CAACE,2BAA2B,CAACD,uBAAuB,CAAC;EAC5E,CAAC;EAED,OAAO;IAAEC;EAA4B,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js b/access-checkout-react-native-sdk/lib/module/index.js index e348437..c7b47a0 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js +++ b/access-checkout-react-native-sdk/lib/module/index.js @@ -6,13 +6,13 @@ export { default as SessionType, CARD, CVC } from './session/SessionType'; export { default as Sessions } from './session/Sessions'; export { default as Brand } from './validation/Brand'; export { default as BrandImage } from './validation/BrandImage'; -export { default as CardConfig } from './config/CardConfig'; -export { default as CvcOnlyConfig } from './config/CvcOnlyConfig'; +export { default as CardConfig } from './config/MerchantCardConfig'; +export { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig'; export { CardValidationEventListener } from './validation/CardValidationEventListener'; export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener'; -export { CvcValidationConfig } from './validation/CvcValidationConfig'; -export { CardValidationConfig } from './validation/CardValidationConfig'; -export { useCardConfig, UseCardConfig } from './hooks/useCardConfig'; -export { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig'; +export { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig'; +export { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig'; +export { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig'; +export { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig'; export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js.map b/access-checkout-react-native-sdk/lib/module/index.js.map index dee73d6..abcbac0 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js.map +++ b/access-checkout-react-native-sdk/lib/module/index.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","Brand","BrandImage","CardConfig","CvcOnlyConfig","CardValidationEventListener","CvcOnlyValidationEventListener","CvcValidationConfig","CardValidationConfig","useCardConfig","UseCardConfig","useCvcOnlyConfig","UseCvcOnlyConfig","useAccessCheckout","UseAccessCheckout","UseAccessCheckoutExports"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/CardConfig';\nexport { default as CvcOnlyConfig } from './config/CvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { CvcValidationConfig } from './validation/CvcValidationConfig';\nexport { CardValidationConfig } from './validation/CardValidationConfig';\n\nexport { useCardConfig, UseCardConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig';\n\nexport {\n useAccessCheckout,\n UseAccessCheckout,\n UseAccessCheckoutExports,\n} from './hooks/useAccessCheckout';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,KAAK,QAAQ,oBAAoB;AAErD,SAASP,OAAO,IAAIQ,UAAU,QAAQ,yBAAyB;AAC/D,SAASR,OAAO,IAAIS,UAAU,QAAQ,qBAAqB;AAC3D,SAAST,OAAO,IAAIU,aAAa,QAAQ,wBAAwB;AAEjE,SAASC,2BAA2B,QAAQ,0CAA0C;AACtF,SAASC,8BAA8B,QAAQ,6CAA6C;AAE5F,SAASC,mBAAmB,QAAQ,kCAAkC;AACtE,SAASC,oBAAoB,QAAQ,mCAAmC;AAExE,SAASC,aAAa,EAAEC,aAAa,QAAQ,uBAAuB;AACpE,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,0BAA0B;AAE7E,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,wBAAwB,QACnB,2BAA2B"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","Brand","BrandImage","CardConfig","CvcOnlyConfig","CardValidationEventListener","CvcOnlyValidationEventListener","MerchantCvcOnlyValidationConfig","MerchantCardValidationConfig","useCardConfig","UseCardConfig","CardValidationConfig","useCvcOnlyConfig","UseCvcOnlyConfig","CvcOnlyValidationConfig","useAccessCheckout","UseAccessCheckout","UseAccessCheckoutExports"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/MerchantCardConfig';\nexport { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig';\nexport { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig';\n\nexport { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig';\n\nexport { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,KAAK,QAAQ,oBAAoB;AAErD,SAASP,OAAO,IAAIQ,UAAU,QAAQ,yBAAyB;AAC/D,SAASR,OAAO,IAAIS,UAAU,QAAQ,6BAA6B;AACnE,SAAST,OAAO,IAAIU,aAAa,QAAQ,gCAAgC;AAEzE,SAASC,2BAA2B,QAAQ,0CAA0C;AACtF,SAASC,8BAA8B,QAAQ,6CAA6C;AAE5F,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,4BAA4B,QAAQ,2CAA2C;AAExF,SAASC,aAAa,EAAEC,aAAa,EAAEC,oBAAoB,QAAQ,uBAAuB;AAC1F,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,uBAAuB,QAAQ,0BAA0B;AAEtG,SAASC,iBAAiB,EAAEC,iBAAiB,EAAEC,wBAAwB,QAAQ,2BAA2B"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/Brand.js.map b/access-checkout-react-native-sdk/lib/module/validation/Brand.js.map index ced2712..76a7487 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/Brand.js.map +++ b/access-checkout-react-native-sdk/lib/module/validation/Brand.js.map @@ -1 +1 @@ -{"version":3,"names":[],"sources":["Brand.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport BrandImage from './BrandImage';\n\nexport default interface Brand {\n name: string;\n images: BrandImage[];\n}\n"],"mappings":""} \ No newline at end of file +{"version":3,"names":[],"sources":["Brand.ts"],"sourcesContent":["import type BrandImage from './BrandImage';\n\nexport default interface Brand {\n name: string;\n images: BrandImage[];\n}\n"],"mappings":""} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js.map b/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js.map deleted file mode 100644 index 2005452..0000000 --- a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CardValidationConfig","constructor","validationListener","enablePanFormatting","acceptedCardBrands","_defineProperty"],"sources":["CardValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class CardValidationConfig {\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n validationListener?: CardValidationEventListener;\n\n constructor({\n validationListener,\n enablePanFormatting = false,\n acceptedCardBrands = [],\n }: CardValidationConfig) {\n this.enablePanFormatting = enablePanFormatting;\n this.validationListener = validationListener;\n this.acceptedCardBrands = acceptedCardBrands;\n }\n}\n"],"mappings":";;;AAEA,OAAO,MAAMA,oBAAoB,CAAC;EAKhCC,WAAWA,CAAC;IACVC,kBAAkB;IAClBC,mBAAmB,GAAG,KAAK;IAC3BC,kBAAkB,GAAG;EACD,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACvB,IAAI,CAACF,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACE,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CardValidationEventListener.js.map b/access-checkout-react-native-sdk/lib/module/validation/CardValidationEventListener.js.map index 11be270..9e34d01 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CardValidationEventListener.js.map +++ b/access-checkout-react-native-sdk/lib/module/validation/CardValidationEventListener.js.map @@ -1 +1 @@ -{"version":3,"names":["cardValidationNativeEventListenerOf","delegate","event","type","onCardBrandChanged","value","onPanValidChanged","isValid","onExpiryDateValidChanged","onCvcValidChanged","onValidationSuccess"],"sources":["CardValidationEventListener.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Brand from './Brand';\n\nexport interface CardValidationEventListener {\n onCardBrandChanged?(brand?: Brand): void;\n\n onPanValidChanged?(isValid: boolean): void;\n\n onExpiryDateValidChanged?(isValid: boolean): void;\n\n onCvcValidChanged?(isValid: boolean): void;\n\n onValidationSuccess?(): void;\n}\n\nexport function cardValidationNativeEventListenerOf(\n delegate: CardValidationEventListener\n) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (event: any) {\n if (event.type === 'brand' && delegate.onCardBrandChanged) {\n if (event.value === null) {\n delegate.onCardBrandChanged();\n } else {\n delegate.onCardBrandChanged(event.value as Brand);\n }\n }\n\n if (event.type === 'pan' && delegate.onPanValidChanged) {\n delegate.onPanValidChanged(event.isValid);\n }\n\n if (event.type === 'expiryDate' && delegate.onExpiryDateValidChanged) {\n delegate.onExpiryDateValidChanged(event.isValid);\n }\n\n if (event.type === 'cvc' && delegate.onCvcValidChanged) {\n delegate.onCvcValidChanged(event.isValid);\n }\n\n if (event.type === 'all' && delegate.onValidationSuccess) {\n delegate.onValidationSuccess();\n }\n };\n}\n"],"mappings":"AAAA;AACA;;AAeA,OAAO,SAASA,mCAAmCA,CACjDC,QAAqC,EACrC;EACA;EACA,OAAO,UAAUC,KAAU,EAAE;IAC3B,IAAIA,KAAK,CAACC,IAAI,KAAK,OAAO,IAAIF,QAAQ,CAACG,kBAAkB,EAAE;MACzD,IAAIF,KAAK,CAACG,KAAK,KAAK,IAAI,EAAE;QACxBJ,QAAQ,CAACG,kBAAkB,CAAC,CAAC;MAC/B,CAAC,MAAM;QACLH,QAAQ,CAACG,kBAAkB,CAACF,KAAK,CAACG,KAAc,CAAC;MACnD;IACF;IAEA,IAAIH,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACK,iBAAiB,EAAE;MACtDL,QAAQ,CAACK,iBAAiB,CAACJ,KAAK,CAACK,OAAO,CAAC;IAC3C;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,YAAY,IAAIF,QAAQ,CAACO,wBAAwB,EAAE;MACpEP,QAAQ,CAACO,wBAAwB,CAACN,KAAK,CAACK,OAAO,CAAC;IAClD;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACQ,iBAAiB,EAAE;MACtDR,QAAQ,CAACQ,iBAAiB,CAACP,KAAK,CAACK,OAAO,CAAC;IAC3C;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACS,mBAAmB,EAAE;MACxDT,QAAQ,CAACS,mBAAmB,CAAC,CAAC;IAChC;EACF,CAAC;AACH"} \ No newline at end of file +{"version":3,"names":["cardValidationNativeEventListenerOf","delegate","event","type","onCardBrandChanged","value","onPanValidChanged","isValid","onExpiryDateValidChanged","onCvcValidChanged","onValidationSuccess"],"sources":["CardValidationEventListener.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Brand from './Brand';\n\nexport interface CardValidationEventListener {\n onCardBrandChanged?(brand?: Brand): void;\n\n onPanValidChanged?(isValid: boolean): void;\n\n onExpiryDateValidChanged?(isValid: boolean): void;\n\n onCvcValidChanged?(isValid: boolean): void;\n\n onValidationSuccess?(): void;\n}\n\nexport function cardValidationNativeEventListenerOf(delegate: CardValidationEventListener) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (event: any) {\n if (event.type === 'brand' && delegate.onCardBrandChanged) {\n if (event.value === null) {\n delegate.onCardBrandChanged();\n } else {\n delegate.onCardBrandChanged(event.value as Brand);\n }\n }\n\n if (event.type === 'pan' && delegate.onPanValidChanged) {\n delegate.onPanValidChanged(event.isValid);\n }\n\n if (event.type === 'expiryDate' && delegate.onExpiryDateValidChanged) {\n delegate.onExpiryDateValidChanged(event.isValid);\n }\n\n if (event.type === 'cvc' && delegate.onCvcValidChanged) {\n delegate.onCvcValidChanged(event.isValid);\n }\n\n if (event.type === 'all' && delegate.onValidationSuccess) {\n delegate.onValidationSuccess();\n }\n };\n}\n"],"mappings":"AAAA;AACA;;AAeA,OAAO,SAASA,mCAAmCA,CAACC,QAAqC,EAAE;EACzF;EACA,OAAO,UAAUC,KAAU,EAAE;IAC3B,IAAIA,KAAK,CAACC,IAAI,KAAK,OAAO,IAAIF,QAAQ,CAACG,kBAAkB,EAAE;MACzD,IAAIF,KAAK,CAACG,KAAK,KAAK,IAAI,EAAE;QACxBJ,QAAQ,CAACG,kBAAkB,CAAC,CAAC;MAC/B,CAAC,MAAM;QACLH,QAAQ,CAACG,kBAAkB,CAACF,KAAK,CAACG,KAAc,CAAC;MACnD;IACF;IAEA,IAAIH,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACK,iBAAiB,EAAE;MACtDL,QAAQ,CAACK,iBAAiB,CAACJ,KAAK,CAACK,OAAO,CAAC;IAC3C;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,YAAY,IAAIF,QAAQ,CAACO,wBAAwB,EAAE;MACpEP,QAAQ,CAACO,wBAAwB,CAACN,KAAK,CAACK,OAAO,CAAC;IAClD;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACQ,iBAAiB,EAAE;MACtDR,QAAQ,CAACQ,iBAAiB,CAACP,KAAK,CAACK,OAAO,CAAC;IAC3C;IAEA,IAAIL,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACS,mBAAmB,EAAE;MACxDT,QAAQ,CAACS,mBAAmB,CAAC,CAAC;IAChC;EACF,CAAC;AACH"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationEventListener.js.map b/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationEventListener.js.map index 3237c7d..22a388d 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationEventListener.js.map +++ b/access-checkout-react-native-sdk/lib/module/validation/CvcOnlyValidationEventListener.js.map @@ -1 +1 @@ -{"version":3,"names":["cvcOnlyValidationNativeEventListenerOf","delegate","event","type","onCvcValidChanged","isValid","onValidationSuccess"],"sources":["CvcOnlyValidationEventListener.ts"],"sourcesContent":["export interface CvcOnlyValidationEventListener {\n onCvcValidChanged?(isValid: boolean): void;\n\n onValidationSuccess?(): void;\n}\n\nexport function cvcOnlyValidationNativeEventListenerOf(\n delegate: CvcOnlyValidationEventListener\n) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (event: any) {\n if (event.type === 'cvc' && delegate.onCvcValidChanged) {\n delegate.onCvcValidChanged(event.isValid);\n }\n\n if (event.type === 'all' && delegate.onValidationSuccess) {\n delegate.onValidationSuccess();\n }\n };\n}\n"],"mappings":"AAMA,OAAO,SAASA,sCAAsCA,CACpDC,QAAwC,EACxC;EACA;EACA,OAAO,UAAUC,KAAU,EAAE;IAC3B,IAAIA,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACG,iBAAiB,EAAE;MACtDH,QAAQ,CAACG,iBAAiB,CAACF,KAAK,CAACG,OAAO,CAAC;IAC3C;IAEA,IAAIH,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACK,mBAAmB,EAAE;MACxDL,QAAQ,CAACK,mBAAmB,CAAC,CAAC;IAChC;EACF,CAAC;AACH"} \ No newline at end of file +{"version":3,"names":["cvcOnlyValidationNativeEventListenerOf","delegate","event","type","onCvcValidChanged","isValid","onValidationSuccess"],"sources":["CvcOnlyValidationEventListener.ts"],"sourcesContent":["export interface CvcOnlyValidationEventListener {\n onCvcValidChanged?(isValid: boolean): void;\n\n onValidationSuccess?(): void;\n}\n\nexport function cvcOnlyValidationNativeEventListenerOf(delegate: CvcOnlyValidationEventListener) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (event: any) {\n if (event.type === 'cvc' && delegate.onCvcValidChanged) {\n delegate.onCvcValidChanged(event.isValid);\n }\n\n if (event.type === 'all' && delegate.onValidationSuccess) {\n delegate.onValidationSuccess();\n }\n };\n}\n"],"mappings":"AAMA,OAAO,SAASA,sCAAsCA,CAACC,QAAwC,EAAE;EAC/F;EACA,OAAO,UAAUC,KAAU,EAAE;IAC3B,IAAIA,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACG,iBAAiB,EAAE;MACtDH,QAAQ,CAACG,iBAAiB,CAACF,KAAK,CAACG,OAAO,CAAC;IAC3C;IAEA,IAAIH,KAAK,CAACC,IAAI,KAAK,KAAK,IAAIF,QAAQ,CAACK,mBAAmB,EAAE;MACxDL,QAAQ,CAACK,mBAAmB,CAAC,CAAC;IAChC;EACF,CAAC;AACH"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js.map b/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js.map deleted file mode 100644 index 0319445..0000000 --- a/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["CvcValidationConfig","constructor","validationListener","_defineProperty"],"sources":["CvcValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class CvcValidationConfig {\n validationListener?: CardValidationEventListener;\n\n constructor({ validationListener }: CvcValidationConfig) {\n this.validationListener = validationListener;\n }\n}\n"],"mappings":";;;AAEA,OAAO,MAAMA,mBAAmB,CAAC;EAG/BC,WAAWA,CAAC;IAAEC;EAAwC,CAAC,EAAE;IAAAC,eAAA;IACvD,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js b/access-checkout-react-native-sdk/lib/module/validation/MerchantCardValidationConfig.js similarity index 91% rename from access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js rename to access-checkout-react-native-sdk/lib/module/validation/MerchantCardValidationConfig.js index 8afc85b..7948cd3 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CardValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/module/validation/MerchantCardValidationConfig.js @@ -1,7 +1,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -export class CardValidationConfig { +export class MerchantCardValidationConfig { constructor({ validationListener, enablePanFormatting = false, @@ -15,4 +15,4 @@ export class CardValidationConfig { this.acceptedCardBrands = acceptedCardBrands; } } -//# sourceMappingURL=CardValidationConfig.js.map \ No newline at end of file +//# sourceMappingURL=MerchantCardValidationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/MerchantCardValidationConfig.js.map b/access-checkout-react-native-sdk/lib/module/validation/MerchantCardValidationConfig.js.map new file mode 100644 index 0000000..f5a04df --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/validation/MerchantCardValidationConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["MerchantCardValidationConfig","constructor","validationListener","enablePanFormatting","acceptedCardBrands","_defineProperty"],"sources":["MerchantCardValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class MerchantCardValidationConfig {\n enablePanFormatting?: boolean;\n acceptedCardBrands?: string[];\n validationListener?: CardValidationEventListener;\n\n constructor({\n validationListener,\n enablePanFormatting = false,\n acceptedCardBrands = [],\n }: MerchantCardValidationConfig) {\n this.enablePanFormatting = enablePanFormatting;\n this.validationListener = validationListener;\n this.acceptedCardBrands = acceptedCardBrands;\n }\n}\n"],"mappings":";;;AAEA,OAAO,MAAMA,4BAA4B,CAAC;EAKxCC,WAAWA,CAAC;IACVC,kBAAkB;IAClBC,mBAAmB,GAAG,KAAK;IAC3BC,kBAAkB,GAAG;EACO,CAAC,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC/B,IAAI,CAACF,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACE,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js b/access-checkout-react-native-sdk/lib/module/validation/MerchantCvcOnlyValidationConfig.js similarity index 88% rename from access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js rename to access-checkout-react-native-sdk/lib/module/validation/MerchantCvcOnlyValidationConfig.js index b263d4e..2819665 100644 --- a/access-checkout-react-native-sdk/lib/module/validation/CvcValidationConfig.js +++ b/access-checkout-react-native-sdk/lib/module/validation/MerchantCvcOnlyValidationConfig.js @@ -1,7 +1,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } -export class CvcValidationConfig { +export class MerchantCvcOnlyValidationConfig { constructor({ validationListener }) { @@ -9,4 +9,4 @@ export class CvcValidationConfig { this.validationListener = validationListener; } } -//# sourceMappingURL=CvcValidationConfig.js.map \ No newline at end of file +//# sourceMappingURL=MerchantCvcOnlyValidationConfig.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/validation/MerchantCvcOnlyValidationConfig.js.map b/access-checkout-react-native-sdk/lib/module/validation/MerchantCvcOnlyValidationConfig.js.map new file mode 100644 index 0000000..1678192 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/module/validation/MerchantCvcOnlyValidationConfig.js.map @@ -0,0 +1 @@ +{"version":3,"names":["MerchantCvcOnlyValidationConfig","constructor","validationListener","_defineProperty"],"sources":["MerchantCvcOnlyValidationConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../index';\n\nexport class MerchantCvcOnlyValidationConfig {\n validationListener?: CardValidationEventListener;\n\n constructor({ validationListener }: MerchantCvcOnlyValidationConfig) {\n this.validationListener = validationListener;\n }\n}\n"],"mappings":";;;AAEA,OAAO,MAAMA,+BAA+B,CAAC;EAG3CC,WAAWA,CAAC;IAAEC;EAAoD,CAAC,EAAE;IAAAC,eAAA;IACnE,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;EAC9C;AACF"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts b/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts index d774834..8c91e3e 100644 --- a/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/AccessCheckout.d.ts @@ -16,7 +16,7 @@ export default class AccessCheckout { static readonly CvcOnlyValidationEventType = "AccessCheckoutCvcOnlyValidationEvent"; baseUrl: string; merchantId?: string; - constructor({ baseUrl, merchantId, }: { + constructor({ baseUrl, merchantId }: { baseUrl: string; merchantId?: string; }); diff --git a/access-checkout-react-native-sdk/lib/typescript/config/CardConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/config/CardConfig.d.ts deleted file mode 100644 index 057051e..0000000 --- a/access-checkout-react-native-sdk/lib/typescript/config/CardConfig.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { CardValidationConfig } from '../validation/CardValidationConfig'; -export default class CardConfig { - panId: string; - expiryDateId: string; - cvcId: string; - validationConfig?: CardValidationConfig; - constructor({ panId, expiryDateId, cvcId, validationConfig }: CardConfig); -} diff --git a/access-checkout-react-native-sdk/lib/typescript/config/CvcOnlyConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/config/CvcOnlyConfig.d.ts deleted file mode 100644 index 4b81630..0000000 --- a/access-checkout-react-native-sdk/lib/typescript/config/CvcOnlyConfig.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { CvcValidationConfig } from '../validation/CvcValidationConfig'; -export default class CvcOnlyConfig { - cvcId: string; - validationConfig?: CvcValidationConfig; - constructor({ cvcId, validationConfig }: CvcOnlyConfig); -} diff --git a/access-checkout-react-native-sdk/lib/typescript/config/MerchantCardConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/config/MerchantCardConfig.d.ts new file mode 100644 index 0000000..c075444 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/config/MerchantCardConfig.d.ts @@ -0,0 +1,8 @@ +import type { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig'; +export default class MerchantCardConfig { + panId: string; + expiryDateId: string; + cvcId: string; + validationConfig?: MerchantCardValidationConfig; + constructor({ panId, expiryDateId, cvcId, validationConfig }: MerchantCardConfig); +} diff --git a/access-checkout-react-native-sdk/lib/typescript/config/MerchantCvcOnlyConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/config/MerchantCvcOnlyConfig.d.ts new file mode 100644 index 0000000..c102cfe --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/config/MerchantCvcOnlyConfig.d.ts @@ -0,0 +1,6 @@ +import type { MerchantCvcOnlyValidationConfig } from '../validation/MerchantCvcOnlyValidationConfig'; +export default class MerchantCvcOnlyConfig { + cvcId: string; + validationConfig?: MerchantCvcOnlyValidationConfig; + constructor({ cvcId, validationConfig }: MerchantCvcOnlyConfig); +} diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useAccessCheckout.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useAccessCheckout.d.ts index 19515ed..9bc1c3e 100644 --- a/access-checkout-react-native-sdk/lib/typescript/hooks/useAccessCheckout.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useAccessCheckout.d.ts @@ -8,4 +8,4 @@ export interface UseAccessCheckout { checkoutId: string; config: CardConfig | CvcOnlyConfig; } -export declare const useAccessCheckout: ({ baseUrl, checkoutId, config, }: UseAccessCheckout) => UseAccessCheckoutExports; +export declare const useAccessCheckout: ({ baseUrl, checkoutId, config }: UseAccessCheckout) => UseAccessCheckoutExports; diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts index b270dbd..667cd1a 100644 --- a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts @@ -1,13 +1,15 @@ import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; -import CardConfig from '../config/CardConfig'; +import { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig'; +import MerchantCardConfig from '../config/MerchantCardConfig'; +export interface CardValidationConfig { + acceptedCardBrands?: string[]; + enablePanFormatting?: boolean; + validationListener: CardValidationEventListener; +} export interface UseCardConfig { panId: string; expiryDateId: string; cvcId: string; - validationConfig?: { - acceptedCardBrands?: string[]; - enablePanFormatting?: boolean; - validationListener: CardValidationEventListener; - }; + validationConfig?: MerchantCardValidationConfig; } -export declare const useCardConfig: (props: UseCardConfig) => CardConfig; +export declare const useCardConfig: (props: UseCardConfig) => MerchantCardConfig; diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts index 392a077..5adcb86 100644 --- a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardValidation.d.ts @@ -12,7 +12,7 @@ interface UseCardValidationHook { }; validationListener: CardValidationEventListener; } -export declare function useCardValidation({ accessCheckout, cardValidationConfig, validationListener, }: UseCardValidationHook): { +export declare function useCardValidation({ accessCheckout, cardValidationConfig, validationListener }: UseCardValidationHook): { initialiseCardValidation: () => Promise; }; export {}; diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyConfig.d.ts index eafeca2..f493fe0 100644 --- a/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyConfig.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCvcOnlyConfig.d.ts @@ -1,9 +1,10 @@ import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; -import CvcOnlyConfig from '../config/CvcOnlyConfig'; +import MerchantCvcOnlyConfig from '../config/MerchantCvcOnlyConfig'; +export interface CvcOnlyValidationConfig { + validationListener: CardValidationEventListener; +} export interface UseCvcOnlyConfig { cvcId: string; - validationConfig?: { - validationListener: CardValidationEventListener; - }; + validationConfig?: CvcOnlyValidationConfig; } -export declare function useCvcOnlyConfig({ cvcId, validationConfig, }: UseCvcOnlyConfig): CvcOnlyConfig; +export declare function useCvcOnlyConfig({ cvcId, validationConfig }: UseCvcOnlyConfig): MerchantCvcOnlyConfig; diff --git a/access-checkout-react-native-sdk/lib/typescript/index.d.ts b/access-checkout-react-native-sdk/lib/typescript/index.d.ts index cd56e6e..0f5fddd 100644 --- a/access-checkout-react-native-sdk/lib/typescript/index.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/index.d.ts @@ -6,12 +6,12 @@ export { default as SessionType, CARD, CVC } from './session/SessionType'; export { default as Sessions } from './session/Sessions'; export { default as Brand } from './validation/Brand'; export { default as BrandImage } from './validation/BrandImage'; -export { default as CardConfig } from './config/CardConfig'; -export { default as CvcOnlyConfig } from './config/CvcOnlyConfig'; +export { default as CardConfig } from './config/MerchantCardConfig'; +export { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig'; export { CardValidationEventListener } from './validation/CardValidationEventListener'; export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener'; -export { CvcValidationConfig } from './validation/CvcValidationConfig'; -export { CardValidationConfig } from './validation/CardValidationConfig'; -export { useCardConfig, UseCardConfig } from './hooks/useCardConfig'; -export { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig'; -export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports, } from './hooks/useAccessCheckout'; +export { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig'; +export { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig'; +export { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig'; +export { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig'; +export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout'; diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/Brand.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/Brand.d.ts index b9242cc..3132af5 100644 --- a/access-checkout-react-native-sdk/lib/typescript/validation/Brand.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/validation/Brand.d.ts @@ -1,4 +1,4 @@ -import BrandImage from './BrandImage'; +import type BrandImage from './BrandImage'; export default interface Brand { name: string; images: BrandImage[]; diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/CvcValidationConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/CvcValidationConfig.d.ts deleted file mode 100644 index a3f414f..0000000 --- a/access-checkout-react-native-sdk/lib/typescript/validation/CvcValidationConfig.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { CardValidationEventListener } from '../index'; -export declare class CvcValidationConfig { - validationListener?: CardValidationEventListener; - constructor({ validationListener }: CvcValidationConfig); -} diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/MerchantCardValidationConfig.d.ts similarity index 71% rename from access-checkout-react-native-sdk/lib/typescript/validation/CardValidationConfig.d.ts rename to access-checkout-react-native-sdk/lib/typescript/validation/MerchantCardValidationConfig.d.ts index 2298273..27673f3 100644 --- a/access-checkout-react-native-sdk/lib/typescript/validation/CardValidationConfig.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/validation/MerchantCardValidationConfig.d.ts @@ -1,7 +1,7 @@ import type { CardValidationEventListener } from '../index'; -export declare class CardValidationConfig { +export declare class MerchantCardValidationConfig { enablePanFormatting?: boolean; acceptedCardBrands?: string[]; validationListener?: CardValidationEventListener; - constructor({ validationListener, enablePanFormatting, acceptedCardBrands, }: CardValidationConfig); + constructor({ validationListener, enablePanFormatting, acceptedCardBrands, }: MerchantCardValidationConfig); } diff --git a/access-checkout-react-native-sdk/lib/typescript/validation/MerchantCvcOnlyValidationConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/validation/MerchantCvcOnlyValidationConfig.d.ts new file mode 100644 index 0000000..104f106 --- /dev/null +++ b/access-checkout-react-native-sdk/lib/typescript/validation/MerchantCvcOnlyValidationConfig.d.ts @@ -0,0 +1,5 @@ +import type { CardValidationEventListener } from '../index'; +export declare class MerchantCvcOnlyValidationConfig { + validationListener?: CardValidationEventListener; + constructor({ validationListener }: MerchantCvcOnlyValidationConfig); +} diff --git a/access-checkout-react-native-sdk/src/AccessCheckout.tsx b/access-checkout-react-native-sdk/src/AccessCheckout.tsx index c3cfbc4..467bd47 100644 --- a/access-checkout-react-native-sdk/src/AccessCheckout.tsx +++ b/access-checkout-react-native-sdk/src/AccessCheckout.tsx @@ -15,27 +15,17 @@ interface InitialiseCvcOnlyValidationConfig { export default class AccessCheckout { private readonly ReactNativeSdkVersion = '2.0.1'; static readonly CardValidationEventType = 'AccessCheckoutCardValidationEvent'; - static readonly CvcOnlyValidationEventType = - 'AccessCheckoutCvcOnlyValidationEvent'; + static readonly CvcOnlyValidationEventType = 'AccessCheckoutCvcOnlyValidationEvent'; baseUrl: string; merchantId?: string; - constructor({ - baseUrl, - merchantId, - }: { - baseUrl: string; - merchantId?: string; - }) { + constructor({ baseUrl, merchantId }: { baseUrl: string; merchantId?: string }) { this.baseUrl = baseUrl; this.merchantId = merchantId; } - generateSessions( - sessionGenerationConfig: SessionGenerationConfig, - sessionTypes: string[] - ): Promise { + generateSessions(sessionGenerationConfig: SessionGenerationConfig, sessionTypes: string[]): Promise { return new Promise((resolve, reject) => { AccessCheckoutReactNative.generateSessions({ baseUrl: this.baseUrl, @@ -65,9 +55,7 @@ export default class AccessCheckout { }); } - initialiseCardValidation( - validationConfig: InitialiseCardValidationConfig - ): Promise { + initialiseCardValidation(validationConfig: InitialiseCardValidationConfig): Promise { return new Promise((resolve, reject) => { AccessCheckoutReactNative.initialiseCardValidation({ baseUrl: this.baseUrl, @@ -87,9 +75,7 @@ export default class AccessCheckout { }); } - initialiseCvcOnlyValidation( - validationConfig: InitialiseCvcOnlyValidationConfig - ): Promise { + initialiseCvcOnlyValidation(validationConfig: InitialiseCvcOnlyValidationConfig): Promise { return new Promise((resolve, reject) => { AccessCheckoutReactNative.initialiseCvcOnlyValidation({ cvcId: validationConfig.cvcId, diff --git a/access-checkout-react-native-sdk/src/config/CvcOnlyConfig.ts b/access-checkout-react-native-sdk/src/config/CvcOnlyConfig.ts deleted file mode 100644 index addde2a..0000000 --- a/access-checkout-react-native-sdk/src/config/CvcOnlyConfig.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { CvcValidationConfig } from '../validation/CvcValidationConfig'; - -export default class CvcOnlyConfig { - cvcId: string; - validationConfig?: CvcValidationConfig; - - constructor({ cvcId, validationConfig }: CvcOnlyConfig) { - this.cvcId = cvcId; - this.validationConfig = validationConfig; - } -} diff --git a/access-checkout-react-native-sdk/src/config/CardConfig.ts b/access-checkout-react-native-sdk/src/config/MerchantCardConfig.ts similarity index 55% rename from access-checkout-react-native-sdk/src/config/CardConfig.ts rename to access-checkout-react-native-sdk/src/config/MerchantCardConfig.ts index 0a1187c..0962a63 100644 --- a/access-checkout-react-native-sdk/src/config/CardConfig.ts +++ b/access-checkout-react-native-sdk/src/config/MerchantCardConfig.ts @@ -1,12 +1,12 @@ -import type { CardValidationConfig } from '../validation/CardValidationConfig'; +import type { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig'; -export default class CardConfig { +export default class MerchantCardConfig { panId: string; expiryDateId: string; cvcId: string; - validationConfig?: CardValidationConfig; + validationConfig?: MerchantCardValidationConfig; - constructor({ panId, expiryDateId, cvcId, validationConfig }: CardConfig) { + constructor({ panId, expiryDateId, cvcId, validationConfig }: MerchantCardConfig) { this.panId = panId; this.expiryDateId = expiryDateId; this.cvcId = cvcId; diff --git a/access-checkout-react-native-sdk/src/config/MerchantCvcOnlyConfig.ts b/access-checkout-react-native-sdk/src/config/MerchantCvcOnlyConfig.ts new file mode 100644 index 0000000..a6252fe --- /dev/null +++ b/access-checkout-react-native-sdk/src/config/MerchantCvcOnlyConfig.ts @@ -0,0 +1,11 @@ +import type { MerchantCvcOnlyValidationConfig } from '../validation/MerchantCvcOnlyValidationConfig'; + +export default class MerchantCvcOnlyConfig { + cvcId: string; + validationConfig?: MerchantCvcOnlyValidationConfig; + + constructor({ cvcId, validationConfig }: MerchantCvcOnlyConfig) { + this.cvcId = cvcId; + this.validationConfig = validationConfig; + } +} diff --git a/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts b/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts index 4be3919..e4bced1 100644 --- a/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts +++ b/access-checkout-react-native-sdk/src/hooks/useAccessCheckout.ts @@ -20,11 +20,7 @@ export interface UseAccessCheckout { config: CardConfig | CvcOnlyConfig; } -export const useAccessCheckout = ({ - baseUrl, - checkoutId, - config, -}: UseAccessCheckout): UseAccessCheckoutExports => { +export const useAccessCheckout = ({ baseUrl, checkoutId, config }: UseAccessCheckout): UseAccessCheckoutExports => { const accessCheckout = new AccessCheckout({ baseUrl: baseUrl, merchantId: checkoutId, @@ -46,8 +42,7 @@ export const useAccessCheckout = ({ enablePanFormatting: config.validationConfig?.enablePanFormatting, acceptedCardBrands: config.validationConfig?.acceptedCardBrands, }, - validationListener: config.validationConfig - ?.validationListener as CardValidationEventListener, + validationListener: config.validationConfig?.validationListener as CardValidationEventListener, }); const generateSessions = (sessionTypes: string[]) => @@ -68,8 +63,7 @@ export const useAccessCheckout = ({ const { initialiseCvcOnlyValidation } = useCvcOnlyValidation({ accessCheckout, cvcOnlyValidationConfig: { cvcId: config.cvcId }, - validationListener: config.validationConfig - ?.validationListener as CvcOnlyValidationEventListener, + validationListener: config.validationConfig?.validationListener as CvcOnlyValidationEventListener, }); const generateCvcOnlySession = (sessionTypes: string[]) => diff --git a/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts b/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts index 008ba4e..4f5a740 100644 --- a/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts @@ -1,27 +1,28 @@ import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; -import { CardValidationConfig } from '../validation/CardValidationConfig'; -import CardConfig from '../config/CardConfig'; +import { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig'; +import MerchantCardConfig from '../config/MerchantCardConfig'; +export interface CardValidationConfig { + acceptedCardBrands?: string[]; + enablePanFormatting?: boolean; + validationListener: CardValidationEventListener; +} export interface UseCardConfig { panId: string; expiryDateId: string; cvcId: string; - validationConfig?: { - acceptedCardBrands?: string[]; - enablePanFormatting?: boolean; - validationListener: CardValidationEventListener; - }; + validationConfig?: MerchantCardValidationConfig; } -export const useCardConfig = (props: UseCardConfig): CardConfig => { - const cardConfig = new CardConfig({ +export const useCardConfig = (props: UseCardConfig): MerchantCardConfig => { + const cardConfig = new MerchantCardConfig({ panId: props.panId, expiryDateId: props.expiryDateId, cvcId: props.cvcId, }); if (props.validationConfig) { - cardConfig.validationConfig = new CardValidationConfig({ + cardConfig.validationConfig = new MerchantCardValidationConfig({ acceptedCardBrands: props.validationConfig.acceptedCardBrands, enablePanFormatting: props.validationConfig.enablePanFormatting, validationListener: props.validationConfig.validationListener, diff --git a/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts b/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts index bf9609e..1418171 100644 --- a/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCardValidation.ts @@ -8,20 +8,15 @@ import { } from '../validation/CardValidationEventListener'; import { ValidationListenerException } from '../validation/ValidationListenerException'; -export function useCardValidationEventListener( - validationListener: CardValidationEventListener -) { +export function useCardValidationEventListener(validationListener: CardValidationEventListener) { useEffect(() => { //Safe-guard in the case where no validation listener was configured we avoid registering the native listener if (!validationListener) { return; } - const nativeEventListener = - cardValidationNativeEventListenerOf(validationListener); - const nativeEventEmitter = new NativeEventEmitter( - AccessCheckoutReactNative - ); + const nativeEventListener = cardValidationNativeEventListenerOf(validationListener); + const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative); const eventSubscription = nativeEventEmitter.addListener( AccessCheckout.CardValidationEventType, @@ -46,14 +41,10 @@ interface UseCardValidationHook { validationListener: CardValidationEventListener; } -export function useCardValidation({ - accessCheckout, - cardValidationConfig, - validationListener, -}: UseCardValidationHook) { +export function useCardValidation({ accessCheckout, cardValidationConfig, validationListener }: UseCardValidationHook) { /* Implementation Note: To allow the hook to render and use hooks correctly: - `useCardValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + `useCardValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener was provided in order to register the native event. */ useCardValidationEventListener(validationListener); diff --git a/access-checkout-react-native-sdk/src/hooks/useCvcOnlyConfig.ts b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyConfig.ts index a9e59bd..3de8e22 100644 --- a/access-checkout-react-native-sdk/src/hooks/useCvcOnlyConfig.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyConfig.ts @@ -1,24 +1,22 @@ import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; -import CvcOnlyConfig from '../config/CvcOnlyConfig'; -import { CvcValidationConfig } from '../validation/CvcValidationConfig'; +import MerchantCvcOnlyConfig from '../config/MerchantCvcOnlyConfig'; +import { MerchantCvcOnlyValidationConfig } from '../validation/MerchantCvcOnlyValidationConfig'; +export interface CvcOnlyValidationConfig { + validationListener: CardValidationEventListener; +} export interface UseCvcOnlyConfig { cvcId: string; - validationConfig?: { - validationListener: CardValidationEventListener; - }; + validationConfig?: CvcOnlyValidationConfig; } -export function useCvcOnlyConfig({ - cvcId, - validationConfig, -}: UseCvcOnlyConfig) { - const cardConfig = new CvcOnlyConfig({ +export function useCvcOnlyConfig({ cvcId, validationConfig }: UseCvcOnlyConfig) { + const cardConfig = new MerchantCvcOnlyConfig({ cvcId, }); if (validationConfig) { - cardConfig.validationConfig = new CvcValidationConfig({ + cardConfig.validationConfig = new MerchantCvcOnlyValidationConfig({ validationListener: validationConfig.validationListener, }); } diff --git a/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts index caabd66..fb86b2d 100644 --- a/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCvcOnlyValidation.ts @@ -1,27 +1,19 @@ import { useEffect } from 'react'; import { NativeEventEmitter } from 'react-native'; -import AccessCheckoutReactNative, { - AccessCheckout, - CardValidationEventListener, -} from '../index'; +import AccessCheckoutReactNative, { AccessCheckout, CardValidationEventListener } from '../index'; import type { CvcOnlyValidationEventListener } from '../validation/CvcOnlyValidationEventListener'; import { cvcOnlyValidationNativeEventListenerOf } from '../validation/CvcOnlyValidationEventListener'; import { ValidationListenerException } from '../validation/ValidationListenerException'; -export const useCvcOnlyValidationEventListener = ( - validationListener: CvcOnlyValidationEventListener -) => { +export const useCvcOnlyValidationEventListener = (validationListener: CvcOnlyValidationEventListener) => { useEffect(() => { //Safe-guard in the case where no validation listener was configured we avoid registering the native listener if (!validationListener) { return; } - const nativeEventListener = - cvcOnlyValidationNativeEventListenerOf(validationListener); - const nativeEventEmitter = new NativeEventEmitter( - AccessCheckoutReactNative - ); + const nativeEventListener = cvcOnlyValidationNativeEventListenerOf(validationListener); + const nativeEventEmitter = new NativeEventEmitter(AccessCheckoutReactNative); const eventSubscription = nativeEventEmitter.addListener( AccessCheckout.CvcOnlyValidationEventType, @@ -49,7 +41,7 @@ export const useCvcOnlyValidation = ({ }: UseCvcOnlyValidationHook) => { /* Implementation Note: To allow the hook to render and use hooks correctly: - `useCvcOnlyValidationEventListener` has a safe-guard inside it's useEffect to check if a validationListener + `useCvcOnlyValidationEventListener` has a safe-guard inside its useEffect to check if a validationListener was provided in order to register the native event. */ useCvcOnlyValidationEventListener(validationListener); diff --git a/access-checkout-react-native-sdk/src/index.tsx b/access-checkout-react-native-sdk/src/index.tsx index 0768938..b9fc213 100644 --- a/access-checkout-react-native-sdk/src/index.tsx +++ b/access-checkout-react-native-sdk/src/index.tsx @@ -13,20 +13,16 @@ export { default as Sessions } from './session/Sessions'; export { default as Brand } from './validation/Brand'; export { default as BrandImage } from './validation/BrandImage'; -export { default as CardConfig } from './config/CardConfig'; -export { default as CvcOnlyConfig } from './config/CvcOnlyConfig'; +export { default as CardConfig } from './config/MerchantCardConfig'; +export { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig'; export { CardValidationEventListener } from './validation/CardValidationEventListener'; export { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener'; -export { CvcValidationConfig } from './validation/CvcValidationConfig'; -export { CardValidationConfig } from './validation/CardValidationConfig'; +export { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig'; +export { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig'; -export { useCardConfig, UseCardConfig } from './hooks/useCardConfig'; -export { useCvcOnlyConfig, UseCvcOnlyConfig } from './hooks/useCvcOnlyConfig'; +export { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig'; +export { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig'; -export { - useAccessCheckout, - UseAccessCheckout, - UseAccessCheckoutExports, -} from './hooks/useAccessCheckout'; +export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout'; diff --git a/access-checkout-react-native-sdk/src/validation/Brand.ts b/access-checkout-react-native-sdk/src/validation/Brand.ts index 37b0795..adfbe72 100644 --- a/access-checkout-react-native-sdk/src/validation/Brand.ts +++ b/access-checkout-react-native-sdk/src/validation/Brand.ts @@ -1,6 +1,4 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import BrandImage from './BrandImage'; +import type BrandImage from './BrandImage'; export default interface Brand { name: string; diff --git a/access-checkout-react-native-sdk/src/validation/CardValidationEventListener.ts b/access-checkout-react-native-sdk/src/validation/CardValidationEventListener.ts index 28306f0..90f065a 100644 --- a/access-checkout-react-native-sdk/src/validation/CardValidationEventListener.ts +++ b/access-checkout-react-native-sdk/src/validation/CardValidationEventListener.ts @@ -14,9 +14,7 @@ export interface CardValidationEventListener { onValidationSuccess?(): void; } -export function cardValidationNativeEventListenerOf( - delegate: CardValidationEventListener -) { +export function cardValidationNativeEventListenerOf(delegate: CardValidationEventListener) { // eslint-disable-next-line @typescript-eslint/no-explicit-any return function (event: any) { if (event.type === 'brand' && delegate.onCardBrandChanged) { diff --git a/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationEventListener.ts b/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationEventListener.ts index 2bdd830..2914807 100644 --- a/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationEventListener.ts +++ b/access-checkout-react-native-sdk/src/validation/CvcOnlyValidationEventListener.ts @@ -4,9 +4,7 @@ export interface CvcOnlyValidationEventListener { onValidationSuccess?(): void; } -export function cvcOnlyValidationNativeEventListenerOf( - delegate: CvcOnlyValidationEventListener -) { +export function cvcOnlyValidationNativeEventListenerOf(delegate: CvcOnlyValidationEventListener) { // eslint-disable-next-line @typescript-eslint/no-explicit-any return function (event: any) { if (event.type === 'cvc' && delegate.onCvcValidChanged) { diff --git a/access-checkout-react-native-sdk/src/validation/CardValidationConfig.ts b/access-checkout-react-native-sdk/src/validation/MerchantCardValidationConfig.ts similarity index 84% rename from access-checkout-react-native-sdk/src/validation/CardValidationConfig.ts rename to access-checkout-react-native-sdk/src/validation/MerchantCardValidationConfig.ts index 8947447..04c7936 100644 --- a/access-checkout-react-native-sdk/src/validation/CardValidationConfig.ts +++ b/access-checkout-react-native-sdk/src/validation/MerchantCardValidationConfig.ts @@ -1,6 +1,6 @@ import type { CardValidationEventListener } from '../index'; -export class CardValidationConfig { +export class MerchantCardValidationConfig { enablePanFormatting?: boolean; acceptedCardBrands?: string[]; validationListener?: CardValidationEventListener; @@ -9,7 +9,7 @@ export class CardValidationConfig { validationListener, enablePanFormatting = false, acceptedCardBrands = [], - }: CardValidationConfig) { + }: MerchantCardValidationConfig) { this.enablePanFormatting = enablePanFormatting; this.validationListener = validationListener; this.acceptedCardBrands = acceptedCardBrands; diff --git a/access-checkout-react-native-sdk/src/validation/CvcValidationConfig.ts b/access-checkout-react-native-sdk/src/validation/MerchantCvcOnlyValidationConfig.ts similarity index 58% rename from access-checkout-react-native-sdk/src/validation/CvcValidationConfig.ts rename to access-checkout-react-native-sdk/src/validation/MerchantCvcOnlyValidationConfig.ts index fd2f6ec..a7a3b5a 100644 --- a/access-checkout-react-native-sdk/src/validation/CvcValidationConfig.ts +++ b/access-checkout-react-native-sdk/src/validation/MerchantCvcOnlyValidationConfig.ts @@ -1,9 +1,9 @@ import type { CardValidationEventListener } from '../index'; -export class CvcValidationConfig { +export class MerchantCvcOnlyValidationConfig { validationListener?: CardValidationEventListener; - constructor({ validationListener }: CvcValidationConfig) { + constructor({ validationListener }: MerchantCvcOnlyValidationConfig) { this.validationListener = validationListener; } } diff --git a/access-checkout-react-native-sdk/test/config/CardConfig.spec.ts b/access-checkout-react-native-sdk/test/config/CardConfig.spec.ts index 29d772b..ba5c6e7 100644 --- a/access-checkout-react-native-sdk/test/config/CardConfig.spec.ts +++ b/access-checkout-react-native-sdk/test/config/CardConfig.spec.ts @@ -1,5 +1,5 @@ -import CardConfig from '../../src/config/CardConfig'; -import { CardValidationConfig } from '../../src/validation/CardValidationConfig'; +import MerchantCardConfig from '../../src/config/MerchantCardConfig'; +import { MerchantCardValidationConfig } from '../../src/validation/MerchantCardValidationConfig'; import type { CardValidationEventListener } from '../../src'; const panId = '4444'; @@ -9,7 +9,7 @@ const cvcId = '123'; describe('CardConfig', () => { describe('can be constructed', () => { it('with only a panId, an expiryDateId and a cvcId', () => { - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -24,7 +24,7 @@ describe('CardConfig', () => { }); it('with an empty validation config object', () => { - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -41,7 +41,7 @@ describe('CardConfig', () => { describe('using a validation config object', () => { it('with an optional validation config flag to enable card number formatting', () => { - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -57,7 +57,7 @@ describe('CardConfig', () => { }); it('with an optional list of card brands to restrict validation to', () => { - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -67,17 +67,14 @@ describe('CardConfig', () => { expect(config.panId).toEqual(panId); expect(config.expiryDateId).toEqual(expiryDateId); expect(config.cvcId).toEqual(cvcId); - expect(config.validationConfig?.acceptedCardBrands).toEqual([ - 'visa', - 'mastercard', - ]); + expect(config.validationConfig?.acceptedCardBrands).toEqual(['visa', 'mastercard']); expect(config.validationConfig?.enablePanFormatting).toBeUndefined(); expect(config.validationConfig?.validationListener).toBeUndefined(); }); it('with an optional validation listener', () => { const validationListenerMock = jest.fn() as CardValidationEventListener; - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -89,20 +86,18 @@ describe('CardConfig', () => { expect(config.cvcId).toEqual(cvcId); expect(config.validationConfig?.acceptedCardBrands).toBeUndefined(); expect(config.validationConfig?.enablePanFormatting).toBeUndefined(); - expect(config.validationConfig?.validationListener).toEqual( - validationListenerMock - ); + expect(config.validationConfig?.validationListener).toEqual(validationListenerMock); }); }); }); describe('using a validation config class (includes defaults)', () => { it('with an optional validation config flag to enable card number formatting', () => { - const validationConfig = new CardValidationConfig({ + const validationConfig = new MerchantCardValidationConfig({ enablePanFormatting: true, }); - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -118,11 +113,11 @@ describe('CardConfig', () => { }); it('with an optional list of card brands to restrict validation to', () => { - const validationConfig = new CardValidationConfig({ + const validationConfig = new MerchantCardValidationConfig({ acceptedCardBrands: ['visa', 'mastercard'], }); - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -132,21 +127,18 @@ describe('CardConfig', () => { expect(config.panId).toEqual(panId); expect(config.expiryDateId).toEqual(expiryDateId); expect(config.cvcId).toEqual(cvcId); - expect(config.validationConfig?.acceptedCardBrands).toEqual([ - 'visa', - 'mastercard', - ]); + expect(config.validationConfig?.acceptedCardBrands).toEqual(['visa', 'mastercard']); expect(config.validationConfig?.enablePanFormatting).toEqual(false); expect(config.validationConfig?.validationListener).toBeUndefined(); }); it('with an optional validation listener', () => { const validationListenerMock = jest.fn() as CardValidationEventListener; - const validationConfig = new CardValidationConfig({ + const validationConfig = new MerchantCardValidationConfig({ validationListener: validationListenerMock, }); - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -158,15 +150,13 @@ describe('CardConfig', () => { expect(config.cvcId).toEqual(cvcId); expect(config.validationConfig?.acceptedCardBrands).toEqual([]); expect(config.validationConfig?.enablePanFormatting).toEqual(false); - expect(config.validationConfig?.validationListener).toEqual( - validationListenerMock - ); + expect(config.validationConfig?.validationListener).toEqual(validationListenerMock); }); }); describe('by default', () => { it('has no validation configuration', () => { - const config: CardConfig = new CardConfig({ + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -176,8 +166,8 @@ describe('CardConfig', () => { }); it('has card number formatting disabled', () => { - const validationConfig = new CardValidationConfig({}); - const config: CardConfig = new CardConfig({ + const validationConfig = new MerchantCardValidationConfig({}); + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, @@ -188,8 +178,8 @@ describe('CardConfig', () => { }); it('accepts all card brands', () => { - const validationConfig = new CardValidationConfig({}); - const config: CardConfig = new CardConfig({ + const validationConfig = new MerchantCardValidationConfig({}); + const config: MerchantCardConfig = new MerchantCardConfig({ panId, expiryDateId, cvcId, diff --git a/access-checkout-react-native-sdk/test/config/CvcOnlyConfig.spec.ts b/access-checkout-react-native-sdk/test/config/CvcOnlyConfig.spec.ts index 683e347..2dc3434 100644 --- a/access-checkout-react-native-sdk/test/config/CvcOnlyConfig.spec.ts +++ b/access-checkout-react-native-sdk/test/config/CvcOnlyConfig.spec.ts @@ -1,5 +1,5 @@ -import CvcOnlyConfig from '../../src/config/CvcOnlyConfig'; -import { CvcValidationConfig } from '../../src/validation/CvcValidationConfig'; +import MerchantCvcOnlyConfig from '../../src/config/MerchantCvcOnlyConfig'; +import { MerchantCvcOnlyValidationConfig } from '../../src/validation/MerchantCvcOnlyValidationConfig'; import type { CardValidationEventListener } from '../../src'; const cvcId = '123'; @@ -7,7 +7,7 @@ const cvcId = '123'; describe('CvcOnlyConfig', () => { describe('can be constructed', () => { it('with only a cvcId', () => { - const config: CvcOnlyConfig = new CvcOnlyConfig({ + const config: MerchantCvcOnlyConfig = new MerchantCvcOnlyConfig({ cvcId, }); @@ -16,7 +16,7 @@ describe('CvcOnlyConfig', () => { }); it('with an empty validation config object', () => { - const config: CvcOnlyConfig = new CvcOnlyConfig({ + const config: MerchantCvcOnlyConfig = new MerchantCvcOnlyConfig({ cvcId, validationConfig: {}, }); @@ -29,15 +29,13 @@ describe('CvcOnlyConfig', () => { describe('using a validation config object', () => { it('with an optional validation listener', () => { const validationListenerMock = jest.fn() as CardValidationEventListener; - const config: CvcOnlyConfig = new CvcOnlyConfig({ + const config: MerchantCvcOnlyConfig = new MerchantCvcOnlyConfig({ cvcId, validationConfig: { validationListener: validationListenerMock }, }); expect(config.cvcId).toEqual(cvcId); - expect(config.validationConfig?.validationListener).toEqual( - validationListenerMock - ); + expect(config.validationConfig?.validationListener).toEqual(validationListenerMock); }); }); }); @@ -45,25 +43,23 @@ describe('CvcOnlyConfig', () => { describe('using a validation config class (includes defaults)', () => { it('with an optional validation listener', () => { const validationListenerMock = jest.fn() as CardValidationEventListener; - const validationConfig = new CvcValidationConfig({ + const validationConfig = new MerchantCvcOnlyValidationConfig({ validationListener: validationListenerMock, }); - const config: CvcOnlyConfig = new CvcOnlyConfig({ + const config: MerchantCvcOnlyConfig = new MerchantCvcOnlyConfig({ cvcId, validationConfig, }); expect(config.cvcId).toEqual(cvcId); - expect(config.validationConfig?.validationListener).toEqual( - validationListenerMock - ); + expect(config.validationConfig?.validationListener).toEqual(validationListenerMock); }); }); describe('by default', () => { it('has no validation configuration', () => { - const config: CvcOnlyConfig = new CvcOnlyConfig({ + const config: MerchantCvcOnlyConfig = new MerchantCvcOnlyConfig({ cvcId, }); diff --git a/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts b/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts index a3ae466..6a7720a 100644 --- a/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useAccessCheckout.spec.ts @@ -9,15 +9,12 @@ import { CARD, CVC, type CvcOnlyValidationEventListener, - CardValidationConfig, + MerchantCardValidationConfig, useCvcOnlyConfig, useCardConfig, } from '../../src'; import { isArray, isFunction } from '../test-utils'; -import { - renderHook, - type RenderHookResult, -} from '@testing-library/react-native'; +import { renderHook, type RenderHookResult } from '@testing-library/react-native'; describe('useAccessCheckout', () => { const mockInitialiseCvcOnlyValidation = jest.fn() as () => Promise; const mockInitialiseCardValidation = jest.fn() as () => Promise; @@ -27,12 +24,8 @@ describe('useAccessCheckout', () => { jest .spyOn(AccessCheckout.prototype, 'initialiseCvcOnlyValidation') .mockImplementation(mockInitialiseCvcOnlyValidation); - jest - .spyOn(AccessCheckout.prototype, 'initialiseCardValidation') - .mockImplementation(mockInitialiseCardValidation); - jest - .spyOn(AccessCheckout.prototype, 'generateSessions') - .mockImplementation(mockGenerateSessions); + jest.spyOn(AccessCheckout.prototype, 'initialiseCardValidation').mockImplementation(mockInitialiseCardValidation); + jest.spyOn(AccessCheckout.prototype, 'generateSessions').mockImplementation(mockGenerateSessions); }); afterAll(() => { @@ -43,18 +36,15 @@ describe('useAccessCheckout', () => { const merchantListener: CvcOnlyValidationEventListener = {}; it('should error when trying to use initialiseValidation when no validationConfig was provided', async () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: useCvcOnlyConfig({ - cvcId: 'cvcInput', - }), - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + }), + }) + ); const functionReturned = result.current.initialiseValidation; @@ -66,42 +56,36 @@ describe('useAccessCheckout', () => { describe('initialiseCardValidation', () => { it('returns an object with a initialiseValidation property which is a function', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: useCvcOnlyConfig({ - cvcId: 'cvcInput', - validationConfig: { - validationListener: merchantListener, - }, - }), - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }), + }) + ); expect(isArray(result.current)).toEqual(false); expect(isFunction(result.current.initialiseValidation)).toEqual(true); }); it('function returned is designed to initialise the card validation', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: useCvcOnlyConfig({ - cvcId: 'cvcInput', - validationConfig: { - validationListener: merchantListener, - }, - }), - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }), + }) + ); const functionReturned = result.current.initialiseValidation; @@ -115,42 +99,36 @@ describe('useAccessCheckout', () => { describe('generateSessions', () => { it('returns an object with a generateSessions property which is a function', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: useCvcOnlyConfig({ - cvcId: 'cvcInput', - validationConfig: { - validationListener: merchantListener, - }, - }), - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }), + }) + ); expect(isArray(result.current)).toEqual(false); expect(isFunction(result.current.generateSessions)).toEqual(true); }); it('function returned is designed to generate sessions', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: useCvcOnlyConfig({ - cvcId: 'cvcInput', - validationConfig: { - validationListener: merchantListener, - }, - }), - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCvcOnlyConfig({ + cvcId: 'cvcInput', + validationConfig: { + validationListener: merchantListener, + }, + }), + }) + ); const functionReturned = result.current.generateSessions; @@ -170,7 +148,7 @@ describe('useAccessCheckout', () => { describe('using card configuration', () => { const merchantListener: CardValidationEventListener = {}; - const cardValidationConfig = new CardValidationConfig({ + const cardValidationConfig = new MerchantCardValidationConfig({ validationListener: merchantListener, }); const cardConfig = new CardConfig({ @@ -181,20 +159,17 @@ describe('useAccessCheckout', () => { }); it('should error when trying to use initialiseValidation when no validationConfig was provided', async () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: useCardConfig({ - cvcId: 'cvcInput', - panId: 'panId', - expiryDateId: 'expiryDateId', - }), - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: useCardConfig({ + cvcId: 'cvcInput', + panId: 'panId', + expiryDateId: 'expiryDateId', + }), + }) + ); const functionReturned = result.current.initialiseValidation; @@ -207,32 +182,26 @@ describe('useAccessCheckout', () => { describe('initialiseCardValidation', () => { it('returns an object with a initialiseValidation property which is a function', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: cardConfig, - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); expect(isArray(result.current)).toEqual(false); expect(isFunction(result.current.initialiseValidation)).toEqual(true); }); it('function returned is designed to initialise the card validation', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: cardConfig, - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); const functionReturned = result.current.initialiseValidation; @@ -250,32 +219,26 @@ describe('useAccessCheckout', () => { describe('generateSessions', () => { it('returns an object with a generateSessions property which is a function', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: cardConfig, - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); expect(isArray(result.current)).toEqual(false); expect(isFunction(result.current.generateSessions)).toEqual(true); }); it('function returned is designed to generate sessions', () => { - const { - result, - }: RenderHookResult = - renderHook(() => - useAccessCheckout({ - baseUrl: '', - checkoutId: '', - config: cardConfig, - }) - ); + const { result }: RenderHookResult = renderHook(() => + useAccessCheckout({ + baseUrl: '', + checkoutId: '', + config: cardConfig, + }) + ); const functionReturned = result.current.generateSessions; diff --git a/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts index 2b1aa0b..52b63df 100644 --- a/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useCardValidation.spec.ts @@ -1,18 +1,7 @@ import React from 'react'; -import { - AccessCheckout, - CardConfig, - CardValidationEventListener, - CardValidationConfig, -} from '../../src'; -import { - useCardValidationEventListener, - useCardValidation, -} from '../../src/hooks/useCardValidation'; -import { - emitNativeEvent, - nativeEventSubscriptionMock, -} from '../__mocks__/react-native'; +import { AccessCheckout, CardConfig, CardValidationEventListener, MerchantCardValidationConfig } from '../../src'; +import { useCardValidationEventListener, useCardValidation } from '../../src/hooks/useCardValidation'; +import { emitNativeEvent, nativeEventSubscriptionMock } from '../__mocks__/react-native'; import { isArray, isFunction } from '../test-utils'; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -63,7 +52,7 @@ describe('useCardValidation', () => { baseUrl: '', merchantId: '', }); - const cardValidationConfig = new CardValidationConfig({ + const cardValidationConfig = new MerchantCardValidationConfig({ validationListener: validationListener, }); const cardConfig = new CardConfig({ @@ -99,9 +88,7 @@ describe('useCardValidation', () => { functionReturned(); - expect(accessCheckout.initialiseCardValidation).toHaveBeenCalledWith( - cardConfig - ); + expect(accessCheckout.initialiseCardValidation).toHaveBeenCalledWith(cardConfig); }); }); }); diff --git a/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts index 32ab46d..c182b82 100644 --- a/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts +++ b/access-checkout-react-native-sdk/test/hooks/useCvcOnlyValidation.spec.ts @@ -3,16 +3,10 @@ import { AccessCheckout, CvcOnlyConfig, CvcOnlyValidationEventListener, - CvcValidationConfig, + MerchantCvcOnlyValidationConfig, } from '../../src'; -import { - useCvcOnlyValidation, - useCvcOnlyValidationEventListener, -} from '../../src/hooks/useCvcOnlyValidation'; -import { - emitNativeEvent, - nativeEventSubscriptionMock, -} from '../__mocks__/react-native'; +import { useCvcOnlyValidation, useCvcOnlyValidationEventListener } from '../../src/hooks/useCvcOnlyValidation'; +import { emitNativeEvent, nativeEventSubscriptionMock } from '../__mocks__/react-native'; import { isArray, isFunction } from '../test-utils'; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -63,7 +57,7 @@ describe('useCvcOnlyValidation', () => { baseUrl: '', merchantId: '', }); - const cvcOnlyValidationConfig = new CvcValidationConfig({ + const cvcOnlyValidationConfig = new MerchantCvcOnlyValidationConfig({ validationListener: validationListener, }); const cvcOnlyConfig = new CvcOnlyConfig({ @@ -97,9 +91,7 @@ describe('useCvcOnlyValidation', () => { functionReturned(); - expect(accessCheckout.initialiseCvcOnlyValidation).toHaveBeenCalledWith( - cvcOnlyConfig - ); + expect(accessCheckout.initialiseCvcOnlyValidation).toHaveBeenCalledWith(cvcOnlyConfig); }); }); }); diff --git a/demo-app/src/card-flow/CardFlow.tsx b/demo-app/src/card-flow/CardFlow.tsx index aecdae6..d03dd1b 100644 --- a/demo-app/src/card-flow/CardFlow.tsx +++ b/demo-app/src/card-flow/CardFlow.tsx @@ -6,9 +6,9 @@ import { CardValidationEventListener, CVC, Sessions, - useAccessCheckout, useCardConfig, -} from '../../../access-checkout-react-native-sdk/src'; + useAccessCheckout, +} from '../../../access-checkout-react-native-sdk'; import CardBrandImage from '../common/CardBrandImage'; import CvcField from '../common/CvcField'; import ErrorView from '../common/ErrorView'; diff --git a/demo-app/src/cvc-flow/CvcFlow.tsx b/demo-app/src/cvc-flow/CvcFlow.tsx index be8b1e0..6ee7cfa 100644 --- a/demo-app/src/cvc-flow/CvcFlow.tsx +++ b/demo-app/src/cvc-flow/CvcFlow.tsx @@ -6,7 +6,7 @@ import { Sessions, useAccessCheckout, useCvcOnlyConfig, -} from '../../../access-checkout-react-native-sdk/src'; +} from '../../../access-checkout-react-native-sdk'; import styles from '../card-flow/style.js'; import CvcField from '../common/CvcField'; import ErrorView from '../common/ErrorView'; From 2e964380fe4765efc4a722faa6582bd61565e1d1 Mon Sep 17 00:00:00 2001 From: e5697436 <153538325+abaeza-wp@users.noreply.github.com> Date: Mon, 22 Jan 2024 15:33:29 +0000 Subject: [PATCH 23/26] US1764971: Differentiate between props interface and config classes as it was creating confusion by renaming CardConfig and CvconlyConfig classes and validation classes to be prefixed with Merchant --- access-checkout-react-native-sdk/src/hooks/useCardConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts b/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts index 4f5a740..e45ec52 100644 --- a/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts +++ b/access-checkout-react-native-sdk/src/hooks/useCardConfig.ts @@ -11,7 +11,7 @@ export interface UseCardConfig { panId: string; expiryDateId: string; cvcId: string; - validationConfig?: MerchantCardValidationConfig; + validationConfig?: CardValidationConfig; } export const useCardConfig = (props: UseCardConfig): MerchantCardConfig => { From 3a3256ba92f52d02e8232beab3f3ebe28b9c41a6 Mon Sep 17 00:00:00 2001 From: abaeza-wp <153538325+abaeza-wp@users.noreply.github.com> Date: Tue, 23 Jan 2024 10:29:48 +0000 Subject: [PATCH 24/26] Us1833001: [Android] Add font support (#96) * US1833001: Add Android support for font customization including font weight and font style * US1833001: Add Android support for font customization including font weight and font style and checks for support of font weight in android api >28 * US1833001: Better comment to explain why the use of font.getInt() was not used --- .../ui/AccessCheckoutTextInputManager.kt | 54 +++++++++-- .../ui/AccessCheckoutTextInputManagerTest.kt | 92 +++++++++++++++++++ .../src/ui/AccessCheckoutTextInput.tsx | 24 ++++- 3 files changed, 159 insertions(+), 11 deletions(-) diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt index 093a654..901d910 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/main/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManager.kt @@ -1,6 +1,7 @@ package com.worldpay.access.checkout.reactnative.ui import android.graphics.Typeface +import android.os.Build import android.view.Gravity import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReadableMap @@ -9,6 +10,7 @@ import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ViewProps import com.facebook.react.uimanager.annotations.ReactProp import com.worldpay.access.checkout.ui.AccessCheckoutEditText +import java.lang.reflect.Type class AccessCheckoutTextInputManager(private val callerContext: ReactApplicationContext) : @@ -41,18 +43,56 @@ class AccessCheckoutTextInputManager(private val callerContext: ReactApplication accessCheckoutEditText.setTextColor(color) } + @ReactProp(name = "font") fun setRTCFont(accessCheckoutEditText: AccessCheckoutEditText, font: ReadableMap) { + var customTypeface = Typeface.DEFAULT + var fontWeightProvidedAsUnit = false; + if (font.hasKey(ViewProps.FONT_SIZE)) { - val fontSize = font.getDouble(ViewProps.FONT_SIZE) - accessCheckoutEditText.textSize = fontSize.toFloat() + val fontSize: Float = font.getDouble(ViewProps.FONT_SIZE).toFloat() + accessCheckoutEditText.textSize = fontSize + } + + if (font.hasKey(ViewProps.FONT_WEIGHT)) { + fontWeightProvidedAsUnit = when (font.getString(ViewProps.FONT_WEIGHT)) { + "bold", "normal" -> false + else -> true + } } - if (font.hasKey(ViewProps.FONT_FAMILY)) { - val fontSize = font.getString(ViewProps.FONT_FAMILY) - val typeface = Typeface.create(fontSize, Typeface.NORMAL) - accessCheckoutEditText.typeface = typeface + val bold = isBold(font) + val italic = isItalic(font) + + val fontStyle: Int = when { + bold && italic -> Typeface.BOLD_ITALIC + bold -> Typeface.BOLD + italic -> Typeface.ITALIC + else -> Typeface.NORMAL + } + + // Always attempt to get Font family if the font family is null or unsupported, a default one will be used + customTypeface = Typeface.create(font.getString(ViewProps.FONT_FAMILY), fontStyle) + + // Font Weight only supported in API >28 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && fontWeightProvidedAsUnit) { + val fontAsString = font.getString(ViewProps.FONT_WEIGHT) + // Note: This default should never happen as we use fontWeightProvidedAsUnit as a check + // but to avoid a compilation false positive we default to 400 which should be the regular for fonts. + // Also: Using font.getInt() seems to cause a casting issue where it casts tries to cast a String to a Double, which makes the app crash. + val fontWeightNumber = fontAsString?.toInt() ?: 400 + customTypeface = Typeface.create(customTypeface, fontWeightNumber, italic) } + + accessCheckoutEditText.typeface = customTypeface; + } + + private fun isItalic(font: ReadableMap): Boolean { + return font.hasKey(ViewProps.FONT_STYLE) && "italic" == font.getString(ViewProps.FONT_STYLE) + } + + private fun isBold(font: ReadableMap): Boolean { + return font.hasKey(ViewProps.FONT_WEIGHT) && "bold" == font.getString(ViewProps.FONT_WEIGHT) } @ReactProp(name = "placeholder") @@ -64,4 +104,6 @@ class AccessCheckoutTextInputManager(private val callerContext: ReactApplication fun setRTCEditable(accessCheckoutEditText: AccessCheckoutEditText, editable: Boolean) { accessCheckoutEditText.isEnabled = editable } + } + diff --git a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt index 2a596b3..dc65371 100644 --- a/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt +++ b/access-checkout-react-native-sdk/android/access-checkout-react-native-sdk-android-bridge/src/test/java/com/worldpay/access/checkout/reactnative/ui/AccessCheckoutTextInputManagerTest.kt @@ -60,6 +60,98 @@ internal class AccessCheckoutTextInputManagerTest { verify(accessCheckoutEditTextMock).typeface = typeface } + @Test + fun `setRTCFont() should use a default typeface on AccessEditText`() { + val fontMap = JavaOnlyMap() + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + verify(accessCheckoutEditTextMock).typeface = Typeface.DEFAULT + } + + + @Test + fun `setRTCFont() should call textSize on AccessEditText`() { + val fontMap = JavaOnlyMap() + fontMap.putDouble("fontSize", 12.1) + + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + + verify(accessCheckoutEditTextMock).textSize = 12.1F + } + + @Test + fun `setRTCFont() should change the font family on AccessEditText`() { + val fontMap = JavaOnlyMap() + fontMap.putString("fontFamily", "Rubik") + + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + + verify(accessCheckoutEditTextMock).typeface = Typeface.create("Rubik", Typeface.NORMAL) + } + + + @Test + fun `setRTCFont() should change the font to italic on AccessEditText`() { + val fontMap = JavaOnlyMap() + fontMap.putString("fontFamily", "Rubik") + fontMap.putString("fontStyle", "italic") + + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + + verify(accessCheckoutEditTextMock).typeface = Typeface.create("Rubik", Typeface.ITALIC) + } + + + @Test + fun `setRTCFont() should change the font to bold on AccessEditText`() { + val fontMap = JavaOnlyMap() + fontMap.putString("fontFamily", "Rubik") + fontMap.putString("fontWeight", "bold") + + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + + verify(accessCheckoutEditTextMock).typeface = Typeface.create("Rubik", Typeface.BOLD) + } + + @Test + fun `setRTCFont() should change the font italic bold on AccessEditText`() { + val fontMap = JavaOnlyMap() + fontMap.putString("fontFamily", "Rubik") + fontMap.putString("fontStyle", "italic") + fontMap.putString("fontWeight", "bold") + + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + + verify(accessCheckoutEditTextMock).typeface = Typeface.create("Rubik", Typeface.BOLD_ITALIC) + } + + + @Test + fun `setRTCFont() should change the font weight on AccessEditText`() { + val fontMap = JavaOnlyMap() + fontMap.putString("fontFamily", "Rubik") + fontMap.putString("fontWeight", "100") + + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + + val expectedTypeface = Typeface.create("Rubik", Typeface.NORMAL); + verify(accessCheckoutEditTextMock).typeface = Typeface.create(expectedTypeface, 100, false) + } + + + @Test + fun `setRTCFont() should change the font weight and italic on AccessEditText`() { + val fontMap = JavaOnlyMap() + fontMap.putString("fontFamily", "Rubik") + fontMap.putString("fontStyle", "italic") + fontMap.putString("fontWeight", "100") + + manager.setRTCFont(accessCheckoutEditTextMock, fontMap) + + val expectedTypeface = Typeface.create("Rubik", Typeface.NORMAL); + verify(accessCheckoutEditTextMock).typeface = Typeface.create(expectedTypeface, 100, true) + } + + private fun reactApplicationContext(): ReactApplicationContext { val applicationContext: Context = ApplicationProvider.getApplicationContext() return ReactApplicationContext(applicationContext) diff --git a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx index eadb39d..84554ec 100644 --- a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx +++ b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { requireNativeComponent, type StyleProp, StyleSheet, View, type ViewStyle } from 'react-native'; +import { requireNativeComponent, type StyleProp, StyleSheet, type TextStyle, View, type ViewStyle } from 'react-native'; import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet'; /** @@ -20,29 +20,41 @@ interface AccessCheckoutTextInputProps { } /** - * Note: Not all properties apply styling to placeholder text and input text. + * Note: Not all properties apply styling to both placeholder text and input text. * textColor: only applies to input text. * fontFamily: applies to both placeholder text and input text. - * fontSize:applies to both placeholder text and input text. + * fontSize: applies to both placeholder text and input text. + * fontStyle: applies to both placeholder text and input text. + * fontWeight: applies to both placeholder text and input text. */ interface AccessCheckoutTextInputStyle extends ViewStyle { color?: ColorValue; fontFamily?: string; fontSize?: number; + fontStyle?: 'normal' | 'italic'; + // Specifies font weight. The values 'normal' and 'bold' are supported for most fonts. Not all fonts have a variant for each of the numeric values, in that case the closest one is chosen. + fontWeight?: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'; } /** * Font Changes apply to placeholder text and input text + * + * ## What + * - Rewrites font support for android + * - Adds font weight support for android <28 only 'normal' and 'bold' supported + * - Adds font weight support as units for android >28 */ interface RTCAccessCheckoutTextInputFontProps { fontFamily?: string; fontSize?: number; + fontStyle?: 'normal' | 'italic'; + fontWeight?: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'; } interface RTCAccessCheckoutTextInputProps { nativeID: string; testID?: string; - style?: StyleProp; + style?: StyleProp; placeholder?: string; font?: RTCAccessCheckoutTextInputFontProps; editable?: boolean; @@ -52,7 +64,7 @@ interface RTCAccessCheckoutTextInputProps { const RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput'); const AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => { const { nativeID, testID, style, placeholder, editable } = props; - const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([style]); + const { color, fontFamily, fontSize, fontStyle, fontWeight, ...otherStyles } = StyleSheet.flatten([style]); return ( { font={{ fontFamily, fontSize, + fontWeight, + fontStyle, }} color={color} editable={editable} From c95a27238e9d99c529cffc7e2ca5b32acffe6dd3 Mon Sep 17 00:00:00 2001 From: ochalet-wp <59016148+ochalet-wp@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:11:16 +0000 Subject: [PATCH 25/26] US1764780 - Within the README under the access-checkout-react-native-sdk folder, write a section on SAQ-A compliance and a section on AccessCheckoutTextInput which has a link to the documentation (#99) --- access-checkout-react-native-sdk/README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/access-checkout-react-native-sdk/README.md b/access-checkout-react-native-sdk/README.md index 91b27f8..0db5c4e 100644 --- a/access-checkout-react-native-sdk/README.md +++ b/access-checkout-react-native-sdk/README.md @@ -7,11 +7,11 @@ Create your own uniquely styled and branded checkout form by integrating our Rea This SDK is the first step to integrate with our Access Worldpay APIs into a React Native app. It is designed to simplify the integration of the following functionality in your checkout form: - validating the format of the card details entered by a customer -- generating a session (short-lived token representing a customer's card details) +- generating a session (short-lived token representing a customer's card details) ## Documentation -You can find the detailed documentation explaining how to integrate the SDK and use a session to take a payment starting with the [React Native section](https://developer.worldpay.com/docs/access-worldpay/checkout/react-native) of the [Access Worldpay documentation](https://developer.worldpay.com). +You can find the detailed documentation explaining how to integrate the SDK and use a session to take a payment starting with the [React Native section](https://developer.worldpay.com/docs/access-worldpay/checkout/react-native) of the [Access Worldpay Checkout documentation](https://developer.worldpay.com). ## Compatibility @@ -19,6 +19,15 @@ You can find the detailed documentation explaining how to integrate the SDK and - `React` version `>= 18.1.0` - `Cocoapods` only for iOS dependencies +## SAQ-A Compliance + +To support SAQ-A compliance when using our React Native SDK, we have created a new component called AccessCheckoutTextInput: +It has been designed so that it does not expose any methods or properties to retrieve the text entered by the end user to ensure our merchants applications do not have direct access to card details and are SAQ-A compliant. + +## AccessCheckoutTextInput + +You can find detailed documentation about our new component [AccessCheckoutTextInput](https://developer.worldpay.com/docs/access-worldpay/checkout/react-native/optional-configuration) within the [React Native section](https://developer.worldpay.com/docs/access-worldpay/checkout/react-native) of the [Access Worldpay Checkout documentation](https://developer.worldpay.com). + ## How to install Refer to [Get our SDK](https://developer.worldpay.com/docs/access-worldpay/checkout/react-native#get-our-sdk) in the React Native section of the [Access Worldpay documentation](https://developer.worldpay.com) From cf6f590be5c95442cb856972426f91035cecba16 Mon Sep 17 00:00:00 2001 From: abaeza-wp <153538325+abaeza-wp@users.noreply.github.com> Date: Mon, 5 Feb 2024 16:53:22 +0000 Subject: [PATCH 26/26] F253333: Export AccessCheckoutTextInput and props (#104) * F253333: Export AccessCheckoutTextInput and props * F253333: Add mock for requireNativeComponent --- .../lib/commonjs/hooks/useCardConfig.js.map | 2 +- .../lib/commonjs/index.js | 19 ++++++++++++++++++ .../lib/commonjs/index.js.map | 2 +- .../commonjs/ui/AccessCheckoutTextInput.js | 20 +++++++++++++++---- .../ui/AccessCheckoutTextInput.js.map | 2 +- .../lib/module/hooks/useCardConfig.js.map | 2 +- .../lib/module/index.js | 1 + .../lib/module/index.js.map | 2 +- .../lib/module/ui/AccessCheckoutTextInput.js | 19 ++++++++++++++---- .../module/ui/AccessCheckoutTextInput.js.map | 2 +- .../lib/typescript/hooks/useCardConfig.d.ts | 3 +-- .../lib/typescript/index.d.ts | 1 + .../ui/AccessCheckoutTextInput.d.ts | 17 +++++++++------- .../src/index.tsx | 6 ++++++ .../src/ui/AccessCheckoutTextInput.tsx | 17 +++++++++++----- .../test/__mocks__/react-native.ts | 8 +++++--- 16 files changed, 92 insertions(+), 31 deletions(-) diff --git a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map index 19cc101..92639f2 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/hooks/useCardConfig.js.map @@ -1 +1 @@ -{"version":3,"names":["_MerchantCardValidationConfig","require","_MerchantCardConfig","_interopRequireDefault","obj","__esModule","default","useCardConfig","props","cardConfig","MerchantCardConfig","panId","expiryDateId","cvcId","validationConfig","MerchantCardValidationConfig","acceptedCardBrands","enablePanFormatting","validationListener","exports"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig';\nimport MerchantCardConfig from '../config/MerchantCardConfig';\n\nexport interface CardValidationConfig {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n}\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: MerchantCardValidationConfig;\n}\n\nexport const useCardConfig = (props: UseCardConfig): MerchantCardConfig => {\n const cardConfig = new MerchantCardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new MerchantCardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":";;;;;;AACA,IAAAA,6BAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA8D,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAcvD,MAAMG,aAAa,GAAIC,KAAoB,IAAyB;EACzE,MAAMC,UAAU,GAAG,IAAIC,2BAAkB,CAAC;IACxCC,KAAK,EAAEH,KAAK,CAACG,KAAK;IAClBC,YAAY,EAAEJ,KAAK,CAACI,YAAY;IAChCC,KAAK,EAAEL,KAAK,CAACK;EACf,CAAC,CAAC;EAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;IAC1BL,UAAU,CAACK,gBAAgB,GAAG,IAAIC,0DAA4B,CAAC;MAC7DC,kBAAkB,EAAER,KAAK,CAACM,gBAAgB,CAACE,kBAAkB;MAC7DC,mBAAmB,EAAET,KAAK,CAACM,gBAAgB,CAACG,mBAAmB;MAC/DC,kBAAkB,EAAEV,KAAK,CAACM,gBAAgB,CAACI;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOT,UAAU;AACnB,CAAC;AAACU,OAAA,CAAAZ,aAAA,GAAAA,aAAA"} \ No newline at end of file +{"version":3,"names":["_MerchantCardValidationConfig","require","_MerchantCardConfig","_interopRequireDefault","obj","__esModule","default","useCardConfig","props","cardConfig","MerchantCardConfig","panId","expiryDateId","cvcId","validationConfig","MerchantCardValidationConfig","acceptedCardBrands","enablePanFormatting","validationListener","exports"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig';\nimport MerchantCardConfig from '../config/MerchantCardConfig';\n\nexport interface CardValidationConfig {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n}\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: CardValidationConfig;\n}\n\nexport const useCardConfig = (props: UseCardConfig): MerchantCardConfig => {\n const cardConfig = new MerchantCardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new MerchantCardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":";;;;;;AACA,IAAAA,6BAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA8D,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAcvD,MAAMG,aAAa,GAAIC,KAAoB,IAAyB;EACzE,MAAMC,UAAU,GAAG,IAAIC,2BAAkB,CAAC;IACxCC,KAAK,EAAEH,KAAK,CAACG,KAAK;IAClBC,YAAY,EAAEJ,KAAK,CAACI,YAAY;IAChCC,KAAK,EAAEL,KAAK,CAACK;EACf,CAAC,CAAC;EAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;IAC1BL,UAAU,CAACK,gBAAgB,GAAG,IAAIC,0DAA4B,CAAC;MAC7DC,kBAAkB,EAAER,KAAK,CAACM,gBAAgB,CAACE,kBAAkB;MAC7DC,mBAAmB,EAAET,KAAK,CAACM,gBAAgB,CAACG,mBAAmB;MAC/DC,kBAAkB,EAAEV,KAAK,CAACM,gBAAgB,CAACI;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOT,UAAU;AACnB,CAAC;AAACU,OAAA,CAAAZ,aAAA,GAAAA,aAAA"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js b/access-checkout-react-native-sdk/lib/commonjs/index.js index 92cacca..31dd4f4 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js @@ -9,6 +9,24 @@ Object.defineProperty(exports, "AccessCheckout", { return _AccessCheckout.default; } }); +Object.defineProperty(exports, "AccessCheckoutTextInput", { + enumerable: true, + get: function () { + return _AccessCheckoutTextInput.AccessCheckoutTextInput; + } +}); +Object.defineProperty(exports, "AccessCheckoutTextInputProps", { + enumerable: true, + get: function () { + return _AccessCheckoutTextInput.AccessCheckoutTextInputProps; + } +}); +Object.defineProperty(exports, "AccessCheckoutTextInputStyle", { + enumerable: true, + get: function () { + return _AccessCheckoutTextInput.AccessCheckoutTextInputStyle; + } +}); Object.defineProperty(exports, "Brand", { enumerable: true, get: function () { @@ -158,6 +176,7 @@ var _MerchantCardValidationConfig = require("./validation/MerchantCardValidation var _useCardConfig = require("./hooks/useCardConfig"); var _useCvcOnlyConfig = require("./hooks/useCvcOnlyConfig"); var _useAccessCheckout = require("./hooks/useAccessCheckout"); +var _AccessCheckoutTextInput = require("./ui/AccessCheckoutTextInput"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/access-checkout-react-native-sdk/lib/commonjs/index.js.map b/access-checkout-react-native-sdk/lib/commonjs/index.js.map index a0073cc..8b6b1b6 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/index.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/index.js.map @@ -1 +1 @@ -{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_Brand","_BrandImage","_MerchantCardConfig","_MerchantCvcOnlyConfig","_CardValidationEventListener","_CvcOnlyValidationEventListener","_MerchantCvcOnlyValidationConfig","_MerchantCardValidationConfig","_useCardConfig","_useCvcOnlyConfig","_useAccessCheckout","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/MerchantCardConfig';\nexport { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig';\nexport { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig';\n\nexport { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig';\n\nexport { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,mBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,sBAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AACA,IAAAW,+BAAA,GAAAX,OAAA;AAEA,IAAAY,gCAAA,GAAAZ,OAAA;AACA,IAAAa,6BAAA,GAAAb,OAAA;AAEA,IAAAc,cAAA,GAAAd,OAAA;AACA,IAAAe,iBAAA,GAAAf,OAAA;AAEA,IAAAgB,kBAAA,GAAAhB,OAAA;AAA2G,SAAAiB,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAd,wBAAAc,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAA3B,uBAAAuC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GAzB5FkB,kCAAyB"} \ No newline at end of file +{"version":3,"names":["_AccessCheckoutReactNative","_interopRequireDefault","require","_AccessCheckout","_SessionGenerationConfig","_SessionType","_interopRequireWildcard","_Sessions","_Brand","_BrandImage","_MerchantCardConfig","_MerchantCvcOnlyConfig","_CardValidationEventListener","_CvcOnlyValidationEventListener","_MerchantCvcOnlyValidationConfig","_MerchantCardValidationConfig","_useCardConfig","_useCvcOnlyConfig","_useAccessCheckout","_AccessCheckoutTextInput","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_default","exports","AccessCheckoutReactNative"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/MerchantCardConfig';\nexport { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig';\nexport { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig';\n\nexport { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig';\n\nexport { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout';\n\nexport {\n AccessCheckoutTextInput,\n AccessCheckoutTextInputStyle,\n AccessCheckoutTextInputProps,\n} from './ui/AccessCheckoutTextInput';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,wBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,YAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,MAAA,GAAAP,sBAAA,CAAAC,OAAA;AAEA,IAAAO,WAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,mBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,sBAAA,GAAAV,sBAAA,CAAAC,OAAA;AAEA,IAAAU,4BAAA,GAAAV,OAAA;AACA,IAAAW,+BAAA,GAAAX,OAAA;AAEA,IAAAY,gCAAA,GAAAZ,OAAA;AACA,IAAAa,6BAAA,GAAAb,OAAA;AAEA,IAAAc,cAAA,GAAAd,OAAA;AACA,IAAAe,iBAAA,GAAAf,OAAA;AAEA,IAAAgB,kBAAA,GAAAhB,OAAA;AAEA,IAAAiB,wBAAA,GAAAjB,OAAA;AAIsC,SAAAkB,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAf,wBAAAe,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAA5B,uBAAAwC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAjB,OAAA,GA/BvBkB,kCAAyB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js index c4825bb..6689475 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = void 0; +exports.default = exports.AccessCheckoutTextInput = void 0; var _react = _interopRequireDefault(require("react")); var _reactNative = require("react-native"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -18,14 +18,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de */ /** - * Note: Not all properties apply styling to placeholder text and input text. + * Note: Not all properties apply styling to both placeholder text and input text. * textColor: only applies to input text. * fontFamily: applies to both placeholder text and input text. - * fontSize:applies to both placeholder text and input text. + * fontSize: applies to both placeholder text and input text. + * fontStyle: applies to both placeholder text and input text. + * fontWeight: applies to both placeholder text and input text. */ /** * Font Changes apply to placeholder text and input text + * + * ## What + * - Rewrites font support for android + * - Adds font weight support for android <28 only 'normal' and 'bold' supported + * - Adds font weight support as units for android >28 */ const RTCAccessCheckoutTextInput = (0, _reactNative.requireNativeComponent)('AccessCheckoutTextInput'); @@ -41,6 +48,8 @@ const AccessCheckoutTextInput = props => { color, fontFamily, fontSize, + fontStyle, + fontWeight, ...otherStyles } = _reactNative.StyleSheet.flatten([style]); return /*#__PURE__*/_react.default.createElement(_reactNative.View, { @@ -54,11 +63,14 @@ const AccessCheckoutTextInput = props => { placeholder: placeholder, font: { fontFamily, - fontSize + fontSize, + fontWeight, + fontStyle }, color: color, editable: editable })); }; +exports.AccessCheckoutTextInput = AccessCheckoutTextInput; var _default = exports.default = AccessCheckoutTextInput; //# sourceMappingURL=AccessCheckoutTextInput.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map index 2cc553b..a2f3d7c 100644 --- a/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map +++ b/access-checkout-react-native-sdk/lib/commonjs/ui/AccessCheckoutTextInput.js.map @@ -1 +1 @@ -{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","otherStyles","StyleSheet","flatten","createElement","View","flex","font","_default","exports"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport { requireNativeComponent, type StyleProp, StyleSheet, View, type ViewStyle } from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput');\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAwG,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMG,0BAA0B,GAAG,IAAAC,mCAAsB,EAAkC,yBAAyB,CAAC;AACrH,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GAAGC,uBAAU,CAACC,OAAO,CAAC,CAACR,KAAK,CAAC,CAAC;EACnF,oBACEb,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACnB,YAAA,CAAAoB,IAAI;IAACV,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBnB,MAAA,CAAAM,OAAA,CAAAgB,aAAA,CAACf,0BAA0B;IACzBI,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAEW,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBV,WAAW,EAAEA,WAAY;IACzBW,IAAI,EAAE;MACJR,UAAU;MACVC;IACF,CAAE;IACFF,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAAC,IAAAW,QAAA,GAAAC,OAAA,CAAArB,OAAA,GAEaG,uBAAuB"} \ No newline at end of file +{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","RTCAccessCheckoutTextInput","requireNativeComponent","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","fontStyle","fontWeight","otherStyles","StyleSheet","flatten","createElement","View","flex","font","exports","_default"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type ColorValue,\n type StyleProp,\n StyleSheet,\n type TextStyle,\n View,\n type ViewStyle,\n} from 'react-native';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\nexport interface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to both placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize: applies to both placeholder text and input text.\n * fontStyle: applies to both placeholder text and input text.\n * fontWeight: applies to both placeholder text and input text.\n */\nexport interface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n fontStyle?: 'normal' | 'italic';\n // Specifies font weight. The values 'normal' and 'bold' are supported for most fonts. Not all fonts have a variant for each of the numeric values, in that case the closest one is chosen.\n fontWeight?: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n *\n * ## What\n * - Rewrites font support for android\n * - Adds font weight support for android <28 only 'normal' and 'bold' supported\n * - Adds font weight support as units for android >28\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n fontStyle?: 'normal' | 'italic';\n fontWeight?: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput');\nexport const AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, fontStyle, fontWeight, ...otherStyles } = StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAQsB,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAkBA,MAAMG,0BAA0B,GAAG,IAAAC,mCAAsB,EAAkC,yBAAyB,CAAC;AAC9G,MAAMC,uBAAuB,GAAIC,KAAmC,IAAK;EAC9E,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAEC,SAAS;IAAEC,UAAU;IAAE,GAAGC;EAAY,CAAC,GAAGC,uBAAU,CAACC,OAAO,CAAC,CAACV,KAAK,CAAC,CAAC;EAC1G,oBACEb,MAAA,CAAAM,OAAA,CAAAkB,aAAA,CAACrB,YAAA,CAAAsB,IAAI;IAACZ,KAAK,EAAE,CAACQ,WAAW;EAAE,gBACzBrB,MAAA,CAAAM,OAAA,CAAAkB,aAAA,CAACjB,0BAA0B;IACzBI,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAEa,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBZ,WAAW,EAAEA,WAAY;IACzBa,IAAI,EAAE;MACJV,UAAU;MACVC,QAAQ;MACRE,UAAU;MACVD;IACF,CAAE;IACFH,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAACa,OAAA,CAAAnB,uBAAA,GAAAA,uBAAA;AAAA,IAAAoB,QAAA,GAAAD,OAAA,CAAAtB,OAAA,GAEaG,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map index 2de5685..9bc4aed 100644 --- a/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map +++ b/access-checkout-react-native-sdk/lib/module/hooks/useCardConfig.js.map @@ -1 +1 @@ -{"version":3,"names":["MerchantCardValidationConfig","MerchantCardConfig","useCardConfig","props","cardConfig","panId","expiryDateId","cvcId","validationConfig","acceptedCardBrands","enablePanFormatting","validationListener"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig';\nimport MerchantCardConfig from '../config/MerchantCardConfig';\n\nexport interface CardValidationConfig {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n}\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: MerchantCardValidationConfig;\n}\n\nexport const useCardConfig = (props: UseCardConfig): MerchantCardConfig => {\n const cardConfig = new MerchantCardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new MerchantCardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":"AACA,SAASA,4BAA4B,QAAQ,4CAA4C;AACzF,OAAOC,kBAAkB,MAAM,8BAA8B;AAc7D,OAAO,MAAMC,aAAa,GAAIC,KAAoB,IAAyB;EACzE,MAAMC,UAAU,GAAG,IAAIH,kBAAkB,CAAC;IACxCI,KAAK,EAAEF,KAAK,CAACE,KAAK;IAClBC,YAAY,EAAEH,KAAK,CAACG,YAAY;IAChCC,KAAK,EAAEJ,KAAK,CAACI;EACf,CAAC,CAAC;EAEF,IAAIJ,KAAK,CAACK,gBAAgB,EAAE;IAC1BJ,UAAU,CAACI,gBAAgB,GAAG,IAAIR,4BAA4B,CAAC;MAC7DS,kBAAkB,EAAEN,KAAK,CAACK,gBAAgB,CAACC,kBAAkB;MAC7DC,mBAAmB,EAAEP,KAAK,CAACK,gBAAgB,CAACE,mBAAmB;MAC/DC,kBAAkB,EAAER,KAAK,CAACK,gBAAgB,CAACG;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOP,UAAU;AACnB,CAAC"} \ No newline at end of file +{"version":3,"names":["MerchantCardValidationConfig","MerchantCardConfig","useCardConfig","props","cardConfig","panId","expiryDateId","cvcId","validationConfig","acceptedCardBrands","enablePanFormatting","validationListener"],"sources":["useCardConfig.ts"],"sourcesContent":["import type { CardValidationEventListener } from '../validation/CardValidationEventListener';\nimport { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig';\nimport MerchantCardConfig from '../config/MerchantCardConfig';\n\nexport interface CardValidationConfig {\n acceptedCardBrands?: string[];\n enablePanFormatting?: boolean;\n validationListener: CardValidationEventListener;\n}\nexport interface UseCardConfig {\n panId: string;\n expiryDateId: string;\n cvcId: string;\n validationConfig?: CardValidationConfig;\n}\n\nexport const useCardConfig = (props: UseCardConfig): MerchantCardConfig => {\n const cardConfig = new MerchantCardConfig({\n panId: props.panId,\n expiryDateId: props.expiryDateId,\n cvcId: props.cvcId,\n });\n\n if (props.validationConfig) {\n cardConfig.validationConfig = new MerchantCardValidationConfig({\n acceptedCardBrands: props.validationConfig.acceptedCardBrands,\n enablePanFormatting: props.validationConfig.enablePanFormatting,\n validationListener: props.validationConfig.validationListener,\n });\n }\n\n return cardConfig;\n};\n"],"mappings":"AACA,SAASA,4BAA4B,QAAQ,4CAA4C;AACzF,OAAOC,kBAAkB,MAAM,8BAA8B;AAc7D,OAAO,MAAMC,aAAa,GAAIC,KAAoB,IAAyB;EACzE,MAAMC,UAAU,GAAG,IAAIH,kBAAkB,CAAC;IACxCI,KAAK,EAAEF,KAAK,CAACE,KAAK;IAClBC,YAAY,EAAEH,KAAK,CAACG,YAAY;IAChCC,KAAK,EAAEJ,KAAK,CAACI;EACf,CAAC,CAAC;EAEF,IAAIJ,KAAK,CAACK,gBAAgB,EAAE;IAC1BJ,UAAU,CAACI,gBAAgB,GAAG,IAAIR,4BAA4B,CAAC;MAC7DS,kBAAkB,EAAEN,KAAK,CAACK,gBAAgB,CAACC,kBAAkB;MAC7DC,mBAAmB,EAAEP,KAAK,CAACK,gBAAgB,CAACE,mBAAmB;MAC/DC,kBAAkB,EAAER,KAAK,CAACK,gBAAgB,CAACG;IAC7C,CAAC,CAAC;EACJ;EAEA,OAAOP,UAAU;AACnB,CAAC"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js b/access-checkout-react-native-sdk/lib/module/index.js index c7b47a0..9a20825 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js +++ b/access-checkout-react-native-sdk/lib/module/index.js @@ -15,4 +15,5 @@ export { MerchantCardValidationConfig } from './validation/MerchantCardValidatio export { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig'; export { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig'; export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout'; +export { AccessCheckoutTextInput, AccessCheckoutTextInputStyle, AccessCheckoutTextInputProps } from './ui/AccessCheckoutTextInput'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/index.js.map b/access-checkout-react-native-sdk/lib/module/index.js.map index abcbac0..b0a434d 100644 --- a/access-checkout-react-native-sdk/lib/module/index.js.map +++ b/access-checkout-react-native-sdk/lib/module/index.js.map @@ -1 +1 @@ -{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","Brand","BrandImage","CardConfig","CvcOnlyConfig","CardValidationEventListener","CvcOnlyValidationEventListener","MerchantCvcOnlyValidationConfig","MerchantCardValidationConfig","useCardConfig","UseCardConfig","CardValidationConfig","useCvcOnlyConfig","UseCvcOnlyConfig","CvcOnlyValidationConfig","useAccessCheckout","UseAccessCheckout","UseAccessCheckoutExports"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/MerchantCardConfig';\nexport { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig';\nexport { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig';\n\nexport { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig';\n\nexport { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,KAAK,QAAQ,oBAAoB;AAErD,SAASP,OAAO,IAAIQ,UAAU,QAAQ,yBAAyB;AAC/D,SAASR,OAAO,IAAIS,UAAU,QAAQ,6BAA6B;AACnE,SAAST,OAAO,IAAIU,aAAa,QAAQ,gCAAgC;AAEzE,SAASC,2BAA2B,QAAQ,0CAA0C;AACtF,SAASC,8BAA8B,QAAQ,6CAA6C;AAE5F,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,4BAA4B,QAAQ,2CAA2C;AAExF,SAASC,aAAa,EAAEC,aAAa,EAAEC,oBAAoB,QAAQ,uBAAuB;AAC1F,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,uBAAuB,QAAQ,0BAA0B;AAEtG,SAASC,iBAAiB,EAAEC,iBAAiB,EAAEC,wBAAwB,QAAQ,2BAA2B"} \ No newline at end of file +{"version":3,"names":["AccessCheckoutReactNative","default","AccessCheckout","SessionGenerationConfig","SessionType","CARD","CVC","Sessions","Brand","BrandImage","CardConfig","CvcOnlyConfig","CardValidationEventListener","CvcOnlyValidationEventListener","MerchantCvcOnlyValidationConfig","MerchantCardValidationConfig","useCardConfig","UseCardConfig","CardValidationConfig","useCvcOnlyConfig","UseCvcOnlyConfig","CvcOnlyValidationConfig","useAccessCheckout","UseAccessCheckout","UseAccessCheckoutExports","AccessCheckoutTextInput","AccessCheckoutTextInputStyle","AccessCheckoutTextInputProps"],"sources":["index.tsx"],"sourcesContent":["import AccessCheckoutReactNative from './AccessCheckoutReactNative';\n\nexport default AccessCheckoutReactNative;\n\nexport { default as AccessCheckout } from './AccessCheckout';\n\nexport { default as SessionGenerationConfig } from './session/SessionGenerationConfig';\n\nexport { default as SessionType, CARD, CVC } from './session/SessionType';\n\nexport { default as Sessions } from './session/Sessions';\n\nexport { default as Brand } from './validation/Brand';\n\nexport { default as BrandImage } from './validation/BrandImage';\nexport { default as CardConfig } from './config/MerchantCardConfig';\nexport { default as CvcOnlyConfig } from './config/MerchantCvcOnlyConfig';\n\nexport { CardValidationEventListener } from './validation/CardValidationEventListener';\nexport { CvcOnlyValidationEventListener } from './validation/CvcOnlyValidationEventListener';\n\nexport { MerchantCvcOnlyValidationConfig } from './validation/MerchantCvcOnlyValidationConfig';\nexport { MerchantCardValidationConfig } from './validation/MerchantCardValidationConfig';\n\nexport { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig';\nexport { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig';\n\nexport { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout';\n\nexport {\n AccessCheckoutTextInput,\n AccessCheckoutTextInputStyle,\n AccessCheckoutTextInputProps,\n} from './ui/AccessCheckoutTextInput';\n"],"mappings":"AAAA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,eAAeA,yBAAyB;AAExC,SAASC,OAAO,IAAIC,cAAc,QAAQ,kBAAkB;AAE5D,SAASD,OAAO,IAAIE,uBAAuB,QAAQ,mCAAmC;AAEtF,SAASF,OAAO,IAAIG,WAAW,EAAEC,IAAI,EAAEC,GAAG,QAAQ,uBAAuB;AAEzE,SAASL,OAAO,IAAIM,QAAQ,QAAQ,oBAAoB;AAExD,SAASN,OAAO,IAAIO,KAAK,QAAQ,oBAAoB;AAErD,SAASP,OAAO,IAAIQ,UAAU,QAAQ,yBAAyB;AAC/D,SAASR,OAAO,IAAIS,UAAU,QAAQ,6BAA6B;AACnE,SAAST,OAAO,IAAIU,aAAa,QAAQ,gCAAgC;AAEzE,SAASC,2BAA2B,QAAQ,0CAA0C;AACtF,SAASC,8BAA8B,QAAQ,6CAA6C;AAE5F,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,4BAA4B,QAAQ,2CAA2C;AAExF,SAASC,aAAa,EAAEC,aAAa,EAAEC,oBAAoB,QAAQ,uBAAuB;AAC1F,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,uBAAuB,QAAQ,0BAA0B;AAEtG,SAASC,iBAAiB,EAAEC,iBAAiB,EAAEC,wBAAwB,QAAQ,2BAA2B;AAE1G,SACEC,uBAAuB,EACvBC,4BAA4B,EAC5BC,4BAA4B,QACvB,8BAA8B"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js index 48c0453..0f69df2 100644 --- a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js @@ -12,18 +12,25 @@ import { requireNativeComponent, StyleSheet, View } from 'react-native'; */ /** - * Note: Not all properties apply styling to placeholder text and input text. + * Note: Not all properties apply styling to both placeholder text and input text. * textColor: only applies to input text. * fontFamily: applies to both placeholder text and input text. - * fontSize:applies to both placeholder text and input text. + * fontSize: applies to both placeholder text and input text. + * fontStyle: applies to both placeholder text and input text. + * fontWeight: applies to both placeholder text and input text. */ /** * Font Changes apply to placeholder text and input text + * + * ## What + * - Rewrites font support for android + * - Adds font weight support for android <28 only 'normal' and 'bold' supported + * - Adds font weight support as units for android >28 */ const RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput'); -const AccessCheckoutTextInput = props => { +export const AccessCheckoutTextInput = props => { const { nativeID, testID, @@ -35,6 +42,8 @@ const AccessCheckoutTextInput = props => { color, fontFamily, fontSize, + fontStyle, + fontWeight, ...otherStyles } = StyleSheet.flatten([style]); return /*#__PURE__*/React.createElement(View, { @@ -48,7 +57,9 @@ const AccessCheckoutTextInput = props => { placeholder: placeholder, font: { fontFamily, - fontSize + fontSize, + fontWeight, + fontStyle }, color: color, editable: editable diff --git a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map index c623652..cda308f 100644 --- a/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map +++ b/access-checkout-react-native-sdk/lib/module/ui/AccessCheckoutTextInput.js.map @@ -1 +1 @@ -{"version":3,"names":["React","requireNativeComponent","StyleSheet","View","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","otherStyles","flatten","createElement","flex","font"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport { requireNativeComponent, type StyleProp, StyleSheet, View, type ViewStyle } from 'react-native';\nimport type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\ninterface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize:applies to both placeholder text and input text.\n */\ninterface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput');\nconst AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, ...otherStyles } = StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,sBAAsB,EAAkBC,UAAU,EAAEC,IAAI,QAAwB,cAAc;;AAGvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;;AAgBA,MAAMC,0BAA0B,GAAGH,sBAAsB,CAAkC,yBAAyB,CAAC;AACrH,MAAMI,uBAAuB,GAAIC,KAAmC,IAAK;EACvE,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAE,GAAGC;EAAY,CAAC,GAAGb,UAAU,CAACc,OAAO,CAAC,CAACP,KAAK,CAAC,CAAC;EACnF,oBACET,KAAA,CAAAiB,aAAA,CAACd,IAAI;IAACM,KAAK,EAAE,CAACM,WAAW;EAAE,gBACzBf,KAAA,CAAAiB,aAAA,CAACb,0BAA0B;IACzBG,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAES,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBR,WAAW,EAAEA,WAAY;IACzBS,IAAI,EAAE;MACJN,UAAU;MACVC;IACF,CAAE;IACFF,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAED,eAAeN,uBAAuB"} \ No newline at end of file +{"version":3,"names":["React","requireNativeComponent","StyleSheet","View","RTCAccessCheckoutTextInput","AccessCheckoutTextInput","props","nativeID","testID","style","placeholder","editable","color","fontFamily","fontSize","fontStyle","fontWeight","otherStyles","flatten","createElement","flex","font"],"sources":["AccessCheckoutTextInput.tsx"],"sourcesContent":["import React from 'react';\nimport {\n requireNativeComponent,\n type ColorValue,\n type StyleProp,\n StyleSheet,\n type TextStyle,\n View,\n type ViewStyle,\n} from 'react-native';\n\n/**\n * Composes `AccessCheckoutTextInput`.\n *\n * - nativeID: string\n * - testID: string\n * - style: StyleProp;\n * - placeholder: string\n * - editable: boolean\n */\nexport interface AccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n editable?: boolean;\n}\n\n/**\n * Note: Not all properties apply styling to both placeholder text and input text.\n * textColor: only applies to input text.\n * fontFamily: applies to both placeholder text and input text.\n * fontSize: applies to both placeholder text and input text.\n * fontStyle: applies to both placeholder text and input text.\n * fontWeight: applies to both placeholder text and input text.\n */\nexport interface AccessCheckoutTextInputStyle extends ViewStyle {\n color?: ColorValue;\n fontFamily?: string;\n fontSize?: number;\n fontStyle?: 'normal' | 'italic';\n // Specifies font weight. The values 'normal' and 'bold' are supported for most fonts. Not all fonts have a variant for each of the numeric values, in that case the closest one is chosen.\n fontWeight?: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\n}\n\n/**\n * Font Changes apply to placeholder text and input text\n *\n * ## What\n * - Rewrites font support for android\n * - Adds font weight support for android <28 only 'normal' and 'bold' supported\n * - Adds font weight support as units for android >28\n */\ninterface RTCAccessCheckoutTextInputFontProps {\n fontFamily?: string;\n fontSize?: number;\n fontStyle?: 'normal' | 'italic';\n fontWeight?: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\n}\n\ninterface RTCAccessCheckoutTextInputProps {\n nativeID: string;\n testID?: string;\n style?: StyleProp;\n placeholder?: string;\n font?: RTCAccessCheckoutTextInputFontProps;\n editable?: boolean;\n color?: ColorValue;\n}\n\nconst RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput');\nexport const AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => {\n const { nativeID, testID, style, placeholder, editable } = props;\n const { color, fontFamily, fontSize, fontStyle, fontWeight, ...otherStyles } = StyleSheet.flatten([style]);\n return (\n \n \n \n );\n};\n\nexport default AccessCheckoutTextInput;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,sBAAsB,EAGtBC,UAAU,EAEVC,IAAI,QAEC,cAAc;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAkBA,MAAMC,0BAA0B,GAAGH,sBAAsB,CAAkC,yBAAyB,CAAC;AACrH,OAAO,MAAMI,uBAAuB,GAAIC,KAAmC,IAAK;EAC9E,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGL,KAAK;EAChE,MAAM;IAAEM,KAAK;IAAEC,UAAU;IAAEC,QAAQ;IAAEC,SAAS;IAAEC,UAAU;IAAE,GAAGC;EAAY,CAAC,GAAGf,UAAU,CAACgB,OAAO,CAAC,CAACT,KAAK,CAAC,CAAC;EAC1G,oBACET,KAAA,CAAAmB,aAAA,CAAChB,IAAI;IAACM,KAAK,EAAE,CAACQ,WAAW;EAAE,gBACzBjB,KAAA,CAAAmB,aAAA,CAACf,0BAA0B;IACzBG,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAE,CAAC;MAAEW,IAAI,EAAE;IAAE,CAAC,CAAE;IACrBV,WAAW,EAAEA,WAAY;IACzBW,IAAI,EAAE;MACJR,UAAU;MACVC,QAAQ;MACRE,UAAU;MACVD;IACF,CAAE;IACFH,KAAK,EAAEA,KAAM;IACbD,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC;AAED,eAAeN,uBAAuB"} \ No newline at end of file diff --git a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts index 667cd1a..cee96af 100644 --- a/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/hooks/useCardConfig.d.ts @@ -1,5 +1,4 @@ import type { CardValidationEventListener } from '../validation/CardValidationEventListener'; -import { MerchantCardValidationConfig } from '../validation/MerchantCardValidationConfig'; import MerchantCardConfig from '../config/MerchantCardConfig'; export interface CardValidationConfig { acceptedCardBrands?: string[]; @@ -10,6 +9,6 @@ export interface UseCardConfig { panId: string; expiryDateId: string; cvcId: string; - validationConfig?: MerchantCardValidationConfig; + validationConfig?: CardValidationConfig; } export declare const useCardConfig: (props: UseCardConfig) => MerchantCardConfig; diff --git a/access-checkout-react-native-sdk/lib/typescript/index.d.ts b/access-checkout-react-native-sdk/lib/typescript/index.d.ts index 0f5fddd..a693057 100644 --- a/access-checkout-react-native-sdk/lib/typescript/index.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/index.d.ts @@ -15,3 +15,4 @@ export { MerchantCardValidationConfig } from './validation/MerchantCardValidatio export { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useCardConfig'; export { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig'; export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout'; +export { AccessCheckoutTextInput, AccessCheckoutTextInputStyle, AccessCheckoutTextInputProps, } from './ui/AccessCheckoutTextInput'; diff --git a/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts b/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts index db3846e..e4f6183 100644 --- a/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts +++ b/access-checkout-react-native-sdk/lib/typescript/ui/AccessCheckoutTextInput.d.ts @@ -1,6 +1,5 @@ import React from 'react'; -import { type StyleProp, type ViewStyle } from 'react-native'; -import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet'; +import { type ColorValue, type StyleProp, type ViewStyle } from 'react-native'; /** * Composes `AccessCheckoutTextInput`. * @@ -10,7 +9,7 @@ import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet'; * - placeholder: string * - editable: boolean */ -interface AccessCheckoutTextInputProps { +export interface AccessCheckoutTextInputProps { nativeID: string; testID?: string; style?: StyleProp; @@ -18,15 +17,19 @@ interface AccessCheckoutTextInputProps { editable?: boolean; } /** - * Note: Not all properties apply styling to placeholder text and input text. + * Note: Not all properties apply styling to both placeholder text and input text. * textColor: only applies to input text. * fontFamily: applies to both placeholder text and input text. - * fontSize:applies to both placeholder text and input text. + * fontSize: applies to both placeholder text and input text. + * fontStyle: applies to both placeholder text and input text. + * fontWeight: applies to both placeholder text and input text. */ -interface AccessCheckoutTextInputStyle extends ViewStyle { +export interface AccessCheckoutTextInputStyle extends ViewStyle { color?: ColorValue; fontFamily?: string; fontSize?: number; + fontStyle?: 'normal' | 'italic'; + fontWeight?: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'; } -declare const AccessCheckoutTextInput: (props: AccessCheckoutTextInputProps) => React.JSX.Element; +export declare const AccessCheckoutTextInput: (props: AccessCheckoutTextInputProps) => React.JSX.Element; export default AccessCheckoutTextInput; diff --git a/access-checkout-react-native-sdk/src/index.tsx b/access-checkout-react-native-sdk/src/index.tsx index b9fc213..9e3b7a5 100644 --- a/access-checkout-react-native-sdk/src/index.tsx +++ b/access-checkout-react-native-sdk/src/index.tsx @@ -26,3 +26,9 @@ export { useCardConfig, UseCardConfig, CardValidationConfig } from './hooks/useC export { useCvcOnlyConfig, UseCvcOnlyConfig, CvcOnlyValidationConfig } from './hooks/useCvcOnlyConfig'; export { useAccessCheckout, UseAccessCheckout, UseAccessCheckoutExports } from './hooks/useAccessCheckout'; + +export { + AccessCheckoutTextInput, + AccessCheckoutTextInputStyle, + AccessCheckoutTextInputProps, +} from './ui/AccessCheckoutTextInput'; diff --git a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx index 84554ec..21f1968 100644 --- a/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx +++ b/access-checkout-react-native-sdk/src/ui/AccessCheckoutTextInput.tsx @@ -1,6 +1,13 @@ import React from 'react'; -import { requireNativeComponent, type StyleProp, StyleSheet, type TextStyle, View, type ViewStyle } from 'react-native'; -import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet'; +import { + requireNativeComponent, + type ColorValue, + type StyleProp, + StyleSheet, + type TextStyle, + View, + type ViewStyle, +} from 'react-native'; /** * Composes `AccessCheckoutTextInput`. @@ -11,7 +18,7 @@ import type { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet'; * - placeholder: string * - editable: boolean */ -interface AccessCheckoutTextInputProps { +export interface AccessCheckoutTextInputProps { nativeID: string; testID?: string; style?: StyleProp; @@ -27,7 +34,7 @@ interface AccessCheckoutTextInputProps { * fontStyle: applies to both placeholder text and input text. * fontWeight: applies to both placeholder text and input text. */ -interface AccessCheckoutTextInputStyle extends ViewStyle { +export interface AccessCheckoutTextInputStyle extends ViewStyle { color?: ColorValue; fontFamily?: string; fontSize?: number; @@ -62,7 +69,7 @@ interface RTCAccessCheckoutTextInputProps { } const RTCAccessCheckoutTextInput = requireNativeComponent('AccessCheckoutTextInput'); -const AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => { +export const AccessCheckoutTextInput = (props: AccessCheckoutTextInputProps) => { const { nativeID, testID, style, placeholder, editable } = props; const { color, fontFamily, fontSize, fontStyle, fontWeight, ...otherStyles } = StyleSheet.flatten([style]); return ( diff --git a/access-checkout-react-native-sdk/test/__mocks__/react-native.ts b/access-checkout-react-native-sdk/test/__mocks__/react-native.ts index ef3486d..76ae4d8 100644 --- a/access-checkout-react-native-sdk/test/__mocks__/react-native.ts +++ b/access-checkout-react-native-sdk/test/__mocks__/react-native.ts @@ -42,9 +42,7 @@ export const NativeEventEmitter = jest.fn(() => ({ listener: (event: any) => void ): EmitterSubscription { // eslint-disable-next-line prettier/prettier - if ( - !Object.prototype.hasOwnProperty.call(nativeEventListeners, eventType) - ) { + if (!Object.prototype.hasOwnProperty.call(nativeEventListeners, eventType)) { nativeEventListeners[eventType] = []; } @@ -56,10 +54,14 @@ export const NativeEventEmitter = jest.fn(() => ({ }, })); +export const requireNativeComponent = jest.fn(() => { + return false; +}); export default Object.setPrototypeOf( { NativeModules, NativeEventEmitter, + requireNativeComponent, }, ReactNative );