react-native-persona 1.2.11 → 1.3.0
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 +14 -0
- package/android/README.md +14 -0
- package/android/build.gradle +21 -100
- package/lib/commonjs/index.js +477 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/util.js +36 -0
- package/lib/commonjs/util.js.map +1 -0
- package/lib/commonjs/util.spec.js +31 -0
- package/lib/commonjs/util.spec.js.map +1 -0
- package/lib/module/index.js +452 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/util.js +29 -0
- package/lib/module/util.js.map +1 -0
- package/lib/module/util.spec.js +28 -0
- package/lib/module/util.spec.js.map +1 -0
- package/lib/typescript/persona-tools/Config.d.ts +15 -0
- package/lib/typescript/persona-tools/Theme.d.ts +124 -0
- package/lib/typescript/persona-tools/index.d.ts +1 -0
- package/lib/typescript/persona-tools/lib/AndroidResourcePrinter.d.ts +40 -0
- package/lib/typescript/persona-tools/lib/AndroidResourcePrinter.spec.d.ts +1 -0
- package/lib/typescript/persona-tools/lib/prompts.d.ts +8 -0
- package/lib/typescript/persona-tools/tools/AndroidThemeGenerator.d.ts +5 -0
- package/lib/typescript/persona-tools/tools/IosThemeInstructions.d.ts +5 -0
- package/{generatedTypes → lib/typescript/src}/index.d.ts +67 -3
- package/lib/typescript/src/util.d.ts +3 -0
- package/lib/typescript/src/util.spec.d.ts +1 -0
- package/package.json +78 -20
- package/persona-tools/{config.ts → Config.ts} +7 -7
- package/persona-tools/Theme.ts +140 -138
- package/persona-tools/index.ts +9 -9
- package/persona-tools/lib/AndroidResourcePrinter.spec.ts +100 -101
- package/persona-tools/lib/AndroidResourcePrinter.ts +314 -278
- package/persona-tools/lib/prompts.ts +11 -11
- package/persona-tools/tools/AndroidThemeGenerator.ts +31 -32
- package/persona-tools/tools/IosThemeInstructions.ts +8 -8
- package/src/index.ts +17 -18
- package/src/util.spec.ts +14 -8
- package/src/util.ts +3 -3
- package/jest.config.js +0 -10
- package/persona-tools/Theme.js +0 -213
- package/persona-tools/config.js +0 -72
- package/persona-tools/index.js +0 -30
- package/persona-tools/lib/AndroidResourcePrinter.js +0 -832
- package/persona-tools/lib/AndroidResourcePrinter.spec.js +0 -1135
- package/persona-tools/lib/prompts.js +0 -39
- package/persona-tools/tools/AndroidThemeGenerator.js +0 -59
- package/persona-tools/tools/IosThemeInstructions.js +0 -34
- package/src/index.js +0 -307
- package/src/util.js +0 -29
- package/src/util.spec.js +0 -15
- package/tsconfig.json +0 -29
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["PersonaInquiry","NativeModules","InvalidTemplateId","Error","InvalidInquiryId","InvalidAccountId","makeInquiryId","candidate","startsWith","makeTemplateId","makeAccountId","Builder","name","_name","address","_address","birthdate","date","_birthdate","emailAddress","email","_emailAddress","phoneNumber","_phoneNumber","field","fieldKey","value","_fields","build","toISOString","additionalFields","builder","Fields","Environment","eventEmitter","NativeEventEmitter","Inquiry","constructor","options","templateId","inquiryId","referenceId","accountId","environment","accessToken","fields","onSuccess","onCancelled","onFailed","onError","iosThemeObject","clearListeners","onSuccessListener","remove","onCancelledListener","onFailedListener","onErrorListener","start","addListener","attributes","Date","error","errorMessage","startInquiry","iosTheme","InquiryBuilder","_inquiryId","_accessToken","callback","_onSuccess","_onCancelled","_onFailed","_onError","themeObject","_iosThemeObject","TemplateBuilder","_templateId","_accountId","undefined","_referenceId","_environment","fromInquiry","fromTemplate","InquiryBuilders"],"mappings":"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","sourcesContent":["import {\n NativeModules,\n NativeEventEmitter,\n EventSubscription,\n} from 'react-native';\nimport { processThemeValues } from './util';\n\nconst { PersonaInquiry } = 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 InquiryId = Opaque<string, 'InquiryId'>;\ntype AccountId = Opaque<string, 'AccountId'>;\n\nexport class InvalidTemplateId extends Error {}\nexport class InvalidInquiryId extends Error {}\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('tmpl_') || candidate.startsWith('blu_')) {\n return candidate as TemplateId;\n }\n\n throw new InvalidTemplateId(\n `Valid template IDs start with \"tmpl_\". 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}\nexport namespace Fields {\n class Builder {\n private _name?: NameField | null = null;\n private _address?: AddressField | null = null;\n private _birthdate?: Date | null = null;\n private _emailAddress?: string | null = null;\n private _phoneNumber?: string | null = null;\n private _fields: { [fieldKey: string]: number | string | boolean } = {};\n\n name(name: NameField) {\n this._name = name;\n\n return this;\n }\n\n /**\n * Returns the Field.Builder instance\n *\n * @param address - The address object\n */\n address(address: AddressField) {\n this._address = address;\n\n return this;\n }\n\n /**\n * @param date {Date}\n */\n birthdate(date: Date) {\n this._birthdate = date;\n\n return this;\n }\n\n /**\n * @param date {string}\n */\n emailAddress(email: string) {\n this._emailAddress = email;\n\n return this;\n }\n\n phoneNumber(phoneNumber: string) {\n this._phoneNumber = phoneNumber;\n\n return this;\n }\n\n field(fieldKey: string, value: number | string | boolean) {\n this._fields = {\n ...this._fields,\n [fieldKey]: value,\n };\n\n return this;\n }\n\n build(): FieldsPayload {\n return {\n name: this._name,\n address: this._address,\n emailAddress: this._emailAddress,\n phoneNumber: this._phoneNumber,\n birthdate: this._birthdate?.toISOString(),\n additionalFields: this._fields,\n };\n }\n }\n\n export function builder() {\n return new Builder();\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 inquiryId?: InquiryId;\n referenceId?: string;\n accountId?: AccountId;\n environment?: Environment;\n accessToken?: string;\n\n // Fields\n fields?: FieldsPayload;\n\n // Callbacks\n onSuccess?: OnSuccessCallback;\n onCancelled?: OnCancelledCallback;\n onFailed?: OnFailedCallback;\n onError?: OnErrorCallback;\n\n // Customization\n iosThemeObject?: Object | null;\n}\nexport interface InquiryAttributes {\n birthdate: Date | null;\n name: {\n first: string | null;\n middle: string | null;\n last: string | null;\n } | null;\n address: {\n street1: string | null;\n street2: string | null;\n city: string | null;\n subdivision: string | null;\n subdivisionAbbr: string | null;\n postalCode: string | null;\n countryCode: string | null;\n } | null;\n}\n\nexport interface BridgeInquiryAttributes {\n birthdate: string | null;\n name: {\n first: string | null;\n middle: string | null;\n last: string | null;\n } | null;\n address: {\n street1: string | null;\n street2: string | null;\n city: string | null;\n subdivision: string | null;\n subdivisionAbbr: string | null;\n postalCode: string | null;\n countryCode: string | null;\n } | null;\n}\n\ninterface BridgeOnSuccessCallbackParams {\n inquiryId: string;\n attributes: InquiryAttributes;\n}\n\ninterface BridgeOnFailedCallbackParams {\n inquiryId: string;\n}\n\ninterface BridgeOnErrorCallbackParams {\n error: string;\n}\n\ntype OnSuccessCallback = (\n inquiryId: string,\n attributes: InquiryAttributes\n) => void;\ntype OnCancelledCallback = () => void;\ntype OnFailedCallback = (inquiryId: string) => void;\ntype OnErrorCallback = (error: Error) => void;\n\nconst eventEmitter = new NativeEventEmitter(PersonaInquiry);\n\nexport class Inquiry {\n templateId?: TemplateId;\n inquiryId?: InquiryId;\n referenceId?: string;\n accountId?: AccountId;\n environment?: Environment;\n accessToken?: string;\n\n iosThemeObject?: Object | null;\n fields?: FieldsPayload | null;\n\n private onSuccess?: OnSuccessCallback;\n private onCancelled?: OnCancelledCallback;\n private onFailed?: OnFailedCallback;\n private onError?: OnErrorCallback;\n\n private onSuccessListener?: EventSubscription;\n private onCancelledListener?: EventSubscription;\n private onFailedListener?: 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.accessToken = options.accessToken;\n this.fields = options.fields;\n\n // Callbacks\n this.onSuccess = options.onSuccess;\n this.onCancelled = options.onCancelled;\n this.onFailed = options.onFailed;\n this.onError = options.onError;\n\n // Theme object\n this.iosThemeObject = options.iosThemeObject;\n }\n\n private clearListeners() {\n if (this.onSuccessListener) this.onSuccessListener.remove();\n if (this.onCancelledListener) this.onCancelledListener.remove();\n if (this.onFailedListener) this.onFailedListener.remove();\n if (this.onErrorListener) this.onErrorListener.remove();\n }\n\n start() {\n this.onSuccessListener = eventEmitter.addListener(\n 'onSuccess',\n ({\n inquiryId: inquiryId,\n attributes: attributes,\n }: BridgeOnSuccessCallbackParams) => {\n // Native Brige sends an ISO 8601 Date. Convert this to a JS Date\n if (typeof attributes.birthdate === 'string') {\n attributes.birthdate = new Date(attributes.birthdate);\n }\n if (this.onSuccess) this.onSuccess(inquiryId, attributes);\n this.clearListeners();\n }\n );\n\n this.onCancelledListener = eventEmitter.addListener('onCancelled', () => {\n if (this.onCancelled) this.onCancelled();\n this.clearListeners();\n });\n\n this.onFailedListener = eventEmitter.addListener(\n 'onFailed',\n ({ inquiryId: inquiryId }: BridgeOnFailedCallbackParams) => {\n if (this.onFailed) this.onFailed(inquiryId);\n this.clearListeners();\n }\n );\n\n this.onErrorListener = eventEmitter.addListener(\n 'onError',\n ({ error: errorMessage }: BridgeOnErrorCallbackParams) => {\n if (this.onError) this.onError(new Error(errorMessage));\n this.clearListeners();\n }\n );\n\n PersonaInquiry.startInquiry({\n templateId: this.templateId,\n inquiryId: this.inquiryId,\n referenceId: this.referenceId,\n accountId: this.accountId,\n environment: this.environment,\n accessToken: this.accessToken,\n fields: this.fields,\n iosTheme: processThemeValues(this.iosThemeObject || {}),\n });\n }\n}\n\ninterface NameField {\n first?: string;\n middle?: string;\n last?: string;\n}\n\ninterface AddressField {\n street1?: string;\n street2?: string;\n city?: string;\n subdivision?: string;\n postalCode?: string;\n countryCode?: string;\n}\n\ninterface FieldsPayload {\n name?: NameField | null;\n address?: AddressField | null;\n birthdate?: string | null;\n emailAddress?: string | null;\n phoneNumber?: string | null;\n additionalFields?: Object | null;\n}\n\nclass InquiryBuilder {\n private _inquiryId: InquiryId;\n private _accessToken?: string;\n\n // Callbacks\n private _onSuccess?: OnSuccessCallback;\n private _onCancelled?: OnCancelledCallback;\n private _onFailed?: OnFailedCallback;\n private _onError?: OnErrorCallback;\n private _iosThemeObject?: Object;\n private _fields?: FieldsPayload;\n\n constructor(inquiryId: InquiryId) {\n this._inquiryId = inquiryId;\n }\n\n accessToken(accessToken: string): InquiryBuilder {\n this._accessToken = accessToken;\n\n return this;\n }\n\n onSuccess(callback: OnSuccessCallback): InquiryBuilder {\n this._onSuccess = callback;\n\n return this;\n }\n\n onCancelled(callback: OnCancelledCallback): InquiryBuilder {\n this._onCancelled = callback;\n\n return this;\n }\n\n onFailed(callback: OnFailedCallback): InquiryBuilder {\n this._onFailed = 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 accessToken: this._accessToken,\n onSuccess: this._onSuccess,\n onCancelled: this._onCancelled,\n onFailed: this._onFailed,\n onError: this._onError,\n iosThemeObject: this._iosThemeObject,\n fields: this._fields,\n });\n }\n}\n\nclass TemplateBuilder {\n private _templateId: TemplateId;\n private _accountId?: AccountId;\n private _referenceId?: string;\n private _environment?: Environment;\n private _fields?: FieldsPayload;\n private _accessToken?: string;\n\n // Callbacks\n private _onSuccess?: OnSuccessCallback;\n private _onCancelled?: OnCancelledCallback;\n private _onFailed?: OnFailedCallback;\n private _onError?: OnErrorCallback;\n\n // Customization\n private _iosThemeObject?: Object;\n\n constructor(templateId: TemplateId) {\n this._templateId = templateId;\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 accessToken(accessToken: string): TemplateBuilder {\n this._accessToken = accessToken;\n\n return this;\n }\n\n fields(fields: FieldsPayload): TemplateBuilder {\n this._fields = fields;\n\n return this;\n }\n\n onSuccess(callback: OnSuccessCallback): TemplateBuilder {\n this._onSuccess = callback;\n\n return this;\n }\n\n onCancelled(callback: OnCancelledCallback): TemplateBuilder {\n this._onCancelled = callback;\n\n return this;\n }\n\n onFailed(callback: OnFailedCallback): TemplateBuilder {\n this._onFailed = 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 accountId: this._accountId,\n referenceId: this._referenceId,\n environment: this._environment,\n accessToken: this._accessToken,\n fields: this._fields,\n onSuccess: this._onSuccess,\n onCancelled: this._onCancelled,\n onFailed: this._onFailed,\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));\n }\n}\n\nexport default InquiryBuilders;\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.processThemeValues = processThemeValues;
|
|
7
|
+
const HEX_REGEX = /^[a-fA-F0-9]{6}$/;
|
|
8
|
+
|
|
9
|
+
function processThemeValues(themeObject) {
|
|
10
|
+
const result = {};
|
|
11
|
+
|
|
12
|
+
for (const [key, value] of Object.entries(themeObject)) {
|
|
13
|
+
if (value === null) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (key.includes('Color')) {
|
|
18
|
+
let colorValue = value;
|
|
19
|
+
|
|
20
|
+
if (value[0] === '#') {
|
|
21
|
+
colorValue = value.slice(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (HEX_REGEX.test(colorValue)) {
|
|
25
|
+
result[key] = `#${colorValue}`;
|
|
26
|
+
} else {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
result[key] = value.toString();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["util.ts"],"names":["HEX_REGEX","processThemeValues","themeObject","result","key","value","Object","entries","includes","colorValue","slice","test","toString"],"mappings":";;;;;;AAAA,MAAMA,SAAS,GAAG,kBAAlB;;AACO,SAASC,kBAAT,CAA4BC,WAA5B,EAAiD;AACtD,QAAMC,MAAiC,GAAG,EAA1C;;AACA,OAAK,MAAM,CAACC,GAAD,EAAMC,KAAN,CAAX,IAA2BC,MAAM,CAACC,OAAP,CAAeL,WAAf,CAA3B,EAAwD;AACtD,QAAIG,KAAK,KAAK,IAAd,EAAoB;AAClB;AACD;;AAED,QAAID,GAAG,CAACI,QAAJ,CAAa,OAAb,CAAJ,EAA2B;AACzB,UAAIC,UAAU,GAAGJ,KAAjB;;AACA,UAAIA,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;AACpBI,QAAAA,UAAU,GAAGJ,KAAK,CAACK,KAAN,CAAY,CAAZ,CAAb;AACD;;AAED,UAAIV,SAAS,CAACW,IAAV,CAAeF,UAAf,CAAJ,EAAgC;AAC9BN,QAAAA,MAAM,CAACC,GAAD,CAAN,GAAe,IAAGK,UAAW,EAA7B;AACD,OAFD,MAEO;AACL;AACD;AACF,KAXD,MAWO;AACLN,MAAAA,MAAM,CAACC,GAAD,CAAN,GAAcC,KAAK,CAACO,QAAN,EAAd;AACD;AACF;;AAED,SAAOT,MAAP;AACD","sourcesContent":["const HEX_REGEX = /^[a-fA-F0-9]{6}$/;\nexport function processThemeValues(themeObject: Object) {\n const result: { [key: string]: string } = {};\n for (const [key, value] of Object.entries(themeObject)) {\n if (value === null) {\n continue;\n }\n\n if (key.includes('Color')) {\n let colorValue = value;\n if (value[0] === '#') {\n colorValue = value.slice(1);\n }\n\n if (HEX_REGEX.test(colorValue)) {\n result[key] = `#${colorValue}`;\n } else {\n continue;\n }\n } else {\n result[key] = value.toString();\n }\n }\n\n return result;\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _util = require("./util");
|
|
4
|
+
|
|
5
|
+
describe('processThemeValues', () => {
|
|
6
|
+
it('works', () => {
|
|
7
|
+
expect((0, _util.processThemeValues)({
|
|
8
|
+
testColorA: '#FFFFFF',
|
|
9
|
+
testColorB: '#zzzzzz'
|
|
10
|
+
})).toEqual({
|
|
11
|
+
testColorA: '#FFFFFF'
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
it('filters out non 6 character codes', () => {
|
|
15
|
+
expect((0, _util.processThemeValues)({
|
|
16
|
+
testColorA: '#FFFFFF',
|
|
17
|
+
testColorB: '#FFF'
|
|
18
|
+
})).toEqual({
|
|
19
|
+
testColorA: '#FFFFFF'
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
it('does not do anything with non colors', () => {
|
|
23
|
+
// Values are expected to be strings on the iOS side of the bridge.
|
|
24
|
+
expect((0, _util.processThemeValues)({
|
|
25
|
+
buttonCornerRadius: '20'
|
|
26
|
+
})).toEqual({
|
|
27
|
+
buttonCornerRadius: '20'
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=util.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["util.spec.ts"],"names":["describe","it","expect","testColorA","testColorB","toEqual","buttonCornerRadius"],"mappings":";;AAAA;;AAEAA,QAAQ,CAAC,oBAAD,EAAuB,MAAM;AACnCC,EAAAA,EAAE,CAAC,OAAD,EAAU,MAAM;AAChBC,IAAAA,MAAM,CACJ,8BAAmB;AAAEC,MAAAA,UAAU,EAAE,SAAd;AAAyBC,MAAAA,UAAU,EAAE;AAArC,KAAnB,CADI,CAAN,CAEEC,OAFF,CAEU;AAAEF,MAAAA,UAAU,EAAE;AAAd,KAFV;AAGD,GAJC,CAAF;AAMAF,EAAAA,EAAE,CAAC,mCAAD,EAAsC,MAAM;AAC5CC,IAAAA,MAAM,CACJ,8BAAmB;AAAEC,MAAAA,UAAU,EAAE,SAAd;AAAyBC,MAAAA,UAAU,EAAE;AAArC,KAAnB,CADI,CAAN,CAEEC,OAFF,CAEU;AAAEF,MAAAA,UAAU,EAAE;AAAd,KAFV;AAGD,GAJC,CAAF;AAMAF,EAAAA,EAAE,CAAC,sCAAD,EAAyC,MAAM;AAC/C;AACAC,IAAAA,MAAM,CAAC,8BAAmB;AAAEI,MAAAA,kBAAkB,EAAE;AAAtB,KAAnB,CAAD,CAAN,CAAyDD,OAAzD,CAAiE;AAC/DC,MAAAA,kBAAkB,EAAE;AAD2C,KAAjE;AAGD,GALC,CAAF;AAMD,CAnBO,CAAR","sourcesContent":["import { processThemeValues } from './util';\n\ndescribe('processThemeValues', () => {\n it('works', () => {\n expect(\n processThemeValues({ testColorA: '#FFFFFF', testColorB: '#zzzzzz' })\n ).toEqual({ testColorA: '#FFFFFF' });\n });\n\n it('filters out non 6 character codes', () => {\n expect(\n processThemeValues({ testColorA: '#FFFFFF', testColorB: '#FFF' })\n ).toEqual({ testColorA: '#FFFFFF' });\n });\n\n it('does not do anything with non colors', () => {\n // Values are expected to be strings on the iOS side of the bridge.\n expect(processThemeValues({ buttonCornerRadius: '20' })).toEqual({\n buttonCornerRadius: '20',\n });\n });\n});\n"]}
|
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
|
|
3
|
+
import { NativeModules, NativeEventEmitter } from 'react-native';
|
|
4
|
+
import { processThemeValues } from './util';
|
|
5
|
+
const {
|
|
6
|
+
PersonaInquiry
|
|
7
|
+
} = NativeModules; // Using Opaque types + Smart Constructor enforces validation at
|
|
8
|
+
// instantiation time for IDS
|
|
9
|
+
|
|
10
|
+
export class InvalidTemplateId extends Error {}
|
|
11
|
+
export class InvalidInquiryId extends Error {}
|
|
12
|
+
export class InvalidAccountId extends Error {}
|
|
13
|
+
/**
|
|
14
|
+
* Run validations that the string is in proper Inquiry token format
|
|
15
|
+
* and do a type conversion to InquiryId.
|
|
16
|
+
*
|
|
17
|
+
* @param candidate
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
function makeInquiryId(candidate) {
|
|
21
|
+
if (candidate.startsWith('inq_')) return candidate;
|
|
22
|
+
throw new InvalidInquiryId(`Valid template IDs start with "inq_". Received: ${candidate} `);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Run validations that the string is in proper Template token format
|
|
26
|
+
* and do a type conversion to TemplateId.
|
|
27
|
+
*
|
|
28
|
+
* @param candidate
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
function makeTemplateId(candidate) {
|
|
33
|
+
if (candidate.startsWith('tmpl_') || candidate.startsWith('blu_')) {
|
|
34
|
+
return candidate;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
throw new InvalidTemplateId(`Valid template IDs start with "tmpl_". Received: ${candidate} `);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Run validations that the string is in proper Template token format
|
|
41
|
+
* and do a type conversion to AccountId.
|
|
42
|
+
*
|
|
43
|
+
* @param candidate
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
function makeAccountId(candidate) {
|
|
48
|
+
if (candidate.startsWith('act_')) {
|
|
49
|
+
return candidate;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
throw new InvalidAccountId(`Valid account IDs start with "act_". Received: ${candidate} `);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export let Fields;
|
|
56
|
+
/**
|
|
57
|
+
* String enum for environments. These strings will be parsed
|
|
58
|
+
* on the native side bridge into Kotlin / Swift enums.
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
(function (_Fields) {
|
|
62
|
+
class Builder {
|
|
63
|
+
constructor() {
|
|
64
|
+
_defineProperty(this, "_name", null);
|
|
65
|
+
|
|
66
|
+
_defineProperty(this, "_address", null);
|
|
67
|
+
|
|
68
|
+
_defineProperty(this, "_birthdate", null);
|
|
69
|
+
|
|
70
|
+
_defineProperty(this, "_emailAddress", null);
|
|
71
|
+
|
|
72
|
+
_defineProperty(this, "_phoneNumber", null);
|
|
73
|
+
|
|
74
|
+
_defineProperty(this, "_fields", {});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
name(name) {
|
|
78
|
+
this._name = name;
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Returns the Field.Builder instance
|
|
83
|
+
*
|
|
84
|
+
* @param address - The address object
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Returns the Field.Builder instance
|
|
90
|
+
*
|
|
91
|
+
* @param address - The address object
|
|
92
|
+
*/
|
|
93
|
+
address(address) {
|
|
94
|
+
this._address = address;
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* @param date {Date}
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @param date {Date}
|
|
104
|
+
*/
|
|
105
|
+
birthdate(date) {
|
|
106
|
+
this._birthdate = date;
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* @param date {string}
|
|
111
|
+
*/
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @param date {string}
|
|
116
|
+
*/
|
|
117
|
+
emailAddress(email) {
|
|
118
|
+
this._emailAddress = email;
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
phoneNumber(phoneNumber) {
|
|
123
|
+
this._phoneNumber = phoneNumber;
|
|
124
|
+
return this;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
field(fieldKey, value) {
|
|
128
|
+
this._fields = { ...this._fields,
|
|
129
|
+
[fieldKey]: value
|
|
130
|
+
};
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
build() {
|
|
135
|
+
var _this$_birthdate;
|
|
136
|
+
|
|
137
|
+
return {
|
|
138
|
+
name: this._name,
|
|
139
|
+
address: this._address,
|
|
140
|
+
emailAddress: this._emailAddress,
|
|
141
|
+
phoneNumber: this._phoneNumber,
|
|
142
|
+
birthdate: (_this$_birthdate = this._birthdate) === null || _this$_birthdate === void 0 ? void 0 : _this$_birthdate.toISOString(),
|
|
143
|
+
additionalFields: this._fields
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function builder() {
|
|
150
|
+
return new Builder();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
_Fields.builder = builder;
|
|
154
|
+
})(Fields || (Fields = {}));
|
|
155
|
+
|
|
156
|
+
export let Environment;
|
|
157
|
+
|
|
158
|
+
(function (Environment) {
|
|
159
|
+
Environment["SANDBOX"] = "sandbox";
|
|
160
|
+
Environment["PRODUCTION"] = "production";
|
|
161
|
+
})(Environment || (Environment = {}));
|
|
162
|
+
|
|
163
|
+
const eventEmitter = new NativeEventEmitter(PersonaInquiry);
|
|
164
|
+
export class Inquiry {
|
|
165
|
+
constructor(options) {
|
|
166
|
+
_defineProperty(this, "templateId", void 0);
|
|
167
|
+
|
|
168
|
+
_defineProperty(this, "inquiryId", void 0);
|
|
169
|
+
|
|
170
|
+
_defineProperty(this, "referenceId", void 0);
|
|
171
|
+
|
|
172
|
+
_defineProperty(this, "accountId", void 0);
|
|
173
|
+
|
|
174
|
+
_defineProperty(this, "environment", void 0);
|
|
175
|
+
|
|
176
|
+
_defineProperty(this, "accessToken", void 0);
|
|
177
|
+
|
|
178
|
+
_defineProperty(this, "iosThemeObject", void 0);
|
|
179
|
+
|
|
180
|
+
_defineProperty(this, "fields", void 0);
|
|
181
|
+
|
|
182
|
+
_defineProperty(this, "onSuccess", void 0);
|
|
183
|
+
|
|
184
|
+
_defineProperty(this, "onCancelled", void 0);
|
|
185
|
+
|
|
186
|
+
_defineProperty(this, "onFailed", void 0);
|
|
187
|
+
|
|
188
|
+
_defineProperty(this, "onError", void 0);
|
|
189
|
+
|
|
190
|
+
_defineProperty(this, "onSuccessListener", void 0);
|
|
191
|
+
|
|
192
|
+
_defineProperty(this, "onCancelledListener", void 0);
|
|
193
|
+
|
|
194
|
+
_defineProperty(this, "onFailedListener", void 0);
|
|
195
|
+
|
|
196
|
+
_defineProperty(this, "onErrorListener", void 0);
|
|
197
|
+
|
|
198
|
+
this.templateId = options.templateId;
|
|
199
|
+
this.inquiryId = options.inquiryId;
|
|
200
|
+
this.referenceId = options.referenceId;
|
|
201
|
+
this.accountId = options.accountId;
|
|
202
|
+
this.environment = options.environment;
|
|
203
|
+
this.accessToken = options.accessToken;
|
|
204
|
+
this.fields = options.fields; // Callbacks
|
|
205
|
+
|
|
206
|
+
this.onSuccess = options.onSuccess;
|
|
207
|
+
this.onCancelled = options.onCancelled;
|
|
208
|
+
this.onFailed = options.onFailed;
|
|
209
|
+
this.onError = options.onError; // Theme object
|
|
210
|
+
|
|
211
|
+
this.iosThemeObject = options.iosThemeObject;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
clearListeners() {
|
|
215
|
+
if (this.onSuccessListener) this.onSuccessListener.remove();
|
|
216
|
+
if (this.onCancelledListener) this.onCancelledListener.remove();
|
|
217
|
+
if (this.onFailedListener) this.onFailedListener.remove();
|
|
218
|
+
if (this.onErrorListener) this.onErrorListener.remove();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
start() {
|
|
222
|
+
this.onSuccessListener = eventEmitter.addListener('onSuccess', _ref => {
|
|
223
|
+
let {
|
|
224
|
+
inquiryId: inquiryId,
|
|
225
|
+
attributes: attributes
|
|
226
|
+
} = _ref;
|
|
227
|
+
|
|
228
|
+
// Native Brige sends an ISO 8601 Date. Convert this to a JS Date
|
|
229
|
+
if (typeof attributes.birthdate === 'string') {
|
|
230
|
+
attributes.birthdate = new Date(attributes.birthdate);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
if (this.onSuccess) this.onSuccess(inquiryId, attributes);
|
|
234
|
+
this.clearListeners();
|
|
235
|
+
});
|
|
236
|
+
this.onCancelledListener = eventEmitter.addListener('onCancelled', () => {
|
|
237
|
+
if (this.onCancelled) this.onCancelled();
|
|
238
|
+
this.clearListeners();
|
|
239
|
+
});
|
|
240
|
+
this.onFailedListener = eventEmitter.addListener('onFailed', _ref2 => {
|
|
241
|
+
let {
|
|
242
|
+
inquiryId: inquiryId
|
|
243
|
+
} = _ref2;
|
|
244
|
+
if (this.onFailed) this.onFailed(inquiryId);
|
|
245
|
+
this.clearListeners();
|
|
246
|
+
});
|
|
247
|
+
this.onErrorListener = eventEmitter.addListener('onError', _ref3 => {
|
|
248
|
+
let {
|
|
249
|
+
error: errorMessage
|
|
250
|
+
} = _ref3;
|
|
251
|
+
if (this.onError) this.onError(new Error(errorMessage));
|
|
252
|
+
this.clearListeners();
|
|
253
|
+
});
|
|
254
|
+
PersonaInquiry.startInquiry({
|
|
255
|
+
templateId: this.templateId,
|
|
256
|
+
inquiryId: this.inquiryId,
|
|
257
|
+
referenceId: this.referenceId,
|
|
258
|
+
accountId: this.accountId,
|
|
259
|
+
environment: this.environment,
|
|
260
|
+
accessToken: this.accessToken,
|
|
261
|
+
fields: this.fields,
|
|
262
|
+
iosTheme: processThemeValues(this.iosThemeObject || {})
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
class InquiryBuilder {
|
|
269
|
+
// Callbacks
|
|
270
|
+
constructor(inquiryId) {
|
|
271
|
+
_defineProperty(this, "_inquiryId", void 0);
|
|
272
|
+
|
|
273
|
+
_defineProperty(this, "_accessToken", void 0);
|
|
274
|
+
|
|
275
|
+
_defineProperty(this, "_onSuccess", void 0);
|
|
276
|
+
|
|
277
|
+
_defineProperty(this, "_onCancelled", void 0);
|
|
278
|
+
|
|
279
|
+
_defineProperty(this, "_onFailed", void 0);
|
|
280
|
+
|
|
281
|
+
_defineProperty(this, "_onError", void 0);
|
|
282
|
+
|
|
283
|
+
_defineProperty(this, "_iosThemeObject", void 0);
|
|
284
|
+
|
|
285
|
+
_defineProperty(this, "_fields", void 0);
|
|
286
|
+
|
|
287
|
+
this._inquiryId = inquiryId;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
accessToken(accessToken) {
|
|
291
|
+
this._accessToken = accessToken;
|
|
292
|
+
return this;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
onSuccess(callback) {
|
|
296
|
+
this._onSuccess = callback;
|
|
297
|
+
return this;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
onCancelled(callback) {
|
|
301
|
+
this._onCancelled = callback;
|
|
302
|
+
return this;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
onFailed(callback) {
|
|
306
|
+
this._onFailed = callback;
|
|
307
|
+
return this;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
onError(callback) {
|
|
311
|
+
this._onError = callback;
|
|
312
|
+
return this;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
iosTheme(themeObject) {
|
|
316
|
+
this._iosThemeObject = themeObject;
|
|
317
|
+
return this;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
build() {
|
|
321
|
+
return new Inquiry({
|
|
322
|
+
inquiryId: this._inquiryId,
|
|
323
|
+
accessToken: this._accessToken,
|
|
324
|
+
onSuccess: this._onSuccess,
|
|
325
|
+
onCancelled: this._onCancelled,
|
|
326
|
+
onFailed: this._onFailed,
|
|
327
|
+
onError: this._onError,
|
|
328
|
+
iosThemeObject: this._iosThemeObject,
|
|
329
|
+
fields: this._fields
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
class TemplateBuilder {
|
|
336
|
+
// Callbacks
|
|
337
|
+
// Customization
|
|
338
|
+
constructor(templateId) {
|
|
339
|
+
_defineProperty(this, "_templateId", void 0);
|
|
340
|
+
|
|
341
|
+
_defineProperty(this, "_accountId", void 0);
|
|
342
|
+
|
|
343
|
+
_defineProperty(this, "_referenceId", void 0);
|
|
344
|
+
|
|
345
|
+
_defineProperty(this, "_environment", void 0);
|
|
346
|
+
|
|
347
|
+
_defineProperty(this, "_fields", void 0);
|
|
348
|
+
|
|
349
|
+
_defineProperty(this, "_accessToken", void 0);
|
|
350
|
+
|
|
351
|
+
_defineProperty(this, "_onSuccess", void 0);
|
|
352
|
+
|
|
353
|
+
_defineProperty(this, "_onCancelled", void 0);
|
|
354
|
+
|
|
355
|
+
_defineProperty(this, "_onFailed", void 0);
|
|
356
|
+
|
|
357
|
+
_defineProperty(this, "_onError", void 0);
|
|
358
|
+
|
|
359
|
+
_defineProperty(this, "_iosThemeObject", void 0);
|
|
360
|
+
|
|
361
|
+
this._templateId = templateId;
|
|
362
|
+
return this;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
referenceId(referenceId) {
|
|
366
|
+
this._accountId = undefined;
|
|
367
|
+
this._referenceId = referenceId;
|
|
368
|
+
return this;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
accountId(accountId) {
|
|
372
|
+
this._referenceId = undefined;
|
|
373
|
+
this._accountId = makeAccountId(accountId);
|
|
374
|
+
return this;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
environment(environment) {
|
|
378
|
+
this._environment = environment;
|
|
379
|
+
return this;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
accessToken(accessToken) {
|
|
383
|
+
this._accessToken = accessToken;
|
|
384
|
+
return this;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
fields(fields) {
|
|
388
|
+
this._fields = fields;
|
|
389
|
+
return this;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
onSuccess(callback) {
|
|
393
|
+
this._onSuccess = callback;
|
|
394
|
+
return this;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
onCancelled(callback) {
|
|
398
|
+
this._onCancelled = callback;
|
|
399
|
+
return this;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
onFailed(callback) {
|
|
403
|
+
this._onFailed = callback;
|
|
404
|
+
return this;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
onError(callback) {
|
|
408
|
+
this._onError = callback;
|
|
409
|
+
return this;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
iosTheme(themeObject) {
|
|
413
|
+
this._iosThemeObject = themeObject;
|
|
414
|
+
return this;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
build() {
|
|
418
|
+
return new Inquiry({
|
|
419
|
+
templateId: this._templateId,
|
|
420
|
+
accountId: this._accountId,
|
|
421
|
+
referenceId: this._referenceId,
|
|
422
|
+
environment: this._environment,
|
|
423
|
+
accessToken: this._accessToken,
|
|
424
|
+
fields: this._fields,
|
|
425
|
+
onSuccess: this._onSuccess,
|
|
426
|
+
onCancelled: this._onCancelled,
|
|
427
|
+
onFailed: this._onFailed,
|
|
428
|
+
onError: this._onError,
|
|
429
|
+
iosThemeObject: this._iosThemeObject
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
let InquiryBuilders;
|
|
436
|
+
|
|
437
|
+
(function (_InquiryBuilders) {
|
|
438
|
+
function fromInquiry(inquiryId) {
|
|
439
|
+
return new InquiryBuilder(makeInquiryId(inquiryId));
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
_InquiryBuilders.fromInquiry = fromInquiry;
|
|
443
|
+
|
|
444
|
+
function fromTemplate(templateId) {
|
|
445
|
+
return new TemplateBuilder(makeTemplateId(templateId));
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
_InquiryBuilders.fromTemplate = fromTemplate;
|
|
449
|
+
})(InquiryBuilders || (InquiryBuilders = {}));
|
|
450
|
+
|
|
451
|
+
export default InquiryBuilders;
|
|
452
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["NativeModules","NativeEventEmitter","processThemeValues","PersonaInquiry","InvalidTemplateId","Error","InvalidInquiryId","InvalidAccountId","makeInquiryId","candidate","startsWith","makeTemplateId","makeAccountId","Builder","name","_name","address","_address","birthdate","date","_birthdate","emailAddress","email","_emailAddress","phoneNumber","_phoneNumber","field","fieldKey","value","_fields","build","toISOString","additionalFields","builder","Fields","Environment","eventEmitter","Inquiry","constructor","options","templateId","inquiryId","referenceId","accountId","environment","accessToken","fields","onSuccess","onCancelled","onFailed","onError","iosThemeObject","clearListeners","onSuccessListener","remove","onCancelledListener","onFailedListener","onErrorListener","start","addListener","attributes","Date","error","errorMessage","startInquiry","iosTheme","InquiryBuilder","_inquiryId","_accessToken","callback","_onSuccess","_onCancelled","_onFailed","_onError","themeObject","_iosThemeObject","TemplateBuilder","_templateId","_accountId","undefined","_referenceId","_environment","fromInquiry","fromTemplate","InquiryBuilders"],"mappings":"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","sourcesContent":["import {\n NativeModules,\n NativeEventEmitter,\n EventSubscription,\n} from 'react-native';\nimport { processThemeValues } from './util';\n\nconst { PersonaInquiry } = 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 InquiryId = Opaque<string, 'InquiryId'>;\ntype AccountId = Opaque<string, 'AccountId'>;\n\nexport class InvalidTemplateId extends Error {}\nexport class InvalidInquiryId extends Error {}\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('tmpl_') || candidate.startsWith('blu_')) {\n return candidate as TemplateId;\n }\n\n throw new InvalidTemplateId(\n `Valid template IDs start with \"tmpl_\". 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}\nexport namespace Fields {\n class Builder {\n private _name?: NameField | null = null;\n private _address?: AddressField | null = null;\n private _birthdate?: Date | null = null;\n private _emailAddress?: string | null = null;\n private _phoneNumber?: string | null = null;\n private _fields: { [fieldKey: string]: number | string | boolean } = {};\n\n name(name: NameField) {\n this._name = name;\n\n return this;\n }\n\n /**\n * Returns the Field.Builder instance\n *\n * @param address - The address object\n */\n address(address: AddressField) {\n this._address = address;\n\n return this;\n }\n\n /**\n * @param date {Date}\n */\n birthdate(date: Date) {\n this._birthdate = date;\n\n return this;\n }\n\n /**\n * @param date {string}\n */\n emailAddress(email: string) {\n this._emailAddress = email;\n\n return this;\n }\n\n phoneNumber(phoneNumber: string) {\n this._phoneNumber = phoneNumber;\n\n return this;\n }\n\n field(fieldKey: string, value: number | string | boolean) {\n this._fields = {\n ...this._fields,\n [fieldKey]: value,\n };\n\n return this;\n }\n\n build(): FieldsPayload {\n return {\n name: this._name,\n address: this._address,\n emailAddress: this._emailAddress,\n phoneNumber: this._phoneNumber,\n birthdate: this._birthdate?.toISOString(),\n additionalFields: this._fields,\n };\n }\n }\n\n export function builder() {\n return new Builder();\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 inquiryId?: InquiryId;\n referenceId?: string;\n accountId?: AccountId;\n environment?: Environment;\n accessToken?: string;\n\n // Fields\n fields?: FieldsPayload;\n\n // Callbacks\n onSuccess?: OnSuccessCallback;\n onCancelled?: OnCancelledCallback;\n onFailed?: OnFailedCallback;\n onError?: OnErrorCallback;\n\n // Customization\n iosThemeObject?: Object | null;\n}\nexport interface InquiryAttributes {\n birthdate: Date | null;\n name: {\n first: string | null;\n middle: string | null;\n last: string | null;\n } | null;\n address: {\n street1: string | null;\n street2: string | null;\n city: string | null;\n subdivision: string | null;\n subdivisionAbbr: string | null;\n postalCode: string | null;\n countryCode: string | null;\n } | null;\n}\n\nexport interface BridgeInquiryAttributes {\n birthdate: string | null;\n name: {\n first: string | null;\n middle: string | null;\n last: string | null;\n } | null;\n address: {\n street1: string | null;\n street2: string | null;\n city: string | null;\n subdivision: string | null;\n subdivisionAbbr: string | null;\n postalCode: string | null;\n countryCode: string | null;\n } | null;\n}\n\ninterface BridgeOnSuccessCallbackParams {\n inquiryId: string;\n attributes: InquiryAttributes;\n}\n\ninterface BridgeOnFailedCallbackParams {\n inquiryId: string;\n}\n\ninterface BridgeOnErrorCallbackParams {\n error: string;\n}\n\ntype OnSuccessCallback = (\n inquiryId: string,\n attributes: InquiryAttributes\n) => void;\ntype OnCancelledCallback = () => void;\ntype OnFailedCallback = (inquiryId: string) => void;\ntype OnErrorCallback = (error: Error) => void;\n\nconst eventEmitter = new NativeEventEmitter(PersonaInquiry);\n\nexport class Inquiry {\n templateId?: TemplateId;\n inquiryId?: InquiryId;\n referenceId?: string;\n accountId?: AccountId;\n environment?: Environment;\n accessToken?: string;\n\n iosThemeObject?: Object | null;\n fields?: FieldsPayload | null;\n\n private onSuccess?: OnSuccessCallback;\n private onCancelled?: OnCancelledCallback;\n private onFailed?: OnFailedCallback;\n private onError?: OnErrorCallback;\n\n private onSuccessListener?: EventSubscription;\n private onCancelledListener?: EventSubscription;\n private onFailedListener?: 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.accessToken = options.accessToken;\n this.fields = options.fields;\n\n // Callbacks\n this.onSuccess = options.onSuccess;\n this.onCancelled = options.onCancelled;\n this.onFailed = options.onFailed;\n this.onError = options.onError;\n\n // Theme object\n this.iosThemeObject = options.iosThemeObject;\n }\n\n private clearListeners() {\n if (this.onSuccessListener) this.onSuccessListener.remove();\n if (this.onCancelledListener) this.onCancelledListener.remove();\n if (this.onFailedListener) this.onFailedListener.remove();\n if (this.onErrorListener) this.onErrorListener.remove();\n }\n\n start() {\n this.onSuccessListener = eventEmitter.addListener(\n 'onSuccess',\n ({\n inquiryId: inquiryId,\n attributes: attributes,\n }: BridgeOnSuccessCallbackParams) => {\n // Native Brige sends an ISO 8601 Date. Convert this to a JS Date\n if (typeof attributes.birthdate === 'string') {\n attributes.birthdate = new Date(attributes.birthdate);\n }\n if (this.onSuccess) this.onSuccess(inquiryId, attributes);\n this.clearListeners();\n }\n );\n\n this.onCancelledListener = eventEmitter.addListener('onCancelled', () => {\n if (this.onCancelled) this.onCancelled();\n this.clearListeners();\n });\n\n this.onFailedListener = eventEmitter.addListener(\n 'onFailed',\n ({ inquiryId: inquiryId }: BridgeOnFailedCallbackParams) => {\n if (this.onFailed) this.onFailed(inquiryId);\n this.clearListeners();\n }\n );\n\n this.onErrorListener = eventEmitter.addListener(\n 'onError',\n ({ error: errorMessage }: BridgeOnErrorCallbackParams) => {\n if (this.onError) this.onError(new Error(errorMessage));\n this.clearListeners();\n }\n );\n\n PersonaInquiry.startInquiry({\n templateId: this.templateId,\n inquiryId: this.inquiryId,\n referenceId: this.referenceId,\n accountId: this.accountId,\n environment: this.environment,\n accessToken: this.accessToken,\n fields: this.fields,\n iosTheme: processThemeValues(this.iosThemeObject || {}),\n });\n }\n}\n\ninterface NameField {\n first?: string;\n middle?: string;\n last?: string;\n}\n\ninterface AddressField {\n street1?: string;\n street2?: string;\n city?: string;\n subdivision?: string;\n postalCode?: string;\n countryCode?: string;\n}\n\ninterface FieldsPayload {\n name?: NameField | null;\n address?: AddressField | null;\n birthdate?: string | null;\n emailAddress?: string | null;\n phoneNumber?: string | null;\n additionalFields?: Object | null;\n}\n\nclass InquiryBuilder {\n private _inquiryId: InquiryId;\n private _accessToken?: string;\n\n // Callbacks\n private _onSuccess?: OnSuccessCallback;\n private _onCancelled?: OnCancelledCallback;\n private _onFailed?: OnFailedCallback;\n private _onError?: OnErrorCallback;\n private _iosThemeObject?: Object;\n private _fields?: FieldsPayload;\n\n constructor(inquiryId: InquiryId) {\n this._inquiryId = inquiryId;\n }\n\n accessToken(accessToken: string): InquiryBuilder {\n this._accessToken = accessToken;\n\n return this;\n }\n\n onSuccess(callback: OnSuccessCallback): InquiryBuilder {\n this._onSuccess = callback;\n\n return this;\n }\n\n onCancelled(callback: OnCancelledCallback): InquiryBuilder {\n this._onCancelled = callback;\n\n return this;\n }\n\n onFailed(callback: OnFailedCallback): InquiryBuilder {\n this._onFailed = 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 accessToken: this._accessToken,\n onSuccess: this._onSuccess,\n onCancelled: this._onCancelled,\n onFailed: this._onFailed,\n onError: this._onError,\n iosThemeObject: this._iosThemeObject,\n fields: this._fields,\n });\n }\n}\n\nclass TemplateBuilder {\n private _templateId: TemplateId;\n private _accountId?: AccountId;\n private _referenceId?: string;\n private _environment?: Environment;\n private _fields?: FieldsPayload;\n private _accessToken?: string;\n\n // Callbacks\n private _onSuccess?: OnSuccessCallback;\n private _onCancelled?: OnCancelledCallback;\n private _onFailed?: OnFailedCallback;\n private _onError?: OnErrorCallback;\n\n // Customization\n private _iosThemeObject?: Object;\n\n constructor(templateId: TemplateId) {\n this._templateId = templateId;\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 accessToken(accessToken: string): TemplateBuilder {\n this._accessToken = accessToken;\n\n return this;\n }\n\n fields(fields: FieldsPayload): TemplateBuilder {\n this._fields = fields;\n\n return this;\n }\n\n onSuccess(callback: OnSuccessCallback): TemplateBuilder {\n this._onSuccess = callback;\n\n return this;\n }\n\n onCancelled(callback: OnCancelledCallback): TemplateBuilder {\n this._onCancelled = callback;\n\n return this;\n }\n\n onFailed(callback: OnFailedCallback): TemplateBuilder {\n this._onFailed = 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 accountId: this._accountId,\n referenceId: this._referenceId,\n environment: this._environment,\n accessToken: this._accessToken,\n fields: this._fields,\n onSuccess: this._onSuccess,\n onCancelled: this._onCancelled,\n onFailed: this._onFailed,\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));\n }\n}\n\nexport default InquiryBuilders;\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const HEX_REGEX = /^[a-fA-F0-9]{6}$/;
|
|
2
|
+
export function processThemeValues(themeObject) {
|
|
3
|
+
const result = {};
|
|
4
|
+
|
|
5
|
+
for (const [key, value] of Object.entries(themeObject)) {
|
|
6
|
+
if (value === null) {
|
|
7
|
+
continue;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (key.includes('Color')) {
|
|
11
|
+
let colorValue = value;
|
|
12
|
+
|
|
13
|
+
if (value[0] === '#') {
|
|
14
|
+
colorValue = value.slice(1);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (HEX_REGEX.test(colorValue)) {
|
|
18
|
+
result[key] = `#${colorValue}`;
|
|
19
|
+
} else {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
} else {
|
|
23
|
+
result[key] = value.toString();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["util.ts"],"names":["HEX_REGEX","processThemeValues","themeObject","result","key","value","Object","entries","includes","colorValue","slice","test","toString"],"mappings":"AAAA,MAAMA,SAAS,GAAG,kBAAlB;AACA,OAAO,SAASC,kBAAT,CAA4BC,WAA5B,EAAiD;AACtD,QAAMC,MAAiC,GAAG,EAA1C;;AACA,OAAK,MAAM,CAACC,GAAD,EAAMC,KAAN,CAAX,IAA2BC,MAAM,CAACC,OAAP,CAAeL,WAAf,CAA3B,EAAwD;AACtD,QAAIG,KAAK,KAAK,IAAd,EAAoB;AAClB;AACD;;AAED,QAAID,GAAG,CAACI,QAAJ,CAAa,OAAb,CAAJ,EAA2B;AACzB,UAAIC,UAAU,GAAGJ,KAAjB;;AACA,UAAIA,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;AACpBI,QAAAA,UAAU,GAAGJ,KAAK,CAACK,KAAN,CAAY,CAAZ,CAAb;AACD;;AAED,UAAIV,SAAS,CAACW,IAAV,CAAeF,UAAf,CAAJ,EAAgC;AAC9BN,QAAAA,MAAM,CAACC,GAAD,CAAN,GAAe,IAAGK,UAAW,EAA7B;AACD,OAFD,MAEO;AACL;AACD;AACF,KAXD,MAWO;AACLN,MAAAA,MAAM,CAACC,GAAD,CAAN,GAAcC,KAAK,CAACO,QAAN,EAAd;AACD;AACF;;AAED,SAAOT,MAAP;AACD","sourcesContent":["const HEX_REGEX = /^[a-fA-F0-9]{6}$/;\nexport function processThemeValues(themeObject: Object) {\n const result: { [key: string]: string } = {};\n for (const [key, value] of Object.entries(themeObject)) {\n if (value === null) {\n continue;\n }\n\n if (key.includes('Color')) {\n let colorValue = value;\n if (value[0] === '#') {\n colorValue = value.slice(1);\n }\n\n if (HEX_REGEX.test(colorValue)) {\n result[key] = `#${colorValue}`;\n } else {\n continue;\n }\n } else {\n result[key] = value.toString();\n }\n }\n\n return result;\n}\n"]}
|