react-native-persona 2.2.0 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +149 -2
- package/RNPersonaInquiry2.podspec +1 -1
- package/android/build.gradle +1 -2
- package/android/src/main/java/com/withpersona/sdk2/reactnative/PersonaInquiryModule2.java +8 -2
- package/bin/persona-tool +1 -2
- package/ios/PersonaInquiry2.swift +4 -0
- package/lib/commonjs/index.js +66 -4
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/persona-tool/AndroidResourcePrinter.js +497 -0
- package/lib/commonjs/persona-tool/AndroidResourcePrinter.js.map +1 -0
- package/lib/commonjs/persona-tool/Config.js +95 -0
- package/lib/commonjs/persona-tool/Config.js.map +1 -0
- package/lib/commonjs/persona-tool/Theme.js +199 -0
- package/lib/commonjs/persona-tool/Theme.js.map +1 -0
- package/lib/commonjs/persona-tool/index.js +41 -0
- package/lib/commonjs/persona-tool/index.js.map +1 -0
- package/lib/commonjs/persona-tool/prompts.js +48 -0
- package/lib/commonjs/persona-tool/prompts.js.map +1 -0
- package/lib/commonjs/persona-tool/tools/AndroidThemeGenerator.js +99 -0
- package/lib/commonjs/persona-tool/tools/AndroidThemeGenerator.js.map +1 -0
- package/lib/commonjs/persona-tool/tools/IosThemeInstructions.js +50 -0
- package/lib/commonjs/persona-tool/tools/IosThemeInstructions.js.map +1 -0
- package/lib/commonjs/versions.js +25 -0
- package/lib/commonjs/versions.js.map +1 -0
- package/lib/module/index.js +58 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/persona-tool/AndroidResourcePrinter.js +489 -0
- package/lib/module/persona-tool/AndroidResourcePrinter.js.map +1 -0
- package/lib/module/persona-tool/Config.js +82 -0
- package/lib/module/persona-tool/Config.js.map +1 -0
- package/lib/module/persona-tool/Theme.js +183 -0
- package/lib/module/persona-tool/Theme.js.map +1 -0
- package/lib/module/persona-tool/index.js +33 -0
- package/lib/module/persona-tool/index.js.map +1 -0
- package/lib/module/persona-tool/prompts.js +31 -0
- package/lib/module/persona-tool/prompts.js.map +1 -0
- package/lib/module/persona-tool/tools/AndroidThemeGenerator.js +72 -0
- package/lib/module/persona-tool/tools/AndroidThemeGenerator.js.map +1 -0
- package/lib/module/persona-tool/tools/IosThemeInstructions.js +37 -0
- package/lib/module/persona-tool/tools/IosThemeInstructions.js.map +1 -0
- package/lib/module/versions.js +14 -0
- package/lib/module/versions.js.map +1 -0
- package/lib/typescript/{src/fields.d.ts → fields.d.ts} +0 -0
- package/lib/typescript/{src/index.d.ts → index.d.ts} +50 -0
- package/lib/typescript/{persona-tools/lib → persona-tool}/AndroidResourcePrinter.d.ts +2 -2
- package/lib/typescript/{persona-tools → persona-tool}/Config.d.ts +0 -0
- package/lib/typescript/{persona-tools → persona-tool}/Theme.d.ts +0 -0
- package/lib/typescript/{persona-tools → persona-tool}/index.d.ts +0 -0
- package/lib/typescript/{persona-tools/lib → persona-tool}/prompts.d.ts +1 -1
- package/lib/typescript/{persona-tools → persona-tool}/tools/AndroidThemeGenerator.d.ts +0 -0
- package/lib/typescript/{persona-tools → persona-tool}/tools/IosThemeInstructions.d.ts +0 -0
- package/lib/typescript/{src/util.d.ts → util.d.ts} +0 -0
- package/lib/typescript/versions.d.ts +6 -0
- package/package.json +4 -5
- package/src/index.ts +65 -3
- package/{persona-tools/lib → src/persona-tool}/AndroidResourcePrinter.ts +182 -182
- package/{persona-tools → src/persona-tool}/Config.ts +0 -0
- package/{persona-tools → src/persona-tool}/Theme.ts +0 -0
- package/{persona-tools → src/persona-tool}/index.ts +1 -1
- package/{persona-tools/lib → src/persona-tool}/prompts.ts +11 -11
- package/{persona-tools → src/persona-tool}/tools/AndroidThemeGenerator.ts +2 -2
- package/{persona-tools → src/persona-tool}/tools/IosThemeInstructions.ts +1 -1
- package/src/versions.ts +12 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,35 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## [v2.2.3] - 2022-03-02
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Re-added `persona-tool` which was removed by accident in a refactor
|
|
15
|
+
|
|
16
|
+
## [v2.2.2] - 2022-02-24
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Upgrade to Android Inquiry SDK 2.2.8
|
|
21
|
+
- Upgrade to iOS Inquiry SDK 2.2.4
|
|
22
|
+
|
|
23
|
+
## [v2.2.1] - 2022-02-17
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- Upgrade to Android Inquiry SDK 2.2.6
|
|
28
|
+
- Upgrade to iOS Inquiry SDK 2.2.3
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- Expose underlying Android/iOS SDK version with `#nativeSdkVersion`
|
|
33
|
+
- Add `#fromInquiry`, `#fromTemplate`, and `#fromTemplateVersion` static methods to `Inquiry`
|
|
34
|
+
|
|
35
|
+
### Deprecated
|
|
36
|
+
|
|
37
|
+
- Deprecate the default namespace and it's methods: `#fromInquiry`, `#fromTemplate`, and `#fromTemplateVersion`
|
|
38
|
+
|
|
10
39
|
## [v2.2.0] - 2022-02-16
|
|
11
40
|
|
|
12
41
|
### Changed
|
package/README.md
CHANGED
|
@@ -1,3 +1,150 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Persona Android SDKs and Demo
|
|
2
|
+
|
|
3
|
+
## Development
|
|
4
|
+
|
|
5
|
+
First, run yarn in the project root.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
yarn
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
To test changes to SDK, we will use the Example App in `example` app.
|
|
12
|
+
|
|
13
|
+
### Start Metro bundler.
|
|
14
|
+
|
|
15
|
+
This will bundle JavaScript and serve it to your React Native sample app. Keep the Metro bundler running in a terminal.
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
yarn example start
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Metro bundler compiles source code and caches compiled targets to speed up incremental rebuilds. However, it's possible
|
|
22
|
+
that this can lead to random failures if things get out of sync. If you ever run into any weird issues, it's worth
|
|
23
|
+
running `yarn example start --reset-cache` again.
|
|
24
|
+
|
|
25
|
+
### Start example app in iOS simulator
|
|
26
|
+
|
|
27
|
+
Use the built-in CLI command with Metro running.
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
yarn example ios
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Or open `ios/example.xcworkspace` in XCode and build + run.
|
|
34
|
+
|
|
35
|
+
### Start example app in Android simulator
|
|
36
|
+
|
|
37
|
+
Use the built-in CLI command with Metro running.
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
yarn example android
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Or open the Android project in Android Studio and build + run.
|
|
44
|
+
|
|
45
|
+
### Theming the example app
|
|
46
|
+
|
|
47
|
+
Run the `persona-tool` to customize the theme.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
$ cd example
|
|
51
|
+
$ yarn persona-tool
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
# Installing in your own project
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
yarn add react-native-persona
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Usage
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
import {Environment, Inquiry} from "react-native-persona";
|
|
66
|
+
|
|
67
|
+
// Start an inquiry.
|
|
68
|
+
Inquiry.fromTemplate('itmpl_Ygs16MKTkA6obnF8C3Rb17dm')
|
|
69
|
+
.environment(Environment.SANDBOX)
|
|
70
|
+
.onComplete((inquiryId, status, fields) =>
|
|
71
|
+
Alert.alert('Complete', `Inquiry ${inquiryId} completed with status "${status}."`,),
|
|
72
|
+
)
|
|
73
|
+
.onCanceled((inquiryId, sessionToken) =>
|
|
74
|
+
Alert.alert('Canceled', `Inquiry ${inquiryId} was cancelled`),
|
|
75
|
+
)
|
|
76
|
+
.onError(error => Alert.alert('Error', error.message))
|
|
77
|
+
.build()
|
|
78
|
+
.start();
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Theming
|
|
82
|
+
|
|
83
|
+
Theming can be handled universally through our persona-tools CLI provided in this repository.
|
|
84
|
+
|
|
85
|
+
To test themes, use the example app:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
cd example
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Link the `persona-tool` using the following command (only necessary during development, linked automatically when the
|
|
92
|
+
package is installed using `yarn add` or `npm install`).
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
yarn dev-only:link-bin
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
To unlink:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
yarn dev-only:unlink-bin
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Run through the tool using `yarn persona-tool` and following the instructions to add the required snippet to
|
|
105
|
+
your `package.json`.
|
|
106
|
+
|
|
107
|
+
Update theme colors accordingly:
|
|
108
|
+
|
|
109
|
+
- Example: Update `persona.androidTheme.backgroundColor` to `#FFFFFF`
|
|
110
|
+
|
|
111
|
+
Run `yarn persona-tool` again.
|
|
112
|
+
|
|
113
|
+
Launch the example app and launch a flow.
|
|
114
|
+
|
|
115
|
+
### Updating SDK Versions
|
|
116
|
+
|
|
117
|
+
*Android*
|
|
118
|
+
|
|
119
|
+
Update the sdk version in `android/build.gradle`
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
implementation 'com.withpersona.sdk2:inquiry:X.Y.Z'
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
*iOS*
|
|
126
|
+
|
|
127
|
+
Update the sdk version in `RNPersonaInquiry2.podspec`
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
s.dependency 'PersonaInquirySDK2', '~> X.Y.Z'
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Go to `example/ios` directory, update the Podfiles by running
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
pod update PersonaInquirySDK2 --repo-update
|
|
137
|
+
pod install --repo-update
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
*React Native*
|
|
141
|
+
|
|
142
|
+
Bump react native version in `package.json` if needed.
|
|
143
|
+
|
|
144
|
+
Commit and push changed files including:
|
|
145
|
+
|
|
146
|
+
- `android/build.gradle`
|
|
147
|
+
- `RNPersonaInquiry2.podspec`
|
|
148
|
+
- `package.json`
|
|
149
|
+
- `example/ios/Podfile.lock`
|
|
2
150
|
|
|
3
|
-
Please refer to the docs: https://docs.withpersona.com/docs/react-native-sdk-integration
|
package/android/build.gradle
CHANGED
|
@@ -66,6 +66,5 @@ dependencies {
|
|
|
66
66
|
//noinspection GradleDynamicVersion
|
|
67
67
|
implementation 'com.facebook.react:react-native:+' // From node_modules
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
implementation 'com.withpersona.sdk2:inquiry:2.2.4'
|
|
69
|
+
implementation 'com.withpersona.sdk2:inquiry:2.2.8'
|
|
71
70
|
}
|
|
@@ -3,9 +3,9 @@ package com.withpersona.sdk2.reactnative;
|
|
|
3
3
|
import android.app.Activity;
|
|
4
4
|
import android.content.Intent;
|
|
5
5
|
import androidx.annotation.Nullable;
|
|
6
|
+
import com.facebook.react.ReactActivityDelegate;
|
|
6
7
|
import com.facebook.react.bridge.ActivityEventListener;
|
|
7
8
|
import com.facebook.react.bridge.Arguments;
|
|
8
|
-
import com.facebook.react.bridge.JavaOnlyMap;
|
|
9
9
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
10
10
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
11
11
|
import com.facebook.react.bridge.ReactMethod;
|
|
@@ -19,7 +19,6 @@ import com.withpersona.sdk2.inquiry.InquiryBuilder;
|
|
|
19
19
|
import com.withpersona.sdk2.inquiry.InquiryField;
|
|
20
20
|
import com.withpersona.sdk2.inquiry.InquiryResponse;
|
|
21
21
|
import com.withpersona.sdk2.inquiry.InquiryTemplateBuilder;
|
|
22
|
-
import java.util.ArrayList;
|
|
23
22
|
import java.util.HashMap;
|
|
24
23
|
import java.util.Map;
|
|
25
24
|
import org.jetbrains.annotations.NotNull;
|
|
@@ -205,6 +204,13 @@ public class PersonaInquiryModule2 extends ReactContextBaseJavaModule
|
|
|
205
204
|
}
|
|
206
205
|
}
|
|
207
206
|
|
|
207
|
+
@Override
|
|
208
|
+
public Map<String, Object> getConstants() {
|
|
209
|
+
final Map<String, Object> constants = new HashMap<>();
|
|
210
|
+
constants.put("INQUIRY_SDK_VERSION", com.withpersona.sdk2.inquiry.BuildConfig.INQUIRY_SDK_VERSION);
|
|
211
|
+
return constants;
|
|
212
|
+
}
|
|
213
|
+
|
|
208
214
|
private Environment environmentFromString(@Nullable String environment) {
|
|
209
215
|
if (environment == null) {
|
|
210
216
|
return null;
|
package/bin/persona-tool
CHANGED
|
@@ -23,6 +23,10 @@ class PersonaInquiry2: RCTEventEmitter {
|
|
|
23
23
|
true
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
override func constantsToExport() -> [AnyHashable : Any]! {
|
|
27
|
+
["INQUIRY_SDK_VERSION": Inquiry.versionNumber]
|
|
28
|
+
}
|
|
29
|
+
|
|
26
30
|
/// To keep the bridge simple, we'll expose a single method to both configure and start the inquiry. The config is
|
|
27
31
|
/// validated within the React Native side of the bridge.
|
|
28
32
|
@objc
|
package/lib/commonjs/index.js
CHANGED
|
@@ -10,7 +10,14 @@ Object.defineProperty(exports, "Fields", {
|
|
|
10
10
|
return _fields.Fields;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
exports.
|
|
13
|
+
exports.InvalidTemplateVersion = exports.InvalidTemplateId = exports.InvalidInquiryId = exports.InvalidAccountId = exports.Inquiry = void 0;
|
|
14
|
+
Object.defineProperty(exports, "Versions", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () {
|
|
17
|
+
return _versions.Versions;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
exports.default = void 0;
|
|
14
21
|
|
|
15
22
|
var _reactNative = require("react-native");
|
|
16
23
|
|
|
@@ -18,6 +25,8 @@ var _util = require("./util");
|
|
|
18
25
|
|
|
19
26
|
var _fields = require("./fields");
|
|
20
27
|
|
|
28
|
+
var _versions = require("./versions");
|
|
29
|
+
|
|
21
30
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
22
31
|
|
|
23
32
|
const {
|
|
@@ -163,6 +172,55 @@ class Inquiry {
|
|
|
163
172
|
if (this.onCanceledListener) this.onCanceledListener.remove();
|
|
164
173
|
if (this.onErrorListener) this.onErrorListener.remove();
|
|
165
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Create an Inquiry flow builder based on a template ID.
|
|
177
|
+
*
|
|
178
|
+
* You can find your template ID on the Dashboard under Inquiries > Templates.
|
|
179
|
+
* {@link https://app.withpersona.com/dashboard/inquiry-templates}
|
|
180
|
+
*
|
|
181
|
+
* @param templateId template ID from your Persona Dashboard
|
|
182
|
+
* @return builder for the Inquiry flow
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
static fromTemplate(templateId) {
|
|
187
|
+
return new TemplateBuilder(makeTemplateId(templateId), null);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Create an Inquiry flow builder based on a template ID version.
|
|
191
|
+
*
|
|
192
|
+
* You can find your template ID version on the Dashboard under the
|
|
193
|
+
* settings view of a specific template.
|
|
194
|
+
* {@link https://app.withpersona.com/dashboard/inquiry-templates}
|
|
195
|
+
*
|
|
196
|
+
* @param templateVersion template version from your Persona Dashboard
|
|
197
|
+
* @return builder for the Inquiry flow
|
|
198
|
+
*/
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
static fromTemplateVersion(templateVersion) {
|
|
202
|
+
return new TemplateBuilder(null, makeTemplateVersion(templateVersion));
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Create an Inquiry flow builder based on an inquiry ID.
|
|
206
|
+
*
|
|
207
|
+
* You will need to generate the inquiry ID on the server. To try it out, you can create an
|
|
208
|
+
* inquiry from the Persona Dashboard under "Inquiries". Click on the "Create Inquiry" button
|
|
209
|
+
* and copy the inquiry ID from the URL.
|
|
210
|
+
* {@link https://app.withpersona.com/dashboard/inquiries}
|
|
211
|
+
*
|
|
212
|
+
* @param inquiryId inquiry ID from your server
|
|
213
|
+
* @return builder for the Inquiry flow
|
|
214
|
+
*/
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
static fromInquiry(inquiryId) {
|
|
218
|
+
return new InquiryBuilder(makeInquiryId(inquiryId));
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Launch the Persona Inquiry.
|
|
222
|
+
*/
|
|
223
|
+
|
|
166
224
|
|
|
167
225
|
start() {
|
|
168
226
|
this.onCompleteListener = eventEmitter.addListener('onComplete', event => {
|
|
@@ -385,24 +443,28 @@ class TemplateBuilder {
|
|
|
385
443
|
}
|
|
386
444
|
|
|
387
445
|
}
|
|
446
|
+
/**
|
|
447
|
+
* @deprecated Use the `Inquiry` static methods instead
|
|
448
|
+
*/
|
|
449
|
+
|
|
388
450
|
|
|
389
451
|
let InquiryBuilders;
|
|
390
452
|
|
|
391
453
|
(function (_InquiryBuilders) {
|
|
392
454
|
function fromInquiry(inquiryId) {
|
|
393
|
-
return
|
|
455
|
+
return Inquiry.fromInquiry(inquiryId);
|
|
394
456
|
}
|
|
395
457
|
|
|
396
458
|
_InquiryBuilders.fromInquiry = fromInquiry;
|
|
397
459
|
|
|
398
460
|
function fromTemplate(templateId) {
|
|
399
|
-
return
|
|
461
|
+
return Inquiry.fromTemplate(templateId);
|
|
400
462
|
}
|
|
401
463
|
|
|
402
464
|
_InquiryBuilders.fromTemplate = fromTemplate;
|
|
403
465
|
|
|
404
466
|
function fromTemplateVersion(templateVersion) {
|
|
405
|
-
return
|
|
467
|
+
return Inquiry.fromTemplateVersion(templateVersion);
|
|
406
468
|
}
|
|
407
469
|
|
|
408
470
|
_InquiryBuilders.fromTemplateVersion = fromTemplateVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["PersonaInquiry2","NativeModules","InvalidTemplateId","Error","InvalidTemplateVersion","InvalidInquiryId","InvalidAccountId","makeInquiryId","candidate","startsWith","makeTemplateId","makeTemplateVersion","makeAccountId","Environment","eventEmitter","NativeEventEmitter","Inquiry","constructor","options","templateId","inquiryId","referenceId","accountId","environment","sessionToken","fields","onComplete","onCanceled","onError","iosThemeObject","clearListeners","onCompleteListener","remove","onCanceledListener","onErrorListener","start","addListener","event","key","Object","keys","field","undefined","InquiryField","Unknown","type","Integer","Number","parseInt","value","Boolean","String","status","debugMessage","startInquiry","iosTheme","InquiryBuilder","_inquiryId","_sessionToken","callback","_onComplete","_onCanceled","_onError","themeObject","_iosThemeObject","build","_fields","TemplateBuilder","templateVersion","_templateId","_templateVersion","_accountId","_referenceId","_environment","fromInquiry","fromTemplate","fromTemplateVersion","InquiryBuilders"],"mappings":"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","sourcesContent":["import {\n EventSubscription,\n NativeEventEmitter,\n NativeModules,\n} from 'react-native';\nimport { processThemeValues } from './util';\nimport { Fields, InquiryField, RawInquiryField } from './fields';\nexport { Fields };\n\nconst { PersonaInquiry2 } = NativeModules;\n\n// Using Opaque types + Smart Constructor enforces validation at\n// instantiation time for IDS\ndeclare const Unique: unique symbol;\nexport type Opaque<T, Tag> = T & { [Unique]: Tag };\n\ntype TemplateId = Opaque<string, 'TemplateId'>;\ntype TemplateVersion = Opaque<string, 'TemplateVersion'>;\ntype InquiryId = Opaque<string, 'InquiryId'>;\ntype AccountId = Opaque<string, 'AccountId'>;\n\nexport class InvalidTemplateId extends Error {}\n\nexport class InvalidTemplateVersion extends Error {}\n\nexport class InvalidInquiryId extends Error {}\n\nexport class InvalidAccountId extends Error {}\n\n/**\n * Run validations that the string is in proper Inquiry token format\n * and do a type conversion to InquiryId.\n *\n * @param candidate\n */\nfunction makeInquiryId(candidate: string): InquiryId {\n if (candidate.startsWith('inq_')) return candidate as InquiryId;\n\n throw new InvalidInquiryId(\n `Valid template IDs start with \"inq_\". Received: ${candidate} `\n );\n}\n\n/**\n * Run validations that the string is in proper Template token format\n * and do a type conversion to TemplateId.\n *\n * @param candidate\n */\nfunction makeTemplateId(candidate: string): TemplateId {\n if (candidate.startsWith('itmpl_')) {\n return candidate as TemplateId;\n }\n\n throw new InvalidTemplateId(\n `Valid template IDs start with \"itmpl_\". Received: ${candidate} `\n );\n}\n\n/**\n * Run validations that the string is in proper Template Version token format\n * and do a type conversion to TemplateVersion.\n *\n * @param candidate\n */\nfunction makeTemplateVersion(candidate: string): TemplateVersion {\n if (candidate.startsWith('itmplv_')) {\n return candidate as TemplateVersion;\n }\n\n throw new InvalidTemplateVersion(\n `Valid template versions start with \"itmplv_\". Received: ${candidate} `\n );\n}\n\n/**\n * Run validations that the string is in proper Template token format\n * and do a type conversion to AccountId.\n *\n * @param candidate\n */\nfunction makeAccountId(candidate: string): AccountId {\n if (candidate.startsWith('act_')) {\n return candidate as AccountId;\n }\n\n throw new InvalidAccountId(\n `Valid account IDs start with \"act_\". Received: ${candidate} `\n );\n}\n\n/**\n * String enum for environments. These strings will be parsed\n * on the native side bridge into Kotlin / Swift enums.\n */\nexport enum Environment {\n SANDBOX = 'sandbox',\n PRODUCTION = 'production',\n}\n\nexport interface InquiryOptions {\n templateId?: TemplateId;\n templateVersion?: TemplateVersion;\n inquiryId?: InquiryId;\n referenceId?: string;\n accountId?: AccountId;\n environment?: Environment;\n sessionToken?: string;\n\n // Fields\n fields?: Fields;\n\n // Callbacks\n onComplete?: OnCompleteCallback;\n onCanceled?: OnCanceledCallback;\n onError?: OnErrorCallback;\n\n // Customization\n iosThemeObject?: Object | null;\n}\n\ntype OnCompleteCallback = (\n inquiryId: string,\n status: string,\n fields: Fields\n) => void;\n\ntype OnCanceledCallback = (inquiryId?: string, sessionToken?: string) => void;\n\ntype OnErrorCallback = (error: Error) => void;\n\nconst eventEmitter = new NativeEventEmitter(PersonaInquiry2);\n\nexport class Inquiry {\n templateId?: TemplateId;\n inquiryId?: InquiryId;\n referenceId?: string;\n accountId?: AccountId;\n environment?: Environment;\n sessionToken?: string;\n\n iosThemeObject?: Object | null;\n fields?: Fields | null;\n\n private readonly onComplete?: OnCompleteCallback;\n private readonly onCanceled?: OnCanceledCallback;\n private readonly onError?: OnErrorCallback;\n\n private onCompleteListener?: EventSubscription;\n private onCanceledListener?: EventSubscription;\n private onErrorListener?: EventSubscription;\n\n constructor(options: InquiryOptions) {\n this.templateId = options.templateId;\n this.inquiryId = options.inquiryId;\n this.referenceId = options.referenceId;\n this.accountId = options.accountId;\n this.environment = options.environment;\n this.sessionToken = options.sessionToken;\n this.fields = options.fields;\n\n // Callbacks\n this.onComplete = options.onComplete;\n this.onCanceled = options.onCanceled;\n this.onError = options.onError;\n\n // Theme object\n this.iosThemeObject = options.iosThemeObject;\n }\n\n private clearListeners() {\n if (this.onCompleteListener) this.onCompleteListener.remove();\n if (this.onCanceledListener) this.onCanceledListener.remove();\n if (this.onErrorListener) this.onErrorListener.remove();\n }\n\n start() {\n this.onCompleteListener = eventEmitter.addListener(\n 'onComplete',\n (event: {\n inquiryId: string;\n status: string;\n fields: Record<string, RawInquiryField>;\n }) => {\n if (this.onComplete) {\n let fields: Fields = {};\n for (let key of Object.keys(event.fields || {})) {\n let field = event.fields[key];\n if (field == undefined) {\n fields[key] = new InquiryField.Unknown('null');\n continue;\n }\n switch (field.type) {\n case 'integer':\n fields[key] = new InquiryField.Integer(\n Number.parseInt(field.value)\n );\n break;\n case 'boolean':\n fields[key] = new InquiryField.Boolean(field.value);\n break;\n case 'string':\n fields[key] = new InquiryField.String(field.value);\n break;\n default:\n fields[key] = new InquiryField.Unknown(field.type);\n break;\n }\n }\n this.onComplete(event.inquiryId, event.status, fields);\n }\n this.clearListeners();\n }\n );\n\n this.onCanceledListener = eventEmitter.addListener(\n 'onCanceled',\n (event: { inquiryId?: string; sessionToken?: string }) => {\n if (this.onCanceled)\n this.onCanceled(event.inquiryId, event.sessionToken);\n this.clearListeners();\n }\n );\n\n this.onErrorListener = eventEmitter.addListener(\n 'onError',\n (event: { debugMessage: string }) => {\n if (this.onError) this.onError(new Error(event.debugMessage));\n this.clearListeners();\n }\n );\n\n PersonaInquiry2.startInquiry({\n templateId: this.templateId,\n inquiryId: this.inquiryId,\n referenceId: this.referenceId,\n accountId: this.accountId,\n environment: this.environment,\n sessionToken: this.sessionToken,\n fields: this.fields,\n iosTheme: processThemeValues(this.iosThemeObject || {}),\n });\n }\n}\n\nclass InquiryBuilder {\n private _inquiryId: InquiryId;\n private _sessionToken?: string;\n\n // Callbacks\n private _onComplete?: OnCompleteCallback;\n private _onCanceled?: OnCanceledCallback;\n private _onError?: OnErrorCallback;\n private _iosThemeObject?: Object;\n private _fields?: Fields;\n\n constructor(inquiryId: InquiryId) {\n this._inquiryId = inquiryId;\n }\n\n sessionToken(sessionToken: string): InquiryBuilder {\n this._sessionToken = sessionToken;\n\n return this;\n }\n\n onComplete(callback: OnCompleteCallback): InquiryBuilder {\n this._onComplete = callback;\n\n return this;\n }\n\n onCanceled(callback: OnCanceledCallback): InquiryBuilder {\n this._onCanceled = callback;\n\n return this;\n }\n\n onError(callback: OnErrorCallback): InquiryBuilder {\n this._onError = callback;\n\n return this;\n }\n\n iosTheme(themeObject: Object): InquiryBuilder {\n this._iosThemeObject = themeObject;\n\n return this;\n }\n\n build(): Inquiry {\n return new Inquiry({\n inquiryId: this._inquiryId,\n sessionToken: this._sessionToken,\n onComplete: this._onComplete,\n onCanceled: this._onCanceled,\n onError: this._onError,\n iosThemeObject: this._iosThemeObject,\n fields: this._fields,\n });\n }\n}\n\nclass TemplateBuilder {\n private readonly _templateId?: TemplateId;\n private readonly _templateVersion?: TemplateVersion;\n private _accountId?: AccountId;\n private _referenceId?: string;\n private _environment?: Environment;\n private _fields?: Fields;\n private _sessionToken?: string;\n\n // Callbacks\n private _onComplete?: OnCompleteCallback;\n private _onCanceled?: OnCanceledCallback;\n private _onError?: OnErrorCallback;\n\n // Customization\n private _iosThemeObject?: Object;\n\n constructor(\n templateId?: TemplateId | null,\n templateVersion?: TemplateVersion | null\n ) {\n if (templateId != null) {\n this._templateId = templateId;\n } else if (templateVersion != null) {\n this._templateVersion = templateVersion;\n } else {\n throw new InvalidTemplateId(\n `Either templateId or templateVersion needs to be set.`\n );\n }\n return this;\n }\n\n referenceId(referenceId: string): TemplateBuilder {\n this._accountId = undefined;\n this._referenceId = referenceId;\n\n return this;\n }\n\n accountId(accountId: string): TemplateBuilder {\n this._referenceId = undefined;\n this._accountId = makeAccountId(accountId);\n\n return this;\n }\n\n environment(environment: Environment): TemplateBuilder {\n this._environment = environment;\n\n return this;\n }\n\n sessionToken(sessionToken: string): TemplateBuilder {\n this._sessionToken = sessionToken;\n\n return this;\n }\n\n fields(fields: Fields): TemplateBuilder {\n this._fields = fields;\n\n return this;\n }\n\n onComplete(callback: OnCompleteCallback): TemplateBuilder {\n this._onComplete = callback;\n\n return this;\n }\n\n onCanceled(callback: OnCanceledCallback): TemplateBuilder {\n this._onCanceled = callback;\n\n return this;\n }\n\n onError(callback: OnErrorCallback): TemplateBuilder {\n this._onError = callback;\n\n return this;\n }\n\n iosTheme(themeObject: Object): TemplateBuilder {\n this._iosThemeObject = themeObject;\n\n return this;\n }\n\n build(): Inquiry {\n return new Inquiry({\n templateId: this._templateId,\n templateVersion: this._templateVersion,\n accountId: this._accountId,\n referenceId: this._referenceId,\n environment: this._environment,\n sessionToken: this._sessionToken,\n fields: this._fields,\n onComplete: this._onComplete,\n onCanceled: this._onCanceled,\n onError: this._onError,\n iosThemeObject: this._iosThemeObject,\n });\n }\n}\n\nnamespace InquiryBuilders {\n export function fromInquiry(inquiryId: string) {\n return new InquiryBuilder(makeInquiryId(inquiryId));\n }\n\n export function fromTemplate(templateId: string) {\n return new TemplateBuilder(makeTemplateId(templateId), null);\n }\n\n export function fromTemplateVersion(templateVersion: string) {\n return new TemplateBuilder(null, makeTemplateVersion(templateVersion));\n }\n}\n\nexport default InquiryBuilders;\n"]}
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["PersonaInquiry2","NativeModules","InvalidTemplateId","Error","InvalidTemplateVersion","InvalidInquiryId","InvalidAccountId","makeInquiryId","candidate","startsWith","makeTemplateId","makeTemplateVersion","makeAccountId","Environment","eventEmitter","NativeEventEmitter","Inquiry","constructor","options","templateId","inquiryId","referenceId","accountId","environment","sessionToken","fields","onComplete","onCanceled","onError","iosThemeObject","clearListeners","onCompleteListener","remove","onCanceledListener","onErrorListener","fromTemplate","TemplateBuilder","fromTemplateVersion","templateVersion","fromInquiry","InquiryBuilder","start","addListener","event","key","Object","keys","field","undefined","InquiryField","Unknown","type","Integer","Number","parseInt","value","Boolean","String","status","debugMessage","startInquiry","iosTheme","_inquiryId","_sessionToken","callback","_onComplete","_onCanceled","_onError","themeObject","_iosThemeObject","build","_fields","_templateId","_templateVersion","_accountId","_referenceId","_environment","InquiryBuilders"],"mappings":"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","sourcesContent":["import {\n EventSubscription,\n NativeEventEmitter,\n NativeModules,\n} from 'react-native';\nimport { processThemeValues } from './util';\nimport { Fields, InquiryField, RawInquiryField } from './fields';\n\nexport { Fields };\n\nimport { Versions } from './versions';\n\nexport { Versions };\n\nconst { PersonaInquiry2 } = NativeModules;\n\n// Using Opaque types + Smart Constructor enforces validation at\n// instantiation time for IDS\ndeclare const Unique: unique symbol;\nexport type Opaque<T, Tag> = T & { [Unique]: Tag };\n\ntype TemplateId = Opaque<string, 'TemplateId'>;\ntype TemplateVersion = Opaque<string, 'TemplateVersion'>;\ntype InquiryId = Opaque<string, 'InquiryId'>;\ntype AccountId = Opaque<string, 'AccountId'>;\n\nexport class InvalidTemplateId extends Error {}\n\nexport class InvalidTemplateVersion extends Error {}\n\nexport class InvalidInquiryId extends Error {}\n\nexport class InvalidAccountId extends Error {}\n\n/**\n * Run validations that the string is in proper Inquiry token format\n * and do a type conversion to InquiryId.\n *\n * @param candidate\n */\nfunction makeInquiryId(candidate: string): InquiryId {\n if (candidate.startsWith('inq_')) return candidate as InquiryId;\n\n throw new InvalidInquiryId(\n `Valid template IDs start with \"inq_\". Received: ${candidate} `\n );\n}\n\n/**\n * Run validations that the string is in proper Template token format\n * and do a type conversion to TemplateId.\n *\n * @param candidate\n */\nfunction makeTemplateId(candidate: string): TemplateId {\n if (candidate.startsWith('itmpl_')) {\n return candidate as TemplateId;\n }\n\n throw new InvalidTemplateId(\n `Valid template IDs start with \"itmpl_\". Received: ${candidate} `\n );\n}\n\n/**\n * Run validations that the string is in proper Template Version token format\n * and do a type conversion to TemplateVersion.\n *\n * @param candidate\n */\nfunction makeTemplateVersion(candidate: string): TemplateVersion {\n if (candidate.startsWith('itmplv_')) {\n return candidate as TemplateVersion;\n }\n\n throw new InvalidTemplateVersion(\n `Valid template versions start with \"itmplv_\". Received: ${candidate} `\n );\n}\n\n/**\n * Run validations that the string is in proper Template token format\n * and do a type conversion to AccountId.\n *\n * @param candidate\n */\nfunction makeAccountId(candidate: string): AccountId {\n if (candidate.startsWith('act_')) {\n return candidate as AccountId;\n }\n\n throw new InvalidAccountId(\n `Valid account IDs start with \"act_\". Received: ${candidate} `\n );\n}\n\n/**\n * String enum for environments. These strings will be parsed\n * on the native side bridge into Kotlin / Swift enums.\n */\nexport enum Environment {\n SANDBOX = 'sandbox',\n PRODUCTION = 'production',\n}\n\nexport interface InquiryOptions {\n templateId?: TemplateId;\n templateVersion?: TemplateVersion;\n inquiryId?: InquiryId;\n referenceId?: string;\n accountId?: AccountId;\n environment?: Environment;\n sessionToken?: string;\n\n // Fields\n fields?: Fields;\n\n // Callbacks\n onComplete?: OnCompleteCallback;\n onCanceled?: OnCanceledCallback;\n onError?: OnErrorCallback;\n\n // Customization\n iosThemeObject?: Object | null;\n}\n\ntype OnCompleteCallback = (\n inquiryId: string,\n status: string,\n fields: Fields\n) => void;\n\ntype OnCanceledCallback = (inquiryId?: string, sessionToken?: string) => void;\n\ntype OnErrorCallback = (error: Error) => void;\n\nconst eventEmitter = new NativeEventEmitter(PersonaInquiry2);\n\nexport class Inquiry {\n templateId?: TemplateId;\n inquiryId?: InquiryId;\n referenceId?: string;\n accountId?: AccountId;\n environment?: Environment;\n sessionToken?: string;\n\n iosThemeObject?: Object | null;\n fields?: Fields | null;\n\n private readonly onComplete?: OnCompleteCallback;\n private readonly onCanceled?: OnCanceledCallback;\n private readonly onError?: OnErrorCallback;\n\n private onCompleteListener?: EventSubscription;\n private onCanceledListener?: EventSubscription;\n private onErrorListener?: EventSubscription;\n\n constructor(options: InquiryOptions) {\n this.templateId = options.templateId;\n this.inquiryId = options.inquiryId;\n this.referenceId = options.referenceId;\n this.accountId = options.accountId;\n this.environment = options.environment;\n this.sessionToken = options.sessionToken;\n this.fields = options.fields;\n\n // Callbacks\n this.onComplete = options.onComplete;\n this.onCanceled = options.onCanceled;\n this.onError = options.onError;\n\n // Theme object\n this.iosThemeObject = options.iosThemeObject;\n }\n\n private clearListeners() {\n if (this.onCompleteListener) this.onCompleteListener.remove();\n if (this.onCanceledListener) this.onCanceledListener.remove();\n if (this.onErrorListener) this.onErrorListener.remove();\n }\n\n /**\n * Create an Inquiry flow builder based on a template ID.\n *\n * You can find your template ID on the Dashboard under Inquiries > Templates.\n * {@link https://app.withpersona.com/dashboard/inquiry-templates}\n *\n * @param templateId template ID from your Persona Dashboard\n * @return builder for the Inquiry flow\n */\n static fromTemplate(templateId: string) {\n return new TemplateBuilder(makeTemplateId(templateId), null);\n }\n\n /**\n * Create an Inquiry flow builder based on a template ID version.\n *\n * You can find your template ID version on the Dashboard under the\n * settings view of a specific template.\n * {@link https://app.withpersona.com/dashboard/inquiry-templates}\n *\n * @param templateVersion template version from your Persona Dashboard\n * @return builder for the Inquiry flow\n */\n static fromTemplateVersion(templateVersion: string) {\n return new TemplateBuilder(null, makeTemplateVersion(templateVersion));\n }\n\n /**\n * Create an Inquiry flow builder based on an inquiry ID.\n *\n * You will need to generate the inquiry ID on the server. To try it out, you can create an\n * inquiry from the Persona Dashboard under \"Inquiries\". Click on the \"Create Inquiry\" button\n * and copy the inquiry ID from the URL.\n * {@link https://app.withpersona.com/dashboard/inquiries}\n *\n * @param inquiryId inquiry ID from your server\n * @return builder for the Inquiry flow\n */\n static fromInquiry(inquiryId: string) {\n return new InquiryBuilder(makeInquiryId(inquiryId));\n }\n\n /**\n * Launch the Persona Inquiry.\n */\n start() {\n this.onCompleteListener = eventEmitter.addListener(\n 'onComplete',\n (event: {\n inquiryId: string;\n status: string;\n fields: Record<string, RawInquiryField>;\n }) => {\n if (this.onComplete) {\n let fields: Fields = {};\n for (let key of Object.keys(event.fields || {})) {\n let field = event.fields[key];\n if (field == undefined) {\n fields[key] = new InquiryField.Unknown('null');\n continue;\n }\n switch (field.type) {\n case 'integer':\n fields[key] = new InquiryField.Integer(\n Number.parseInt(field.value)\n );\n break;\n case 'boolean':\n fields[key] = new InquiryField.Boolean(field.value);\n break;\n case 'string':\n fields[key] = new InquiryField.String(field.value);\n break;\n default:\n fields[key] = new InquiryField.Unknown(field.type);\n break;\n }\n }\n this.onComplete(event.inquiryId, event.status, fields);\n }\n this.clearListeners();\n }\n );\n\n this.onCanceledListener = eventEmitter.addListener(\n 'onCanceled',\n (event: { inquiryId?: string; sessionToken?: string }) => {\n if (this.onCanceled)\n this.onCanceled(event.inquiryId, event.sessionToken);\n this.clearListeners();\n }\n );\n\n this.onErrorListener = eventEmitter.addListener(\n 'onError',\n (event: { debugMessage: string }) => {\n if (this.onError) this.onError(new Error(event.debugMessage));\n this.clearListeners();\n }\n );\n\n PersonaInquiry2.startInquiry({\n templateId: this.templateId,\n inquiryId: this.inquiryId,\n referenceId: this.referenceId,\n accountId: this.accountId,\n environment: this.environment,\n sessionToken: this.sessionToken,\n fields: this.fields,\n iosTheme: processThemeValues(this.iosThemeObject || {}),\n });\n }\n}\n\nclass InquiryBuilder {\n private _inquiryId: InquiryId;\n private _sessionToken?: string;\n\n // Callbacks\n private _onComplete?: OnCompleteCallback;\n private _onCanceled?: OnCanceledCallback;\n private _onError?: OnErrorCallback;\n private _iosThemeObject?: Object;\n private _fields?: Fields;\n\n constructor(inquiryId: InquiryId) {\n this._inquiryId = inquiryId;\n }\n\n sessionToken(sessionToken: string): InquiryBuilder {\n this._sessionToken = sessionToken;\n\n return this;\n }\n\n onComplete(callback: OnCompleteCallback): InquiryBuilder {\n this._onComplete = callback;\n\n return this;\n }\n\n onCanceled(callback: OnCanceledCallback): InquiryBuilder {\n this._onCanceled = callback;\n\n return this;\n }\n\n onError(callback: OnErrorCallback): InquiryBuilder {\n this._onError = callback;\n\n return this;\n }\n\n iosTheme(themeObject: Object): InquiryBuilder {\n this._iosThemeObject = themeObject;\n\n return this;\n }\n\n build(): Inquiry {\n return new Inquiry({\n inquiryId: this._inquiryId,\n sessionToken: this._sessionToken,\n onComplete: this._onComplete,\n onCanceled: this._onCanceled,\n onError: this._onError,\n iosThemeObject: this._iosThemeObject,\n fields: this._fields,\n });\n }\n}\n\nclass TemplateBuilder {\n private readonly _templateId?: TemplateId;\n private readonly _templateVersion?: TemplateVersion;\n private _accountId?: AccountId;\n private _referenceId?: string;\n private _environment?: Environment;\n private _fields?: Fields;\n private _sessionToken?: string;\n\n // Callbacks\n private _onComplete?: OnCompleteCallback;\n private _onCanceled?: OnCanceledCallback;\n private _onError?: OnErrorCallback;\n\n // Customization\n private _iosThemeObject?: Object;\n\n constructor(\n templateId?: TemplateId | null,\n templateVersion?: TemplateVersion | null\n ) {\n if (templateId != null) {\n this._templateId = templateId;\n } else if (templateVersion != null) {\n this._templateVersion = templateVersion;\n } else {\n throw new InvalidTemplateId(\n `Either templateId or templateVersion needs to be set.`\n );\n }\n return this;\n }\n\n referenceId(referenceId: string): TemplateBuilder {\n this._accountId = undefined;\n this._referenceId = referenceId;\n\n return this;\n }\n\n accountId(accountId: string): TemplateBuilder {\n this._referenceId = undefined;\n this._accountId = makeAccountId(accountId);\n\n return this;\n }\n\n environment(environment: Environment): TemplateBuilder {\n this._environment = environment;\n\n return this;\n }\n\n sessionToken(sessionToken: string): TemplateBuilder {\n this._sessionToken = sessionToken;\n\n return this;\n }\n\n fields(fields: Fields): TemplateBuilder {\n this._fields = fields;\n\n return this;\n }\n\n onComplete(callback: OnCompleteCallback): TemplateBuilder {\n this._onComplete = callback;\n\n return this;\n }\n\n onCanceled(callback: OnCanceledCallback): TemplateBuilder {\n this._onCanceled = callback;\n\n return this;\n }\n\n onError(callback: OnErrorCallback): TemplateBuilder {\n this._onError = callback;\n\n return this;\n }\n\n iosTheme(themeObject: Object): TemplateBuilder {\n this._iosThemeObject = themeObject;\n\n return this;\n }\n\n build(): Inquiry {\n return new Inquiry({\n templateId: this._templateId,\n templateVersion: this._templateVersion,\n accountId: this._accountId,\n referenceId: this._referenceId,\n environment: this._environment,\n sessionToken: this._sessionToken,\n fields: this._fields,\n onComplete: this._onComplete,\n onCanceled: this._onCanceled,\n onError: this._onError,\n iosThemeObject: this._iosThemeObject,\n });\n }\n}\n\n/**\n * @deprecated Use the `Inquiry` static methods instead\n */\nnamespace InquiryBuilders {\n /**\n * @deprecated Use {@link Inquiry#fromInquiry} instead\n */\n export function fromInquiry(inquiryId: string) {\n return Inquiry.fromInquiry(inquiryId);\n }\n\n /**\n * @deprecated Use {@link Inquiry#fromTemplate} instead\n */\n export function fromTemplate(templateId: string) {\n return Inquiry.fromTemplate(templateId);\n }\n\n /**\n * @deprecated Use {@link Inquiry#fromTemplateVersion} instead\n */\n export function fromTemplateVersion(templateVersion: string) {\n return Inquiry.fromTemplateVersion(templateVersion);\n }\n}\n\nexport default InquiryBuilders;\n"]}
|