react-native-persona 2.1.3 → 2.2.2

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.
Files changed (72) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +156 -2
  3. package/{RNPersonaInquiry.podspec → RNPersonaInquiry2.podspec} +2 -2
  4. package/android/README.md +14 -0
  5. package/android/build.gradle +22 -99
  6. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  7. package/android/src/main/AndroidManifest.xml +1 -1
  8. package/android/src/main/java/com/withpersona/{sdk/reactnative/PersonaInquiryModule.java → sdk2/reactnative/PersonaInquiryModule2.java} +24 -14
  9. package/android/src/main/java/com/withpersona/{sdk/reactnative/PersonaInquiryPackage.java → sdk2/reactnative/PersonaInquiryPackage2.java} +3 -3
  10. package/android/src/main/java/com/withpersona/{sdk → sdk2}/reactnative/exceptions/InvalidConfiguration.java +1 -1
  11. package/android/src/main/res/values/theme.xml +2 -3
  12. package/ios/{PersonaInquiry.swift → PersonaInquiry2.swift} +17 -13
  13. package/ios/PersonaInquiryBridge.m +1 -1
  14. package/lib/commonjs/fields.js +141 -0
  15. package/lib/commonjs/fields.js.map +1 -0
  16. package/lib/commonjs/index.js +475 -0
  17. package/lib/commonjs/index.js.map +1 -0
  18. package/lib/commonjs/util.js +36 -0
  19. package/lib/commonjs/util.js.map +1 -0
  20. package/lib/commonjs/versions.js +25 -0
  21. package/lib/commonjs/versions.js.map +1 -0
  22. package/lib/module/fields.js +132 -0
  23. package/lib/module/fields.js.map +1 -0
  24. package/lib/module/index.js +435 -0
  25. package/lib/module/index.js.map +1 -0
  26. package/lib/module/util.js +29 -0
  27. package/lib/module/util.js.map +1 -0
  28. package/lib/module/versions.js +14 -0
  29. package/lib/module/versions.js.map +1 -0
  30. package/{generatedTypes/persona-tools/config.d.ts → lib/typescript/persona-tools/Config.d.ts} +0 -0
  31. package/{generatedTypes → lib/typescript}/persona-tools/Theme.d.ts +0 -0
  32. package/{generatedTypes → lib/typescript}/persona-tools/index.d.ts +0 -0
  33. package/{generatedTypes → lib/typescript}/persona-tools/lib/AndroidResourcePrinter.d.ts +2 -2
  34. package/{generatedTypes → lib/typescript}/persona-tools/lib/prompts.d.ts +0 -0
  35. package/{generatedTypes → lib/typescript}/persona-tools/tools/AndroidThemeGenerator.d.ts +0 -0
  36. package/{generatedTypes → lib/typescript}/persona-tools/tools/IosThemeInstructions.d.ts +0 -0
  37. package/{generatedTypes → lib/typescript}/src/fields.d.ts +0 -0
  38. package/{generatedTypes → lib/typescript}/src/index.d.ts +56 -5
  39. package/{generatedTypes → lib/typescript}/src/util.d.ts +0 -0
  40. package/lib/typescript/src/versions.d.ts +6 -0
  41. package/package.json +74 -18
  42. package/persona-tools/{config.ts → Config.ts} +7 -7
  43. package/persona-tools/Theme.ts +107 -107
  44. package/persona-tools/index.ts +9 -9
  45. package/persona-tools/lib/AndroidResourcePrinter.ts +4 -4
  46. package/persona-tools/tools/AndroidThemeGenerator.ts +18 -18
  47. package/persona-tools/tools/IosThemeInstructions.ts +8 -8
  48. package/src/fields.ts +7 -7
  49. package/src/index.ts +89 -26
  50. package/src/util.ts +2 -2
  51. package/src/versions.ts +12 -0
  52. package/generatedTypes/persona-tools/lib/AndroidResourcePrinter.spec.d.ts +0 -1
  53. package/generatedTypes/src/fields.spec.d.ts +0 -1
  54. package/generatedTypes/src/util.spec.d.ts +0 -1
  55. package/jest.config.js +0 -10
  56. package/persona-tools/Theme.js +0 -186
  57. package/persona-tools/config.js +0 -72
  58. package/persona-tools/index.js +0 -30
  59. package/persona-tools/lib/AndroidResourcePrinter.js +0 -573
  60. package/persona-tools/lib/AndroidResourcePrinter.spec.js +0 -914
  61. package/persona-tools/lib/AndroidResourcePrinter.spec.ts +0 -952
  62. package/persona-tools/lib/prompts.js +0 -39
  63. package/persona-tools/tools/AndroidThemeGenerator.js +0 -55
  64. package/persona-tools/tools/IosThemeInstructions.js +0 -34
  65. package/src/fields.js +0 -88
  66. package/src/fields.spec.js +0 -18
  67. package/src/fields.spec.ts +0 -17
  68. package/src/index.js +0 -271
  69. package/src/util.js +0 -29
  70. package/src/util.spec.js +0 -17
  71. package/src/util.spec.ts +0 -22
  72. package/tsconfig.json +0 -29
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InquiryField = exports.Fields = void 0;
7
+
8
+ 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; }
9
+
10
+ let InquiryField;
11
+ exports.InquiryField = InquiryField;
12
+
13
+ (function (_InquiryField) {
14
+ class Integer {
15
+ constructor(value) {
16
+ _defineProperty(this, "type", 'integer');
17
+
18
+ _defineProperty(this, "value", void 0);
19
+
20
+ this.value = value;
21
+ }
22
+
23
+ }
24
+
25
+ _InquiryField.Integer = Integer;
26
+
27
+ class String {
28
+ constructor(value) {
29
+ _defineProperty(this, "type", 'string');
30
+
31
+ _defineProperty(this, "value", void 0);
32
+
33
+ this.value = value;
34
+ }
35
+
36
+ }
37
+
38
+ _InquiryField.String = String;
39
+
40
+ class Boolean {
41
+ constructor(value) {
42
+ _defineProperty(this, "type", 'boolean');
43
+
44
+ _defineProperty(this, "value", void 0);
45
+
46
+ this.value = value;
47
+ }
48
+
49
+ }
50
+
51
+ _InquiryField.Boolean = Boolean;
52
+
53
+ class Unknown {
54
+ constructor(type) {
55
+ _defineProperty(this, "type", void 0);
56
+
57
+ this.type = type;
58
+ }
59
+
60
+ }
61
+
62
+ _InquiryField.Unknown = Unknown;
63
+
64
+ function parse(_ref) {
65
+ let {
66
+ type,
67
+ value
68
+ } = _ref;
69
+
70
+ if (value == null) {
71
+ return null;
72
+ }
73
+
74
+ switch (type) {
75
+ case 'integer':
76
+ return new InquiryField.Integer(Number.parseInt(value));
77
+
78
+ case 'string':
79
+ return new InquiryField.String(value);
80
+
81
+ case 'boolean':
82
+ return new InquiryField.Boolean(JSON.parse(value));
83
+
84
+ case 'unknown':
85
+ return new InquiryField.Unknown(value);
86
+
87
+ default:
88
+ return new InquiryField.Unknown(type);
89
+ }
90
+ }
91
+
92
+ _InquiryField.parse = parse;
93
+ })(InquiryField || (exports.InquiryField = InquiryField = {}));
94
+
95
+ let Fields;
96
+ exports.Fields = Fields;
97
+
98
+ (function (_Fields) {
99
+ function builder() {
100
+ return new Fields.Builder();
101
+ }
102
+
103
+ _Fields.builder = builder;
104
+
105
+ class Builder {
106
+ constructor() {
107
+ _defineProperty(this, "_fields", void 0);
108
+
109
+ this._fields = {};
110
+ }
111
+
112
+ integer(fieldKey, value) {
113
+ this._fields = { ...this._fields,
114
+ [fieldKey]: new InquiryField.Integer(value)
115
+ };
116
+ return this;
117
+ }
118
+
119
+ boolean(fieldKey, value) {
120
+ this._fields = { ...this._fields,
121
+ [fieldKey]: new InquiryField.Boolean(value)
122
+ };
123
+ return this;
124
+ }
125
+
126
+ string(fieldKey, value) {
127
+ this._fields = { ...this._fields,
128
+ [fieldKey]: new InquiryField.String(value)
129
+ };
130
+ return this;
131
+ }
132
+
133
+ build() {
134
+ return this._fields;
135
+ }
136
+
137
+ }
138
+
139
+ _Fields.Builder = Builder;
140
+ })(Fields || (exports.Fields = Fields = {}));
141
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["fields.ts"],"names":["Integer","constructor","value","String","Boolean","Unknown","type","parse","InquiryField","Number","parseInt","JSON","builder","Fields","Builder","_fields","integer","fieldKey","boolean","string","build"],"mappings":";;;;;;;;;;;;;AAUS,QAAMA,OAAN,CAAsC;AAI3CC,IAAAA,WAAW,CAACC,KAAD,EAAiB;AAAA,oCAHJ,SAGI;;AAAA;;AAC1B,WAAKA,KAAL,GAAaA,KAAb;AACD;;AAN0C;;;;AAStC,QAAMC,MAAN,CAAqC;AAI1CF,IAAAA,WAAW,CAACC,KAAD,EAAiB;AAAA,oCAHJ,QAGI;;AAAA;;AAC1B,WAAKA,KAAL,GAAaA,KAAb;AACD;;AANyC;;;;AASrC,QAAME,OAAN,CAAsC;AAI3CH,IAAAA,WAAW,CAACC,KAAD,EAAkB;AAAA,oCAHL,SAGK;;AAAA;;AAC3B,WAAKA,KAAL,GAAaA,KAAb;AACD;;AAN0C;;;;AAStC,QAAMG,OAAN,CAAsC;AAG3CJ,IAAAA,WAAW,CAACK,IAAD,EAAe;AAAA;;AACxB,WAAKA,IAAL,GAAYA,IAAZ;AACD;;AAL0C;;;;AAQtC,WAASC,KAAT,OAAsE;AAAA,QAAvD;AAAED,MAAAA,IAAF;AAAQJ,MAAAA;AAAR,KAAuD;;AAC3E,QAAIA,KAAK,IAAI,IAAb,EAAmB;AACjB,aAAO,IAAP;AACD;;AACD,YAAQI,IAAR;AACE,WAAK,SAAL;AACE,eAAO,IAAIE,YAAY,CAACR,OAAjB,CAAyBS,MAAM,CAACC,QAAP,CAAgBR,KAAhB,CAAzB,CAAP;;AACF,WAAK,QAAL;AACE,eAAO,IAAIM,YAAY,CAACL,MAAjB,CAAwBD,KAAxB,CAAP;;AACF,WAAK,SAAL;AACE,eAAO,IAAIM,YAAY,CAACJ,OAAjB,CAAyBO,IAAI,CAACJ,KAAL,CAAWL,KAAX,CAAzB,CAAP;;AACF,WAAK,SAAL;AACE,eAAO,IAAIM,YAAY,CAACH,OAAjB,CAAyBH,KAAzB,CAAP;;AACF;AACE,eAAO,IAAIM,YAAY,CAACH,OAAjB,CAAyBC,IAAzB,CAAP;AAVJ;AAYD;;;GApDcE,Y,4BAAAA,Y;;;;;;AA0DR,WAASI,OAAT,GAA4B;AACjC,WAAO,IAAIC,MAAM,CAACC,OAAX,EAAP;AACD;;;;AAEM,QAAMA,OAAN,CAAc;AAGnBb,IAAAA,WAAW,GAAG;AAAA;;AACZ,WAAKc,OAAL,GAAe,EAAf;AACD;;AAEMC,IAAAA,OAAO,CAACC,QAAD,EAAmBf,KAAnB,EAAmC;AAC/C,WAAKa,OAAL,GAAe,EACb,GAAG,KAAKA,OADK;AAEb,SAACE,QAAD,GAAY,IAAIT,YAAY,CAACR,OAAjB,CAAyBE,KAAzB;AAFC,OAAf;AAKA,aAAO,IAAP;AACD;;AAEMgB,IAAAA,OAAO,CAACD,QAAD,EAAmBf,KAAnB,EAAoC;AAChD,WAAKa,OAAL,GAAe,EACb,GAAG,KAAKA,OADK;AAEb,SAACE,QAAD,GAAY,IAAIT,YAAY,CAACJ,OAAjB,CAAyBF,KAAzB;AAFC,OAAf;AAKA,aAAO,IAAP;AACD;;AAEMiB,IAAAA,MAAM,CAACF,QAAD,EAAmBf,KAAnB,EAAmC;AAC9C,WAAKa,OAAL,GAAe,EACb,GAAG,KAAKA,OADK;AAEb,SAACE,QAAD,GAAY,IAAIT,YAAY,CAACL,MAAjB,CAAwBD,KAAxB;AAFC,OAAf;AAKA,aAAO,IAAP;AACD;;AAEMkB,IAAAA,KAAK,GAAW;AACrB,aAAO,KAAKL,OAAZ;AACD;;AApCkB;;;GALNF,M,sBAAAA,M","sourcesContent":["interface InquiryField {\n readonly type: string;\n}\n\nexport type RawInquiryField = {\n type: string;\n value?: any;\n};\n\nexport namespace InquiryField {\n export class Integer implements InquiryField {\n readonly type: string = 'integer';\n readonly value?: number;\n\n constructor(value?: number) {\n this.value = value;\n }\n }\n\n export class String implements InquiryField {\n readonly type: string = 'string';\n readonly value?: string;\n\n constructor(value?: string) {\n this.value = value;\n }\n }\n\n export class Boolean implements InquiryField {\n readonly type: string = 'boolean';\n readonly value?: boolean;\n\n constructor(value?: boolean) {\n this.value = value;\n }\n }\n\n export class Unknown implements InquiryField {\n readonly type: string;\n\n constructor(type: string) {\n this.type = type;\n }\n }\n\n export function parse({ type, value }: RawInquiryField): InquiryField | null {\n if (value == null) {\n return null;\n }\n switch (type) {\n case 'integer':\n return new InquiryField.Integer(Number.parseInt(value));\n case 'string':\n return new InquiryField.String(value);\n case 'boolean':\n return new InquiryField.Boolean(JSON.parse(value));\n case 'unknown':\n return new InquiryField.Unknown(value);\n default:\n return new InquiryField.Unknown(type);\n }\n }\n}\n\nexport type Fields = Record<string, InquiryField | null>;\n\nexport namespace Fields {\n export function builder(): Builder {\n return new Fields.Builder();\n }\n\n export class Builder {\n private _fields: Record<string, InquiryField>;\n\n constructor() {\n this._fields = {};\n }\n\n public integer(fieldKey: string, value?: number) {\n this._fields = {\n ...this._fields,\n [fieldKey]: new InquiryField.Integer(value),\n };\n\n return this;\n }\n\n public boolean(fieldKey: string, value?: boolean) {\n this._fields = {\n ...this._fields,\n [fieldKey]: new InquiryField.Boolean(value),\n };\n\n return this;\n }\n\n public string(fieldKey: string, value?: string) {\n this._fields = {\n ...this._fields,\n [fieldKey]: new InquiryField.String(value),\n };\n\n return this;\n }\n\n public build(): Fields {\n return this._fields;\n }\n }\n}\n"]}
@@ -0,0 +1,475 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Environment = void 0;
7
+ Object.defineProperty(exports, "Fields", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _fields.Fields;
11
+ }
12
+ });
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;
21
+
22
+ var _reactNative = require("react-native");
23
+
24
+ var _util = require("./util");
25
+
26
+ var _fields = require("./fields");
27
+
28
+ var _versions = require("./versions");
29
+
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; }
31
+
32
+ const {
33
+ PersonaInquiry2
34
+ } = _reactNative.NativeModules; // Using Opaque types + Smart Constructor enforces validation at
35
+ // instantiation time for IDS
36
+
37
+ class InvalidTemplateId extends Error {}
38
+
39
+ exports.InvalidTemplateId = InvalidTemplateId;
40
+
41
+ class InvalidTemplateVersion extends Error {}
42
+
43
+ exports.InvalidTemplateVersion = InvalidTemplateVersion;
44
+
45
+ class InvalidInquiryId extends Error {}
46
+
47
+ exports.InvalidInquiryId = InvalidInquiryId;
48
+
49
+ class InvalidAccountId extends Error {}
50
+ /**
51
+ * Run validations that the string is in proper Inquiry token format
52
+ * and do a type conversion to InquiryId.
53
+ *
54
+ * @param candidate
55
+ */
56
+
57
+
58
+ exports.InvalidAccountId = InvalidAccountId;
59
+
60
+ function makeInquiryId(candidate) {
61
+ if (candidate.startsWith('inq_')) return candidate;
62
+ throw new InvalidInquiryId(`Valid template IDs start with "inq_". Received: ${candidate} `);
63
+ }
64
+ /**
65
+ * Run validations that the string is in proper Template token format
66
+ * and do a type conversion to TemplateId.
67
+ *
68
+ * @param candidate
69
+ */
70
+
71
+
72
+ function makeTemplateId(candidate) {
73
+ if (candidate.startsWith('itmpl_')) {
74
+ return candidate;
75
+ }
76
+
77
+ throw new InvalidTemplateId(`Valid template IDs start with "itmpl_". Received: ${candidate} `);
78
+ }
79
+ /**
80
+ * Run validations that the string is in proper Template Version token format
81
+ * and do a type conversion to TemplateVersion.
82
+ *
83
+ * @param candidate
84
+ */
85
+
86
+
87
+ function makeTemplateVersion(candidate) {
88
+ if (candidate.startsWith('itmplv_')) {
89
+ return candidate;
90
+ }
91
+
92
+ throw new InvalidTemplateVersion(`Valid template versions start with "itmplv_". Received: ${candidate} `);
93
+ }
94
+ /**
95
+ * Run validations that the string is in proper Template token format
96
+ * and do a type conversion to AccountId.
97
+ *
98
+ * @param candidate
99
+ */
100
+
101
+
102
+ function makeAccountId(candidate) {
103
+ if (candidate.startsWith('act_')) {
104
+ return candidate;
105
+ }
106
+
107
+ throw new InvalidAccountId(`Valid account IDs start with "act_". Received: ${candidate} `);
108
+ }
109
+ /**
110
+ * String enum for environments. These strings will be parsed
111
+ * on the native side bridge into Kotlin / Swift enums.
112
+ */
113
+
114
+
115
+ let Environment;
116
+ exports.Environment = Environment;
117
+
118
+ (function (Environment) {
119
+ Environment["SANDBOX"] = "sandbox";
120
+ Environment["PRODUCTION"] = "production";
121
+ })(Environment || (exports.Environment = Environment = {}));
122
+
123
+ const eventEmitter = new _reactNative.NativeEventEmitter(PersonaInquiry2);
124
+
125
+ class Inquiry {
126
+ constructor(options) {
127
+ _defineProperty(this, "templateId", void 0);
128
+
129
+ _defineProperty(this, "inquiryId", void 0);
130
+
131
+ _defineProperty(this, "referenceId", void 0);
132
+
133
+ _defineProperty(this, "accountId", void 0);
134
+
135
+ _defineProperty(this, "environment", void 0);
136
+
137
+ _defineProperty(this, "sessionToken", void 0);
138
+
139
+ _defineProperty(this, "iosThemeObject", void 0);
140
+
141
+ _defineProperty(this, "fields", void 0);
142
+
143
+ _defineProperty(this, "onComplete", void 0);
144
+
145
+ _defineProperty(this, "onCanceled", void 0);
146
+
147
+ _defineProperty(this, "onError", void 0);
148
+
149
+ _defineProperty(this, "onCompleteListener", void 0);
150
+
151
+ _defineProperty(this, "onCanceledListener", void 0);
152
+
153
+ _defineProperty(this, "onErrorListener", void 0);
154
+
155
+ this.templateId = options.templateId;
156
+ this.inquiryId = options.inquiryId;
157
+ this.referenceId = options.referenceId;
158
+ this.accountId = options.accountId;
159
+ this.environment = options.environment;
160
+ this.sessionToken = options.sessionToken;
161
+ this.fields = options.fields; // Callbacks
162
+
163
+ this.onComplete = options.onComplete;
164
+ this.onCanceled = options.onCanceled;
165
+ this.onError = options.onError; // Theme object
166
+
167
+ this.iosThemeObject = options.iosThemeObject;
168
+ }
169
+
170
+ clearListeners() {
171
+ if (this.onCompleteListener) this.onCompleteListener.remove();
172
+ if (this.onCanceledListener) this.onCanceledListener.remove();
173
+ if (this.onErrorListener) this.onErrorListener.remove();
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
+
224
+
225
+ start() {
226
+ this.onCompleteListener = eventEmitter.addListener('onComplete', event => {
227
+ if (this.onComplete) {
228
+ let fields = {};
229
+
230
+ for (let key of Object.keys(event.fields || {})) {
231
+ let field = event.fields[key];
232
+
233
+ if (field == undefined) {
234
+ fields[key] = new _fields.InquiryField.Unknown('null');
235
+ continue;
236
+ }
237
+
238
+ switch (field.type) {
239
+ case 'integer':
240
+ fields[key] = new _fields.InquiryField.Integer(Number.parseInt(field.value));
241
+ break;
242
+
243
+ case 'boolean':
244
+ fields[key] = new _fields.InquiryField.Boolean(field.value);
245
+ break;
246
+
247
+ case 'string':
248
+ fields[key] = new _fields.InquiryField.String(field.value);
249
+ break;
250
+
251
+ default:
252
+ fields[key] = new _fields.InquiryField.Unknown(field.type);
253
+ break;
254
+ }
255
+ }
256
+
257
+ this.onComplete(event.inquiryId, event.status, fields);
258
+ }
259
+
260
+ this.clearListeners();
261
+ });
262
+ this.onCanceledListener = eventEmitter.addListener('onCanceled', event => {
263
+ if (this.onCanceled) this.onCanceled(event.inquiryId, event.sessionToken);
264
+ this.clearListeners();
265
+ });
266
+ this.onErrorListener = eventEmitter.addListener('onError', event => {
267
+ if (this.onError) this.onError(new Error(event.debugMessage));
268
+ this.clearListeners();
269
+ });
270
+ PersonaInquiry2.startInquiry({
271
+ templateId: this.templateId,
272
+ inquiryId: this.inquiryId,
273
+ referenceId: this.referenceId,
274
+ accountId: this.accountId,
275
+ environment: this.environment,
276
+ sessionToken: this.sessionToken,
277
+ fields: this.fields,
278
+ iosTheme: (0, _util.processThemeValues)(this.iosThemeObject || {})
279
+ });
280
+ }
281
+
282
+ }
283
+
284
+ exports.Inquiry = Inquiry;
285
+
286
+ class InquiryBuilder {
287
+ // Callbacks
288
+ constructor(inquiryId) {
289
+ _defineProperty(this, "_inquiryId", void 0);
290
+
291
+ _defineProperty(this, "_sessionToken", void 0);
292
+
293
+ _defineProperty(this, "_onComplete", void 0);
294
+
295
+ _defineProperty(this, "_onCanceled", void 0);
296
+
297
+ _defineProperty(this, "_onError", void 0);
298
+
299
+ _defineProperty(this, "_iosThemeObject", void 0);
300
+
301
+ _defineProperty(this, "_fields", void 0);
302
+
303
+ this._inquiryId = inquiryId;
304
+ }
305
+
306
+ sessionToken(sessionToken) {
307
+ this._sessionToken = sessionToken;
308
+ return this;
309
+ }
310
+
311
+ onComplete(callback) {
312
+ this._onComplete = callback;
313
+ return this;
314
+ }
315
+
316
+ onCanceled(callback) {
317
+ this._onCanceled = callback;
318
+ return this;
319
+ }
320
+
321
+ onError(callback) {
322
+ this._onError = callback;
323
+ return this;
324
+ }
325
+
326
+ iosTheme(themeObject) {
327
+ this._iosThemeObject = themeObject;
328
+ return this;
329
+ }
330
+
331
+ build() {
332
+ return new Inquiry({
333
+ inquiryId: this._inquiryId,
334
+ sessionToken: this._sessionToken,
335
+ onComplete: this._onComplete,
336
+ onCanceled: this._onCanceled,
337
+ onError: this._onError,
338
+ iosThemeObject: this._iosThemeObject,
339
+ fields: this._fields
340
+ });
341
+ }
342
+
343
+ }
344
+
345
+ class TemplateBuilder {
346
+ // Callbacks
347
+ // Customization
348
+ constructor(templateId, templateVersion) {
349
+ _defineProperty(this, "_templateId", void 0);
350
+
351
+ _defineProperty(this, "_templateVersion", void 0);
352
+
353
+ _defineProperty(this, "_accountId", void 0);
354
+
355
+ _defineProperty(this, "_referenceId", void 0);
356
+
357
+ _defineProperty(this, "_environment", void 0);
358
+
359
+ _defineProperty(this, "_fields", void 0);
360
+
361
+ _defineProperty(this, "_sessionToken", void 0);
362
+
363
+ _defineProperty(this, "_onComplete", void 0);
364
+
365
+ _defineProperty(this, "_onCanceled", void 0);
366
+
367
+ _defineProperty(this, "_onError", void 0);
368
+
369
+ _defineProperty(this, "_iosThemeObject", void 0);
370
+
371
+ if (templateId != null) {
372
+ this._templateId = templateId;
373
+ } else if (templateVersion != null) {
374
+ this._templateVersion = templateVersion;
375
+ } else {
376
+ throw new InvalidTemplateId(`Either templateId or templateVersion needs to be set.`);
377
+ }
378
+
379
+ return this;
380
+ }
381
+
382
+ referenceId(referenceId) {
383
+ this._accountId = undefined;
384
+ this._referenceId = referenceId;
385
+ return this;
386
+ }
387
+
388
+ accountId(accountId) {
389
+ this._referenceId = undefined;
390
+ this._accountId = makeAccountId(accountId);
391
+ return this;
392
+ }
393
+
394
+ environment(environment) {
395
+ this._environment = environment;
396
+ return this;
397
+ }
398
+
399
+ sessionToken(sessionToken) {
400
+ this._sessionToken = sessionToken;
401
+ return this;
402
+ }
403
+
404
+ fields(fields) {
405
+ this._fields = fields;
406
+ return this;
407
+ }
408
+
409
+ onComplete(callback) {
410
+ this._onComplete = callback;
411
+ return this;
412
+ }
413
+
414
+ onCanceled(callback) {
415
+ this._onCanceled = callback;
416
+ return this;
417
+ }
418
+
419
+ onError(callback) {
420
+ this._onError = callback;
421
+ return this;
422
+ }
423
+
424
+ iosTheme(themeObject) {
425
+ this._iosThemeObject = themeObject;
426
+ return this;
427
+ }
428
+
429
+ build() {
430
+ return new Inquiry({
431
+ templateId: this._templateId,
432
+ templateVersion: this._templateVersion,
433
+ accountId: this._accountId,
434
+ referenceId: this._referenceId,
435
+ environment: this._environment,
436
+ sessionToken: this._sessionToken,
437
+ fields: this._fields,
438
+ onComplete: this._onComplete,
439
+ onCanceled: this._onCanceled,
440
+ onError: this._onError,
441
+ iosThemeObject: this._iosThemeObject
442
+ });
443
+ }
444
+
445
+ }
446
+ /**
447
+ * @deprecated Use the `Inquiry` static methods instead
448
+ */
449
+
450
+
451
+ let InquiryBuilders;
452
+
453
+ (function (_InquiryBuilders) {
454
+ function fromInquiry(inquiryId) {
455
+ return Inquiry.fromInquiry(inquiryId);
456
+ }
457
+
458
+ _InquiryBuilders.fromInquiry = fromInquiry;
459
+
460
+ function fromTemplate(templateId) {
461
+ return Inquiry.fromTemplate(templateId);
462
+ }
463
+
464
+ _InquiryBuilders.fromTemplate = fromTemplate;
465
+
466
+ function fromTemplateVersion(templateVersion) {
467
+ return Inquiry.fromTemplateVersion(templateVersion);
468
+ }
469
+
470
+ _InquiryBuilders.fromTemplateVersion = fromTemplateVersion;
471
+ })(InquiryBuilders || (InquiryBuilders = {}));
472
+
473
+ var _default = InquiryBuilders;
474
+ exports.default = _default;
475
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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","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":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAKA;;AACA;;AAIA;;;;AAIA,MAAM;AAAEA,EAAAA;AAAF,IAAsBC,0BAA5B,C,CAEA;AACA;;AASO,MAAMC,iBAAN,SAAgCC,KAAhC,CAAsC;;;;AAEtC,MAAMC,sBAAN,SAAqCD,KAArC,CAA2C;;;;AAE3C,MAAME,gBAAN,SAA+BF,KAA/B,CAAqC;;;;AAErC,MAAMG,gBAAN,SAA+BH,KAA/B,CAAqC;AAE5C;AACA;AACA;AACA;AACA;AACA;;;;;AACA,SAASI,aAAT,CAAuBC,SAAvB,EAAqD;AACnD,MAAIA,SAAS,CAACC,UAAV,CAAqB,MAArB,CAAJ,EAAkC,OAAOD,SAAP;AAElC,QAAM,IAAIH,gBAAJ,CACH,mDAAkDG,SAAU,GADzD,CAAN;AAGD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,cAAT,CAAwBF,SAAxB,EAAuD;AACrD,MAAIA,SAAS,CAACC,UAAV,CAAqB,QAArB,CAAJ,EAAoC;AAClC,WAAOD,SAAP;AACD;;AAED,QAAM,IAAIN,iBAAJ,CACH,qDAAoDM,SAAU,GAD3D,CAAN;AAGD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASG,mBAAT,CAA6BH,SAA7B,EAAiE;AAC/D,MAAIA,SAAS,CAACC,UAAV,CAAqB,SAArB,CAAJ,EAAqC;AACnC,WAAOD,SAAP;AACD;;AAED,QAAM,IAAIJ,sBAAJ,CACH,2DAA0DI,SAAU,GADjE,CAAN;AAGD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASI,aAAT,CAAuBJ,SAAvB,EAAqD;AACnD,MAAIA,SAAS,CAACC,UAAV,CAAqB,MAArB,CAAJ,EAAkC;AAChC,WAAOD,SAAP;AACD;;AAED,QAAM,IAAIF,gBAAJ,CACH,kDAAiDE,SAAU,GADxD,CAAN;AAGD;AAED;AACA;AACA;AACA;;;IACYK,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W;;AAoCZ,MAAMC,YAAY,GAAG,IAAIC,+BAAJ,CAAuBf,eAAvB,CAArB;;AAEO,MAAMgB,OAAN,CAAc;AAmBnBC,EAAAA,WAAW,CAACC,OAAD,EAA0B;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACnC,SAAKC,UAAL,GAAkBD,OAAO,CAACC,UAA1B;AACA,SAAKC,SAAL,GAAiBF,OAAO,CAACE,SAAzB;AACA,SAAKC,WAAL,GAAmBH,OAAO,CAACG,WAA3B;AACA,SAAKC,SAAL,GAAiBJ,OAAO,CAACI,SAAzB;AACA,SAAKC,WAAL,GAAmBL,OAAO,CAACK,WAA3B;AACA,SAAKC,YAAL,GAAoBN,OAAO,CAACM,YAA5B;AACA,SAAKC,MAAL,GAAcP,OAAO,CAACO,MAAtB,CAPmC,CASnC;;AACA,SAAKC,UAAL,GAAkBR,OAAO,CAACQ,UAA1B;AACA,SAAKC,UAAL,GAAkBT,OAAO,CAACS,UAA1B;AACA,SAAKC,OAAL,GAAeV,OAAO,CAACU,OAAvB,CAZmC,CAcnC;;AACA,SAAKC,cAAL,GAAsBX,OAAO,CAACW,cAA9B;AACD;;AAEOC,EAAAA,cAAc,GAAG;AACvB,QAAI,KAAKC,kBAAT,EAA6B,KAAKA,kBAAL,CAAwBC,MAAxB;AAC7B,QAAI,KAAKC,kBAAT,EAA6B,KAAKA,kBAAL,CAAwBD,MAAxB;AAC7B,QAAI,KAAKE,eAAT,EAA0B,KAAKA,eAAL,CAAqBF,MAArB;AAC3B;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACqB,SAAZG,YAAY,CAAChB,UAAD,EAAqB;AACtC,WAAO,IAAIiB,eAAJ,CAAoB1B,cAAc,CAACS,UAAD,CAAlC,EAAgD,IAAhD,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAC4B,SAAnBkB,mBAAmB,CAACC,eAAD,EAA0B;AAClD,WAAO,IAAIF,eAAJ,CAAoB,IAApB,EAA0BzB,mBAAmB,CAAC2B,eAAD,CAA7C,CAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACoB,SAAXC,WAAW,CAACnB,SAAD,EAAoB;AACpC,WAAO,IAAIoB,cAAJ,CAAmBjC,aAAa,CAACa,SAAD,CAAhC,CAAP;AACD;AAED;AACF;AACA;;;AACEqB,EAAAA,KAAK,GAAG;AACN,SAAKV,kBAAL,GAA0BjB,YAAY,CAAC4B,WAAb,CACxB,YADwB,EAEvBC,KAAD,IAIM;AACJ,UAAI,KAAKjB,UAAT,EAAqB;AACnB,YAAID,MAAc,GAAG,EAArB;;AACA,aAAK,IAAImB,GAAT,IAAgBC,MAAM,CAACC,IAAP,CAAYH,KAAK,CAAClB,MAAN,IAAgB,EAA5B,CAAhB,EAAiD;AAC/C,cAAIsB,KAAK,GAAGJ,KAAK,CAAClB,MAAN,CAAamB,GAAb,CAAZ;;AACA,cAAIG,KAAK,IAAIC,SAAb,EAAwB;AACtBvB,YAAAA,MAAM,CAACmB,GAAD,CAAN,GAAc,IAAIK,qBAAaC,OAAjB,CAAyB,MAAzB,CAAd;AACA;AACD;;AACD,kBAAQH,KAAK,CAACI,IAAd;AACE,iBAAK,SAAL;AACE1B,cAAAA,MAAM,CAACmB,GAAD,CAAN,GAAc,IAAIK,qBAAaG,OAAjB,CACZC,MAAM,CAACC,QAAP,CAAgBP,KAAK,CAACQ,KAAtB,CADY,CAAd;AAGA;;AACF,iBAAK,SAAL;AACE9B,cAAAA,MAAM,CAACmB,GAAD,CAAN,GAAc,IAAIK,qBAAaO,OAAjB,CAAyBT,KAAK,CAACQ,KAA/B,CAAd;AACA;;AACF,iBAAK,QAAL;AACE9B,cAAAA,MAAM,CAACmB,GAAD,CAAN,GAAc,IAAIK,qBAAaQ,MAAjB,CAAwBV,KAAK,CAACQ,KAA9B,CAAd;AACA;;AACF;AACE9B,cAAAA,MAAM,CAACmB,GAAD,CAAN,GAAc,IAAIK,qBAAaC,OAAjB,CAAyBH,KAAK,CAACI,IAA/B,CAAd;AACA;AAdJ;AAgBD;;AACD,aAAKzB,UAAL,CAAgBiB,KAAK,CAACvB,SAAtB,EAAiCuB,KAAK,CAACe,MAAvC,EAA+CjC,MAA/C;AACD;;AACD,WAAKK,cAAL;AACD,KAnCuB,CAA1B;AAsCA,SAAKG,kBAAL,GAA0BnB,YAAY,CAAC4B,WAAb,CACxB,YADwB,EAEvBC,KAAD,IAA0D;AACxD,UAAI,KAAKhB,UAAT,EACE,KAAKA,UAAL,CAAgBgB,KAAK,CAACvB,SAAtB,EAAiCuB,KAAK,CAACnB,YAAvC;AACF,WAAKM,cAAL;AACD,KANuB,CAA1B;AASA,SAAKI,eAAL,GAAuBpB,YAAY,CAAC4B,WAAb,CACrB,SADqB,EAEpBC,KAAD,IAAqC;AACnC,UAAI,KAAKf,OAAT,EAAkB,KAAKA,OAAL,CAAa,IAAIzB,KAAJ,CAAUwC,KAAK,CAACgB,YAAhB,CAAb;AAClB,WAAK7B,cAAL;AACD,KALoB,CAAvB;AAQA9B,IAAAA,eAAe,CAAC4D,YAAhB,CAA6B;AAC3BzC,MAAAA,UAAU,EAAE,KAAKA,UADU;AAE3BC,MAAAA,SAAS,EAAE,KAAKA,SAFW;AAG3BC,MAAAA,WAAW,EAAE,KAAKA,WAHS;AAI3BC,MAAAA,SAAS,EAAE,KAAKA,SAJW;AAK3BC,MAAAA,WAAW,EAAE,KAAKA,WALS;AAM3BC,MAAAA,YAAY,EAAE,KAAKA,YANQ;AAO3BC,MAAAA,MAAM,EAAE,KAAKA,MAPc;AAQ3BoC,MAAAA,QAAQ,EAAE,8BAAmB,KAAKhC,cAAL,IAAuB,EAA1C;AARiB,KAA7B;AAUD;;AA1JkB;;;;AA6JrB,MAAMW,cAAN,CAAqB;AAInB;AAOAvB,EAAAA,WAAW,CAACG,SAAD,EAAuB;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAChC,SAAK0C,UAAL,GAAkB1C,SAAlB;AACD;;AAEDI,EAAAA,YAAY,CAACA,YAAD,EAAuC;AACjD,SAAKuC,aAAL,GAAqBvC,YAArB;AAEA,WAAO,IAAP;AACD;;AAEDE,EAAAA,UAAU,CAACsC,QAAD,EAA+C;AACvD,SAAKC,WAAL,GAAmBD,QAAnB;AAEA,WAAO,IAAP;AACD;;AAEDrC,EAAAA,UAAU,CAACqC,QAAD,EAA+C;AACvD,SAAKE,WAAL,GAAmBF,QAAnB;AAEA,WAAO,IAAP;AACD;;AAEDpC,EAAAA,OAAO,CAACoC,QAAD,EAA4C;AACjD,SAAKG,QAAL,GAAgBH,QAAhB;AAEA,WAAO,IAAP;AACD;;AAEDH,EAAAA,QAAQ,CAACO,WAAD,EAAsC;AAC5C,SAAKC,eAAL,GAAuBD,WAAvB;AAEA,WAAO,IAAP;AACD;;AAEDE,EAAAA,KAAK,GAAY;AACf,WAAO,IAAItD,OAAJ,CAAY;AACjBI,MAAAA,SAAS,EAAE,KAAK0C,UADC;AAEjBtC,MAAAA,YAAY,EAAE,KAAKuC,aAFF;AAGjBrC,MAAAA,UAAU,EAAE,KAAKuC,WAHA;AAIjBtC,MAAAA,UAAU,EAAE,KAAKuC,WAJA;AAKjBtC,MAAAA,OAAO,EAAE,KAAKuC,QALG;AAMjBtC,MAAAA,cAAc,EAAE,KAAKwC,eANJ;AAOjB5C,MAAAA,MAAM,EAAE,KAAK8C;AAPI,KAAZ,CAAP;AASD;;AAvDkB;;AA0DrB,MAAMnC,eAAN,CAAsB;AASpB;AAKA;AAGAnB,EAAAA,WAAW,CACTE,UADS,EAETmB,eAFS,EAGT;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACA,QAAInB,UAAU,IAAI,IAAlB,EAAwB;AACtB,WAAKqD,WAAL,GAAmBrD,UAAnB;AACD,KAFD,MAEO,IAAImB,eAAe,IAAI,IAAvB,EAA6B;AAClC,WAAKmC,gBAAL,GAAwBnC,eAAxB;AACD,KAFM,MAEA;AACL,YAAM,IAAIpC,iBAAJ,CACH,uDADG,CAAN;AAGD;;AACD,WAAO,IAAP;AACD;;AAEDmB,EAAAA,WAAW,CAACA,WAAD,EAAuC;AAChD,SAAKqD,UAAL,GAAkB1B,SAAlB;AACA,SAAK2B,YAAL,GAAoBtD,WAApB;AAEA,WAAO,IAAP;AACD;;AAEDC,EAAAA,SAAS,CAACA,SAAD,EAAqC;AAC5C,SAAKqD,YAAL,GAAoB3B,SAApB;AACA,SAAK0B,UAAL,GAAkB9D,aAAa,CAACU,SAAD,CAA/B;AAEA,WAAO,IAAP;AACD;;AAEDC,EAAAA,WAAW,CAACA,WAAD,EAA4C;AACrD,SAAKqD,YAAL,GAAoBrD,WAApB;AAEA,WAAO,IAAP;AACD;;AAEDC,EAAAA,YAAY,CAACA,YAAD,EAAwC;AAClD,SAAKuC,aAAL,GAAqBvC,YAArB;AAEA,WAAO,IAAP;AACD;;AAEDC,EAAAA,MAAM,CAACA,MAAD,EAAkC;AACtC,SAAK8C,OAAL,GAAe9C,MAAf;AAEA,WAAO,IAAP;AACD;;AAEDC,EAAAA,UAAU,CAACsC,QAAD,EAAgD;AACxD,SAAKC,WAAL,GAAmBD,QAAnB;AAEA,WAAO,IAAP;AACD;;AAEDrC,EAAAA,UAAU,CAACqC,QAAD,EAAgD;AACxD,SAAKE,WAAL,GAAmBF,QAAnB;AAEA,WAAO,IAAP;AACD;;AAEDpC,EAAAA,OAAO,CAACoC,QAAD,EAA6C;AAClD,SAAKG,QAAL,GAAgBH,QAAhB;AAEA,WAAO,IAAP;AACD;;AAEDH,EAAAA,QAAQ,CAACO,WAAD,EAAuC;AAC7C,SAAKC,eAAL,GAAuBD,WAAvB;AAEA,WAAO,IAAP;AACD;;AAEDE,EAAAA,KAAK,GAAY;AACf,WAAO,IAAItD,OAAJ,CAAY;AACjBG,MAAAA,UAAU,EAAE,KAAKqD,WADA;AAEjBlC,MAAAA,eAAe,EAAE,KAAKmC,gBAFL;AAGjBnD,MAAAA,SAAS,EAAE,KAAKoD,UAHC;AAIjBrD,MAAAA,WAAW,EAAE,KAAKsD,YAJD;AAKjBpD,MAAAA,WAAW,EAAE,KAAKqD,YALD;AAMjBpD,MAAAA,YAAY,EAAE,KAAKuC,aANF;AAOjBtC,MAAAA,MAAM,EAAE,KAAK8C,OAPI;AAQjB7C,MAAAA,UAAU,EAAE,KAAKuC,WARA;AASjBtC,MAAAA,UAAU,EAAE,KAAKuC,WATA;AAUjBtC,MAAAA,OAAO,EAAE,KAAKuC,QAVG;AAWjBtC,MAAAA,cAAc,EAAE,KAAKwC;AAXJ,KAAZ,CAAP;AAaD;;AAvGmB;AA0GtB;AACA;AACA;;;;;;AAKS,WAAS9B,WAAT,CAAqBnB,SAArB,EAAwC;AAC7C,WAAOJ,OAAO,CAACuB,WAAR,CAAoBnB,SAApB,CAAP;AACD;;;;AAKM,WAASe,YAAT,CAAsBhB,UAAtB,EAA0C;AAC/C,WAAOH,OAAO,CAACmB,YAAR,CAAqBhB,UAArB,CAAP;AACD;;;;AAKM,WAASkB,mBAAT,CAA6BC,eAA7B,EAAsD;AAC3D,WAAOtB,OAAO,CAACqB,mBAAR,CAA4BC,eAA5B,CAAP;AACD;;;GApBOuC,e,KAAAA,e;;eAuBKA,e","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"]}