diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 12857078eb8e..6f8142a6403a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -303,7 +303,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - Plaid (5.2.1) + - Plaid (5.6.0) - PromisesObjC (2.4.0) - RCT-Folly (2022.05.16.00): - boost @@ -1420,10 +1420,10 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-plaid-link-sdk (11.5.0): + - react-native-plaid-link-sdk (11.11.0): - glog - hermes-engine - - Plaid (~> 5.2.0) + - Plaid (~> 5.6.0) - RCT-Folly (= 2022.05.16.00) - RCTRequired - RCTTypeSafety @@ -2553,7 +2553,7 @@ SPEC CHECKSUMS: nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 Onfido: f3af62ea1c9a419589c133e3e511e5d2c4f3f8af onfido-react-native-sdk: 3e3b0dd70afa97410fb318d54c6a415137968ef2 - Plaid: 7829e84db6d766a751c91a402702946d2977ddcb + Plaid: c32f22ffce5ec67c9e6147eaf6c4d7d5f8086d89 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 RCTRequired: ab7f915c15569f04a49669e573e6e319a53f9faa @@ -2591,7 +2591,7 @@ SPEC CHECKSUMS: react-native-pager-view: c7372cab7caef173f7f81d78520fe21f08805020 react-native-pdf: 762369633665ec02ac227aefe2f4558b92475c23 react-native-performance: fb21ff0c9bd7a10789c69d948f25b0067d29f7a9 - react-native-plaid-link-sdk: 2a91ef7e257ae16d180a1ca14ba3041ae0836fbf + react-native-plaid-link-sdk: ba40d1b13cca4b946974fafd9ae278e0fb697d87 react-native-quick-sqlite: e3ab3e0a29d8c705f47a60aaa6ceaa42eb6a9ec1 react-native-release-profiler: a77d4f291b92e48d3d4a574deed19bd1b513ac98 react-native-render-html: 96c979fe7452a0a41559685d2f83b12b93edac8c diff --git a/package-lock.json b/package-lock.json index c017941c7ce6..94e5ad0e3b74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -108,7 +108,7 @@ "react-native-performance": "^5.1.0", "react-native-permissions": "^3.10.0", "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#da50d2c5c54e268499047f9cc98b8df4196c1ddf", - "react-native-plaid-link-sdk": "11.5.0", + "react-native-plaid-link-sdk": "11.11.0", "react-native-qrcode-svg": "^6.2.0", "react-native-quick-sqlite": "git+https://github.com/margelo/react-native-quick-sqlite#abc91857d4b3efb2020ec43abd2a508563b64316", "react-native-reanimated": "^3.8.0", @@ -37517,9 +37517,9 @@ } }, "node_modules/react-native-plaid-link-sdk": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/react-native-plaid-link-sdk/-/react-native-plaid-link-sdk-11.5.0.tgz", - "integrity": "sha512-B3fwujxBS9nZwadXFcseU3nrYG7Ptob6p9eG/gXde65cqwErMaq2k1rVv3R17s/rpKnmU5Cx5pKOMmkxPUn08w==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/react-native-plaid-link-sdk/-/react-native-plaid-link-sdk-11.11.0.tgz", + "integrity": "sha512-Kmimhr6iOwCtIzsW7gygz48TzaZsdjnpgstJ2PM1q+THulOnx+BnkFu8UpLIGGkVe19E4wkxOAYL8kJ8vefNSQ==", "peerDependencies": { "react": "*", "react-native": "*" diff --git a/package.json b/package.json index ef68efaa31a4..7ffde430369c 100644 --- a/package.json +++ b/package.json @@ -163,7 +163,7 @@ "react-native-performance": "^5.1.0", "react-native-permissions": "^3.10.0", "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#da50d2c5c54e268499047f9cc98b8df4196c1ddf", - "react-native-plaid-link-sdk": "11.5.0", + "react-native-plaid-link-sdk": "11.11.0", "react-native-qrcode-svg": "^6.2.0", "react-native-quick-sqlite": "git+https://github.com/margelo/react-native-quick-sqlite#abc91857d4b3efb2020ec43abd2a508563b64316", "react-native-reanimated": "^3.8.0", diff --git a/patches/react-native-plaid-link-sdk+11.5.0+001+initial.patch b/patches/react-native-plaid-link-sdk+11.5.0+001+initial.patch deleted file mode 100644 index 6035477256b7..000000000000 --- a/patches/react-native-plaid-link-sdk+11.5.0+001+initial.patch +++ /dev/null @@ -1,4 +0,0 @@ -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.m b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm -similarity index 100% -rename from node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.m -rename to node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm diff --git a/patches/react-native-plaid-link-sdk+11.5.0+002+turbomodule.patch b/patches/react-native-plaid-link-sdk+11.5.0+002+turbomodule.patch deleted file mode 100644 index 7d5aab6c84cf..000000000000 --- a/patches/react-native-plaid-link-sdk+11.5.0+002+turbomodule.patch +++ /dev/null @@ -1,3287 +0,0 @@ -diff --git a/node_modules/react-native-plaid-link-sdk/README.md b/node_modules/react-native-plaid-link-sdk/README.md -index 93ebca6..7bea608 100644 ---- a/node_modules/react-native-plaid-link-sdk/README.md -+++ b/node_modules/react-native-plaid-link-sdk/README.md -@@ -49,7 +49,6 @@ cd ios && bundle install && bundle exec pod install - - AutoLinking should handle all of the Android setup. - -- - ### React Native Setup - - - To initialize `PlaidLink`, you will need to first create a `link_token` at [/link/token/create](https://plaid.com/docs/#create-link-token). Check out our [QuickStart guide](https://plaid.com/docs/quickstart/#introduction) for additional API information. -@@ -58,7 +57,13 @@ AutoLinking should handle all of the Android setup. - - ```javascript - import { Text } from 'react-native'; --import { PlaidLink, LinkSuccess, LinkExit, LinkLogLevel, LinkIOSPresentationStyle } from 'react-native-plaid-link-sdk'; -+import { -+ PlaidLink, -+ LinkSuccess, -+ LinkExit, -+ LinkLogLevel, -+ LinkIOSPresentationStyle, -+} from 'react-native-plaid-link-sdk'; - - const MyPlaidComponent = () => { - return ( -@@ -77,7 +82,7 @@ const MyPlaidComponent = () => { - // UI is always presented in full screen on Android. - iOSPresentationStyle={LinkIOSPresentationStyle.MODAL} - > -- Add Account -+ Add Account - - ); - }; -@@ -92,6 +97,7 @@ const MyPlaidComponent = () => { - ##### Android OAuth Requirements - - ###### Register your app package name -+ - 1. Log into your [Plaid Dashboard](https://dashboard.plaid.com/developers/api) and navigate to the API page under the Developers tab. - 2. Next to Allowed Android package names click "Configure" then "Add New Android Package Name". - 3. Enter your package name, for example `com.plaid.example`. -@@ -100,17 +106,16 @@ const MyPlaidComponent = () => { - ##### iOS OAuth Requirements - - For iOS OAuth to work, specific requirements must be met. -+ - 1. Redirect URIs must be [registered](https://plaid.com/docs/link/ios/#register-your-redirect-uri), and set up as [universal links](https://developer.apple.com/documentation/xcode/supporting-associated-domains). - 2. Your native iOS application, must be configured with your associated domain. See your iOS [set up universal links](https://plaid.com/docs/link/ios/#set-up-universal-links) for more information. - -- - ##### Link Token OAuth Requirements - - - On iOS you must configure your `link_token` with a [redirect_uri](https://plaid.com/docs/api/tokens/#link-token-create-request-redirect-uri) to support OAuth. When creating a `link_token` for initializing Link on Android, `android_package_name` must be specified and `redirect_uri` must be left blank. - - - On Android you must configure your `link_token` with an [android_package_name](https://plaid.com/docs/api/tokens/#link-token-create-request-android-package-name) to support OAuth. When creating a `link_token` for initializing Link on iOS, `android_package_name` must be left blank and `redirect_uri` should be used instead. - -- - #### To receive onEvent callbacks: - - The React Native Plaid module emits `onEvent` events throughout the account linking process — see [details here](https://plaid.com/docs/link/react-native/#onevent). To receive these events in your React Native app, wrap the `PlaidLink` react component with the following in order to listen for those events: -@@ -139,9 +144,9 @@ class PlaidEventContainer extends React.Component { - You can also use the `usePlaidEmitter` hook in react functional components: - - ```javascript -- usePlaidEmitter((event: LinkEvent) => { -- console.log(event) -- }) -+usePlaidEmitter((event: LinkEvent) => { -+ console.log(event); -+}); - ``` - - ## Upgrading -@@ -165,6 +170,8 @@ While these older versions are expected to continue to work without disruption, - | 11.0.2 | * | [4.0.0+] | 21 | 33 | >=5.0.0 | 14.0 | Active, supports Xcode 15.0.1 | - | 11.0.1 | * | [4.0.0+] | 21 | 33 | >=5.0.0 | 14.0 | Active, supports Xcode 15.0.1 | - | 11.0.0 | * | [4.0.0+] | 21 | 33 | >=5.0.0 | 14.0 | Active, supports Xcode 15.0.1 | -+| 10.13.0 | >= 0.66.0 | [3.14.3+] | 21 | 33 | >=4.7.2 | 11.0 | Active, supports Xcode 14 | -+| 10.12.0 | >= 0.66.0 | [3.14.3+] | 21 | 33 | >=4.7.1 | 11.0 | Active, supports Xcode 14 | - | 10.11.0 | >= 0.66.0 | [3.14.1+] | 21 | 33 | >=4.7.1 | 11.0 | Active, supports Xcode 14 | - | ~10.10.0~ | >= 0.66.0 | [3.14.2+] | 21 | 33 | >=4.7.1 | 11.0 | **Deprecated** | - | 10.9.1 | >= 0.66.0 | [3.14.1+] | 21 | 33 | >=4.7.0 | 11.0 | Active, supports Xcode 14 | -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/checksums.lock b/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/checksums.lock -deleted file mode 100644 -index b5da584..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/checksums.lock and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/md5-checksums.bin b/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/md5-checksums.bin -deleted file mode 100644 -index ef608b4..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/md5-checksums.bin and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/sha1-checksums.bin b/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/sha1-checksums.bin -deleted file mode 100644 -index 0856ae4..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/checksums/sha1-checksums.bin and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock b/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock -deleted file mode 100644 -index 12aea68..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/dependencies-accessors/gc.properties b/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/dependencies-accessors/gc.properties -deleted file mode 100644 -index e69de29..0000000 -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/fileChanges/last-build.bin b/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/fileChanges/last-build.bin -deleted file mode 100644 -index f76dd23..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/fileChanges/last-build.bin and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/fileHashes/fileHashes.lock b/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/fileHashes/fileHashes.lock -deleted file mode 100644 -index 752a252..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/fileHashes/fileHashes.lock and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/gc.properties b/node_modules/react-native-plaid-link-sdk/android/.gradle/7.4.2/gc.properties -deleted file mode 100644 -index e69de29..0000000 -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/node_modules/react-native-plaid-link-sdk/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock -deleted file mode 100644 -index 470ca89..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/buildOutputCleanup/cache.properties b/node_modules/react-native-plaid-link-sdk/android/.gradle/buildOutputCleanup/cache.properties -deleted file mode 100644 -index 1439672..0000000 ---- a/node_modules/react-native-plaid-link-sdk/android/.gradle/buildOutputCleanup/cache.properties -+++ /dev/null -@@ -1,2 +0,0 @@ --#Thu Nov 09 09:41:17 PST 2023 --gradle.version=7.4.2 -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/checksums.lock b/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/checksums.lock -deleted file mode 100644 -index 34602e1..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/checksums.lock and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/md5-checksums.bin b/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/md5-checksums.bin -deleted file mode 100644 -index 2420123..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/md5-checksums.bin and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/sha1-checksums.bin b/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/sha1-checksums.bin -deleted file mode 100644 -index 1081852..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/android/.gradle/checksums/sha1-checksums.bin and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/android/.gradle/vcs-1/gc.properties b/node_modules/react-native-plaid-link-sdk/android/.gradle/vcs-1/gc.properties -deleted file mode 100644 -index e69de29..0000000 -diff --git a/node_modules/react-native-plaid-link-sdk/android/.idea/gradle.xml b/node_modules/react-native-plaid-link-sdk/android/.idea/gradle.xml -deleted file mode 100644 -index 0364d75..0000000 ---- a/node_modules/react-native-plaid-link-sdk/android/.idea/gradle.xml -+++ /dev/null -@@ -1,14 +0,0 @@ -- -- -- -- -- -- -- -\ No newline at end of file -diff --git a/node_modules/react-native-plaid-link-sdk/android/.idea/misc.xml b/node_modules/react-native-plaid-link-sdk/android/.idea/misc.xml -deleted file mode 100644 -index a318cae..0000000 ---- a/node_modules/react-native-plaid-link-sdk/android/.idea/misc.xml -+++ /dev/null -@@ -1,9 +0,0 @@ -- -- -- -- -- -- -- -- -\ No newline at end of file -diff --git a/node_modules/react-native-plaid-link-sdk/android/.idea/vcs.xml b/node_modules/react-native-plaid-link-sdk/android/.idea/vcs.xml -deleted file mode 100644 -index 6c0b863..0000000 ---- a/node_modules/react-native-plaid-link-sdk/android/.idea/vcs.xml -+++ /dev/null -@@ -1,6 +0,0 @@ -- -- -- -- -- -- -\ No newline at end of file -diff --git a/node_modules/react-native-plaid-link-sdk/android/build.gradle b/node_modules/react-native-plaid-link-sdk/android/build.gradle -index 2d9e2ce..e88208b 100644 ---- a/node_modules/react-native-plaid-link-sdk/android/build.gradle -+++ b/node_modules/react-native-plaid-link-sdk/android/build.gradle -@@ -12,7 +12,12 @@ allprojects { - - - buildscript { -- ext.kotlin_version = '1.8.22' -+ ext { -+ kotlin_version = '1.8.22' -+ } -+ ext.safeExtGet = {prop, fallback -> -+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback -+ } - repositories { - google() - mavenCentral() -@@ -25,10 +30,32 @@ buildscript { - } - } - -+def isNewArchitectureEnabled() { -+ // To opt-in for the New Architecture, you can either: -+ // - Set `newArchEnabled` to true inside the `gradle.properties` file -+ // - Invoke gradle with `-newArchEnabled=true` -+ // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` -+ return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" -+} -+ -+if (isNewArchitectureEnabled()) { -+ apply plugin: "com.facebook.react" -+} -+ - apply plugin: 'com.android.library' - apply plugin: "kotlin-android" - - android { -+ -+ // Used to override the NDK path/version on internal CI or by allowing -+ // users to customize the NDK path/version from their root project (e.g. for M1 support) -+ if (rootProject.hasProperty("ndkPath")) { -+ ndkPath rootProject.ext.ndkPath -+ } -+ if (rootProject.hasProperty("ndkVersion")) { -+ ndkVersion rootProject.ext.ndkVersion -+ } -+ - def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger() - if (agpVersion >= 7) { - namespace 'com.plaid' -@@ -52,6 +79,14 @@ android { - } - } - -+ sourceSets.main { -+ java { -+ if (!isNewArchitectureEnabled()) { -+ srcDirs += 'src/paper/java' -+ } -+ } -+ } -+ - buildTypes { - release { - debuggable = false -diff --git a/node_modules/react-native-plaid-link-sdk/android/local.properties b/node_modules/react-native-plaid-link-sdk/android/local.properties -deleted file mode 100644 -index 0b4e321..0000000 ---- a/node_modules/react-native-plaid-link-sdk/android/local.properties -+++ /dev/null -@@ -1,8 +0,0 @@ --## This file must *NOT* be checked into Version Control Systems, --# as it contains information specific to your local configuration. --# --# Location of the SDK. This is only used by Gradle. --# For customization when using a Version Control System, please read the --# header note. --#Fri Aug 11 13:58:32 PDT 2023 --sdk.dir=/Users/dtroupe/Library/Android/sdk -diff --git a/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PLKEmbeddedViewManager.kt b/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PLKEmbeddedViewManager.kt -index c73011f..66fd266 100644 ---- a/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PLKEmbeddedViewManager.kt -+++ b/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PLKEmbeddedViewManager.kt -@@ -19,9 +19,9 @@ class PLKEmbeddedViewManager : SimpleViewManager() { - } - - override fun getExportedCustomBubblingEventTypeConstants(): Map { -- return mapOf( -- EVENT_NAME to mapOf( -- "phasedRegistrationNames" to mapOf( -+ return mutableMapOf( -+ EVENT_NAME to mutableMapOf( -+ "phasedRegistrationNames" to mutableMapOf( - "bubbled" to EVENT_NAME - ) - )) -diff --git a/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PlaidModule.kt b/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PlaidModule.kt -index 293374a..b79352e 100644 ---- a/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PlaidModule.kt -+++ b/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PlaidModule.kt -@@ -24,9 +24,9 @@ import org.json.JSONException - import org.json.JSONObject - import java.util.ArrayList - --@ReactModule(name = PlaidModule.TAG) -+@ReactModule(name = PlaidModule.NAME) - class PlaidModule internal constructor(reactContext: ReactApplicationContext) : -- ReactContextBaseJavaModule(reactContext), ActivityEventListener { -+ NativePlaidLinkModuleAndroidSpec(reactContext), ActivityEventListener { - - val mActivityResultManager by lazy { ActivityResultManager() } - -@@ -38,11 +38,11 @@ class PlaidModule internal constructor(reactContext: ReactApplicationContext) : - companion object { - private const val LINK_TOKEN_PREFIX = "link" - -- const val TAG = "PlaidAndroid" -+ const val NAME = "PlaidAndroid" - } - - override fun getName(): String { -- return PlaidModule.TAG -+ return NAME - } - - override fun initialize() { -@@ -78,7 +78,7 @@ class PlaidModule internal constructor(reactContext: ReactApplicationContext) : - - @ReactMethod - @Suppress("unused") -- fun startLinkActivityForResult( -+ override fun startLinkActivityForResult( - token: String, - noLoadingState: Boolean, - logLevel: String, -@@ -113,6 +113,10 @@ class PlaidModule internal constructor(reactContext: ReactApplicationContext) : - } - } - -+ override fun addListener(eventName: String?) = Unit -+ -+ override fun removeListeners(count: Double) = Unit -+ - private fun maybeGetStringField(obj: JSONObject, fieldName: String): String? { - if (obj.has(fieldName) && !TextUtils.isEmpty(obj.getString(fieldName))) { - return obj.getString(fieldName) -diff --git a/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PlaidPackage.java b/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PlaidPackage.java -index c59299e..d6b310e 100644 ---- a/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PlaidPackage.java -+++ b/node_modules/react-native-plaid-link-sdk/android/src/main/java/com/plaid/PlaidPackage.java -@@ -6,19 +6,54 @@ import java.util.List; - import java.util.Map; - - import com.facebook.react.TurboReactPackage; -+import com.facebook.react.ViewManagerOnDemandReactPackage; -+import com.facebook.react.bridge.ModuleSpec; - import com.facebook.react.bridge.NativeModule; - import com.facebook.react.bridge.ReactApplicationContext; -+import com.facebook.react.module.annotations.ReactModule; -+import com.facebook.react.module.annotations.ReactModuleList; - import com.facebook.react.module.model.ReactModuleInfo; - import com.facebook.react.module.model.ReactModuleInfoProvider; -+import com.facebook.react.turbomodule.core.interfaces.TurboModule; - import com.facebook.react.uimanager.ViewManager; - --@SuppressWarnings("unused") --public class PlaidPackage extends TurboReactPackage { -+import javax.annotation.Nonnull; -+import javax.annotation.Nullable; - -+@ReactModuleList(nativeModules = {PlaidModule.class}) -+public class PlaidPackage extends TurboReactPackage implements ViewManagerOnDemandReactPackage { -+ -+ /** -+ * {@inheritDoc} -+ */ -+ @Override -+ public List getViewManagerNames(ReactApplicationContext reactContext) { -+ return null; -+ } -+ -+ @Override -+ protected List getViewManagers(ReactApplicationContext reactContext) { -+ return null; -+ } -+ -+ /** -+ * {@inheritDoc} -+ */ - @Override -- public NativeModule getModule( -- String name, ReactApplicationContext reactContext) { -- return new PlaidModule(reactContext); -+ public @Nullable -+ ViewManager createViewManager( -+ ReactApplicationContext reactContext, String viewManagerName) { -+ return null; -+ } -+ -+ @Override -+ public NativeModule getModule(String name, @Nonnull ReactApplicationContext reactContext) { -+ switch (name) { -+ case PlaidModule.NAME: -+ return new PlaidModule(reactContext); -+ default: -+ return null; -+ } - } - - @Override -@@ -28,19 +63,44 @@ public class PlaidPackage extends TurboReactPackage { - - @Override - public ReactModuleInfoProvider getReactModuleInfoProvider() { -- return () -> { -- Map map = new HashMap<>(); -- map.put( -- "PlaidAndroid", -- new ReactModuleInfo( -- "PlaidAndroid", -- "com.reactlibrary.PlaidModule", -- false, -- false, -- true, -- false, -- false)); -- return map; -- }; -+ try { -+ Class reactModuleInfoProviderClass = -+ Class.forName("com.plaid.PlaidPackage$$ReactModuleInfoProvider"); -+ return (ReactModuleInfoProvider) reactModuleInfoProviderClass.newInstance(); -+ } catch (ClassNotFoundException e) { -+ // ReactModuleSpecProcessor does not run at build-time. Create this ReactModuleInfoProvider by -+ // hand. -+ return new ReactModuleInfoProvider() { -+ @Override -+ public Map getReactModuleInfos() { -+ final Map reactModuleInfoMap = new HashMap<>(); -+ -+ Class[] moduleList = -+ new Class[]{ -+ PlaidModule.class, -+ }; -+ -+ for (Class moduleClass : moduleList) { -+ ReactModule reactModule = moduleClass.getAnnotation(ReactModule.class); -+ -+ reactModuleInfoMap.put( -+ reactModule.name(), -+ new ReactModuleInfo( -+ reactModule.name(), -+ moduleClass.getName(), -+ reactModule.canOverrideExistingModule(), -+ reactModule.needsEagerInit(), -+ reactModule.hasConstants(), -+ reactModule.isCxxModule(), -+ TurboModule.class.isAssignableFrom(moduleClass))); -+ } -+ -+ return reactModuleInfoMap; -+ } -+ }; -+ } catch (InstantiationException | IllegalAccessException e) { -+ throw new RuntimeException( -+ "No ReactModuleInfoProvider for com.plaid.PlaidPackage$$ReactModuleInfoProvider", e); -+ } - } - } -diff --git a/node_modules/react-native-plaid-link-sdk/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java b/node_modules/react-native-plaid-link-sdk/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java -new file mode 100644 -index 0000000..fee5a11 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java -@@ -0,0 +1,46 @@ -+ -+/** -+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). -+ * -+ * Do not edit this file as changes may cause incorrect behavior and will be lost -+ * once the code is regenerated. -+ * -+ * @generated by codegen project: GenerateModuleJavaSpec.js -+ * -+ * @nolint -+ */ -+ -+package com.plaid; -+ -+import com.facebook.proguard.annotations.DoNotStrip; -+import com.facebook.react.bridge.Callback; -+import com.facebook.react.bridge.ReactApplicationContext; -+import com.facebook.react.bridge.ReactContextBaseJavaModule; -+import com.facebook.react.bridge.ReactMethod; -+import com.facebook.react.turbomodule.core.interfaces.TurboModule; -+import javax.annotation.Nonnull; -+ -+public abstract class NativePlaidLinkModuleAndroidSpec extends ReactContextBaseJavaModule implements TurboModule { -+ public static final String NAME = "PlaidAndroid"; -+ -+ public NativePlaidLinkModuleAndroidSpec(ReactApplicationContext reactContext) { -+ super(reactContext); -+ } -+ -+ @Override -+ public @Nonnull String getName() { -+ return NAME; -+ } -+ -+ @ReactMethod -+ @DoNotStrip -+ public abstract void startLinkActivityForResult(String token, boolean noLoadingState, String logLevel, Callback onSuccessCallback, Callback onExitCallback); -+ -+ @ReactMethod -+ @DoNotStrip -+ public abstract void addListener(String eventName); -+ -+ @ReactMethod -+ @DoNotStrip -+ public abstract void removeListeners(double count); -+} -diff --git a/node_modules/react-native-plaid-link-sdk/dist/EmbeddedLink/EmbeddedLinkView.js b/node_modules/react-native-plaid-link-sdk/dist/EmbeddedLink/EmbeddedLinkView.js -index c7b1e96..c429da7 100644 ---- a/node_modules/react-native-plaid-link-sdk/dist/EmbeddedLink/EmbeddedLinkView.js -+++ b/node_modules/react-native-plaid-link-sdk/dist/EmbeddedLink/EmbeddedLinkView.js -@@ -1,55 +1,69 @@ - import React from 'react'; - import NativeEmbeddedLinkView from './NativeEmbeddedLinkView'; - class EmbeddedEvent { -- constructor(event) { -- this.eventName = event.eventName; -- this.metadata = event.metadata; -- } -+ constructor(event) { -+ this.eventName = event.eventName; -+ this.metadata = event.metadata; -+ } - } - class EmbeddedExit { -- constructor(event) { -- this.error = event.error; -- this.metadata = event.metadata; -- } -+ constructor(event) { -+ this.error = event.error; -+ this.metadata = event.metadata; -+ } - } - class EmbeddedSuccess { -- constructor(event) { -- this.publicToken = event.publicToken; -- this.metadata = event.metadata; -- } -+ constructor(event) { -+ this.publicToken = event.publicToken; -+ this.metadata = event.metadata; -+ } - } --export const EmbeddedLinkView = (props) => { -- const { token, iOSPresentationStyle, onEvent, onSuccess, onExit, style } = props; -- const onEmbeddedEvent = (event) => { -- switch (event.nativeEvent.embeddedEventName) { -- case 'onSuccess': { -- if (!onSuccess) { -- return; -- } -- const embeddedSuccess = new EmbeddedSuccess(event.nativeEvent); -- onSuccess(embeddedSuccess); -- break; -- } -- case 'onExit': { -- if (!onExit) { -- return; -- } -- const embeddedExit = new EmbeddedExit(event.nativeEvent); -- onExit(embeddedExit); -- break; -- } -- case 'onEvent': { -- if (!onEvent) { -- return; -- } -- const embeddedEvent = new EmbeddedEvent(event.nativeEvent); -- onEvent(embeddedEvent); -- break; -- } -- default: { -- return; -- } -+export const EmbeddedLinkView = props => { -+ const { -+ token, -+ iOSPresentationStyle, -+ onEvent, -+ onSuccess, -+ onExit, -+ style, -+ } = props; -+ const onEmbeddedEvent = event => { -+ switch (event.nativeEvent.embeddedEventName) { -+ case 'onSuccess': { -+ if (!onSuccess) { -+ return; - } -- }; -- return ; -+ const embeddedSuccess = new EmbeddedSuccess(event.nativeEvent); -+ onSuccess(embeddedSuccess); -+ break; -+ } -+ case 'onExit': { -+ if (!onExit) { -+ return; -+ } -+ const embeddedExit = new EmbeddedExit(event.nativeEvent); -+ onExit(embeddedExit); -+ break; -+ } -+ case 'onEvent': { -+ if (!onEvent) { -+ return; -+ } -+ const embeddedEvent = new EmbeddedEvent(event.nativeEvent); -+ onEvent(embeddedEvent); -+ break; -+ } -+ default: { -+ return; -+ } -+ } -+ }; -+ return ( -+ -+ ); - }; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/PlaidLink.d.ts b/node_modules/react-native-plaid-link-sdk/dist/PlaidLink.d.ts -index a48b319..43205dd 100644 ---- a/node_modules/react-native-plaid-link-sdk/dist/PlaidLink.d.ts -+++ b/node_modules/react-native-plaid-link-sdk/dist/PlaidLink.d.ts -@@ -4,9 +4,9 @@ import { LinkEventListener, PlaidLinkComponentProps, PlaidLinkProps } from './Ty - * A hook that registers a listener on the Plaid emitter for the 'onEvent' type. - * The listener is cleaned up when this view is unmounted - * -- * @param LinkEventListener the listener to call -+ * @param linkEventListener the listener to call - */ --export declare const usePlaidEmitter: (LinkEventListener: LinkEventListener) => void; -+export declare const usePlaidEmitter: (linkEventListener: LinkEventListener) => void; - export declare const openLink: (props: PlaidLinkProps) => Promise; - export declare const dismissLink: () => void; - export declare const PlaidLink: (props: PlaidLinkComponentProps) => React.JSX.Element; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/PlaidLink.js b/node_modules/react-native-plaid-link-sdk/dist/PlaidLink.js -index 21da2bc..6c43633 100644 ---- a/node_modules/react-native-plaid-link-sdk/dist/PlaidLink.js -+++ b/node_modules/react-native-plaid-link-sdk/dist/PlaidLink.js -@@ -1,83 +1,146 @@ --var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { -- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } -- return new (P || (P = Promise))(function (resolve, reject) { -- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } -- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } -- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } -- step((generator = generator.apply(thisArg, _arguments || [])).next()); -+var __awaiter = -+ (this && this.__awaiter) || -+ function(thisArg, _arguments, P, generator) { -+ function adopt(value) { -+ return value instanceof P -+ ? value -+ : new P(function(resolve) { -+ resolve(value); -+ }); -+ } -+ return new (P || (P = Promise))(function(resolve, reject) { -+ function fulfilled(value) { -+ try { -+ step(generator.next(value)); -+ } catch (e) { -+ reject(e); -+ } -+ } -+ function rejected(value) { -+ try { -+ step(generator['throw'](value)); -+ } catch (e) { -+ reject(e); -+ } -+ } -+ function step(result) { -+ result.done -+ ? resolve(result.value) -+ : adopt(result.value).then(fulfilled, rejected); -+ } -+ step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); --}; -+ }; -+var _a; - import React, { useEffect } from 'react'; --import { NativeEventEmitter, NativeModules, Platform, TouchableOpacity, } from 'react-native'; --import { LinkIOSPresentationStyle, LinkLogLevel, } from './Types'; -+import { NativeEventEmitter, Platform, TouchableOpacity } from 'react-native'; -+import { LinkIOSPresentationStyle, LinkLogLevel } from './Types'; -+import RNLinksdkAndroid from './fabric/NativePlaidLinkModuleAndroid'; -+import RNLinksdkiOS from './fabric/NativePlaidLinkModuleiOS'; -+const RNLinksdk = -+ (_a = Platform.OS === 'android' ? RNLinksdkAndroid : RNLinksdkiOS) !== null && -+ _a !== void 0 -+ ? _a -+ : undefined; - /** - * A hook that registers a listener on the Plaid emitter for the 'onEvent' type. - * The listener is cleaned up when this view is unmounted - * -- * @param LinkEventListener the listener to call -+ * @param linkEventListener the listener to call - */ --export const usePlaidEmitter = (LinkEventListener) => { -- useEffect(() => { -- const emitter = new NativeEventEmitter(Platform.OS === 'ios' -- ? NativeModules.RNLinksdk -- : NativeModules.PlaidAndroid); -- const listener = emitter.addListener('onEvent', LinkEventListener); -- // Clean up after this effect: -- return function cleanup() { -- listener.remove(); -- }; -- }, []); -+export const usePlaidEmitter = linkEventListener => { -+ useEffect(() => { -+ const emitter = new NativeEventEmitter(RNLinksdk); -+ const listener = emitter.addListener('onEvent', linkEventListener); -+ // Clean up after this effect: -+ return function cleanup() { -+ listener.remove(); -+ }; -+ }, []); - }; --export const openLink = (props) => __awaiter(void 0, void 0, void 0, function* () { -- var _a, _b; -+export const openLink = props => -+ __awaiter(void 0, void 0, void 0, function*() { -+ var _b, _c; - let config = props.tokenConfig; -- let noLoadingState = (_a = config.noLoadingState) !== null && _a !== void 0 ? _a : false; -+ let noLoadingState = -+ (_b = config.noLoadingState) !== null && _b !== void 0 ? _b : false; - if (Platform.OS === 'android') { -- NativeModules.PlaidAndroid.startLinkActivityForResult(config.token, noLoadingState, (_b = config.logLevel) !== null && _b !== void 0 ? _b : LinkLogLevel.ERROR, (result) => { -- if (props.onSuccess != null) { -- props.onSuccess(result); -- } -- }, (result) => { -- if (props.onExit != null) { -- if (result.error != null && result.error.displayMessage != null) { -- //TODO(RNSDK-118): Remove errorDisplayMessage field in next major update. -- result.error.errorDisplayMessage = result.error.displayMessage; -- } -- props.onExit(result); -+ if (RNLinksdkAndroid === null) { -+ throw new Error( -+ '[react-native-plaid-link-sdk] RNLinksdkAndroid is not defined', -+ ); -+ } -+ RNLinksdkAndroid.startLinkActivityForResult( -+ config.token, -+ noLoadingState, -+ (_c = config.logLevel) !== null && _c !== void 0 -+ ? _c -+ : LinkLogLevel.ERROR, -+ // @ts-ignore we use Object type in the spec file as it maps to NSDictionary and ReadableMap -+ result => { -+ if (props.onSuccess != null) { -+ props.onSuccess(result); -+ } -+ }, -+ result => { -+ if (props.onExit != null) { -+ if (result.error != null && result.error.displayMessage != null) { -+ //TODO(RNSDK-118): Remove errorDisplayMessage field in next major update. -+ result.error.errorDisplayMessage = result.error.displayMessage; - } -- }); -- } -- else { -- NativeModules.RNLinksdk.create(config.token, noLoadingState); -- let presentFullScreen = props.iOSPresentationStyle == LinkIOSPresentationStyle.FULL_SCREEN; -- NativeModules.RNLinksdk.open(presentFullScreen, (result) => { -- if (props.onSuccess != null) { -- props.onSuccess(result); -- } -- }, (error, result) => { -- if (props.onExit != null) { -- if (error) { -- var data = result || {}; -- data.error = error; -- props.onExit(data); -- } -- else { -- props.onExit(result); -- } -+ props.onExit(result); -+ } -+ }, -+ ); -+ } else { -+ if (RNLinksdkiOS === null) { -+ throw new Error( -+ '[react-native-plaid-link-sdk] RNLinksdkiOS is not defined', -+ ); -+ } -+ RNLinksdkiOS.create(config.token, noLoadingState); -+ let presentFullScreen = -+ props.iOSPresentationStyle == LinkIOSPresentationStyle.FULL_SCREEN; -+ RNLinksdkiOS.open( -+ presentFullScreen, -+ // @ts-ignore we use Object type in the spec file as it maps to NSDictionary and ReadableMap -+ result => { -+ if (props.onSuccess != null) { -+ props.onSuccess(result); -+ } -+ }, -+ (error, result) => { -+ if (props.onExit != null) { -+ if (error) { -+ var data = result || {}; -+ data.error = error; -+ props.onExit(data); -+ } else { -+ props.onExit(result); - } -- }); -+ } -+ }, -+ ); - } --}); -+ }); - export const dismissLink = () => { -- if (Platform.OS === 'ios') { -- NativeModules.RNLinksdk.dismiss(); -+ if (Platform.OS === 'ios') { -+ if (RNLinksdkiOS === null) { -+ throw new Error( -+ '[react-native-plaid-link-sdk] RNLinksdkiOS is not defined', -+ ); - } -+ RNLinksdkiOS.dismiss(); -+ } - }; --export const PlaidLink = (props) => { -- function onPress() { -- var _a; -- (_a = props.onPress) === null || _a === void 0 ? void 0 : _a.call(props); -- openLink(props); -- } -- return {props.children}; -+export const PlaidLink = props => { -+ function onPress() { -+ var _a; -+ (_a = props.onPress) === null || _a === void 0 ? void 0 : _a.call(props); -+ openLink(props); -+ } -+ return ( -+ // @ts-ignore some types directories misconfiguration -+ {props.children} -+ ); - }; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/Types.js b/node_modules/react-native-plaid-link-sdk/dist/Types.js -index 184adad..11b34e3 100644 ---- a/node_modules/react-native-plaid-link-sdk/dist/Types.js -+++ b/node_modules/react-native-plaid-link-sdk/dist/Types.js -@@ -1,430 +1,681 @@ - export var LinkLogLevel; --(function (LinkLogLevel) { -- LinkLogLevel["DEBUG"] = "debug"; -- LinkLogLevel["INFO"] = "info"; -- LinkLogLevel["WARN"] = "warn"; -- LinkLogLevel["ERROR"] = "error"; -+(function(LinkLogLevel) { -+ LinkLogLevel['DEBUG'] = 'debug'; -+ LinkLogLevel['INFO'] = 'info'; -+ LinkLogLevel['WARN'] = 'warn'; -+ LinkLogLevel['ERROR'] = 'error'; - })(LinkLogLevel || (LinkLogLevel = {})); - export var PlaidEnvironment; --(function (PlaidEnvironment) { -- PlaidEnvironment["PRODUCTION"] = "production"; -- PlaidEnvironment["DEVELOPMENT"] = "development"; -- PlaidEnvironment["SANDBOX"] = "sandbox"; -+(function(PlaidEnvironment) { -+ PlaidEnvironment['PRODUCTION'] = 'production'; -+ PlaidEnvironment['DEVELOPMENT'] = 'development'; -+ PlaidEnvironment['SANDBOX'] = 'sandbox'; - })(PlaidEnvironment || (PlaidEnvironment = {})); - export var PlaidProduct; --(function (PlaidProduct) { -- PlaidProduct["ASSETS"] = "assets"; -- PlaidProduct["AUTH"] = "auth"; -- PlaidProduct["DEPOSIT_SWITCH"] = "deposit_switch"; -- PlaidProduct["IDENTITY"] = "identity"; -- PlaidProduct["INCOME"] = "income"; -- PlaidProduct["INVESTMENTS"] = "investments"; -- PlaidProduct["LIABILITIES"] = "liabilities"; -- PlaidProduct["LIABILITIES_REPORT"] = "liabilities_report"; -- PlaidProduct["PAYMENT_INITIATION"] = "payment_initiation"; -- PlaidProduct["TRANSACTIONS"] = "transactions"; -+(function(PlaidProduct) { -+ PlaidProduct['ASSETS'] = 'assets'; -+ PlaidProduct['AUTH'] = 'auth'; -+ PlaidProduct['DEPOSIT_SWITCH'] = 'deposit_switch'; -+ PlaidProduct['IDENTITY'] = 'identity'; -+ PlaidProduct['INCOME'] = 'income'; -+ PlaidProduct['INVESTMENTS'] = 'investments'; -+ PlaidProduct['LIABILITIES'] = 'liabilities'; -+ PlaidProduct['LIABILITIES_REPORT'] = 'liabilities_report'; -+ PlaidProduct['PAYMENT_INITIATION'] = 'payment_initiation'; -+ PlaidProduct['TRANSACTIONS'] = 'transactions'; - })(PlaidProduct || (PlaidProduct = {})); - export var LinkAccountType; --(function (LinkAccountType) { -- LinkAccountType["CREDIT"] = "credit"; -- LinkAccountType["DEPOSITORY"] = "depository"; -- LinkAccountType["INVESTMENT"] = "investment"; -- LinkAccountType["LOAN"] = "loan"; -- LinkAccountType["OTHER"] = "other"; -+(function(LinkAccountType) { -+ LinkAccountType['CREDIT'] = 'credit'; -+ LinkAccountType['DEPOSITORY'] = 'depository'; -+ LinkAccountType['INVESTMENT'] = 'investment'; -+ LinkAccountType['LOAN'] = 'loan'; -+ LinkAccountType['OTHER'] = 'other'; - })(LinkAccountType || (LinkAccountType = {})); - export var LinkAccountSubtypes; --(function (LinkAccountSubtypes) { -- LinkAccountSubtypes["ALL"] = "all"; -- LinkAccountSubtypes["CREDIT_CARD"] = "credit card"; -- LinkAccountSubtypes["PAYPAL"] = "paypal"; -- LinkAccountSubtypes["AUTO"] = "auto"; -- LinkAccountSubtypes["BUSINESS"] = "business"; -- LinkAccountSubtypes["COMMERCIAL"] = "commercial"; -- LinkAccountSubtypes["CONSTRUCTION"] = "construction"; -- LinkAccountSubtypes["CONSUMER"] = "consumer"; -- LinkAccountSubtypes["HOME_EQUITY"] = "home equity"; -- LinkAccountSubtypes["LINE_OF_CREDIT"] = "line of credit"; -- LinkAccountSubtypes["LOAN"] = "loan"; -- LinkAccountSubtypes["MORTGAGE"] = "mortgage"; -- LinkAccountSubtypes["OVERDRAFT"] = "overdraft"; -- LinkAccountSubtypes["STUDENT"] = "student"; -- LinkAccountSubtypes["CASH_MANAGEMENT"] = "cash management"; -- LinkAccountSubtypes["CD"] = "cd"; -- LinkAccountSubtypes["CHECKING"] = "checking"; -- LinkAccountSubtypes["EBT"] = "ebt"; -- LinkAccountSubtypes["HSA"] = "hsa"; -- LinkAccountSubtypes["MONEY_MARKET"] = "money market"; -- LinkAccountSubtypes["PREPAID"] = "prepaid"; -- LinkAccountSubtypes["SAVINGS"] = "savings"; -- LinkAccountSubtypes["FOUR_0_1_A"] = "401a"; -- LinkAccountSubtypes["FOUR_0_1_K"] = "401k"; -- LinkAccountSubtypes["FOUR_0_3_B"] = "403B"; -- LinkAccountSubtypes["FOUR_5_7_B"] = "457b"; -- LinkAccountSubtypes["FIVE_2_9"] = "529"; -- LinkAccountSubtypes["BROKERAGE"] = "brokerage"; -- LinkAccountSubtypes["CASH_ISA"] = "cash isa"; -- LinkAccountSubtypes["EDUCATION_SAVINGS_ACCOUNT"] = "education savings account"; -- LinkAccountSubtypes["FIXED_ANNUNITY"] = "fixed annuity"; -- LinkAccountSubtypes["GIC"] = "gic"; -- LinkAccountSubtypes["HEALTH_REIMBURSEMENT_ARRANGEMENT"] = "health reimbursement arrangement"; -- LinkAccountSubtypes["IRA"] = "ira"; -- LinkAccountSubtypes["ISA"] = "isa"; -- LinkAccountSubtypes["KEOGH"] = "keogh"; -- LinkAccountSubtypes["LIF"] = "lif"; -- LinkAccountSubtypes["LIRA"] = "lira"; -- LinkAccountSubtypes["LRIF"] = "lrif"; -- LinkAccountSubtypes["LRSP"] = "lrsp"; -- LinkAccountSubtypes["MUTUAL_FUND"] = "mutual fund"; -- LinkAccountSubtypes["NON_TAXABLE_BROKERAGE_ACCOUNT"] = "non-taxable brokerage account"; -- LinkAccountSubtypes["PENSION"] = "pension"; -- LinkAccountSubtypes["PLAN"] = "plan"; -- LinkAccountSubtypes["PRIF"] = "prif"; -- LinkAccountSubtypes["PROFIT_SHARING_PLAN"] = "profit sharing plan"; -- LinkAccountSubtypes["RDSP"] = "rdsp"; -- LinkAccountSubtypes["RESP"] = "resp"; -- LinkAccountSubtypes["RETIREMENT"] = "retirement"; -- LinkAccountSubtypes["RLIF"] = "rlif"; -- LinkAccountSubtypes["ROTH_401K"] = "roth 401k"; -- LinkAccountSubtypes["ROTH"] = "roth"; -- LinkAccountSubtypes["RRIF"] = "rrif"; -- LinkAccountSubtypes["RRSP"] = "rrsp"; -- LinkAccountSubtypes["SARSEP"] = "sarsep"; -- LinkAccountSubtypes["SEP_IRA"] = "sep ira"; -- LinkAccountSubtypes["SIMPLE_IRA"] = "simple ira"; -- LinkAccountSubtypes["SIPP"] = "sipp"; -- LinkAccountSubtypes["STOCK_PLAN"] = "stock plan"; -- LinkAccountSubtypes["TFSA"] = "tfsa"; -- LinkAccountSubtypes["THRIFT_SAVINGS_PLAN"] = "thrift savings plan"; -- LinkAccountSubtypes["TRUST"] = "trust"; -- LinkAccountSubtypes["UGMA"] = "ugma"; -- LinkAccountSubtypes["UTMA"] = "utma"; -- LinkAccountSubtypes["VARIABLE_ANNUITY"] = "variable annuity"; -+(function(LinkAccountSubtypes) { -+ LinkAccountSubtypes['ALL'] = 'all'; -+ LinkAccountSubtypes['CREDIT_CARD'] = 'credit card'; -+ LinkAccountSubtypes['PAYPAL'] = 'paypal'; -+ LinkAccountSubtypes['AUTO'] = 'auto'; -+ LinkAccountSubtypes['BUSINESS'] = 'business'; -+ LinkAccountSubtypes['COMMERCIAL'] = 'commercial'; -+ LinkAccountSubtypes['CONSTRUCTION'] = 'construction'; -+ LinkAccountSubtypes['CONSUMER'] = 'consumer'; -+ LinkAccountSubtypes['HOME_EQUITY'] = 'home equity'; -+ LinkAccountSubtypes['LINE_OF_CREDIT'] = 'line of credit'; -+ LinkAccountSubtypes['LOAN'] = 'loan'; -+ LinkAccountSubtypes['MORTGAGE'] = 'mortgage'; -+ LinkAccountSubtypes['OVERDRAFT'] = 'overdraft'; -+ LinkAccountSubtypes['STUDENT'] = 'student'; -+ LinkAccountSubtypes['CASH_MANAGEMENT'] = 'cash management'; -+ LinkAccountSubtypes['CD'] = 'cd'; -+ LinkAccountSubtypes['CHECKING'] = 'checking'; -+ LinkAccountSubtypes['EBT'] = 'ebt'; -+ LinkAccountSubtypes['HSA'] = 'hsa'; -+ LinkAccountSubtypes['MONEY_MARKET'] = 'money market'; -+ LinkAccountSubtypes['PREPAID'] = 'prepaid'; -+ LinkAccountSubtypes['SAVINGS'] = 'savings'; -+ LinkAccountSubtypes['FOUR_0_1_A'] = '401a'; -+ LinkAccountSubtypes['FOUR_0_1_K'] = '401k'; -+ LinkAccountSubtypes['FOUR_0_3_B'] = '403B'; -+ LinkAccountSubtypes['FOUR_5_7_B'] = '457b'; -+ LinkAccountSubtypes['FIVE_2_9'] = '529'; -+ LinkAccountSubtypes['BROKERAGE'] = 'brokerage'; -+ LinkAccountSubtypes['CASH_ISA'] = 'cash isa'; -+ LinkAccountSubtypes['EDUCATION_SAVINGS_ACCOUNT'] = -+ 'education savings account'; -+ LinkAccountSubtypes['FIXED_ANNUNITY'] = 'fixed annuity'; -+ LinkAccountSubtypes['GIC'] = 'gic'; -+ LinkAccountSubtypes['HEALTH_REIMBURSEMENT_ARRANGEMENT'] = -+ 'health reimbursement arrangement'; -+ LinkAccountSubtypes['IRA'] = 'ira'; -+ LinkAccountSubtypes['ISA'] = 'isa'; -+ LinkAccountSubtypes['KEOGH'] = 'keogh'; -+ LinkAccountSubtypes['LIF'] = 'lif'; -+ LinkAccountSubtypes['LIRA'] = 'lira'; -+ LinkAccountSubtypes['LRIF'] = 'lrif'; -+ LinkAccountSubtypes['LRSP'] = 'lrsp'; -+ LinkAccountSubtypes['MUTUAL_FUND'] = 'mutual fund'; -+ LinkAccountSubtypes['NON_TAXABLE_BROKERAGE_ACCOUNT'] = -+ 'non-taxable brokerage account'; -+ LinkAccountSubtypes['PENSION'] = 'pension'; -+ LinkAccountSubtypes['PLAN'] = 'plan'; -+ LinkAccountSubtypes['PRIF'] = 'prif'; -+ LinkAccountSubtypes['PROFIT_SHARING_PLAN'] = 'profit sharing plan'; -+ LinkAccountSubtypes['RDSP'] = 'rdsp'; -+ LinkAccountSubtypes['RESP'] = 'resp'; -+ LinkAccountSubtypes['RETIREMENT'] = 'retirement'; -+ LinkAccountSubtypes['RLIF'] = 'rlif'; -+ LinkAccountSubtypes['ROTH_401K'] = 'roth 401k'; -+ LinkAccountSubtypes['ROTH'] = 'roth'; -+ LinkAccountSubtypes['RRIF'] = 'rrif'; -+ LinkAccountSubtypes['RRSP'] = 'rrsp'; -+ LinkAccountSubtypes['SARSEP'] = 'sarsep'; -+ LinkAccountSubtypes['SEP_IRA'] = 'sep ira'; -+ LinkAccountSubtypes['SIMPLE_IRA'] = 'simple ira'; -+ LinkAccountSubtypes['SIPP'] = 'sipp'; -+ LinkAccountSubtypes['STOCK_PLAN'] = 'stock plan'; -+ LinkAccountSubtypes['TFSA'] = 'tfsa'; -+ LinkAccountSubtypes['THRIFT_SAVINGS_PLAN'] = 'thrift savings plan'; -+ LinkAccountSubtypes['TRUST'] = 'trust'; -+ LinkAccountSubtypes['UGMA'] = 'ugma'; -+ LinkAccountSubtypes['UTMA'] = 'utma'; -+ LinkAccountSubtypes['VARIABLE_ANNUITY'] = 'variable annuity'; - })(LinkAccountSubtypes || (LinkAccountSubtypes = {})); - export class LinkAccountSubtypeCredit { -- constructor(type, subtype) { -- this.type = type; -- this.subtype = subtype; -- } -+ constructor(type, subtype) { -+ this.type = type; -+ this.subtype = subtype; -+ } - } --LinkAccountSubtypeCredit.ALL = new LinkAccountSubtypeCredit(LinkAccountType.CREDIT, LinkAccountSubtypes.ALL); --LinkAccountSubtypeCredit.CREDIT_CARD = new LinkAccountSubtypeCredit(LinkAccountType.CREDIT, LinkAccountSubtypes.CREDIT_CARD); --LinkAccountSubtypeCredit.PAYPAL = new LinkAccountSubtypeCredit(LinkAccountType.CREDIT, LinkAccountSubtypes.PAYPAL); -+LinkAccountSubtypeCredit.ALL = new LinkAccountSubtypeCredit( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.ALL, -+); -+LinkAccountSubtypeCredit.CREDIT_CARD = new LinkAccountSubtypeCredit( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.CREDIT_CARD, -+); -+LinkAccountSubtypeCredit.PAYPAL = new LinkAccountSubtypeCredit( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.PAYPAL, -+); - export class LinkAccountSubtypeDepository { -- constructor(type, subtype) { -- this.type = type; -- this.subtype = subtype; -- } -+ constructor(type, subtype) { -+ this.type = type; -+ this.subtype = subtype; -+ } - } --LinkAccountSubtypeDepository.ALL = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.ALL); --LinkAccountSubtypeDepository.CASH_MANAGEMENT = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.CASH_MANAGEMENT); --LinkAccountSubtypeDepository.CD = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.CD); --LinkAccountSubtypeDepository.CHECKING = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.CHECKING); --LinkAccountSubtypeDepository.EBT = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.EBT); --LinkAccountSubtypeDepository.HSA = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.HSA); --LinkAccountSubtypeDepository.MONEY_MARKET = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.MONEY_MARKET); --LinkAccountSubtypeDepository.PAYPAL = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.PAYPAL); --LinkAccountSubtypeDepository.PREPAID = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.PREPAID); --LinkAccountSubtypeDepository.SAVINGS = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.SAVINGS); -+LinkAccountSubtypeDepository.ALL = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.ALL, -+); -+LinkAccountSubtypeDepository.CASH_MANAGEMENT = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.CASH_MANAGEMENT, -+); -+LinkAccountSubtypeDepository.CD = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.CD, -+); -+LinkAccountSubtypeDepository.CHECKING = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.CHECKING, -+); -+LinkAccountSubtypeDepository.EBT = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.EBT, -+); -+LinkAccountSubtypeDepository.HSA = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.HSA, -+); -+LinkAccountSubtypeDepository.MONEY_MARKET = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.MONEY_MARKET, -+); -+LinkAccountSubtypeDepository.PAYPAL = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.PAYPAL, -+); -+LinkAccountSubtypeDepository.PREPAID = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.PREPAID, -+); -+LinkAccountSubtypeDepository.SAVINGS = new LinkAccountSubtypeDepository( -+ LinkAccountType.DEPOSITORY, -+ LinkAccountSubtypes.SAVINGS, -+); - export class LinkAccountSubtypeInvestment { -- constructor(type, subtype) { -- this.type = type; -- this.subtype = subtype; -- } -+ constructor(type, subtype) { -+ this.type = type; -+ this.subtype = subtype; -+ } - } --LinkAccountSubtypeInvestment.ALL = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.ALL); --LinkAccountSubtypeInvestment.BROKERAGE = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.BROKERAGE); --LinkAccountSubtypeInvestment.CASH_ISA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.CASH_ISA); --LinkAccountSubtypeInvestment.EDUCATION_SAVINGS_ACCOUNT = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.EDUCATION_SAVINGS_ACCOUNT); --LinkAccountSubtypeInvestment.FIXED_ANNUNITY = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FIXED_ANNUNITY); --LinkAccountSubtypeInvestment.GIC = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.GIC); --LinkAccountSubtypeInvestment.HEALTH_REIMBURSEMENT_ARRANGEMENT = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.HEALTH_REIMBURSEMENT_ARRANGEMENT); --LinkAccountSubtypeInvestment.HSA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.HSA); --LinkAccountSubtypeInvestment.INVESTMENT_401A = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FOUR_0_1_A); --LinkAccountSubtypeInvestment.INVESTMENT_401K = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FOUR_0_1_K); --LinkAccountSubtypeInvestment.INVESTMENT_403B = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FOUR_0_3_B); --LinkAccountSubtypeInvestment.INVESTMENT_457B = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FOUR_5_7_B); --LinkAccountSubtypeInvestment.INVESTMENT_529 = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FIVE_2_9); --LinkAccountSubtypeInvestment.IRA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.IRA); --LinkAccountSubtypeInvestment.ISA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.ISA); --LinkAccountSubtypeInvestment.KEOGH = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.KEOGH); --LinkAccountSubtypeInvestment.LIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.LIF); --LinkAccountSubtypeInvestment.LIRA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.LIRA); --LinkAccountSubtypeInvestment.LRIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.LRIF); --LinkAccountSubtypeInvestment.LRSP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.LRSP); --LinkAccountSubtypeInvestment.MUTUAL_FUND = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.MUTUAL_FUND); --LinkAccountSubtypeInvestment.NON_TAXABLE_BROKERAGE_ACCOUNT = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.NON_TAXABLE_BROKERAGE_ACCOUNT); --LinkAccountSubtypeInvestment.PENSION = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.PENSION); --LinkAccountSubtypeInvestment.PLAN = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.PLAN); --LinkAccountSubtypeInvestment.PRIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.PRIF); --LinkAccountSubtypeInvestment.PROFIT_SHARING_PLAN = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.PROFIT_SHARING_PLAN); --LinkAccountSubtypeInvestment.RDSP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RDSP); --LinkAccountSubtypeInvestment.RESP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RESP); --LinkAccountSubtypeInvestment.RETIREMENT = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RETIREMENT); --LinkAccountSubtypeInvestment.RLIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RLIF); --LinkAccountSubtypeInvestment.ROTH = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.ROTH); --LinkAccountSubtypeInvestment.ROTH_401K = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.ROTH_401K); --LinkAccountSubtypeInvestment.RRIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RRIF); --LinkAccountSubtypeInvestment.RRSP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RRSP); --LinkAccountSubtypeInvestment.SARSEP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.SARSEP); --LinkAccountSubtypeInvestment.SEP_IRA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.SEP_IRA); --LinkAccountSubtypeInvestment.SIMPLE_IRA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.SIMPLE_IRA); --LinkAccountSubtypeInvestment.SIIP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.SIPP); --LinkAccountSubtypeInvestment.STOCK_PLAN = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.STOCK_PLAN); --LinkAccountSubtypeInvestment.TFSA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.TFSA); --LinkAccountSubtypeInvestment.THRIFT_SAVINGS_PLAN = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.THRIFT_SAVINGS_PLAN); --LinkAccountSubtypeInvestment.TRUST = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.TRUST); --LinkAccountSubtypeInvestment.UGMA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.UGMA); --LinkAccountSubtypeInvestment.UTMA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.UTMA); --LinkAccountSubtypeInvestment.VARIABLE_ANNUITY = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.VARIABLE_ANNUITY); -+LinkAccountSubtypeInvestment.ALL = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.ALL, -+); -+LinkAccountSubtypeInvestment.BROKERAGE = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.BROKERAGE, -+); -+LinkAccountSubtypeInvestment.CASH_ISA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.CASH_ISA, -+); -+LinkAccountSubtypeInvestment.EDUCATION_SAVINGS_ACCOUNT = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.EDUCATION_SAVINGS_ACCOUNT, -+); -+LinkAccountSubtypeInvestment.FIXED_ANNUNITY = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.FIXED_ANNUNITY, -+); -+LinkAccountSubtypeInvestment.GIC = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.GIC, -+); -+LinkAccountSubtypeInvestment.HEALTH_REIMBURSEMENT_ARRANGEMENT = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.HEALTH_REIMBURSEMENT_ARRANGEMENT, -+); -+LinkAccountSubtypeInvestment.HSA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.HSA, -+); -+LinkAccountSubtypeInvestment.INVESTMENT_401A = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.FOUR_0_1_A, -+); -+LinkAccountSubtypeInvestment.INVESTMENT_401K = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.FOUR_0_1_K, -+); -+LinkAccountSubtypeInvestment.INVESTMENT_403B = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.FOUR_0_3_B, -+); -+LinkAccountSubtypeInvestment.INVESTMENT_457B = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.FOUR_5_7_B, -+); -+LinkAccountSubtypeInvestment.INVESTMENT_529 = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.FIVE_2_9, -+); -+LinkAccountSubtypeInvestment.IRA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.IRA, -+); -+LinkAccountSubtypeInvestment.ISA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.ISA, -+); -+LinkAccountSubtypeInvestment.KEOGH = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.KEOGH, -+); -+LinkAccountSubtypeInvestment.LIF = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.LIF, -+); -+LinkAccountSubtypeInvestment.LIRA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.LIRA, -+); -+LinkAccountSubtypeInvestment.LRIF = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.LRIF, -+); -+LinkAccountSubtypeInvestment.LRSP = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.LRSP, -+); -+LinkAccountSubtypeInvestment.MUTUAL_FUND = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.MUTUAL_FUND, -+); -+LinkAccountSubtypeInvestment.NON_TAXABLE_BROKERAGE_ACCOUNT = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.NON_TAXABLE_BROKERAGE_ACCOUNT, -+); -+LinkAccountSubtypeInvestment.PENSION = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.PENSION, -+); -+LinkAccountSubtypeInvestment.PLAN = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.PLAN, -+); -+LinkAccountSubtypeInvestment.PRIF = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.PRIF, -+); -+LinkAccountSubtypeInvestment.PROFIT_SHARING_PLAN = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.PROFIT_SHARING_PLAN, -+); -+LinkAccountSubtypeInvestment.RDSP = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.RDSP, -+); -+LinkAccountSubtypeInvestment.RESP = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.RESP, -+); -+LinkAccountSubtypeInvestment.RETIREMENT = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.RETIREMENT, -+); -+LinkAccountSubtypeInvestment.RLIF = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.RLIF, -+); -+LinkAccountSubtypeInvestment.ROTH = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.ROTH, -+); -+LinkAccountSubtypeInvestment.ROTH_401K = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.ROTH_401K, -+); -+LinkAccountSubtypeInvestment.RRIF = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.RRIF, -+); -+LinkAccountSubtypeInvestment.RRSP = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.RRSP, -+); -+LinkAccountSubtypeInvestment.SARSEP = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.SARSEP, -+); -+LinkAccountSubtypeInvestment.SEP_IRA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.SEP_IRA, -+); -+LinkAccountSubtypeInvestment.SIMPLE_IRA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.SIMPLE_IRA, -+); -+LinkAccountSubtypeInvestment.SIIP = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.SIPP, -+); -+LinkAccountSubtypeInvestment.STOCK_PLAN = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.STOCK_PLAN, -+); -+LinkAccountSubtypeInvestment.TFSA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.TFSA, -+); -+LinkAccountSubtypeInvestment.THRIFT_SAVINGS_PLAN = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.THRIFT_SAVINGS_PLAN, -+); -+LinkAccountSubtypeInvestment.TRUST = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.TRUST, -+); -+LinkAccountSubtypeInvestment.UGMA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.UGMA, -+); -+LinkAccountSubtypeInvestment.UTMA = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.UTMA, -+); -+LinkAccountSubtypeInvestment.VARIABLE_ANNUITY = new LinkAccountSubtypeInvestment( -+ LinkAccountType.INVESTMENT, -+ LinkAccountSubtypes.VARIABLE_ANNUITY, -+); - export class LinkAccountSubtypeLoan { -- constructor(type, subtype) { -- this.type = type; -- this.subtype = subtype; -- } -+ constructor(type, subtype) { -+ this.type = type; -+ this.subtype = subtype; -+ } - } --LinkAccountSubtypeLoan.ALL = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.ALL); --LinkAccountSubtypeLoan.AUTO = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.AUTO); --LinkAccountSubtypeLoan.BUSINESS = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.BUSINESS); --LinkAccountSubtypeLoan.COMMERCIAL = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.COMMERCIAL); --LinkAccountSubtypeLoan.CONSTRUCTION = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.CONSTRUCTION); --LinkAccountSubtypeLoan.CONSUMER = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.CONSUMER); --LinkAccountSubtypeLoan.HOME_EQUITY = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.HOME_EQUITY); --LinkAccountSubtypeLoan.LINE_OF_CREDIT = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.LINE_OF_CREDIT); --LinkAccountSubtypeLoan.LOAN = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.LOAN); --LinkAccountSubtypeLoan.MORTGAGE = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.MORTGAGE); --LinkAccountSubtypeLoan.OVERDRAFT = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.OVERDRAFT); --LinkAccountSubtypeLoan.STUDENT = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.STUDENT); -+LinkAccountSubtypeLoan.ALL = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.ALL, -+); -+LinkAccountSubtypeLoan.AUTO = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.AUTO, -+); -+LinkAccountSubtypeLoan.BUSINESS = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.BUSINESS, -+); -+LinkAccountSubtypeLoan.COMMERCIAL = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.COMMERCIAL, -+); -+LinkAccountSubtypeLoan.CONSTRUCTION = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.CONSTRUCTION, -+); -+LinkAccountSubtypeLoan.CONSUMER = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.CONSUMER, -+); -+LinkAccountSubtypeLoan.HOME_EQUITY = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.HOME_EQUITY, -+); -+LinkAccountSubtypeLoan.LINE_OF_CREDIT = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.LINE_OF_CREDIT, -+); -+LinkAccountSubtypeLoan.LOAN = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.LOAN, -+); -+LinkAccountSubtypeLoan.MORTGAGE = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.MORTGAGE, -+); -+LinkAccountSubtypeLoan.OVERDRAFT = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.OVERDRAFT, -+); -+LinkAccountSubtypeLoan.STUDENT = new LinkAccountSubtypeLoan( -+ LinkAccountType.CREDIT, -+ LinkAccountSubtypes.STUDENT, -+); - export class LinkAccountSubtypeUnknown { -- constructor(type, subtype) { -- this.type = type; -- this.subtype = subtype; -- } -+ constructor(type, subtype) { -+ this.type = type; -+ this.subtype = subtype; -+ } - } - export var LinkAccountVerificationStatus; --(function (LinkAccountVerificationStatus) { -- LinkAccountVerificationStatus["PENDING_AUTOMATIC_VERIFICATION"] = "pending_automatic_verification"; -- LinkAccountVerificationStatus["PENDING_MANUAL_VERIFICATION"] = "pending_manual_verification"; -- LinkAccountVerificationStatus["MANUALLY_VERIFIED"] = "manually_verified"; -+(function(LinkAccountVerificationStatus) { -+ LinkAccountVerificationStatus['PENDING_AUTOMATIC_VERIFICATION'] = -+ 'pending_automatic_verification'; -+ LinkAccountVerificationStatus['PENDING_MANUAL_VERIFICATION'] = -+ 'pending_manual_verification'; -+ LinkAccountVerificationStatus['MANUALLY_VERIFIED'] = 'manually_verified'; - })(LinkAccountVerificationStatus || (LinkAccountVerificationStatus = {})); - export var LinkExitMetadataStatus; --(function (LinkExitMetadataStatus) { -- LinkExitMetadataStatus["CONNECTED"] = "connected"; -- LinkExitMetadataStatus["CHOOSE_DEVICE"] = "choose_device"; -- LinkExitMetadataStatus["REQUIRES_ACCOUNT_SELECTION"] = "requires_account_selection"; -- LinkExitMetadataStatus["REQUIRES_CODE"] = "requires_code"; -- LinkExitMetadataStatus["REQUIRES_CREDENTIALS"] = "requires_credentials"; -- LinkExitMetadataStatus["REQUIRES_EXTERNAL_ACTION"] = "requires_external_action"; -- LinkExitMetadataStatus["REQUIRES_OAUTH"] = "requires_oauth"; -- LinkExitMetadataStatus["REQUIRES_QUESTIONS"] = "requires_questions"; -- LinkExitMetadataStatus["REQUIRES_RECAPTCHA"] = "requires_recaptcha"; -- LinkExitMetadataStatus["REQUIRES_SELECTIONS"] = "requires_selections"; -- LinkExitMetadataStatus["REQUIRES_DEPOSIT_SWITCH_ALLOCATION_CONFIGURATION"] = "requires_deposit_switch_allocation_configuration"; -- LinkExitMetadataStatus["REQUIRES_DEPOSIT_SWITCH_ALLOCATION_SELECTION"] = "requires_deposit_switch_allocation_selection"; -+(function(LinkExitMetadataStatus) { -+ LinkExitMetadataStatus['CONNECTED'] = 'connected'; -+ LinkExitMetadataStatus['CHOOSE_DEVICE'] = 'choose_device'; -+ LinkExitMetadataStatus['REQUIRES_ACCOUNT_SELECTION'] = -+ 'requires_account_selection'; -+ LinkExitMetadataStatus['REQUIRES_CODE'] = 'requires_code'; -+ LinkExitMetadataStatus['REQUIRES_CREDENTIALS'] = 'requires_credentials'; -+ LinkExitMetadataStatus['REQUIRES_EXTERNAL_ACTION'] = -+ 'requires_external_action'; -+ LinkExitMetadataStatus['REQUIRES_OAUTH'] = 'requires_oauth'; -+ LinkExitMetadataStatus['REQUIRES_QUESTIONS'] = 'requires_questions'; -+ LinkExitMetadataStatus['REQUIRES_RECAPTCHA'] = 'requires_recaptcha'; -+ LinkExitMetadataStatus['REQUIRES_SELECTIONS'] = 'requires_selections'; -+ LinkExitMetadataStatus['REQUIRES_DEPOSIT_SWITCH_ALLOCATION_CONFIGURATION'] = -+ 'requires_deposit_switch_allocation_configuration'; -+ LinkExitMetadataStatus['REQUIRES_DEPOSIT_SWITCH_ALLOCATION_SELECTION'] = -+ 'requires_deposit_switch_allocation_selection'; - })(LinkExitMetadataStatus || (LinkExitMetadataStatus = {})); - export var LinkErrorCode; --(function (LinkErrorCode) { -- // ITEM_ERROR -- LinkErrorCode["INVALID_CREDENTIALS"] = "INVALID_CREDENTIALS"; -- LinkErrorCode["INVALID_MFA"] = "INVALID_MFA"; -- LinkErrorCode["ITEM_LOGIN_REQUIRED"] = "ITEM_LOGIN_REQUIRED"; -- LinkErrorCode["INSUFFICIENT_CREDENTIALS"] = "INSUFFICIENT_CREDENTIALS"; -- LinkErrorCode["ITEM_LOCKED"] = "ITEM_LOCKED"; -- LinkErrorCode["USER_SETUP_REQUIRED"] = "USER_SETUP_REQUIRED"; -- LinkErrorCode["MFA_NOT_SUPPORTED"] = "MFA_NOT_SUPPORTED"; -- LinkErrorCode["INVALID_SEND_METHOD"] = "INVALID_SEND_METHOD"; -- LinkErrorCode["NO_ACCOUNTS"] = "NO_ACCOUNTS"; -- LinkErrorCode["ITEM_NOT_SUPPORTED"] = "ITEM_NOT_SUPPORTED"; -- LinkErrorCode["TOO_MANY_VERIFICATION_ATTEMPTS"] = "TOO_MANY_VERIFICATION_ATTEMPTS"; -- LinkErrorCode["INVALD_UPDATED_USERNAME"] = "INVALD_UPDATED_USERNAME"; -- LinkErrorCode["INVALID_UPDATED_USERNAME"] = "INVALID_UPDATED_USERNAME"; -- LinkErrorCode["ITEM_NO_ERROR"] = "ITEM_NO_ERROR"; -- LinkErrorCode["item_no_error"] = "item-no-error"; -- LinkErrorCode["NO_AUTH_ACCOUNTS"] = "NO_AUTH_ACCOUNTS"; -- LinkErrorCode["NO_INVESTMENT_ACCOUNTS"] = "NO_INVESTMENT_ACCOUNTS"; -- LinkErrorCode["NO_INVESTMENT_AUTH_ACCOUNTS"] = "NO_INVESTMENT_AUTH_ACCOUNTS"; -- LinkErrorCode["NO_LIABILITY_ACCOUNTS"] = "NO_LIABILITY_ACCOUNTS"; -- LinkErrorCode["PRODUCTS_NOT_SUPPORTED"] = "PRODUCTS_NOT_SUPPORTED"; -- LinkErrorCode["ITEM_NOT_FOUND"] = "ITEM_NOT_FOUND"; -- LinkErrorCode["ITEM_PRODUCT_NOT_READY"] = "ITEM_PRODUCT_NOT_READY"; -- // INSTITUTION_ERROR -- LinkErrorCode["INSTITUTION_DOWN"] = "INSTITUTION_DOWN"; -- LinkErrorCode["INSTITUTION_NOT_RESPONDING"] = "INSTITUTION_NOT_RESPONDING"; -- LinkErrorCode["INSTITUTION_NOT_AVAILABLE"] = "INSTITUTION_NOT_AVAILABLE"; -- LinkErrorCode["INSTITUTION_NO_LONGER_SUPPORTED"] = "INSTITUTION_NO_LONGER_SUPPORTED"; -- // API_ERROR -- LinkErrorCode["INTERNAL_SERVER_ERROR"] = "INTERNAL_SERVER_ERROR"; -- LinkErrorCode["PLANNED_MAINTENANCE"] = "PLANNED_MAINTENANCE"; -- // ASSET_REPORT_ERROR -- LinkErrorCode["PRODUCT_NOT_ENABLED"] = "PRODUCT_NOT_ENABLED"; -- LinkErrorCode["DATA_UNAVAILABLE"] = "DATA_UNAVAILABLE"; -- LinkErrorCode["ASSET_PRODUCT_NOT_READY"] = "ASSET_PRODUCT_NOT_READY"; -- LinkErrorCode["ASSET_REPORT_GENERATION_FAILED"] = "ASSET_REPORT_GENERATION_FAILED"; -- LinkErrorCode["INVALID_PARENT"] = "INVALID_PARENT"; -- LinkErrorCode["INSIGHTS_NOT_ENABLED"] = "INSIGHTS_NOT_ENABLED"; -- LinkErrorCode["INSIGHTS_PREVIOUSLY_NOT_ENABLED"] = "INSIGHTS_PREVIOUSLY_NOT_ENABLED"; -- // BANK_TRANSFER_ERROR -- LinkErrorCode["BANK_TRANSFER_LIMIT_EXCEEDED"] = "BANK_TRANSFER_LIMIT_EXCEEDED"; -- LinkErrorCode["BANK_TRANSFER_MISSING_ORIGINATION_ACCOUNT"] = "BANK_TRANSFER_MISSING_ORIGINATION_ACCOUNT"; -- LinkErrorCode["BANK_TRANSFER_INVALID_ORIGINATION_ACCOUNT"] = "BANK_TRANSFER_INVALID_ORIGINATION_ACCOUNT"; -- LinkErrorCode["BANK_TRANSFER_ACCOUNT_BLOCKED"] = "BANK_TRANSFER_ACCOUNT_BLOCKED"; -- LinkErrorCode["BANK_TRANSFER_INSUFFICIENT_FUNDS"] = "BANK_TRANSFER_INSUFFICIENT_FUNDS"; -- LinkErrorCode["BANK_TRANSFER_NOT_CANCELLABLE"] = "BANK_TRANSFER_NOT_CANCELLABLE"; -- LinkErrorCode["BANK_TRANSFER_UNSUPPORTED_ACCOUNT_TYPE"] = "BANK_TRANSFER_UNSUPPORTED_ACCOUNT_TYPE"; -- LinkErrorCode["BANK_TRANSFER_UNSUPPORTED_ENVIRONMENT"] = "BANK_TRANSFER_UNSUPPORTED_ENVIRONMENT"; -- // SANDBOX_ERROR -- LinkErrorCode["SANDBOX_PRODUCT_NOT_ENABLED"] = "SANDBOX_PRODUCT_NOT_ENABLED"; -- LinkErrorCode["SANDBOX_WEBHOOK_INVALID"] = "SANDBOX_WEBHOOK_INVALID"; -- LinkErrorCode["SANDBOX_BANK_TRANSFER_EVENT_TRANSITION_INVALID"] = "SANDBOX_BANK_TRANSFER_EVENT_TRANSITION_INVALID"; -- // INVALID_REQUEST -- LinkErrorCode["MISSING_FIELDS"] = "MISSING_FIELDS"; -- LinkErrorCode["UNKNOWN_FIELDS"] = "UNKNOWN_FIELDS"; -- LinkErrorCode["INVALID_FIELD"] = "INVALID_FIELD"; -- LinkErrorCode["INCOMPATIBLE_API_VERSION"] = "INCOMPATIBLE_API_VERSION"; -- LinkErrorCode["INVALID_BODY"] = "INVALID_BODY"; -- LinkErrorCode["INVALID_HEADERS"] = "INVALID_HEADERS"; -- LinkErrorCode["NOT_FOUND"] = "NOT_FOUND"; -- LinkErrorCode["NO_LONGER_AVAILABLE"] = "NO_LONGER_AVAILABLE"; -- LinkErrorCode["SANDBOX_ONLY"] = "SANDBOX_ONLY"; -- LinkErrorCode["INVALID_ACCOUNT_NUMBER"] = "INVALID_ACCOUNT_NUMBER"; -- // INVALID_INPUT -- // From above ITEM_LOGIN_REQUIRED = "INVALID_CREDENTIALS", -- LinkErrorCode["INCORRECT_DEPOSIT_AMOUNTS"] = "INCORRECT_DEPOSIT_AMOUNTS"; -- LinkErrorCode["UNAUTHORIZED_ENVIRONMENT"] = "UNAUTHORIZED_ENVIRONMENT"; -- LinkErrorCode["INVALID_PRODUCT"] = "INVALID_PRODUCT"; -- LinkErrorCode["UNAUTHORIZED_ROUTE_ACCESS"] = "UNAUTHORIZED_ROUTE_ACCESS"; -- LinkErrorCode["DIRECT_INTEGRATION_NOT_ENABLED"] = "DIRECT_INTEGRATION_NOT_ENABLED"; -- LinkErrorCode["INVALID_API_KEYS"] = "INVALID_API_KEYS"; -- LinkErrorCode["INVALID_ACCESS_TOKEN"] = "INVALID_ACCESS_TOKEN"; -- LinkErrorCode["INVALID_PUBLIC_TOKEN"] = "INVALID_PUBLIC_TOKEN"; -- LinkErrorCode["INVALID_LINK_TOKEN"] = "INVALID_LINK_TOKEN"; -- LinkErrorCode["INVALID_PROCESSOR_TOKEN"] = "INVALID_PROCESSOR_TOKEN"; -- LinkErrorCode["INVALID_AUDIT_COPY_TOKEN"] = "INVALID_AUDIT_COPY_TOKEN"; -- LinkErrorCode["INVALID_ACCOUNT_ID"] = "INVALID_ACCOUNT_ID"; -- LinkErrorCode["MICRODEPOSITS_ALREADY_VERIFIED"] = "MICRODEPOSITS_ALREADY_VERIFIED"; -- // INVALID_RESULT -- LinkErrorCode["PLAID_DIRECT_ITEM_IMPORT_RETURNED_INVALID_MFA"] = "PLAID_DIRECT_ITEM_IMPORT_RETURNED_INVALID_MFA"; -- // RATE_LIMIT_EXCEEDED -- LinkErrorCode["ACCOUNTS_LIMIT"] = "ACCOUNTS_LIMIT"; -- LinkErrorCode["ADDITION_LIMIT"] = "ADDITION_LIMIT"; -- LinkErrorCode["AUTH_LIMIT"] = "AUTH_LIMIT"; -- LinkErrorCode["BALANCE_LIMIT"] = "BALANCE_LIMIT"; -- LinkErrorCode["IDENTITY_LIMIT"] = "IDENTITY_LIMIT"; -- LinkErrorCode["ITEM_GET_LIMIT"] = "ITEM_GET_LIMIT"; -- LinkErrorCode["RATE_LIMIT"] = "RATE_LIMIT"; -- LinkErrorCode["TRANSACTIONS_LIMIT"] = "TRANSACTIONS_LIMIT"; -- // RECAPTCHA_ERROR -- LinkErrorCode["RECAPTCHA_REQUIRED"] = "RECAPTCHA_REQUIRED"; -- LinkErrorCode["RECAPTCHA_BAD"] = "RECAPTCHA_BAD"; -- // OAUTH_ERROR -- LinkErrorCode["INCORRECT_OAUTH_NONCE"] = "INCORRECT_OAUTH_NONCE"; -- LinkErrorCode["OAUTH_STATE_ID_ALREADY_PROCESSED"] = "OAUTH_STATE_ID_ALREADY_PROCESSED"; -+(function(LinkErrorCode) { -+ // ITEM_ERROR -+ LinkErrorCode['INVALID_CREDENTIALS'] = 'INVALID_CREDENTIALS'; -+ LinkErrorCode['INVALID_MFA'] = 'INVALID_MFA'; -+ LinkErrorCode['ITEM_LOGIN_REQUIRED'] = 'ITEM_LOGIN_REQUIRED'; -+ LinkErrorCode['INSUFFICIENT_CREDENTIALS'] = 'INSUFFICIENT_CREDENTIALS'; -+ LinkErrorCode['ITEM_LOCKED'] = 'ITEM_LOCKED'; -+ LinkErrorCode['USER_SETUP_REQUIRED'] = 'USER_SETUP_REQUIRED'; -+ LinkErrorCode['MFA_NOT_SUPPORTED'] = 'MFA_NOT_SUPPORTED'; -+ LinkErrorCode['INVALID_SEND_METHOD'] = 'INVALID_SEND_METHOD'; -+ LinkErrorCode['NO_ACCOUNTS'] = 'NO_ACCOUNTS'; -+ LinkErrorCode['ITEM_NOT_SUPPORTED'] = 'ITEM_NOT_SUPPORTED'; -+ LinkErrorCode['TOO_MANY_VERIFICATION_ATTEMPTS'] = -+ 'TOO_MANY_VERIFICATION_ATTEMPTS'; -+ LinkErrorCode['INVALD_UPDATED_USERNAME'] = 'INVALD_UPDATED_USERNAME'; -+ LinkErrorCode['INVALID_UPDATED_USERNAME'] = 'INVALID_UPDATED_USERNAME'; -+ LinkErrorCode['ITEM_NO_ERROR'] = 'ITEM_NO_ERROR'; -+ LinkErrorCode['item_no_error'] = 'item-no-error'; -+ LinkErrorCode['NO_AUTH_ACCOUNTS'] = 'NO_AUTH_ACCOUNTS'; -+ LinkErrorCode['NO_INVESTMENT_ACCOUNTS'] = 'NO_INVESTMENT_ACCOUNTS'; -+ LinkErrorCode['NO_INVESTMENT_AUTH_ACCOUNTS'] = 'NO_INVESTMENT_AUTH_ACCOUNTS'; -+ LinkErrorCode['NO_LIABILITY_ACCOUNTS'] = 'NO_LIABILITY_ACCOUNTS'; -+ LinkErrorCode['PRODUCTS_NOT_SUPPORTED'] = 'PRODUCTS_NOT_SUPPORTED'; -+ LinkErrorCode['ITEM_NOT_FOUND'] = 'ITEM_NOT_FOUND'; -+ LinkErrorCode['ITEM_PRODUCT_NOT_READY'] = 'ITEM_PRODUCT_NOT_READY'; -+ // INSTITUTION_ERROR -+ LinkErrorCode['INSTITUTION_DOWN'] = 'INSTITUTION_DOWN'; -+ LinkErrorCode['INSTITUTION_NOT_RESPONDING'] = 'INSTITUTION_NOT_RESPONDING'; -+ LinkErrorCode['INSTITUTION_NOT_AVAILABLE'] = 'INSTITUTION_NOT_AVAILABLE'; -+ LinkErrorCode['INSTITUTION_NO_LONGER_SUPPORTED'] = -+ 'INSTITUTION_NO_LONGER_SUPPORTED'; -+ // API_ERROR -+ LinkErrorCode['INTERNAL_SERVER_ERROR'] = 'INTERNAL_SERVER_ERROR'; -+ LinkErrorCode['PLANNED_MAINTENANCE'] = 'PLANNED_MAINTENANCE'; -+ // ASSET_REPORT_ERROR -+ LinkErrorCode['PRODUCT_NOT_ENABLED'] = 'PRODUCT_NOT_ENABLED'; -+ LinkErrorCode['DATA_UNAVAILABLE'] = 'DATA_UNAVAILABLE'; -+ LinkErrorCode['ASSET_PRODUCT_NOT_READY'] = 'ASSET_PRODUCT_NOT_READY'; -+ LinkErrorCode['ASSET_REPORT_GENERATION_FAILED'] = -+ 'ASSET_REPORT_GENERATION_FAILED'; -+ LinkErrorCode['INVALID_PARENT'] = 'INVALID_PARENT'; -+ LinkErrorCode['INSIGHTS_NOT_ENABLED'] = 'INSIGHTS_NOT_ENABLED'; -+ LinkErrorCode['INSIGHTS_PREVIOUSLY_NOT_ENABLED'] = -+ 'INSIGHTS_PREVIOUSLY_NOT_ENABLED'; -+ // BANK_TRANSFER_ERROR -+ LinkErrorCode['BANK_TRANSFER_LIMIT_EXCEEDED'] = -+ 'BANK_TRANSFER_LIMIT_EXCEEDED'; -+ LinkErrorCode['BANK_TRANSFER_MISSING_ORIGINATION_ACCOUNT'] = -+ 'BANK_TRANSFER_MISSING_ORIGINATION_ACCOUNT'; -+ LinkErrorCode['BANK_TRANSFER_INVALID_ORIGINATION_ACCOUNT'] = -+ 'BANK_TRANSFER_INVALID_ORIGINATION_ACCOUNT'; -+ LinkErrorCode['BANK_TRANSFER_ACCOUNT_BLOCKED'] = -+ 'BANK_TRANSFER_ACCOUNT_BLOCKED'; -+ LinkErrorCode['BANK_TRANSFER_INSUFFICIENT_FUNDS'] = -+ 'BANK_TRANSFER_INSUFFICIENT_FUNDS'; -+ LinkErrorCode['BANK_TRANSFER_NOT_CANCELLABLE'] = -+ 'BANK_TRANSFER_NOT_CANCELLABLE'; -+ LinkErrorCode['BANK_TRANSFER_UNSUPPORTED_ACCOUNT_TYPE'] = -+ 'BANK_TRANSFER_UNSUPPORTED_ACCOUNT_TYPE'; -+ LinkErrorCode['BANK_TRANSFER_UNSUPPORTED_ENVIRONMENT'] = -+ 'BANK_TRANSFER_UNSUPPORTED_ENVIRONMENT'; -+ // SANDBOX_ERROR -+ LinkErrorCode['SANDBOX_PRODUCT_NOT_ENABLED'] = 'SANDBOX_PRODUCT_NOT_ENABLED'; -+ LinkErrorCode['SANDBOX_WEBHOOK_INVALID'] = 'SANDBOX_WEBHOOK_INVALID'; -+ LinkErrorCode['SANDBOX_BANK_TRANSFER_EVENT_TRANSITION_INVALID'] = -+ 'SANDBOX_BANK_TRANSFER_EVENT_TRANSITION_INVALID'; -+ // INVALID_REQUEST -+ LinkErrorCode['MISSING_FIELDS'] = 'MISSING_FIELDS'; -+ LinkErrorCode['UNKNOWN_FIELDS'] = 'UNKNOWN_FIELDS'; -+ LinkErrorCode['INVALID_FIELD'] = 'INVALID_FIELD'; -+ LinkErrorCode['INCOMPATIBLE_API_VERSION'] = 'INCOMPATIBLE_API_VERSION'; -+ LinkErrorCode['INVALID_BODY'] = 'INVALID_BODY'; -+ LinkErrorCode['INVALID_HEADERS'] = 'INVALID_HEADERS'; -+ LinkErrorCode['NOT_FOUND'] = 'NOT_FOUND'; -+ LinkErrorCode['NO_LONGER_AVAILABLE'] = 'NO_LONGER_AVAILABLE'; -+ LinkErrorCode['SANDBOX_ONLY'] = 'SANDBOX_ONLY'; -+ LinkErrorCode['INVALID_ACCOUNT_NUMBER'] = 'INVALID_ACCOUNT_NUMBER'; -+ // INVALID_INPUT -+ // From above ITEM_LOGIN_REQUIRED = "INVALID_CREDENTIALS", -+ LinkErrorCode['INCORRECT_DEPOSIT_AMOUNTS'] = 'INCORRECT_DEPOSIT_AMOUNTS'; -+ LinkErrorCode['UNAUTHORIZED_ENVIRONMENT'] = 'UNAUTHORIZED_ENVIRONMENT'; -+ LinkErrorCode['INVALID_PRODUCT'] = 'INVALID_PRODUCT'; -+ LinkErrorCode['UNAUTHORIZED_ROUTE_ACCESS'] = 'UNAUTHORIZED_ROUTE_ACCESS'; -+ LinkErrorCode['DIRECT_INTEGRATION_NOT_ENABLED'] = -+ 'DIRECT_INTEGRATION_NOT_ENABLED'; -+ LinkErrorCode['INVALID_API_KEYS'] = 'INVALID_API_KEYS'; -+ LinkErrorCode['INVALID_ACCESS_TOKEN'] = 'INVALID_ACCESS_TOKEN'; -+ LinkErrorCode['INVALID_PUBLIC_TOKEN'] = 'INVALID_PUBLIC_TOKEN'; -+ LinkErrorCode['INVALID_LINK_TOKEN'] = 'INVALID_LINK_TOKEN'; -+ LinkErrorCode['INVALID_PROCESSOR_TOKEN'] = 'INVALID_PROCESSOR_TOKEN'; -+ LinkErrorCode['INVALID_AUDIT_COPY_TOKEN'] = 'INVALID_AUDIT_COPY_TOKEN'; -+ LinkErrorCode['INVALID_ACCOUNT_ID'] = 'INVALID_ACCOUNT_ID'; -+ LinkErrorCode['MICRODEPOSITS_ALREADY_VERIFIED'] = -+ 'MICRODEPOSITS_ALREADY_VERIFIED'; -+ // INVALID_RESULT -+ LinkErrorCode['PLAID_DIRECT_ITEM_IMPORT_RETURNED_INVALID_MFA'] = -+ 'PLAID_DIRECT_ITEM_IMPORT_RETURNED_INVALID_MFA'; -+ // RATE_LIMIT_EXCEEDED -+ LinkErrorCode['ACCOUNTS_LIMIT'] = 'ACCOUNTS_LIMIT'; -+ LinkErrorCode['ADDITION_LIMIT'] = 'ADDITION_LIMIT'; -+ LinkErrorCode['AUTH_LIMIT'] = 'AUTH_LIMIT'; -+ LinkErrorCode['BALANCE_LIMIT'] = 'BALANCE_LIMIT'; -+ LinkErrorCode['IDENTITY_LIMIT'] = 'IDENTITY_LIMIT'; -+ LinkErrorCode['ITEM_GET_LIMIT'] = 'ITEM_GET_LIMIT'; -+ LinkErrorCode['RATE_LIMIT'] = 'RATE_LIMIT'; -+ LinkErrorCode['TRANSACTIONS_LIMIT'] = 'TRANSACTIONS_LIMIT'; -+ // RECAPTCHA_ERROR -+ LinkErrorCode['RECAPTCHA_REQUIRED'] = 'RECAPTCHA_REQUIRED'; -+ LinkErrorCode['RECAPTCHA_BAD'] = 'RECAPTCHA_BAD'; -+ // OAUTH_ERROR -+ LinkErrorCode['INCORRECT_OAUTH_NONCE'] = 'INCORRECT_OAUTH_NONCE'; -+ LinkErrorCode['OAUTH_STATE_ID_ALREADY_PROCESSED'] = -+ 'OAUTH_STATE_ID_ALREADY_PROCESSED'; - })(LinkErrorCode || (LinkErrorCode = {})); - export var LinkErrorType; --(function (LinkErrorType) { -- LinkErrorType["BANK_TRANSFER"] = "BANK_TRANSFER_ERROR"; -- LinkErrorType["INVALID_REQUEST"] = "INVALID_REQUEST"; -- LinkErrorType["INVALID_RESULT"] = "INVALID_RESULT"; -- LinkErrorType["INVALID_INPUT"] = "INVALID_INPUT"; -- LinkErrorType["INSTITUTION_ERROR"] = "INSTITUTION_ERROR"; -- LinkErrorType["RATE_LIMIT_EXCEEDED"] = "RATE_LIMIT_EXCEEDED"; -- LinkErrorType["API_ERROR"] = "API_ERROR"; -- LinkErrorType["ITEM_ERROR"] = "ITEM_ERROR"; -- LinkErrorType["AUTH_ERROR"] = "AUTH_ERROR"; -- LinkErrorType["ASSET_REPORT_ERROR"] = "ASSET_REPORT_ERROR"; -- LinkErrorType["SANDBOX_ERROR"] = "SANDBOX_ERROR"; -- LinkErrorType["RECAPTCHA_ERROR"] = "RECAPTCHA_ERROR"; -- LinkErrorType["OAUTH_ERROR"] = "OAUTH_ERROR"; -+(function(LinkErrorType) { -+ LinkErrorType['BANK_TRANSFER'] = 'BANK_TRANSFER_ERROR'; -+ LinkErrorType['INVALID_REQUEST'] = 'INVALID_REQUEST'; -+ LinkErrorType['INVALID_RESULT'] = 'INVALID_RESULT'; -+ LinkErrorType['INVALID_INPUT'] = 'INVALID_INPUT'; -+ LinkErrorType['INSTITUTION_ERROR'] = 'INSTITUTION_ERROR'; -+ LinkErrorType['RATE_LIMIT_EXCEEDED'] = 'RATE_LIMIT_EXCEEDED'; -+ LinkErrorType['API_ERROR'] = 'API_ERROR'; -+ LinkErrorType['ITEM_ERROR'] = 'ITEM_ERROR'; -+ LinkErrorType['AUTH_ERROR'] = 'AUTH_ERROR'; -+ LinkErrorType['ASSET_REPORT_ERROR'] = 'ASSET_REPORT_ERROR'; -+ LinkErrorType['SANDBOX_ERROR'] = 'SANDBOX_ERROR'; -+ LinkErrorType['RECAPTCHA_ERROR'] = 'RECAPTCHA_ERROR'; -+ LinkErrorType['OAUTH_ERROR'] = 'OAUTH_ERROR'; - })(LinkErrorType || (LinkErrorType = {})); - export var LinkEventName; --(function (LinkEventName) { -- LinkEventName["BANK_INCOME_INSIGHTS_COMPLETED"] = "BANK_INCOME_INSIGHTS_COMPLETED"; -- LinkEventName["CLOSE_OAUTH"] = "CLOSE_OAUTH"; -- LinkEventName["ERROR"] = "ERROR"; -- LinkEventName["EXIT"] = "EXIT"; -- LinkEventName["FAIL_OAUTH"] = "FAIL_OAUTH"; -- LinkEventName["HANDOFF"] = "HANDOFF"; -- LinkEventName["IDENTITY_VERIFICATION_START_STEP"] = "IDENTITY_VERIFICATION_START_STEP"; -- LinkEventName["IDENTITY_VERIFICATION_PASS_STEP"] = "IDENTITY_VERIFICATION_PASS_STEP"; -- LinkEventName["IDENTITY_VERIFICATION_FAIL_STEP"] = "IDENTITY_VERIFICATION_FAIL_STEP"; -- LinkEventName["IDENTITY_VERIFICATION_PENDING_REVIEW_STEP"] = "IDENTITY_VERIFICATION_PENDING_REVIEW_STEP"; -- LinkEventName["IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION"] = "IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION"; -- LinkEventName["IDENTITY_VERIFICATION_CREATE_SESSION"] = "IDENTITY_VERIFICATION_CREATE_SESSION"; -- LinkEventName["IDENTITY_VERIFICATION_RESUME_SESSION"] = "IDENTITY_VERIFICATION_RESUME_SESSION"; -- LinkEventName["IDENTITY_VERIFICATION_PASS_SESSION"] = "IDENTITY_VERIFICATION_PASS_SESSION"; -- LinkEventName["IDENTITY_VERIFICATION_FAIL_SESSION"] = "IDENTITY_VERIFICATION_FAIL_SESSION"; -- LinkEventName["IDENTITY_VERIFICATION_OPEN_UI"] = "IDENTITY_VERIFICATION_OPEN_UI"; -- LinkEventName["IDENTITY_VERIFICATION_RESUME_UI"] = "IDENTITY_VERIFICATION_RESUME_UI"; -- LinkEventName["IDENTITY_VERIFICATION_CLOSE_UI"] = "IDENTITY_VERIFICATION_CLOSE_UI"; -- LinkEventName["MATCHED_CONSENT"] = "MATCHED_CONSENT"; -- LinkEventName["MATCHED_SELECT_INSTITUTION"] = "MATCHED_SELECT_INSTITUTION"; -- LinkEventName["MATCHED_SELECT_VERIFY_METHOD"] = "MATCHED_SELECT_VERIFY_METHOD"; -- LinkEventName["OPEN"] = "OPEN"; -- LinkEventName["OPEN_MY_PLAID"] = "OPEN_MY_PLAID"; -- LinkEventName["OPEN_OAUTH"] = "OPEN_OAUTH"; -- LinkEventName["SEARCH_INSTITUTION"] = "SEARCH_INSTITUTION"; -- LinkEventName["SELECT_DEGRADED_INSTITUTION"] = "SELECT_DEGRADED_INSTITUTION"; -- LinkEventName["SELECT_DOWN_INSTITUTION"] = "SELECT_DOWN_INSTITUTION"; -- LinkEventName["SELECT_FILTERED_INSTITUTION"] = "SELECT_FILTERED_INSTITUTION"; -- LinkEventName["SELECT_INSTITUTION"] = "SELECT_INSTITUTION"; -- LinkEventName["SELECT_BRAND"] = "SELECT_BRAND"; -- LinkEventName["SELECT_AUTH_TYPE"] = "SELECT_AUTH_TYPE"; -- LinkEventName["SUBMIT_ACCOUNT_NUMBER"] = "SUBMIT_ACCOUNT_NUMBER"; -- LinkEventName["SUBMIT_DOCUMENTS"] = "SUBMIT_DOCUMENTS"; -- LinkEventName["SUBMIT_DOCUMENTS_SUCCESS"] = "SUBMIT_DOCUMENTS_SUCCESS"; -- LinkEventName["SUBMIT_DOCUMENTS_ERROR"] = "SUBMIT_DOCUMENTS_ERROR"; -- LinkEventName["SUBMIT_ROUTING_NUMBER"] = "SUBMIT_ROUTING_NUMBER"; -- LinkEventName["VIEW_DATA_TYPES"] = "VIEW_DATA_TYPES"; -- LinkEventName["SUBMIT_PHONE"] = "SUBMIT_PHONE"; -- LinkEventName["SKIP_SUBMIT_PHONE"] = "SKIP_SUBMIT_PHONE"; -- LinkEventName["VERIFY_PHONE"] = "VERIFY_PHONE"; -- LinkEventName["SUBMIT_CREDENTIALS"] = "SUBMIT_CREDENTIALS"; -- LinkEventName["SUBMIT_MFA"] = "SUBMIT_MFA"; -- LinkEventName["TRANSITION_VIEW"] = "TRANSITION_VIEW"; -- LinkEventName["CONNECT_NEW_INSTITUTION"] = "CONNECT_NEW_INSTITUTION"; -+(function(LinkEventName) { -+ LinkEventName['BANK_INCOME_INSIGHTS_COMPLETED'] = -+ 'BANK_INCOME_INSIGHTS_COMPLETED'; -+ LinkEventName['CLOSE_OAUTH'] = 'CLOSE_OAUTH'; -+ LinkEventName['ERROR'] = 'ERROR'; -+ LinkEventName['EXIT'] = 'EXIT'; -+ LinkEventName['FAIL_OAUTH'] = 'FAIL_OAUTH'; -+ LinkEventName['HANDOFF'] = 'HANDOFF'; -+ LinkEventName['IDENTITY_VERIFICATION_START_STEP'] = -+ 'IDENTITY_VERIFICATION_START_STEP'; -+ LinkEventName['IDENTITY_VERIFICATION_PASS_STEP'] = -+ 'IDENTITY_VERIFICATION_PASS_STEP'; -+ LinkEventName['IDENTITY_VERIFICATION_FAIL_STEP'] = -+ 'IDENTITY_VERIFICATION_FAIL_STEP'; -+ LinkEventName['IDENTITY_VERIFICATION_PENDING_REVIEW_STEP'] = -+ 'IDENTITY_VERIFICATION_PENDING_REVIEW_STEP'; -+ LinkEventName['IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION'] = -+ 'IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION'; -+ LinkEventName['IDENTITY_VERIFICATION_CREATE_SESSION'] = -+ 'IDENTITY_VERIFICATION_CREATE_SESSION'; -+ LinkEventName['IDENTITY_VERIFICATION_RESUME_SESSION'] = -+ 'IDENTITY_VERIFICATION_RESUME_SESSION'; -+ LinkEventName['IDENTITY_VERIFICATION_PASS_SESSION'] = -+ 'IDENTITY_VERIFICATION_PASS_SESSION'; -+ LinkEventName['IDENTITY_VERIFICATION_FAIL_SESSION'] = -+ 'IDENTITY_VERIFICATION_FAIL_SESSION'; -+ LinkEventName['IDENTITY_VERIFICATION_OPEN_UI'] = -+ 'IDENTITY_VERIFICATION_OPEN_UI'; -+ LinkEventName['IDENTITY_VERIFICATION_RESUME_UI'] = -+ 'IDENTITY_VERIFICATION_RESUME_UI'; -+ LinkEventName['IDENTITY_VERIFICATION_CLOSE_UI'] = -+ 'IDENTITY_VERIFICATION_CLOSE_UI'; -+ LinkEventName['MATCHED_CONSENT'] = 'MATCHED_CONSENT'; -+ LinkEventName['MATCHED_SELECT_INSTITUTION'] = 'MATCHED_SELECT_INSTITUTION'; -+ LinkEventName['MATCHED_SELECT_VERIFY_METHOD'] = -+ 'MATCHED_SELECT_VERIFY_METHOD'; -+ LinkEventName['OPEN'] = 'OPEN'; -+ LinkEventName['OPEN_MY_PLAID'] = 'OPEN_MY_PLAID'; -+ LinkEventName['OPEN_OAUTH'] = 'OPEN_OAUTH'; -+ LinkEventName['SEARCH_INSTITUTION'] = 'SEARCH_INSTITUTION'; -+ LinkEventName['SELECT_DEGRADED_INSTITUTION'] = 'SELECT_DEGRADED_INSTITUTION'; -+ LinkEventName['SELECT_DOWN_INSTITUTION'] = 'SELECT_DOWN_INSTITUTION'; -+ LinkEventName['SELECT_FILTERED_INSTITUTION'] = 'SELECT_FILTERED_INSTITUTION'; -+ LinkEventName['SELECT_INSTITUTION'] = 'SELECT_INSTITUTION'; -+ LinkEventName['SELECT_BRAND'] = 'SELECT_BRAND'; -+ LinkEventName['SELECT_AUTH_TYPE'] = 'SELECT_AUTH_TYPE'; -+ LinkEventName['SUBMIT_ACCOUNT_NUMBER'] = 'SUBMIT_ACCOUNT_NUMBER'; -+ LinkEventName['SUBMIT_DOCUMENTS'] = 'SUBMIT_DOCUMENTS'; -+ LinkEventName['SUBMIT_DOCUMENTS_SUCCESS'] = 'SUBMIT_DOCUMENTS_SUCCESS'; -+ LinkEventName['SUBMIT_DOCUMENTS_ERROR'] = 'SUBMIT_DOCUMENTS_ERROR'; -+ LinkEventName['SUBMIT_ROUTING_NUMBER'] = 'SUBMIT_ROUTING_NUMBER'; -+ LinkEventName['VIEW_DATA_TYPES'] = 'VIEW_DATA_TYPES'; -+ LinkEventName['SUBMIT_PHONE'] = 'SUBMIT_PHONE'; -+ LinkEventName['SKIP_SUBMIT_PHONE'] = 'SKIP_SUBMIT_PHONE'; -+ LinkEventName['VERIFY_PHONE'] = 'VERIFY_PHONE'; -+ LinkEventName['SUBMIT_CREDENTIALS'] = 'SUBMIT_CREDENTIALS'; -+ LinkEventName['SUBMIT_MFA'] = 'SUBMIT_MFA'; -+ LinkEventName['TRANSITION_VIEW'] = 'TRANSITION_VIEW'; -+ LinkEventName['CONNECT_NEW_INSTITUTION'] = 'CONNECT_NEW_INSTITUTION'; - })(LinkEventName || (LinkEventName = {})); - export var LinkEventViewName; --(function (LinkEventViewName) { -- LinkEventViewName["ACCEPT_TOS"] = "ACCEPT_TOS"; -- LinkEventViewName["CONNECTED"] = "CONNECTED"; -- LinkEventViewName["CONSENT"] = "CONSENT"; -- LinkEventViewName["CREDENTIAL"] = "CREDENTIAL"; -- LinkEventViewName["DATA_TRANSPARENCY"] = "DATA_TRANSPARENCY"; -- LinkEventViewName["DATA_TRANSPARENCY_CONSENT"] = "DATA_TRANSPARENCY_CONSENT"; -- LinkEventViewName["DOCUMENTARY_VERIFICATION"] = "DOCUMENTARY_VERIFICATION"; -- LinkEventViewName["ERROR"] = "ERROR"; -- LinkEventViewName["EXIT"] = "EXIT"; -- LinkEventViewName["KYC_CHECK"] = "KYC_CHECK"; -- LinkEventViewName["SELFIE_CHECK"] = "SELFIE_CHECK"; -- LinkEventViewName["LOADING"] = "LOADING"; -- LinkEventViewName["MATCHED_CONSENT"] = "MATCHED_CONSENT"; -- LinkEventViewName["MATCHED_CREDENTIAL"] = "MATCHED_CREDENTIAL"; -- LinkEventViewName["MATCHED_MFA"] = "MATCHED_MFA"; -- LinkEventViewName["MFA"] = "MFA"; -- LinkEventViewName["NUMBERS"] = "NUMBERS"; -- LinkEventViewName["NUMBERS_SELECT_INSTITUTION"] = "NUMBERS_SELECT_INSTITUTION"; -- LinkEventViewName["OAUTH"] = "OAUTH"; -- LinkEventViewName["RECAPTCHA"] = "RECAPTCHA"; -- LinkEventViewName["RISK_CHECK"] = "RISK_CHECK"; -- LinkEventViewName["SCREENING"] = "SCREENING"; -- LinkEventViewName["SELECT_ACCOUNT"] = "SELECT_ACCOUNT"; -- LinkEventViewName["SELECT_AUTH_TYPE"] = "SELECT_AUTH_TYPE"; -- LinkEventViewName["SUBMIT_PHONE"] = "SUBMIT_PHONE"; -- LinkEventViewName["VERIFY_PHONE"] = "VERIFY_PHONE"; -- LinkEventViewName["SELECT_SAVED_INSTITUTION"] = "SELECT_SAVED_INSTITUTION"; -- LinkEventViewName["SELECT_SAVED_ACCOUNT"] = "SELECT_SAVED_ACCOUNT"; -- LinkEventViewName["SELECT_BRAND"] = "SELECT_BRAND"; -- LinkEventViewName["SELECT_INSTITUTION"] = "SELECT_INSTITUTION"; -- LinkEventViewName["SUBMIT_DOCUMENTS"] = "SUBMIT_DOCUMENTS"; -- LinkEventViewName["SUBMIT_DOCUMENTS_SUCCESS"] = "SUBMIT_DOCUMENTS_SUCCESS"; -- LinkEventViewName["SUBMIT_DOCUMENTS_ERROR"] = "SUBMIT_DOCUMENTS_ERROR"; -- LinkEventViewName["UPLOAD_DOCUMENTS"] = "UPLOAD_DOCUMENTS"; -- LinkEventViewName["VERIFY_SMS"] = "VERIFY_SMS"; -+(function(LinkEventViewName) { -+ LinkEventViewName['ACCEPT_TOS'] = 'ACCEPT_TOS'; -+ LinkEventViewName['CONNECTED'] = 'CONNECTED'; -+ LinkEventViewName['CONSENT'] = 'CONSENT'; -+ LinkEventViewName['CREDENTIAL'] = 'CREDENTIAL'; -+ LinkEventViewName['DATA_TRANSPARENCY'] = 'DATA_TRANSPARENCY'; -+ LinkEventViewName['DATA_TRANSPARENCY_CONSENT'] = 'DATA_TRANSPARENCY_CONSENT'; -+ LinkEventViewName['DOCUMENTARY_VERIFICATION'] = 'DOCUMENTARY_VERIFICATION'; -+ LinkEventViewName['ERROR'] = 'ERROR'; -+ LinkEventViewName['EXIT'] = 'EXIT'; -+ LinkEventViewName['KYC_CHECK'] = 'KYC_CHECK'; -+ LinkEventViewName['SELFIE_CHECK'] = 'SELFIE_CHECK'; -+ LinkEventViewName['LOADING'] = 'LOADING'; -+ LinkEventViewName['MATCHED_CONSENT'] = 'MATCHED_CONSENT'; -+ LinkEventViewName['MATCHED_CREDENTIAL'] = 'MATCHED_CREDENTIAL'; -+ LinkEventViewName['MATCHED_MFA'] = 'MATCHED_MFA'; -+ LinkEventViewName['MFA'] = 'MFA'; -+ LinkEventViewName['NUMBERS'] = 'NUMBERS'; -+ LinkEventViewName['NUMBERS_SELECT_INSTITUTION'] = -+ 'NUMBERS_SELECT_INSTITUTION'; -+ LinkEventViewName['OAUTH'] = 'OAUTH'; -+ LinkEventViewName['RECAPTCHA'] = 'RECAPTCHA'; -+ LinkEventViewName['RISK_CHECK'] = 'RISK_CHECK'; -+ LinkEventViewName['SCREENING'] = 'SCREENING'; -+ LinkEventViewName['SELECT_ACCOUNT'] = 'SELECT_ACCOUNT'; -+ LinkEventViewName['SELECT_AUTH_TYPE'] = 'SELECT_AUTH_TYPE'; -+ LinkEventViewName['SUBMIT_PHONE'] = 'SUBMIT_PHONE'; -+ LinkEventViewName['VERIFY_PHONE'] = 'VERIFY_PHONE'; -+ LinkEventViewName['SELECT_SAVED_INSTITUTION'] = 'SELECT_SAVED_INSTITUTION'; -+ LinkEventViewName['SELECT_SAVED_ACCOUNT'] = 'SELECT_SAVED_ACCOUNT'; -+ LinkEventViewName['SELECT_BRAND'] = 'SELECT_BRAND'; -+ LinkEventViewName['SELECT_INSTITUTION'] = 'SELECT_INSTITUTION'; -+ LinkEventViewName['SUBMIT_DOCUMENTS'] = 'SUBMIT_DOCUMENTS'; -+ LinkEventViewName['SUBMIT_DOCUMENTS_SUCCESS'] = 'SUBMIT_DOCUMENTS_SUCCESS'; -+ LinkEventViewName['SUBMIT_DOCUMENTS_ERROR'] = 'SUBMIT_DOCUMENTS_ERROR'; -+ LinkEventViewName['UPLOAD_DOCUMENTS'] = 'UPLOAD_DOCUMENTS'; -+ LinkEventViewName['VERIFY_SMS'] = 'VERIFY_SMS'; - })(LinkEventViewName || (LinkEventViewName = {})); - /// Methods to present Link on iOS. - /// FULL_SCREEN is the converts to UIModalPresentationOverFullScreen on the native side. - /// MODAL will use the default presentation style for iOS which is UIModalPresentationAutomatic. - export var LinkIOSPresentationStyle; --(function (LinkIOSPresentationStyle) { -- LinkIOSPresentationStyle["FULL_SCREEN"] = "FULL_SCREEN"; -- LinkIOSPresentationStyle["MODAL"] = "MODAL"; -+(function(LinkIOSPresentationStyle) { -+ LinkIOSPresentationStyle['FULL_SCREEN'] = 'FULL_SCREEN'; -+ LinkIOSPresentationStyle['MODAL'] = 'MODAL'; - })(LinkIOSPresentationStyle || (LinkIOSPresentationStyle = {})); -diff --git a/node_modules/react-native-plaid-link-sdk/dist/__tests__/Types.tests.d.ts b/node_modules/react-native-plaid-link-sdk/dist/__tests__/Types.tests.d.ts -index cd4ccde..cb0ff5c 100644 ---- a/node_modules/react-native-plaid-link-sdk/dist/__tests__/Types.tests.d.ts -+++ b/node_modules/react-native-plaid-link-sdk/dist/__tests__/Types.tests.d.ts -@@ -1 +1 @@ --declare const Types: any; -+export {}; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/__tests__/Types.tests.js b/node_modules/react-native-plaid-link-sdk/dist/__tests__/Types.tests.js -index 831866b..f38aff8 100644 ---- a/node_modules/react-native-plaid-link-sdk/dist/__tests__/Types.tests.js -+++ b/node_modules/react-native-plaid-link-sdk/dist/__tests__/Types.tests.js -@@ -1,14 +1,14 @@ --"use strict"; - const Types = require('./../Types'); - test('test token configuration', () => { -- const linkTokenConfiguration = { -- token: "test-token", -- noLoadingState: false, -- logLevel: Types.LinkLogLevel.DEBUG, -- extras: null, -- }; -- expect(linkTokenConfiguration.noLoadingState).toBe(false); -- expect(linkTokenConfiguration.token).toBe("test-token"); -- expect(linkTokenConfiguration.logLevel).toBe(Types.LinkLogLevel.DEBUG); -- expect(linkTokenConfiguration.extras).toBe(null); -+ const linkTokenConfiguration = { -+ token: 'test-token', -+ noLoadingState: false, -+ logLevel: Types.LinkLogLevel.DEBUG, -+ extras: null, -+ }; -+ expect(linkTokenConfiguration.noLoadingState).toBe(false); -+ expect(linkTokenConfiguration.token).toBe('test-token'); -+ expect(linkTokenConfiguration.logLevel).toBe(Types.LinkLogLevel.DEBUG); -+ expect(linkTokenConfiguration.extras).toBe(null); - }); -+export {}; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/check_version_hook.d.ts b/node_modules/react-native-plaid-link-sdk/dist/check_version_hook.d.ts -new file mode 100644 -index 0000000..cb0ff5c ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/dist/check_version_hook.d.ts -@@ -0,0 +1 @@ -+export {}; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/check_version_hook.js b/node_modules/react-native-plaid-link-sdk/dist/check_version_hook.js -new file mode 100644 -index 0000000..34a47d4 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/dist/check_version_hook.js -@@ -0,0 +1,15 @@ -+'use strict'; -+const fs = require('fs'); -+const rn_version = JSON.parse(fs.readFileSync('package.json', 'utf-8'))[ -+ 'version' -+]; -+const android_version = fs -+ .readFileSync('android/src/main/AndroidManifest.xml', 'utf-8') -+ .match(/(?<=value=").*(?=")/)[0]; -+if (rn_version != android_version) { -+ console.error('Commit failed SDK version mismatch'); -+ console.error( -+ 'Please ensure package.json and android/src/main/AndroidManifest.xml have the same version', -+ ); -+ process.exit(-1); -+} -diff --git a/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModule.d.ts b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModule.d.ts -new file mode 100644 -index 0000000..1de3019 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModule.d.ts -@@ -0,0 +1,14 @@ -+import { TurboModule } from 'react-native'; -+import { Int32 } from 'react-native/Libraries/Types/CodegenTypes'; -+import { LinkSuccess as UnsafeObject, LinkExit as Double, LinkError as Float } from '../Types'; -+export interface Spec extends TurboModule { -+ continueFromRedirectUriString(redirectUriString: string): void; -+ create(configuration: Object): void; -+ open(onSuccess: (success: UnsafeObject) => void, onExit: (error: Float, result: Double) => void): void; -+ dismiss(): void; -+ startLinkActivityForResult(data: string, onSuccessCallback: (result: UnsafeObject) => void, onExitCallback: (result: Double) => void): void; -+ addListener(eventName: string): void; -+ removeListeners(count: Int32): void; -+} -+declare const _default: Spec; -+export default _default; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModule.js b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModule.js -new file mode 100644 -index 0000000..310a9c5 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModule.js -@@ -0,0 +1,4 @@ -+// we use Object type because methods on the native side use NSDictionary and ReadableMap -+// and we want to stay compatible with those -+import { TurboModuleRegistry } from 'react-native'; -+export default TurboModuleRegistry.getEnforcing('RNLinksdk'); -diff --git a/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleAndroid.d.ts b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleAndroid.d.ts -new file mode 100644 -index 0000000..82f29a1 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleAndroid.d.ts -@@ -0,0 +1,9 @@ -+import { TurboModule } from 'react-native'; -+import { Int32, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes'; -+export interface Spec extends TurboModule { -+ startLinkActivityForResult(token: string, noLoadingState: boolean, logLevel: string, onSuccessCallback: (result: UnsafeObject) => void, onExitCallback: (result: UnsafeObject) => void): void; -+ addListener(eventName: string): void; -+ removeListeners(count: Int32): void; -+} -+declare const _default: Spec | null; -+export default _default; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleAndroid.js b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleAndroid.js -new file mode 100644 -index 0000000..d0ea456 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleAndroid.js -@@ -0,0 +1,4 @@ -+// we use Object type because methods on the native side use NSDictionary and ReadableMap -+// and we want to stay compatible with those -+import { TurboModuleRegistry } from 'react-native'; -+export default TurboModuleRegistry.get('PlaidAndroid'); -diff --git a/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleiOS.d.ts b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleiOS.d.ts -new file mode 100644 -index 0000000..aefee8c ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleiOS.d.ts -@@ -0,0 +1,11 @@ -+import { TurboModule } from 'react-native'; -+import { Int32, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes'; -+export interface Spec extends TurboModule { -+ create(token: string, noLoadingState: boolean): void; -+ open(fullScreen: boolean, onSuccess: (success: UnsafeObject) => void, onExit: (error: UnsafeObject, result: UnsafeObject) => void): void; -+ dismiss(): void; -+ addListener(eventName: string): void; -+ removeListeners(count: Int32): void; -+} -+declare const _default: Spec | null; -+export default _default; -diff --git a/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleiOS.js b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleiOS.js -new file mode 100644 -index 0000000..99845a1 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/dist/fabric/NativePlaidLinkModuleiOS.js -@@ -0,0 +1,4 @@ -+// we use Object type because methods on the native side use NSDictionary and ReadableMap -+// and we want to stay compatible with those -+import { TurboModuleRegistry } from 'react-native'; -+export default TurboModuleRegistry.get('RNLinksdk'); -diff --git a/node_modules/react-native-plaid-link-sdk/dist/index.js b/node_modules/react-native-plaid-link-sdk/dist/index.js -index 68c2d4b..acad079 100644 ---- a/node_modules/react-native-plaid-link-sdk/dist/index.js -+++ b/node_modules/react-native-plaid-link-sdk/dist/index.js -@@ -1,6 +1,6 @@ --import { openLink, dismissLink, usePlaidEmitter, PlaidLink, } from './PlaidLink'; -+import { openLink, dismissLink, usePlaidEmitter, PlaidLink } from './PlaidLink'; - export * from './Types'; - export default PlaidLink; --export { PlaidLink, openLink, dismissLink, usePlaidEmitter, }; -+export { PlaidLink, openLink, dismissLink, usePlaidEmitter }; - // Components - export { EmbeddedLinkView } from './EmbeddedLink/EmbeddedLinkView'; -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.h b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.h -index 8a1c350..035b91c 100644 ---- a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.h -+++ b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.h -@@ -1,15 +1,17 @@ -- --#if __has_include() --#import --#import --#else --#import "RCTBridgeModule.h" --#import "RCTEventEmitter.h" -+#ifdef RCT_NEW_ARCH_ENABLED -+#import - #endif -+#import -+#import "RCTEventEmitter.h" - - #import - --@interface RNLinksdk : RCTEventEmitter -+@interface RNLinksdk : RCTEventEmitter -+#ifdef RCT_NEW_ARCH_ENABLED -+ -+#else -+ -+#endif - - + (NSDictionary *)dictionaryFromSuccess:(PLKLinkSuccess *)success; - + (NSDictionary *)dictionaryFromEvent:(PLKLinkEvent *)event; -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm -index ef3fe85..b3b92d6 100644 ---- a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm -+++ b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.mm -@@ -1,4 +1,5 @@ - #import "RNLinksdk.h" -+#import "RNPlaidHelper.h" - - #import - #import -@@ -66,11 +67,11 @@ - (void)stopObserving { - self.hasObservers = NO; - } - --RCT_EXPORT_METHOD(create:(NSString*)token :(BOOL)noLoadingState) { -- __weak typeof(self) weakSelf = self; -+RCT_EXPORT_METHOD(create:(NSString*)token noLoadingState:(BOOL)noLoadingState) { -+ __weak RNLinksdk *weakSelf = self; - - void (^onSuccess)(PLKLinkSuccess *) = ^(PLKLinkSuccess *success) { -- __typeof(weakSelf) strongSelf = weakSelf; -+ RNLinksdk *strongSelf = weakSelf; - - if (strongSelf.successCallback) { - NSDictionary *jsMetadata = [RNLinksdk dictionaryFromSuccess:success]; -@@ -80,7 +81,7 @@ - (void)stopObserving { - }; - - void (^onExit)(PLKLinkExit *) = ^(PLKLinkExit *exit) { -- __typeof(weakSelf) strongSelf = weakSelf; -+ RNLinksdk *strongSelf = weakSelf; - - if (strongSelf.exitCallback) { - NSDictionary *exitMetadata = [RNLinksdk dictionaryFromExit:exit]; -@@ -94,7 +95,7 @@ - (void)stopObserving { - }; - - void (^onEvent)(PLKLinkEvent *) = ^(PLKLinkEvent *event) { -- __typeof(weakSelf) strongSelf = weakSelf; -+ RNLinksdk *strongSelf = weakSelf; - if (strongSelf.hasObservers) { - NSDictionary *eventDictionary = [RNLinksdk dictionaryFromEvent:event]; - [strongSelf sendEventWithName:kRNLinkKitOnEventEvent -@@ -108,11 +109,11 @@ - (void)stopObserving { - config.noLoadingState = noLoadingState; - - NSError *creationError = nil; -- self.linkHandler = [PLKPlaid createWithLinkTokenConfiguration:config error:&creationError]; -+ self.linkHandler = [RNPlaidHelper createWithLinkTokenConfiguration:config error:&creationError]; - self.creationError = creationError; - } - --RCT_EXPORT_METHOD(open: (BOOL)fullScreen :(RCTResponseSenderBlock)onSuccess :(RCTResponseSenderBlock)onExit) { -+RCT_EXPORT_METHOD(open:(BOOL)fullScreen onSuccess:(RCTResponseSenderBlock)onSuccess onExit:(RCTResponseSenderBlock)onExit) { - if (self.linkHandler) { - self.successCallback = onSuccess; - self.exitCallback = onExit; -@@ -122,7 +123,7 @@ - (void)stopObserving { - // unnecessarily invoked. - __block bool didPresent = NO; - -- __weak typeof(self) weakSelf = self; -+ __weak RNLinksdk *weakSelf = self; - void(^presentationHandler)(UIViewController *) = ^(UIViewController *linkViewController) { - - if (fullScreen) { -@@ -619,4 +620,12 @@ + (NSDictionary *)dictionaryFromExit:(PLKLinkExit *)exit { - }; - } - -+#if RCT_NEW_ARCH_ENABLED -+- (std::shared_ptr)getTurboModule: -+ (const facebook::react::ObjCTurboModule::InitParams &)params -+{ -+ return std::make_shared(params); -+} -+#endif -+ - @end -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata -deleted file mode 100644 -index 919434a..0000000 ---- a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata -+++ /dev/null -@@ -1,7 +0,0 @@ -- -- -- -- -- -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -deleted file mode 100644 -index 18d9810..0000000 ---- a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -+++ /dev/null -@@ -1,8 +0,0 @@ -- -- -- -- -- IDEDidComputeMac32BitWarning -- -- -- -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/xcuserdata/dtroupe.xcuserdatad/UserInterfaceState.xcuserstate b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/xcuserdata/dtroupe.xcuserdatad/UserInterfaceState.xcuserstate -deleted file mode 100644 -index 47e9cc2..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/project.xcworkspace/xcuserdata/dtroupe.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/xcuserdata/dtroupe.xcuserdatad/xcschemes/xcschememanagement.plist b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/xcuserdata/dtroupe.xcuserdatad/xcschemes/xcschememanagement.plist -deleted file mode 100644 -index 5b4fa70..0000000 ---- a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcodeproj/xcuserdata/dtroupe.xcuserdatad/xcschemes/xcschememanagement.plist -+++ /dev/null -@@ -1,19 +0,0 @@ -- -- -- -- -- SchemeUserState -- -- RNLinksdk.xcscheme_^#shared#^_ -- -- orderHint -- 0 -- -- RNLinksdkUnitTests.xcscheme_^#shared#^_ -- -- orderHint -- 1 -- -- -- -- -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcworkspace/xcuserdata/dtroupe.xcuserdatad/UserInterfaceState.xcuserstate b/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcworkspace/xcuserdata/dtroupe.xcuserdatad/UserInterfaceState.xcuserstate -deleted file mode 100644 -index 824773d..0000000 -Binary files a/node_modules/react-native-plaid-link-sdk/ios/RNLinksdk.xcworkspace/xcuserdata/dtroupe.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNPlaidHelper.h b/node_modules/react-native-plaid-link-sdk/ios/RNPlaidHelper.h -new file mode 100644 -index 0000000..535d333 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/ios/RNPlaidHelper.h -@@ -0,0 +1,7 @@ -+#import -+ -+@interface RNPlaidHelper : NSObject -+ -++ (id _Nullable)createWithLinkTokenConfiguration:(PLKLinkTokenConfiguration * _Nonnull)linkTokenConfiguration error:(NSError * _Nullable * _Nullable)error; -+ -+@end -diff --git a/node_modules/react-native-plaid-link-sdk/ios/RNPlaidHelper.m b/node_modules/react-native-plaid-link-sdk/ios/RNPlaidHelper.m -new file mode 100644 -index 0000000..2288299 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/ios/RNPlaidHelper.m -@@ -0,0 +1,10 @@ -+#import "RNPlaidHelper.h" -+ -+@implementation RNPlaidHelper -+ -++ (id _Nullable)createWithLinkTokenConfiguration:(PLKLinkTokenConfiguration * _Nonnull)linkTokenConfiguration error:(NSError * _Nullable * _Nullable)error -+{ -+ return [PLKPlaid createWithLinkTokenConfiguration:linkTokenConfiguration error:error]; -+} -+ -+@end -diff --git a/node_modules/react-native-plaid-link-sdk/package.json b/node_modules/react-native-plaid-link-sdk/package.json -index 22c7d2c..3d1b85c 100644 ---- a/node_modules/react-native-plaid-link-sdk/package.json -+++ b/node_modules/react-native-plaid-link-sdk/package.json -@@ -4,11 +4,13 @@ - "description": "React Native Plaid Link SDK", - "main": "dist/index.js", - "types": "dist/index.d.ts", -+ "react-native": "src/index.ts", - "files": [ - "dist/**/*", - "android/**/*", -- "ios", -- "react-native-plaid-link-sdk.podspec" -+ "ios/**/*", -+ "react-native-plaid-link-sdk.podspec", -+ "src/**/*" - ], - "scripts": { - "lint": "eslint \"./**/*.{js,jsx}\" --fix", -@@ -47,7 +49,7 @@ - "@react-native-community/eslint-plugin": "^1.1.0", - "@types/jest": "^26.0.14", - "@types/react": "^16.14.20", -- "@types/react-native": "^0.66.0", -+ "@types/react-native": "^0.71.3", - "@types/react-test-renderer": "^16.9.3", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", -@@ -62,5 +64,16 @@ - "react": "18.0.0", - "react-native": "0.69.9", - "typescript": "^4.9.5" -+ }, -+ "dependencies": { -+ "react-native-plaid-link-sdk": "^10.4.0" -+ }, -+ "codegenConfig": { -+ "name": "rnplaidlink", -+ "type": "modules", -+ "jsSrcsDir": "./src/fabric", -+ "android": { -+ "javaPackageName": "com.plaid" -+ } - } - } -diff --git a/node_modules/react-native-plaid-link-sdk/react-native-plaid-link-sdk.podspec b/node_modules/react-native-plaid-link-sdk/react-native-plaid-link-sdk.podspec -index ee59a19..40ac7df 100644 ---- a/node_modules/react-native-plaid-link-sdk/react-native-plaid-link-sdk.podspec -+++ b/node_modules/react-native-plaid-link-sdk/react-native-plaid-link-sdk.podspec -@@ -2,6 +2,8 @@ require 'json' - - package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) - -+fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1' -+ - Pod::Spec.new do |s| - s.name = package['name'] - s.version = package['version'] -@@ -13,8 +15,13 @@ Pod::Spec.new do |s| - s.platform = :ios, "14.0" - - s.source = { :git => "https://github.com/plaid/react-native-plaid-link-sdk.git", :tag => "v#{s.version}" } -- s.source_files = "ios/*.{h,m,swift}" -+ s.source_files = "ios/**/*.{h,m,mm,swift}" -+ -+ if fabric_enabled -+ install_modules_dependencies(s) -+ else -+ s.dependency "React-Core" -+ end - -- s.dependency 'React-Core' - s.dependency 'Plaid', '~> 5.2.0' - end -diff --git a/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/EmbeddedLinkView.tsx b/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/EmbeddedLinkView.tsx -new file mode 100644 -index 0000000..0243de2 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/EmbeddedLinkView.tsx -@@ -0,0 +1,95 @@ -+import React from 'react'; -+import { StyleProp, ViewStyle } from 'react-native'; -+import NativeEmbeddedLinkView from './NativeEmbeddedLinkView'; -+import { -+ LinkSuccessListener, -+ LinkSuccess, -+ LinkExitListener, -+ LinkExit, -+ LinkIOSPresentationStyle, -+ LinkOnEventListener, -+ LinkEvent, -+ LinkEventName, -+ LinkEventMetadata, -+ LinkError, -+ LinkExitMetadata, -+ LinkSuccessMetadata, -+} from '../Types'; -+ -+type EmbeddedLinkProps = { -+ token: String, -+ iOSPresentationStyle: LinkIOSPresentationStyle, -+ onEvent: LinkOnEventListener | undefined, -+ onSuccess: LinkSuccessListener, -+ onExit: LinkExitListener | undefined, -+ style: StyleProp | undefined, -+} -+ -+class EmbeddedEvent implements LinkEvent { -+ eventName: LinkEventName; -+ metadata: LinkEventMetadata; -+ -+ constructor(event: any) { -+ this.eventName = event.eventName -+ this.metadata = event.metadata -+ } -+} -+ -+class EmbeddedExit implements LinkExit { -+ error: LinkError | undefined; -+ metadata: LinkExitMetadata; -+ -+ constructor(event: any) { -+ this.error = event.error; -+ this.metadata = event.metadata; -+ } -+} -+ -+class EmbeddedSuccess implements LinkSuccess { -+ publicToken: string; -+ metadata: LinkSuccessMetadata; -+ -+ constructor(event: any) { -+ this.publicToken = event.publicToken; -+ this.metadata = event.metadata; -+ } -+} -+ -+export const EmbeddedLinkView: React.FC = (props) => { -+ -+ const {token, iOSPresentationStyle, onEvent, onSuccess, onExit, style} = props; -+ -+ const onEmbeddedEvent = (event: any) => { -+ -+ switch (event.nativeEvent.embeddedEventName) { -+ case 'onSuccess': { -+ if (!onSuccess) { return; } -+ const embeddedSuccess = new EmbeddedSuccess(event.nativeEvent); -+ onSuccess(embeddedSuccess); -+ break; -+ } -+ case 'onExit': { -+ if (!onExit) {return; } -+ const embeddedExit = new EmbeddedExit(event.nativeEvent); -+ onExit(embeddedExit); -+ break; -+ } -+ case 'onEvent': { -+ if (!onEvent) { return; } -+ const embeddedEvent = new EmbeddedEvent(event.nativeEvent); -+ onEvent(embeddedEvent); -+ break; -+ } -+ default: { -+ return; -+ } -+ } -+ } -+ -+ return -+}; -\ No newline at end of file -diff --git a/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/EmbeddedLinkView.web.tsx b/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/EmbeddedLinkView.web.tsx -new file mode 100644 -index 0000000..7a71609 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/EmbeddedLinkView.web.tsx -@@ -0,0 +1,5 @@ -+// EmbeddedLinkView.web.tsx is a shim file which causes web bundlers to ignore the EmbeddedLinkView.tsx file -+// which imports requireNativeComponent (causing a runtime error with react-native-web). -+// Ref - https://github.com/plaid/react-native-plaid-link-sdk/issues/564 -+import React from 'react'; -+export const EmbeddedLinkView = () => null; -diff --git a/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/NativeEmbeddedLinkView.tsx b/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/NativeEmbeddedLinkView.tsx -new file mode 100644 -index 0000000..da05fb1 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/EmbeddedLink/NativeEmbeddedLinkView.tsx -@@ -0,0 +1,9 @@ -+import { requireNativeComponent } from 'react-native'; -+ -+// Error "Tried to register two views with the same name PLKEmbeddedView" -+// will be thrown during hot reload when any change is made to the -+// file that is calling this requireNativeComponent('PLKEmbeddedView') call. -+// Leaving this in its own file resolves this issue. -+const NativeEmbeddedLinkView = requireNativeComponent('PLKEmbeddedView'); -+ -+export default NativeEmbeddedLinkView; -\ No newline at end of file -diff --git a/node_modules/react-native-plaid-link-sdk/src/PlaidLink.tsx b/node_modules/react-native-plaid-link-sdk/src/PlaidLink.tsx -new file mode 100644 -index 0000000..b35c06f ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/PlaidLink.tsx -@@ -0,0 +1,117 @@ -+import React, { useEffect } from 'react'; -+import { NativeEventEmitter, Platform, TouchableOpacity } from 'react-native'; -+import { -+ LinkError, -+ LinkEventListener, -+ LinkExit, -+ LinkIOSPresentationStyle, -+ LinkLogLevel, -+ LinkSuccess, -+ PlaidLinkComponentProps, -+ PlaidLinkProps, -+} from './Types'; -+import RNLinksdkAndroid from './fabric/NativePlaidLinkModuleAndroid'; -+import RNLinksdkiOS from './fabric/NativePlaidLinkModuleiOS'; -+ -+const RNLinksdk = (Platform.OS === 'android' ? RNLinksdkAndroid : RNLinksdkiOS) ?? undefined; -+ -+/** -+ * A hook that registers a listener on the Plaid emitter for the 'onEvent' type. -+ * The listener is cleaned up when this view is unmounted -+ * -+ * @param linkEventListener the listener to call -+ */ -+export const usePlaidEmitter = (linkEventListener: LinkEventListener) => { -+ useEffect(() => { -+ const emitter = new NativeEventEmitter(RNLinksdk); -+ const listener = emitter.addListener('onEvent', linkEventListener); -+ // Clean up after this effect: -+ return function cleanup() { -+ listener.remove(); -+ }; -+ }, []); -+}; -+ -+export const openLink = async (props: PlaidLinkProps) => { -+ let config = props.tokenConfig; -+ let noLoadingState = config.noLoadingState ?? false; -+ -+ if (Platform.OS === 'android') { -+ if (RNLinksdkAndroid === null) { -+ throw new Error('[react-native-plaid-link-sdk] RNLinksdkAndroid is not defined'); -+ } -+ -+ RNLinksdkAndroid.startLinkActivityForResult( -+ config.token, -+ noLoadingState, -+ config.logLevel ?? LinkLogLevel.ERROR, -+ // @ts-ignore we use Object type in the spec file as it maps to NSDictionary and ReadableMap -+ (result: LinkSuccess) => { -+ if (props.onSuccess != null) { -+ props.onSuccess(result); -+ } -+ }, -+ (result: LinkExit) => { -+ if (props.onExit != null) { -+ if (result.error != null && result.error.displayMessage != null) { -+ //TODO(RNSDK-118): Remove errorDisplayMessage field in next major update. -+ result.error.errorDisplayMessage = result.error.displayMessage; -+ } -+ props.onExit(result); -+ } -+ }, -+ ); -+ } else { -+ if (RNLinksdkiOS === null) { -+ throw new Error('[react-native-plaid-link-sdk] RNLinksdkiOS is not defined'); -+ } -+ -+ RNLinksdkiOS.create(config.token, noLoadingState); -+ -+ let presentFullScreen = -+ props.iOSPresentationStyle == LinkIOSPresentationStyle.FULL_SCREEN; -+ -+ RNLinksdkiOS.open( -+ presentFullScreen, -+ // @ts-ignore we use Object type in the spec file as it maps to NSDictionary and ReadableMap -+ (result: LinkSuccess) => { -+ if (props.onSuccess != null) { -+ props.onSuccess(result); -+ } -+ }, -+ (error: LinkError, result: LinkExit) => { -+ if (props.onExit != null) { -+ if (error) { -+ var data = result || {}; -+ data.error = error; -+ props.onExit(data); -+ } else { -+ props.onExit(result); -+ } -+ } -+ }, -+ ); -+ } -+}; -+ -+export const dismissLink = () => { -+ if (Platform.OS === 'ios') { -+ if (RNLinksdkiOS === null) { -+ throw new Error('[react-native-plaid-link-sdk] RNLinksdkiOS is not defined'); -+ } -+ -+ RNLinksdkiOS.dismiss(); -+ } -+}; -+ -+export const PlaidLink = (props: PlaidLinkComponentProps) => { -+ function onPress() { -+ props.onPress?.(); -+ openLink(props); -+ } -+ -+ return ( -+ // @ts-ignore some types directories misconfiguration -+ {props.children} -+ ); -+}; -diff --git a/node_modules/react-native-plaid-link-sdk/src/Types.ts b/node_modules/react-native-plaid-link-sdk/src/Types.ts -new file mode 100644 -index 0000000..a7d30c6 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/Types.ts -@@ -0,0 +1,550 @@ -+interface CommonPlaidLinkOptions { -+ logLevel?: LinkLogLevel; -+ extras?: Record; -+} -+ -+export type LinkTokenConfiguration = (CommonPlaidLinkOptions & { -+ token: string; -+ // A `Bool` indicating that Link should skip displaying a loading animation until the Link UI is fully loaded. -+ // This can be used to display custom loading UI while Link content is loading (and will skip any initial loading UI in Link). -+ // Note: Dismiss custom loading UI on the OPEN & EXIT events. -+ // -+ // Note: This should be set to `true` when setting the `eu_config.headless` field in /link/token/create requests to `true`. -+ // For reference, see https://plaid.com/docs/api/tokens/#link-token-create-request-eu-config-headless -+ noLoadingState?: boolean; -+}); -+ -+export enum LinkLogLevel { -+ DEBUG="debug", -+ INFO="info", -+ WARN="warn", -+ ERROR="error", -+} -+ -+export enum PlaidEnvironment { -+ PRODUCTION = 'production', -+ DEVELOPMENT = 'development', -+ SANDBOX = 'sandbox', -+} -+ -+export enum PlaidProduct { -+ ASSETS="assets", -+ AUTH="auth", -+ DEPOSIT_SWITCH="deposit_switch", -+ IDENTITY="identity", -+ INCOME="income", -+ INVESTMENTS="investments", -+ LIABILITIES="liabilities", -+ LIABILITIES_REPORT="liabilities_report", -+ PAYMENT_INITIATION="payment_initiation", -+ TRANSACTIONS="transactions", -+} -+ -+export enum LinkAccountType { -+ CREDIT = 'credit', -+ DEPOSITORY = 'depository', -+ INVESTMENT = 'investment', -+ LOAN = 'loan', -+ OTHER = 'other', -+} -+ -+export enum LinkAccountSubtypes { -+ ALL = 'all', -+ CREDIT_CARD = 'credit card', -+ PAYPAL = 'paypal', -+ AUTO = 'auto', -+ BUSINESS = 'business', -+ COMMERCIAL = 'commercial', -+ CONSTRUCTION = 'construction', -+ CONSUMER = 'consumer', -+ HOME_EQUITY = 'home equity', -+ LINE_OF_CREDIT = 'line of credit', -+ LOAN = 'loan', -+ MORTGAGE = 'mortgage', -+ OVERDRAFT = 'overdraft', -+ STUDENT = 'student', -+ CASH_MANAGEMENT = 'cash management', -+ CD = 'cd', -+ CHECKING = 'checking', -+ EBT = 'ebt', -+ HSA = 'hsa', -+ MONEY_MARKET = 'money market', -+ PREPAID = 'prepaid', -+ SAVINGS = 'savings', -+ FOUR_0_1_A = '401a', -+ FOUR_0_1_K = '401k', -+ FOUR_0_3_B = '403B', -+ FOUR_5_7_B = '457b', -+ FIVE_2_9 = '529', -+ BROKERAGE = 'brokerage', -+ CASH_ISA = 'cash isa', -+ EDUCATION_SAVINGS_ACCOUNT = 'education savings account', -+ FIXED_ANNUNITY = 'fixed annuity', -+ GIC = 'gic', -+ HEALTH_REIMBURSEMENT_ARRANGEMENT = 'health reimbursement arrangement', -+ IRA = 'ira', -+ ISA = 'isa', -+ KEOGH = 'keogh', -+ LIF = 'lif', -+ LIRA = 'lira', -+ LRIF = 'lrif', -+ LRSP = 'lrsp', -+ MUTUAL_FUND = 'mutual fund', -+ NON_TAXABLE_BROKERAGE_ACCOUNT = 'non-taxable brokerage account', -+ PENSION = 'pension', -+ PLAN = 'plan', -+ PRIF = 'prif', -+ PROFIT_SHARING_PLAN = 'profit sharing plan', -+ RDSP = 'rdsp', -+ RESP = 'resp', -+ RETIREMENT = 'retirement', -+ RLIF = 'rlif', -+ ROTH_401K = 'roth 401k', -+ ROTH = 'roth', -+ RRIF = 'rrif', -+ RRSP = 'rrsp', -+ SARSEP = 'sarsep', -+ SEP_IRA = 'sep ira', -+ SIMPLE_IRA = 'simple ira', -+ SIPP = 'sipp', -+ STOCK_PLAN = 'stock plan', -+ TFSA = 'tfsa', -+ THRIFT_SAVINGS_PLAN = 'thrift savings plan', -+ TRUST = 'trust', -+ UGMA = 'ugma', -+ UTMA = 'utma', -+ VARIABLE_ANNUITY = 'variable annuity' -+} -+ -+export interface LinkAccountSubtype { -+} -+ -+export class LinkAccountSubtypeCredit implements LinkAccountSubtype { -+ public static readonly ALL = new LinkAccountSubtypeCredit(LinkAccountType.CREDIT, LinkAccountSubtypes.ALL); -+ public static readonly CREDIT_CARD = new LinkAccountSubtypeCredit(LinkAccountType.CREDIT, LinkAccountSubtypes.CREDIT_CARD); -+ public static readonly PAYPAL = new LinkAccountSubtypeCredit(LinkAccountType.CREDIT, LinkAccountSubtypes.PAYPAL); -+ -+ private constructor(public readonly type: LinkAccountType, public readonly subtype: LinkAccountSubtype) { } -+} -+ -+export class LinkAccountSubtypeDepository implements LinkAccountSubtype { -+ public static readonly ALL = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.ALL); -+ public static readonly CASH_MANAGEMENT = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.CASH_MANAGEMENT); -+ public static readonly CD = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.CD); -+ public static readonly CHECKING = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.CHECKING); -+ public static readonly EBT = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.EBT); -+ public static readonly HSA = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.HSA); -+ public static readonly MONEY_MARKET = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.MONEY_MARKET); -+ public static readonly PAYPAL = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.PAYPAL); -+ public static readonly PREPAID = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.PREPAID); -+ public static readonly SAVINGS = new LinkAccountSubtypeDepository(LinkAccountType.DEPOSITORY, LinkAccountSubtypes.SAVINGS); -+ -+ private constructor(public readonly type: LinkAccountType, public readonly subtype: LinkAccountSubtype) { } -+} -+ -+export class LinkAccountSubtypeInvestment implements LinkAccountSubtype { -+ public static readonly ALL = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.ALL); -+ public static readonly BROKERAGE = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.BROKERAGE); -+ public static readonly CASH_ISA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.CASH_ISA); -+ public static readonly EDUCATION_SAVINGS_ACCOUNT = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.EDUCATION_SAVINGS_ACCOUNT); -+ public static readonly FIXED_ANNUNITY = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FIXED_ANNUNITY); -+ public static readonly GIC = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.GIC); -+ public static readonly HEALTH_REIMBURSEMENT_ARRANGEMENT = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.HEALTH_REIMBURSEMENT_ARRANGEMENT); -+ public static readonly HSA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.HSA); -+ public static readonly INVESTMENT_401A = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FOUR_0_1_A); -+ public static readonly INVESTMENT_401K = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FOUR_0_1_K); -+ public static readonly INVESTMENT_403B = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FOUR_0_3_B); -+ public static readonly INVESTMENT_457B = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FOUR_5_7_B); -+ public static readonly INVESTMENT_529 = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.FIVE_2_9); -+ public static readonly IRA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.IRA); -+ public static readonly ISA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.ISA); -+ public static readonly KEOGH = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.KEOGH); -+ public static readonly LIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.LIF); -+ public static readonly LIRA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.LIRA); -+ public static readonly LRIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.LRIF); -+ public static readonly LRSP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.LRSP); -+ public static readonly MUTUAL_FUND = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.MUTUAL_FUND); -+ public static readonly NON_TAXABLE_BROKERAGE_ACCOUNT = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.NON_TAXABLE_BROKERAGE_ACCOUNT); -+ public static readonly PENSION = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.PENSION); -+ public static readonly PLAN = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.PLAN); -+ public static readonly PRIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.PRIF); -+ public static readonly PROFIT_SHARING_PLAN = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.PROFIT_SHARING_PLAN); -+ public static readonly RDSP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RDSP); -+ public static readonly RESP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RESP); -+ public static readonly RETIREMENT = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RETIREMENT); -+ public static readonly RLIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RLIF); -+ public static readonly ROTH = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.ROTH); -+ public static readonly ROTH_401K = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.ROTH_401K); -+ public static readonly RRIF = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RRIF); -+ public static readonly RRSP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.RRSP); -+ public static readonly SARSEP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.SARSEP); -+ public static readonly SEP_IRA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.SEP_IRA); -+ public static readonly SIMPLE_IRA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.SIMPLE_IRA); -+ public static readonly SIIP = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.SIPP); -+ public static readonly STOCK_PLAN = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.STOCK_PLAN); -+ public static readonly TFSA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.TFSA); -+ public static readonly THRIFT_SAVINGS_PLAN = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.THRIFT_SAVINGS_PLAN); -+ public static readonly TRUST = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.TRUST); -+ public static readonly UGMA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.UGMA); -+ public static readonly UTMA = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.UTMA); -+ public static readonly VARIABLE_ANNUITY = new LinkAccountSubtypeInvestment(LinkAccountType.INVESTMENT, LinkAccountSubtypes.VARIABLE_ANNUITY); -+ -+ private constructor(public readonly type: LinkAccountType, public readonly subtype: LinkAccountSubtype) { } -+} -+ -+export class LinkAccountSubtypeLoan implements LinkAccountSubtype { -+ public static readonly ALL = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.ALL); -+ public static readonly AUTO = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.AUTO); -+ public static readonly BUSINESS = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.BUSINESS); -+ public static readonly COMMERCIAL = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.COMMERCIAL); -+ public static readonly CONSTRUCTION = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.CONSTRUCTION); -+ public static readonly CONSUMER = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.CONSUMER); -+ public static readonly HOME_EQUITY = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.HOME_EQUITY); -+ public static readonly LINE_OF_CREDIT = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.LINE_OF_CREDIT); -+ public static readonly LOAN = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.LOAN); -+ public static readonly MORTGAGE = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.MORTGAGE); -+ public static readonly OVERDRAFT = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.OVERDRAFT); -+ public static readonly STUDENT = new LinkAccountSubtypeLoan(LinkAccountType.CREDIT, LinkAccountSubtypes.STUDENT); -+ -+ private constructor(public readonly type: LinkAccountType, public readonly subtype: LinkAccountSubtype) { } -+} -+ -+export class LinkAccountSubtypeUnknown implements LinkAccountSubtype { -+ constructor(public readonly type: string, public readonly subtype: string) { } -+} -+ -+export interface LinkSuccess { -+ publicToken: string; -+ metadata: LinkSuccessMetadata; -+} -+ -+export interface LinkSuccessMetadata { -+ institution?: LinkInstitution; -+ accounts: LinkAccount[]; -+ linkSessionId: string; -+ metadataJson?: string; -+} -+ -+export interface LinkAccount { -+ id: string; -+ name?: string; -+ mask?: string; -+ type: LinkAccountType; -+ subtype: LinkAccountSubtype; -+ verificationStatus?: LinkAccountVerificationStatus; -+} -+ -+export enum LinkAccountVerificationStatus { -+ PENDING_AUTOMATIC_VERIFICATION = 'pending_automatic_verification', -+ PENDING_MANUAL_VERIFICATION = 'pending_manual_verification', -+ MANUALLY_VERIFIED = 'manually_verified', -+} -+ -+export interface LinkInstitution { -+ id: string; -+ name: string; -+} -+ -+export interface LinkExit { -+ error?: LinkError; -+ metadata: LinkExitMetadata; -+} -+ -+export interface LinkExitMetadata { -+ status?: LinkExitMetadataStatus; -+ institution?: LinkInstitution; -+ linkSessionId: string; -+ requestId: string; -+ metadataJson?: string; -+} -+ -+export enum LinkExitMetadataStatus { -+ CONNECTED = 'connected', -+ CHOOSE_DEVICE = 'choose_device', -+ REQUIRES_ACCOUNT_SELECTION = 'requires_account_selection', -+ REQUIRES_CODE = 'requires_code', -+ REQUIRES_CREDENTIALS = 'requires_credentials', -+ REQUIRES_EXTERNAL_ACTION = 'requires_external_action', -+ REQUIRES_OAUTH = 'requires_oauth', -+ REQUIRES_QUESTIONS = 'requires_questions', -+ REQUIRES_RECAPTCHA = 'requires_recaptcha', -+ REQUIRES_SELECTIONS = 'requires_selections', -+ REQUIRES_DEPOSIT_SWITCH_ALLOCATION_CONFIGURATION = 'requires_deposit_switch_allocation_configuration', -+ REQUIRES_DEPOSIT_SWITCH_ALLOCATION_SELECTION = 'requires_deposit_switch_allocation_selection', -+} -+ -+export interface LinkError { -+ errorCode: LinkErrorCode; -+ errorType: LinkErrorType; -+ errorMessage: string; -+ /** @deprecated DO NOT USE, data not guaranteed. Use `displayMessage` instead */ -+ errorDisplayMessage?: string; -+ displayMessage?: string; -+ errorJson?: string; -+} -+ -+export enum LinkErrorCode { -+ // ITEM_ERROR -+ INVALID_CREDENTIALS = "INVALID_CREDENTIALS", -+ INVALID_MFA = "INVALID_MFA", -+ ITEM_LOGIN_REQUIRED = "ITEM_LOGIN_REQUIRED", -+ INSUFFICIENT_CREDENTIALS = "INSUFFICIENT_CREDENTIALS", -+ ITEM_LOCKED = "ITEM_LOCKED", -+ USER_SETUP_REQUIRED = "USER_SETUP_REQUIRED", -+ MFA_NOT_SUPPORTED = "MFA_NOT_SUPPORTED", -+ INVALID_SEND_METHOD = "INVALID_SEND_METHOD", -+ NO_ACCOUNTS = "NO_ACCOUNTS", -+ ITEM_NOT_SUPPORTED = "ITEM_NOT_SUPPORTED", -+ TOO_MANY_VERIFICATION_ATTEMPTS = "TOO_MANY_VERIFICATION_ATTEMPTS", -+ -+ INVALD_UPDATED_USERNAME = "INVALD_UPDATED_USERNAME", -+ INVALID_UPDATED_USERNAME = "INVALID_UPDATED_USERNAME", -+ -+ ITEM_NO_ERROR = "ITEM_NO_ERROR", -+ item_no_error = "item-no-error", -+ NO_AUTH_ACCOUNTS = "NO_AUTH_ACCOUNTS", -+ NO_INVESTMENT_ACCOUNTS = "NO_INVESTMENT_ACCOUNTS", -+ NO_INVESTMENT_AUTH_ACCOUNTS = "NO_INVESTMENT_AUTH_ACCOUNTS", -+ NO_LIABILITY_ACCOUNTS = "NO_LIABILITY_ACCOUNTS", -+ PRODUCTS_NOT_SUPPORTED = "PRODUCTS_NOT_SUPPORTED", -+ ITEM_NOT_FOUND = "ITEM_NOT_FOUND", -+ ITEM_PRODUCT_NOT_READY = "ITEM_PRODUCT_NOT_READY", -+ -+ // INSTITUTION_ERROR -+ INSTITUTION_DOWN = "INSTITUTION_DOWN", -+ INSTITUTION_NOT_RESPONDING = "INSTITUTION_NOT_RESPONDING", -+ INSTITUTION_NOT_AVAILABLE = "INSTITUTION_NOT_AVAILABLE", -+ INSTITUTION_NO_LONGER_SUPPORTED = "INSTITUTION_NO_LONGER_SUPPORTED", -+ -+ // API_ERROR -+ INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR", -+ PLANNED_MAINTENANCE = "PLANNED_MAINTENANCE", -+ -+ // ASSET_REPORT_ERROR -+ PRODUCT_NOT_ENABLED = "PRODUCT_NOT_ENABLED", -+ DATA_UNAVAILABLE = "DATA_UNAVAILABLE", -+ ASSET_PRODUCT_NOT_READY = "ASSET_PRODUCT_NOT_READY", -+ ASSET_REPORT_GENERATION_FAILED = "ASSET_REPORT_GENERATION_FAILED", -+ INVALID_PARENT = "INVALID_PARENT", -+ INSIGHTS_NOT_ENABLED = "INSIGHTS_NOT_ENABLED", -+ INSIGHTS_PREVIOUSLY_NOT_ENABLED = "INSIGHTS_PREVIOUSLY_NOT_ENABLED", -+ -+ // BANK_TRANSFER_ERROR -+ BANK_TRANSFER_LIMIT_EXCEEDED = "BANK_TRANSFER_LIMIT_EXCEEDED", -+ BANK_TRANSFER_MISSING_ORIGINATION_ACCOUNT = "BANK_TRANSFER_MISSING_ORIGINATION_ACCOUNT", -+ BANK_TRANSFER_INVALID_ORIGINATION_ACCOUNT = "BANK_TRANSFER_INVALID_ORIGINATION_ACCOUNT", -+ BANK_TRANSFER_ACCOUNT_BLOCKED = "BANK_TRANSFER_ACCOUNT_BLOCKED", -+ BANK_TRANSFER_INSUFFICIENT_FUNDS = "BANK_TRANSFER_INSUFFICIENT_FUNDS", -+ BANK_TRANSFER_NOT_CANCELLABLE = "BANK_TRANSFER_NOT_CANCELLABLE", -+ BANK_TRANSFER_UNSUPPORTED_ACCOUNT_TYPE = "BANK_TRANSFER_UNSUPPORTED_ACCOUNT_TYPE", -+ BANK_TRANSFER_UNSUPPORTED_ENVIRONMENT = "BANK_TRANSFER_UNSUPPORTED_ENVIRONMENT", -+ -+ // SANDBOX_ERROR -+ SANDBOX_PRODUCT_NOT_ENABLED = "SANDBOX_PRODUCT_NOT_ENABLED", -+ SANDBOX_WEBHOOK_INVALID = "SANDBOX_WEBHOOK_INVALID", -+ SANDBOX_BANK_TRANSFER_EVENT_TRANSITION_INVALID = "SANDBOX_BANK_TRANSFER_EVENT_TRANSITION_INVALID", -+ -+ // INVALID_REQUEST -+ MISSING_FIELDS = "MISSING_FIELDS", -+ UNKNOWN_FIELDS = "UNKNOWN_FIELDS", -+ INVALID_FIELD = "INVALID_FIELD", -+ INCOMPATIBLE_API_VERSION = "INCOMPATIBLE_API_VERSION", -+ INVALID_BODY = "INVALID_BODY", -+ INVALID_HEADERS = "INVALID_HEADERS", -+ NOT_FOUND = "NOT_FOUND", -+ NO_LONGER_AVAILABLE = "NO_LONGER_AVAILABLE", -+ SANDBOX_ONLY = "SANDBOX_ONLY", -+ INVALID_ACCOUNT_NUMBER = "INVALID_ACCOUNT_NUMBER", -+ -+ // INVALID_INPUT -+ // From above ITEM_LOGIN_REQUIRED = "INVALID_CREDENTIALS", -+ INCORRECT_DEPOSIT_AMOUNTS = "INCORRECT_DEPOSIT_AMOUNTS", -+ UNAUTHORIZED_ENVIRONMENT = "UNAUTHORIZED_ENVIRONMENT", -+ INVALID_PRODUCT = "INVALID_PRODUCT", -+ UNAUTHORIZED_ROUTE_ACCESS = "UNAUTHORIZED_ROUTE_ACCESS", -+ DIRECT_INTEGRATION_NOT_ENABLED = "DIRECT_INTEGRATION_NOT_ENABLED", -+ INVALID_API_KEYS = "INVALID_API_KEYS", -+ INVALID_ACCESS_TOKEN = "INVALID_ACCESS_TOKEN", -+ INVALID_PUBLIC_TOKEN = "INVALID_PUBLIC_TOKEN", -+ INVALID_LINK_TOKEN = "INVALID_LINK_TOKEN", -+ INVALID_PROCESSOR_TOKEN = "INVALID_PROCESSOR_TOKEN", -+ INVALID_AUDIT_COPY_TOKEN = "INVALID_AUDIT_COPY_TOKEN", -+ INVALID_ACCOUNT_ID = "INVALID_ACCOUNT_ID", -+ MICRODEPOSITS_ALREADY_VERIFIED = "MICRODEPOSITS_ALREADY_VERIFIED", -+ -+ // INVALID_RESULT -+ PLAID_DIRECT_ITEM_IMPORT_RETURNED_INVALID_MFA = "PLAID_DIRECT_ITEM_IMPORT_RETURNED_INVALID_MFA", -+ -+ // RATE_LIMIT_EXCEEDED -+ ACCOUNTS_LIMIT = "ACCOUNTS_LIMIT", -+ ADDITION_LIMIT = "ADDITION_LIMIT", -+ AUTH_LIMIT = "AUTH_LIMIT", -+ BALANCE_LIMIT = "BALANCE_LIMIT", -+ IDENTITY_LIMIT = "IDENTITY_LIMIT", -+ ITEM_GET_LIMIT = "ITEM_GET_LIMIT", -+ RATE_LIMIT = "RATE_LIMIT", -+ TRANSACTIONS_LIMIT = "TRANSACTIONS_LIMIT", -+ -+ // RECAPTCHA_ERROR -+ RECAPTCHA_REQUIRED = "RECAPTCHA_REQUIRED", -+ RECAPTCHA_BAD = "RECAPTCHA_BAD", -+ -+ // OAUTH_ERROR -+ INCORRECT_OAUTH_NONCE = "INCORRECT_OAUTH_NONCE", -+ OAUTH_STATE_ID_ALREADY_PROCESSED = "OAUTH_STATE_ID_ALREADY_PROCESSED", -+} -+ -+export enum LinkErrorType { -+ BANK_TRANSFER = 'BANK_TRANSFER_ERROR', -+ INVALID_REQUEST = 'INVALID_REQUEST', -+ INVALID_RESULT = 'INVALID_RESULT', -+ INVALID_INPUT = 'INVALID_INPUT', -+ INSTITUTION_ERROR = 'INSTITUTION_ERROR', -+ RATE_LIMIT_EXCEEDED = 'RATE_LIMIT_EXCEEDED', -+ API_ERROR = 'API_ERROR', -+ ITEM_ERROR = 'ITEM_ERROR', -+ AUTH_ERROR = 'AUTH_ERROR', -+ ASSET_REPORT_ERROR = 'ASSET_REPORT_ERROR', -+ SANDBOX_ERROR = 'SANDBOX_ERROR', -+ RECAPTCHA_ERROR = 'RECAPTCHA_ERROR', -+ OAUTH_ERROR = 'OAUTH_ERROR', -+} -+ -+export type LinkEventListener = (linkEvent: LinkEvent) => void -+ -+export interface LinkEvent { -+ eventName: LinkEventName; -+ metadata: LinkEventMetadata; -+} -+ -+export interface LinkEventMetadata { -+ accountNumberMask?: string; -+ linkSessionId: string; -+ mfaType?: string; -+ requestId?: string; -+ viewName: LinkEventViewName; -+ errorCode?: string; -+ errorMessage?: string; -+ errorType?: string; -+ exitStatus?: string; -+ institutionId?: string; -+ institutionName?: string; -+ institutionSearchQuery?: string; -+ isUpdateMode?: string; -+ matchReason?: string; -+ // see possible values for selection at https://plaid.com/docs/link/web/#link-web-onevent-selection -+ selection?: null | string; -+ timestamp: string; -+} -+ -+export enum LinkEventName { -+ BANK_INCOME_INSIGHTS_COMPLETED = "BANK_INCOME_INSIGHTS_COMPLETED", -+ CLOSE_OAUTH = 'CLOSE_OAUTH', -+ ERROR = 'ERROR', -+ EXIT = 'EXIT', -+ FAIL_OAUTH = 'FAIL_OAUTH', -+ HANDOFF = 'HANDOFF', -+ IDENTITY_VERIFICATION_START_STEP = 'IDENTITY_VERIFICATION_START_STEP', -+ IDENTITY_VERIFICATION_PASS_STEP = 'IDENTITY_VERIFICATION_PASS_STEP', -+ IDENTITY_VERIFICATION_FAIL_STEP = 'IDENTITY_VERIFICATION_FAIL_STEP', -+ IDENTITY_VERIFICATION_PENDING_REVIEW_STEP = 'IDENTITY_VERIFICATION_PENDING_REVIEW_STEP', -+ IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION = 'IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION', -+ IDENTITY_VERIFICATION_CREATE_SESSION = 'IDENTITY_VERIFICATION_CREATE_SESSION', -+ IDENTITY_VERIFICATION_RESUME_SESSION = 'IDENTITY_VERIFICATION_RESUME_SESSION', -+ IDENTITY_VERIFICATION_PASS_SESSION = 'IDENTITY_VERIFICATION_PASS_SESSION', -+ IDENTITY_VERIFICATION_FAIL_SESSION = 'IDENTITY_VERIFICATION_FAIL_SESSION', -+ IDENTITY_VERIFICATION_OPEN_UI = 'IDENTITY_VERIFICATION_OPEN_UI', -+ IDENTITY_VERIFICATION_RESUME_UI = 'IDENTITY_VERIFICATION_RESUME_UI', -+ IDENTITY_VERIFICATION_CLOSE_UI = 'IDENTITY_VERIFICATION_CLOSE_UI', -+ MATCHED_CONSENT = 'MATCHED_CONSENT', -+ MATCHED_SELECT_INSTITUTION = 'MATCHED_SELECT_INSTITUTION', -+ MATCHED_SELECT_VERIFY_METHOD = 'MATCHED_SELECT_VERIFY_METHOD', -+ OPEN = 'OPEN', -+ OPEN_MY_PLAID = 'OPEN_MY_PLAID', -+ OPEN_OAUTH = 'OPEN_OAUTH', -+ SEARCH_INSTITUTION = 'SEARCH_INSTITUTION', -+ SELECT_DEGRADED_INSTITUTION = 'SELECT_DEGRADED_INSTITUTION', -+ SELECT_DOWN_INSTITUTION = 'SELECT_DOWN_INSTITUTION', -+ SELECT_FILTERED_INSTITUTION = 'SELECT_FILTERED_INSTITUTION', -+ SELECT_INSTITUTION = 'SELECT_INSTITUTION', -+ SELECT_BRAND = 'SELECT_BRAND', -+ SELECT_AUTH_TYPE = 'SELECT_AUTH_TYPE', -+ SUBMIT_ACCOUNT_NUMBER = 'SUBMIT_ACCOUNT_NUMBER', -+ SUBMIT_DOCUMENTS = 'SUBMIT_DOCUMENTS', -+ SUBMIT_DOCUMENTS_SUCCESS = 'SUBMIT_DOCUMENTS_SUCCESS', -+ SUBMIT_DOCUMENTS_ERROR = 'SUBMIT_DOCUMENTS_ERROR', -+ SUBMIT_ROUTING_NUMBER = 'SUBMIT_ROUTING_NUMBER', -+ VIEW_DATA_TYPES = 'VIEW_DATA_TYPES', -+ SUBMIT_PHONE = 'SUBMIT_PHONE', -+ SKIP_SUBMIT_PHONE = 'SKIP_SUBMIT_PHONE', -+ VERIFY_PHONE = 'VERIFY_PHONE', -+ SUBMIT_CREDENTIALS = 'SUBMIT_CREDENTIALS', -+ SUBMIT_MFA = 'SUBMIT_MFA', -+ TRANSITION_VIEW = 'TRANSITION_VIEW', -+ CONNECT_NEW_INSTITUTION = 'CONNECT_NEW_INSTITUTION', -+} -+ -+export enum LinkEventViewName { -+ ACCEPT_TOS = 'ACCEPT_TOS', -+ CONNECTED = 'CONNECTED', -+ CONSENT = 'CONSENT', -+ CREDENTIAL = 'CREDENTIAL', -+ DATA_TRANSPARENCY = 'DATA_TRANSPARENCY', -+ DATA_TRANSPARENCY_CONSENT = 'DATA_TRANSPARENCY_CONSENT', -+ DOCUMENTARY_VERIFICATION = 'DOCUMENTARY_VERIFICATION', -+ ERROR = 'ERROR', -+ EXIT = 'EXIT', -+ KYC_CHECK = 'KYC_CHECK', -+ SELFIE_CHECK = 'SELFIE_CHECK', -+ LOADING = 'LOADING', -+ MATCHED_CONSENT = 'MATCHED_CONSENT', -+ MATCHED_CREDENTIAL = 'MATCHED_CREDENTIAL', -+ MATCHED_MFA = 'MATCHED_MFA', -+ MFA = 'MFA', -+ NUMBERS = 'NUMBERS', -+ NUMBERS_SELECT_INSTITUTION = 'NUMBERS_SELECT_INSTITUTION', -+ OAUTH = 'OAUTH', -+ RECAPTCHA = 'RECAPTCHA', -+ RISK_CHECK = 'RISK_CHECK', -+ SCREENING = 'SCREENING', -+ SELECT_ACCOUNT = 'SELECT_ACCOUNT', -+ SELECT_AUTH_TYPE = 'SELECT_AUTH_TYPE', -+ SUBMIT_PHONE = 'SUBMIT_PHONE', -+ VERIFY_PHONE = 'VERIFY_PHONE', -+ SELECT_SAVED_INSTITUTION = 'SELECT_SAVED_INSTITUTION', -+ SELECT_SAVED_ACCOUNT = 'SELECT_SAVED_ACCOUNT', -+ SELECT_BRAND = 'SELECT_BRAND', -+ SELECT_INSTITUTION = 'SELECT_INSTITUTION', -+ SUBMIT_DOCUMENTS = 'SUBMIT_DOCUMENTS', -+ SUBMIT_DOCUMENTS_SUCCESS = 'SUBMIT_DOCUMENTS_SUCCESS', -+ SUBMIT_DOCUMENTS_ERROR = 'SUBMIT_DOCUMENTS_ERROR', -+ UPLOAD_DOCUMENTS = 'UPLOAD_DOCUMENTS', -+ VERIFY_SMS = 'VERIFY_SMS', -+} -+ -+/// Methods to present Link on iOS. -+/// FULL_SCREEN is the converts to UIModalPresentationOverFullScreen on the native side. -+/// MODAL will use the default presentation style for iOS which is UIModalPresentationAutomatic. -+export enum LinkIOSPresentationStyle { -+ FULL_SCREEN = 'FULL_SCREEN', -+ MODAL = 'MODAL' -+} -+ -+export type LinkSuccessListener = (LinkSuccess: LinkSuccess) => void -+ -+export type LinkExitListener = (LinkExit: LinkExit) => void -+ -+export type LinkOnEventListener = (LinkEvent: LinkEvent) => void -+ -+export interface PlaidLinkProps { -+ tokenConfig: LinkTokenConfiguration -+ onSuccess: LinkSuccessListener -+ onExit?: LinkExitListener -+ iOSPresentationStyle?: LinkIOSPresentationStyle -+ logLevel?: LinkLogLevel -+ onPress?(): any -+} -+ -+export type PlaidLinkComponentProps = (PlaidLinkProps & { -+ children: React.ReactNode -+}); -diff --git a/node_modules/react-native-plaid-link-sdk/src/__tests__/Types.tests.ts b/node_modules/react-native-plaid-link-sdk/src/__tests__/Types.tests.ts -new file mode 100644 -index 0000000..2dd7a54 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/__tests__/Types.tests.ts -@@ -0,0 +1,15 @@ -+const Types = require('./../Types'); -+ -+test('test token configuration', () => { -+ const linkTokenConfiguration = { -+ token: "test-token", -+ noLoadingState: false, -+ logLevel: Types.LinkLogLevel.DEBUG, -+ extras: null, -+ }; -+ -+ expect(linkTokenConfiguration.noLoadingState).toBe(false); -+ expect(linkTokenConfiguration.token).toBe("test-token"); -+ expect(linkTokenConfiguration.logLevel).toBe(Types.LinkLogLevel.DEBUG); -+ expect(linkTokenConfiguration.extras).toBe(null); -+}); -\ No newline at end of file -diff --git a/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleAndroid.ts b/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleAndroid.ts -new file mode 100644 -index 0000000..d1e4062 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleAndroid.ts -@@ -0,0 +1,20 @@ -+// we use Object type because methods on the native side use NSDictionary and ReadableMap -+// and we want to stay compatible with those -+import {TurboModuleRegistry, TurboModule} from 'react-native'; -+import { Int32, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes'; -+ -+export interface Spec extends TurboModule { -+ startLinkActivityForResult( -+ token: string, -+ noLoadingState: boolean, -+ logLevel: string, -+ onSuccessCallback: (result: UnsafeObject) => void, -+ onExitCallback: (result: UnsafeObject) => void -+ ): void; -+ -+ // those two are here for event emitter methods -+ addListener(eventName: string): void; -+ removeListeners(count: Int32): void; -+} -+ -+export default TurboModuleRegistry.get('PlaidAndroid'); -diff --git a/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleiOS.ts b/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleiOS.ts -new file mode 100644 -index 0000000..d1b3565 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/fabric/NativePlaidLinkModuleiOS.ts -@@ -0,0 +1,19 @@ -+// we use Object type because methods on the native side use NSDictionary and ReadableMap -+// and we want to stay compatible with those -+import {TurboModuleRegistry, TurboModule} from 'react-native'; -+import { Int32, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes'; -+ -+export interface Spec extends TurboModule { -+ create(token: string, noLoadingState: boolean): void; -+ open( -+ fullScreen: boolean, -+ onSuccess: (success: UnsafeObject) => void, -+ onExit: (error: UnsafeObject, result: UnsafeObject) => void, -+ ): void; -+ dismiss(): void; -+ // those two are here for event emitter methods -+ addListener(eventName: string): void; -+ removeListeners(count: Int32): void; -+} -+ -+export default TurboModuleRegistry.get('RNLinksdk'); -diff --git a/node_modules/react-native-plaid-link-sdk/src/index.ts b/node_modules/react-native-plaid-link-sdk/src/index.ts -new file mode 100644 -index 0000000..23ef946 ---- /dev/null -+++ b/node_modules/react-native-plaid-link-sdk/src/index.ts -@@ -0,0 +1,21 @@ -+import { -+ openLink, -+ dismissLink, -+ usePlaidEmitter, -+ PlaidLink, -+} from './PlaidLink'; -+ -+export * from './Types'; -+ -+export default PlaidLink; -+ -+export { -+ PlaidLink, -+ openLink, -+ dismissLink, -+ usePlaidEmitter, -+}; -+ -+// Components -+ -+export { EmbeddedLinkView } from './EmbeddedLink/EmbeddedLinkView'; -\ No newline at end of file