@mikashboks/react-native-agent-sdk 0.1.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/dist/cjs/agent-sdk.d.ts +114 -0
- package/dist/cjs/agent-sdk.d.ts.map +1 -0
- package/dist/cjs/agent-sdk.js +384 -0
- package/dist/cjs/agent-sdk.js.map +1 -0
- package/dist/cjs/constants.d.ts +2 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +7 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/errors.d.ts +21 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +50 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/http-client.d.ts +47 -0
- package/dist/cjs/http-client.d.ts.map +1 -0
- package/dist/cjs/http-client.js +264 -0
- package/dist/cjs/http-client.js.map +1 -0
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/types.d.ts +256 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/phone.d.ts +2 -0
- package/dist/cjs/utils/phone.d.ts.map +1 -0
- package/dist/cjs/utils/phone.js +72 -0
- package/dist/cjs/utils/phone.js.map +1 -0
- package/dist/esm/agent-sdk.d.ts +114 -0
- package/dist/esm/agent-sdk.d.ts.map +1 -0
- package/dist/esm/agent-sdk.js +380 -0
- package/dist/esm/agent-sdk.js.map +1 -0
- package/dist/esm/constants.d.ts +2 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/errors.d.ts +21 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +41 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/http-client.d.ts +47 -0
- package/dist/esm/http-client.d.ts.map +1 -0
- package/dist/esm/http-client.js +260 -0
- package/dist/esm/http-client.js.map +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types.d.ts +256 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/phone.d.ts +2 -0
- package/dist/esm/utils/phone.d.ts.map +1 -0
- package/dist/esm/utils/phone.js +68 -0
- package/dist/esm/utils/phone.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone.d.ts","sourceRoot":"","sources":["../../../src/utils/phone.ts"],"names":[],"mappings":"AA8CA,eAAO,MAAM,iCAAiC,GAAI,OAAO,MAAM,KAAG,MAkDjE,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeInternationalPhoneNumber = void 0;
|
|
4
|
+
const GENERIC_E164_REGEX = /^\+\d{8,15}$/;
|
|
5
|
+
const SUPPORTED_PHONE_DIALING = {
|
|
6
|
+
SL: { prefix: '232', localLengths: [8] },
|
|
7
|
+
GH: { prefix: '233', localLengths: [9] },
|
|
8
|
+
NG: { prefix: '234', localLengths: [10, 7] },
|
|
9
|
+
};
|
|
10
|
+
const DEFAULT_COUNTRY_CODE = 'SL';
|
|
11
|
+
function findSupportedCountryByPrefix(digits) {
|
|
12
|
+
return Object.entries(SUPPORTED_PHONE_DIALING).find(([, config]) => digits.startsWith(config.prefix));
|
|
13
|
+
}
|
|
14
|
+
function normalizeForCountry(digits, countryCode, isExplicitInternational) {
|
|
15
|
+
const { prefix, localLengths } = SUPPORTED_PHONE_DIALING[countryCode];
|
|
16
|
+
if (digits.startsWith(prefix)) {
|
|
17
|
+
const localNumber = digits.slice(prefix.length);
|
|
18
|
+
return localLengths.some(length => length === localNumber.length)
|
|
19
|
+
? `+${prefix}${localNumber}`
|
|
20
|
+
: '';
|
|
21
|
+
}
|
|
22
|
+
if (digits.startsWith('0')) {
|
|
23
|
+
const localNumber = digits.slice(1);
|
|
24
|
+
return localLengths.some(length => length === localNumber.length)
|
|
25
|
+
? `+${prefix}${localNumber}`
|
|
26
|
+
: '';
|
|
27
|
+
}
|
|
28
|
+
if (!isExplicitInternational &&
|
|
29
|
+
localLengths.some(length => length === digits.length) &&
|
|
30
|
+
/^[2-9]/.test(digits)) {
|
|
31
|
+
return `+${prefix}${digits}`;
|
|
32
|
+
}
|
|
33
|
+
return '';
|
|
34
|
+
}
|
|
35
|
+
const normalizeInternationalPhoneNumber = (phone) => {
|
|
36
|
+
const trimmedValue = phone.trim();
|
|
37
|
+
if (!trimmedValue || /(?:ext\.?|extension|x)\s*\d+/i.test(trimmedValue)) {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
const compactValue = trimmedValue.replace(/\(0\)/gi, '').replace(/[\s().-]/g, '');
|
|
41
|
+
let digits = '';
|
|
42
|
+
let isExplicitInternational = false;
|
|
43
|
+
if (compactValue.startsWith('+')) {
|
|
44
|
+
digits = compactValue.slice(1).replace(/\D/g, '');
|
|
45
|
+
isExplicitInternational = true;
|
|
46
|
+
}
|
|
47
|
+
else if (compactValue.startsWith('00')) {
|
|
48
|
+
digits = compactValue.slice(2).replace(/\D/g, '');
|
|
49
|
+
isExplicitInternational = true;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
digits = compactValue.replace(/\D/g, '');
|
|
53
|
+
}
|
|
54
|
+
if (!digits) {
|
|
55
|
+
return '';
|
|
56
|
+
}
|
|
57
|
+
const normalizedDefaultCountryNumber = normalizeForCountry(digits, DEFAULT_COUNTRY_CODE, isExplicitInternational);
|
|
58
|
+
if (normalizedDefaultCountryNumber) {
|
|
59
|
+
return normalizedDefaultCountryNumber;
|
|
60
|
+
}
|
|
61
|
+
if (!isExplicitInternational) {
|
|
62
|
+
return '';
|
|
63
|
+
}
|
|
64
|
+
const matchingSupportedCountry = findSupportedCountryByPrefix(digits);
|
|
65
|
+
if (matchingSupportedCountry) {
|
|
66
|
+
return normalizeForCountry(digits, matchingSupportedCountry[0], isExplicitInternational);
|
|
67
|
+
}
|
|
68
|
+
const candidate = `+${digits}`;
|
|
69
|
+
return GENERIC_E164_REGEX.test(candidate) ? candidate : '';
|
|
70
|
+
};
|
|
71
|
+
exports.normalizeInternationalPhoneNumber = normalizeInternationalPhoneNumber;
|
|
72
|
+
//# sourceMappingURL=phone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone.js","sourceRoot":"","sources":["../../../src/utils/phone.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { AgentStats, AgentSDKConfig, AgentProfile, ChangePasswordParams, ClientTimingPayload, CreateWorkflowParams, CreateWorkflowResult, DocumentMetadata, FlowContext, LoginChallengeParams, LoginChallengeResult, LoginParams, LoginRequestOptions, LoginResult, LoginWithProjectResolutionResult, LogoutParams, PreSubmissionCheckOptions, PushTokenRegistration, PreSubmissionCheckResult, RegisterPushTokenParams, ReissueWorkflowTokenResult, RefreshResult, SubmitFlowOptions, UnregisterPushTokenParams, UnregisterPushTokenResult, UploadDocumentInput, UploadDocumentOptions, UploadResult, ListWorkflowsParams, WorkflowDetail, WorkflowSummaryPage, WorkflowStatus, WorkflowSummary } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Ballerine Agent SDK — typed HTTP client for agent-assisted KYC endpoints.
|
|
4
|
+
*
|
|
5
|
+
* Works in any JS runtime (Node, browser, React Native) via configurable fetch.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { AgentSDK } from '@mikashboks/react-native-agent-sdk';
|
|
10
|
+
*
|
|
11
|
+
* const sdk = new AgentSDK({
|
|
12
|
+
* baseUrl: 'https://api.verify.example.com/api/v1',
|
|
13
|
+
* projectId: 'proj_123',
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* const { accessToken, agent } = await sdk.login({ phone: '23276123456', password: 'temp123' });
|
|
17
|
+
* const { workflowId, workflowToken } = await sdk.createWorkflow({
|
|
18
|
+
* customerInfo: { firstName: 'Aminata', lastName: 'Kamara', phone: '23276123456' },
|
|
19
|
+
* workflowDefinitionId: 'kyc_onboarding_sierra_leone',
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class AgentSDK {
|
|
24
|
+
private readonly http;
|
|
25
|
+
private accessToken;
|
|
26
|
+
private refreshTokenValue;
|
|
27
|
+
private readonly onTokenRefresh?;
|
|
28
|
+
private refreshInFlight;
|
|
29
|
+
constructor(config: AgentSDKConfig);
|
|
30
|
+
/** Set tokens directly (e.g., restored from secure storage on app launch). */
|
|
31
|
+
setTokens(accessToken: string, refreshToken: string): void;
|
|
32
|
+
/** Get the current access token (for external inspection). */
|
|
33
|
+
getAccessToken(): string | null;
|
|
34
|
+
/** Get the current refresh token (for external persistence). */
|
|
35
|
+
getRefreshToken(): string | null;
|
|
36
|
+
/** Clear all tokens (logout). */
|
|
37
|
+
clearTokens(): void;
|
|
38
|
+
/** Create a short-lived attestation challenge for password login. */
|
|
39
|
+
createLoginChallenge(params: LoginChallengeParams, options?: LoginRequestOptions): Promise<LoginChallengeResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Login with phone + password. On success, stores tokens internally.
|
|
42
|
+
* If `mustChangePassword` is true, the app should redirect to change-password.
|
|
43
|
+
*/
|
|
44
|
+
login(params: LoginParams): Promise<LoginResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Login without requiring a preselected project. The backend either returns
|
|
47
|
+
* tokens for the single matching project or credentialed project choices.
|
|
48
|
+
*/
|
|
49
|
+
loginWithProjectResolution(params: LoginParams): Promise<LoginWithProjectResolutionResult>;
|
|
50
|
+
/**
|
|
51
|
+
* Refresh the access token using the stored refresh token.
|
|
52
|
+
* Automatically rotates both tokens.
|
|
53
|
+
*/
|
|
54
|
+
refresh(refreshToken?: string): Promise<RefreshResult>;
|
|
55
|
+
/** Change password. Requires the current password. */
|
|
56
|
+
changePassword(params: ChangePasswordParams): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Revoke the current agent session.
|
|
59
|
+
* Best-effort: clears local tokens even if the backend request fails.
|
|
60
|
+
*/
|
|
61
|
+
logout(params?: LogoutParams): Promise<void>;
|
|
62
|
+
/** Register the current device for agent push notifications. */
|
|
63
|
+
registerPushToken(params: RegisterPushTokenParams): Promise<PushTokenRegistration>;
|
|
64
|
+
/** Unregister the current device from agent push notifications. */
|
|
65
|
+
unregisterPushToken(params: UnregisterPushTokenParams): Promise<UnregisterPushTokenResult>;
|
|
66
|
+
/** Get the authenticated agent's profile and tenant config. */
|
|
67
|
+
getProfile(): Promise<AgentProfile>;
|
|
68
|
+
/**
|
|
69
|
+
* Create a new KYC workflow for a customer.
|
|
70
|
+
* Returns a workflowToken used for all subsequent collection-flow calls.
|
|
71
|
+
*/
|
|
72
|
+
createWorkflow(params: CreateWorkflowParams): Promise<CreateWorkflowResult>;
|
|
73
|
+
/** Reissue a fresh collection-flow token for an existing active workflow. */
|
|
74
|
+
reissueWorkflowToken(workflowId: string): Promise<ReissueWorkflowTokenResult>;
|
|
75
|
+
/** List the agent's workflows (PII-redacted after submission). */
|
|
76
|
+
listWorkflows(params?: ListWorkflowsParams): Promise<WorkflowSummary[]>;
|
|
77
|
+
/** List the agent's workflows with cursor pagination metadata. */
|
|
78
|
+
listWorkflowsPage(params?: ListWorkflowsParams): Promise<WorkflowSummaryPage>;
|
|
79
|
+
/** Get the verification status of a specific workflow. */
|
|
80
|
+
getWorkflowStatus(workflowId: string): Promise<WorkflowStatus>;
|
|
81
|
+
/** Get agent-safe details for a specific workflow. */
|
|
82
|
+
getWorkflowDetails(workflowId: string): Promise<WorkflowDetail>;
|
|
83
|
+
/** Get aggregated counts for the authenticated agent dashboard. */
|
|
84
|
+
getWorkflowStats(): Promise<AgentStats>;
|
|
85
|
+
/**
|
|
86
|
+
* Upload a document image to the workflow's collection flow.
|
|
87
|
+
*
|
|
88
|
+
* @param workflowToken - The token returned from createWorkflow()
|
|
89
|
+
* @param file - File/Blob or React Native upload part to upload (image)
|
|
90
|
+
* @param metadata - Document type, side, geolocation
|
|
91
|
+
*/
|
|
92
|
+
uploadDocument(workflowToken: string, file: UploadDocumentInput, metadata: DocumentMetadata, options?: UploadDocumentOptions): Promise<UploadResult>;
|
|
93
|
+
/**
|
|
94
|
+
* Sync the collection flow context (document selections, form data, etc.).
|
|
95
|
+
*/
|
|
96
|
+
syncContext(workflowToken: string, context: Record<string, unknown>): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Submit the collection flow (triggers verification pipeline).
|
|
99
|
+
*/
|
|
100
|
+
submitFlow(workflowToken: string, context?: Record<string, unknown>, options?: SubmitFlowOptions): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Run the backend pre-submission gate before final submission.
|
|
103
|
+
*/
|
|
104
|
+
preSubmissionCheck(workflowToken: string, context: Record<string, unknown>, options?: PreSubmissionCheckOptions): Promise<PreSubmissionCheckResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Record client-side collection-flow timing telemetry.
|
|
107
|
+
*/
|
|
108
|
+
recordClientTiming(workflowToken: string, payload: ClientTimingPayload): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Get the current collection flow context.
|
|
111
|
+
*/
|
|
112
|
+
getFlowContext(workflowToken: string): Promise<FlowContext>;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=agent-sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-sdk.d.ts","sourceRoot":"","sources":["../../src/agent-sdk.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,gCAAgC,EAChC,YAAY,EACZ,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAmC;IACnE,OAAO,CAAC,eAAe,CAAuC;gBAElD,MAAM,EAAE,cAAc;IAwBlC,8EAA8E;IAC9E,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAK1D,8DAA8D;IAC9D,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B,gEAAgE;IAChE,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC,iCAAiC;IACjC,WAAW,IAAI,IAAI;IAQnB,qEAAqE;IAC/D,oBAAoB,CACxB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IAWhC;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAYtD;;;OAGG;IACG,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAoBhG;;;OAGG;IACG,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiC5D,sDAAsD;IAChD,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE;;;OAGG;IACG,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBlD,gEAAgE;IAC1D,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIxF,mEAAmE;IAC7D,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAShG,+DAA+D;IACzD,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAMzC;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgBjF,6EAA6E;IACvE,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAOnF,kEAAkE;IAC5D,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAM7E,kEAAkE;IAC5D,iBAAiB,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmBnF,0DAA0D;IACpD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIpE,sDAAsD;IAChD,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrE,mEAAmE;IAC7D,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAM7C;;;;;;OAMG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,YAAY,CAAC;IAyCxB;;OAEG;IACG,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF;;OAEG;IACG,UAAU,CACd,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;IACG,kBAAkB,CACtB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,CAAC;IAQpC;;OAEG;IACG,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5F;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAiBlE"}
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
import { HttpClient } from './http-client.js';
|
|
2
|
+
import { normalizeInternationalPhoneNumber } from './utils/phone.js';
|
|
3
|
+
/**
|
|
4
|
+
* Ballerine Agent SDK — typed HTTP client for agent-assisted KYC endpoints.
|
|
5
|
+
*
|
|
6
|
+
* Works in any JS runtime (Node, browser, React Native) via configurable fetch.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { AgentSDK } from '@mikashboks/react-native-agent-sdk';
|
|
11
|
+
*
|
|
12
|
+
* const sdk = new AgentSDK({
|
|
13
|
+
* baseUrl: 'https://api.verify.example.com/api/v1',
|
|
14
|
+
* projectId: 'proj_123',
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* const { accessToken, agent } = await sdk.login({ phone: '23276123456', password: 'temp123' });
|
|
18
|
+
* const { workflowId, workflowToken } = await sdk.createWorkflow({
|
|
19
|
+
* customerInfo: { firstName: 'Aminata', lastName: 'Kamara', phone: '23276123456' },
|
|
20
|
+
* workflowDefinitionId: 'kyc_onboarding_sierra_leone',
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class AgentSDK {
|
|
25
|
+
http;
|
|
26
|
+
accessToken = null;
|
|
27
|
+
refreshTokenValue = null;
|
|
28
|
+
onTokenRefresh;
|
|
29
|
+
refreshInFlight = null;
|
|
30
|
+
constructor(config) {
|
|
31
|
+
this.onTokenRefresh = config.onTokenRefresh;
|
|
32
|
+
this.http = new HttpClient({
|
|
33
|
+
baseUrl: config.baseUrl,
|
|
34
|
+
projectId: config.projectId,
|
|
35
|
+
fetchFn: config.fetch ?? globalThis.fetch.bind(globalThis),
|
|
36
|
+
timeoutMs: config.timeoutMs ?? 30_000,
|
|
37
|
+
getAccessToken: () => this.accessToken,
|
|
38
|
+
refreshAuth: async () => {
|
|
39
|
+
if (!this.refreshTokenValue) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
await this.refresh();
|
|
43
|
+
return true;
|
|
44
|
+
},
|
|
45
|
+
onAuthFailure: config.onAuthFailure,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// ── Token Management ──
|
|
49
|
+
/** Set tokens directly (e.g., restored from secure storage on app launch). */
|
|
50
|
+
setTokens(accessToken, refreshToken) {
|
|
51
|
+
this.accessToken = accessToken;
|
|
52
|
+
this.refreshTokenValue = refreshToken;
|
|
53
|
+
}
|
|
54
|
+
/** Get the current access token (for external inspection). */
|
|
55
|
+
getAccessToken() {
|
|
56
|
+
return this.accessToken;
|
|
57
|
+
}
|
|
58
|
+
/** Get the current refresh token (for external persistence). */
|
|
59
|
+
getRefreshToken() {
|
|
60
|
+
return this.refreshTokenValue;
|
|
61
|
+
}
|
|
62
|
+
/** Clear all tokens (logout). */
|
|
63
|
+
clearTokens() {
|
|
64
|
+
this.accessToken = null;
|
|
65
|
+
this.refreshTokenValue = null;
|
|
66
|
+
this.refreshInFlight = null;
|
|
67
|
+
}
|
|
68
|
+
// ── Auth Endpoints ──
|
|
69
|
+
/** Create a short-lived attestation challenge for password login. */
|
|
70
|
+
async createLoginChallenge(params, options) {
|
|
71
|
+
return this.http.post('/external/agents/login-challenge', {
|
|
72
|
+
...params,
|
|
73
|
+
phone: normalizeInternationalPhoneNumber(params.phone),
|
|
74
|
+
}, options);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Login with phone + password. On success, stores tokens internally.
|
|
78
|
+
* If `mustChangePassword` is true, the app should redirect to change-password.
|
|
79
|
+
*/
|
|
80
|
+
async login(params) {
|
|
81
|
+
const result = await this.http.post('/external/agents/login', {
|
|
82
|
+
...params,
|
|
83
|
+
phone: normalizeInternationalPhoneNumber(params.phone),
|
|
84
|
+
});
|
|
85
|
+
this.accessToken = result.accessToken;
|
|
86
|
+
this.refreshTokenValue = result.refreshToken;
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Login without requiring a preselected project. The backend either returns
|
|
91
|
+
* tokens for the single matching project or credentialed project choices.
|
|
92
|
+
*/
|
|
93
|
+
async loginWithProjectResolution(params) {
|
|
94
|
+
const result = await this.http.post('/external/agents/login', {
|
|
95
|
+
...params,
|
|
96
|
+
phone: normalizeInternationalPhoneNumber(params.phone),
|
|
97
|
+
}, { projectId: null });
|
|
98
|
+
if ('requiresProjectSelection' in result) {
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
this.accessToken = result.accessToken;
|
|
102
|
+
this.refreshTokenValue = result.refreshToken;
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Refresh the access token using the stored refresh token.
|
|
107
|
+
* Automatically rotates both tokens.
|
|
108
|
+
*/
|
|
109
|
+
async refresh(refreshToken) {
|
|
110
|
+
if (this.refreshInFlight) {
|
|
111
|
+
return this.refreshInFlight;
|
|
112
|
+
}
|
|
113
|
+
const token = refreshToken ?? this.refreshTokenValue;
|
|
114
|
+
if (!token) {
|
|
115
|
+
throw new Error('No refresh token available');
|
|
116
|
+
}
|
|
117
|
+
const refreshPromise = this.http
|
|
118
|
+
.post('/external/agents/refresh', {
|
|
119
|
+
refreshToken: token,
|
|
120
|
+
})
|
|
121
|
+
.then(result => {
|
|
122
|
+
this.accessToken = result.accessToken;
|
|
123
|
+
this.refreshTokenValue = result.refreshToken;
|
|
124
|
+
this.onTokenRefresh?.(result);
|
|
125
|
+
return result;
|
|
126
|
+
})
|
|
127
|
+
.finally(() => {
|
|
128
|
+
if (this.refreshInFlight === refreshPromise) {
|
|
129
|
+
this.refreshInFlight = null;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
this.refreshInFlight = refreshPromise;
|
|
133
|
+
return refreshPromise;
|
|
134
|
+
}
|
|
135
|
+
/** Change password. Requires the current password. */
|
|
136
|
+
async changePassword(params) {
|
|
137
|
+
await this.http.post('/external/agents/change-password', params);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Revoke the current agent session.
|
|
141
|
+
* Best-effort: clears local tokens even if the backend request fails.
|
|
142
|
+
*/
|
|
143
|
+
async logout(params) {
|
|
144
|
+
const accessToken = this.accessToken;
|
|
145
|
+
const refreshToken = params?.refreshToken ?? this.refreshTokenValue;
|
|
146
|
+
if (accessToken) {
|
|
147
|
+
try {
|
|
148
|
+
await this.http.post('/external/agents/logout', {
|
|
149
|
+
...(typeof refreshToken === 'string' ? { refreshToken } : {}),
|
|
150
|
+
...(params?.allSessions ? { allSessions: true } : {}),
|
|
151
|
+
}, {
|
|
152
|
+
token: accessToken,
|
|
153
|
+
suppressAuthFailure: true,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Logout is best-effort; local token clearing still proceeds below.
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
this.clearTokens();
|
|
161
|
+
}
|
|
162
|
+
/** Register the current device for agent push notifications. */
|
|
163
|
+
async registerPushToken(params) {
|
|
164
|
+
return this.http.post('/external/agents/push-tokens', params);
|
|
165
|
+
}
|
|
166
|
+
/** Unregister the current device from agent push notifications. */
|
|
167
|
+
async unregisterPushToken(params) {
|
|
168
|
+
return this.http.post('/external/agents/push-tokens/unregister', params);
|
|
169
|
+
}
|
|
170
|
+
// ── Profile ──
|
|
171
|
+
/** Get the authenticated agent's profile and tenant config. */
|
|
172
|
+
async getProfile() {
|
|
173
|
+
return this.http.get('/external/agents/me');
|
|
174
|
+
}
|
|
175
|
+
// ── Workflows ──
|
|
176
|
+
/**
|
|
177
|
+
* Create a new KYC workflow for a customer.
|
|
178
|
+
* Returns a workflowToken used for all subsequent collection-flow calls.
|
|
179
|
+
*/
|
|
180
|
+
async createWorkflow(params) {
|
|
181
|
+
const customerInfo = params.customerInfo
|
|
182
|
+
? {
|
|
183
|
+
...params.customerInfo,
|
|
184
|
+
...(params.customerInfo.phone
|
|
185
|
+
? { phone: normalizeInternationalPhoneNumber(params.customerInfo.phone) }
|
|
186
|
+
: {}),
|
|
187
|
+
}
|
|
188
|
+
: params.customerInfo;
|
|
189
|
+
return this.http.post('/external/agents/workflows', {
|
|
190
|
+
...params,
|
|
191
|
+
customerInfo,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/** Reissue a fresh collection-flow token for an existing active workflow. */
|
|
195
|
+
async reissueWorkflowToken(workflowId) {
|
|
196
|
+
return this.http.post(`/external/agents/workflows/${workflowId}/reissue-token`, {});
|
|
197
|
+
}
|
|
198
|
+
/** List the agent's workflows (PII-redacted after submission). */
|
|
199
|
+
async listWorkflows(params) {
|
|
200
|
+
const page = await this.listWorkflowsPage(params);
|
|
201
|
+
return page.items;
|
|
202
|
+
}
|
|
203
|
+
/** List the agent's workflows with cursor pagination metadata. */
|
|
204
|
+
async listWorkflowsPage(params) {
|
|
205
|
+
const searchParams = new URLSearchParams();
|
|
206
|
+
searchParams.set('paginated', '1');
|
|
207
|
+
if (params?.limit) {
|
|
208
|
+
searchParams.set('limit', String(params.limit));
|
|
209
|
+
}
|
|
210
|
+
if (params?.cursor) {
|
|
211
|
+
searchParams.set('cursor', params.cursor);
|
|
212
|
+
}
|
|
213
|
+
const query = searchParams.toString();
|
|
214
|
+
return this.http.get(`/external/agents/workflows${query ? `?${query}` : ''}`);
|
|
215
|
+
}
|
|
216
|
+
/** Get the verification status of a specific workflow. */
|
|
217
|
+
async getWorkflowStatus(workflowId) {
|
|
218
|
+
return this.http.get(`/external/agents/workflows/${workflowId}/status`);
|
|
219
|
+
}
|
|
220
|
+
/** Get agent-safe details for a specific workflow. */
|
|
221
|
+
async getWorkflowDetails(workflowId) {
|
|
222
|
+
return this.http.get(`/external/agents/workflows/${workflowId}`);
|
|
223
|
+
}
|
|
224
|
+
/** Get aggregated counts for the authenticated agent dashboard. */
|
|
225
|
+
async getWorkflowStats() {
|
|
226
|
+
return this.http.get('/external/agents/workflows/stats');
|
|
227
|
+
}
|
|
228
|
+
// ── Collection Flow (uses workflowToken auth) ──
|
|
229
|
+
/**
|
|
230
|
+
* Upload a document image to the workflow's collection flow.
|
|
231
|
+
*
|
|
232
|
+
* @param workflowToken - The token returned from createWorkflow()
|
|
233
|
+
* @param file - File/Blob or React Native upload part to upload (image)
|
|
234
|
+
* @param metadata - Document type, side, geolocation
|
|
235
|
+
*/
|
|
236
|
+
async uploadDocument(workflowToken, file, metadata, options) {
|
|
237
|
+
const normalizedType = normalizeDocumentType(metadata.type);
|
|
238
|
+
const normalizedVariant = normalizeDocumentVariant(metadata.documentVariant ?? metadata.side);
|
|
239
|
+
const normalizedPage = typeof metadata.pageNumber === 'number' && metadata.pageNumber >= 1
|
|
240
|
+
? metadata.pageNumber
|
|
241
|
+
: normalizedVariant === 'back'
|
|
242
|
+
? 2
|
|
243
|
+
: 1;
|
|
244
|
+
const normalizedDocumentType = metadata.documentType ?? (normalizedType === 'selfie' ? 'selfie' : 'document');
|
|
245
|
+
const normalizedCategory = metadata.category ??
|
|
246
|
+
(normalizedType === 'selfie' ? 'proof_of_identity_ownership' : 'proof_of_identity');
|
|
247
|
+
const uploadFile = normalizeUploadFile(file, normalizedType, normalizedVariant);
|
|
248
|
+
const formData = new FormData();
|
|
249
|
+
formData.append('file', uploadFile);
|
|
250
|
+
formData.append('category', normalizedCategory);
|
|
251
|
+
formData.append('type', normalizedType);
|
|
252
|
+
formData.append('issuingVersion', String(metadata.issuingVersion ?? '1'));
|
|
253
|
+
formData.append('issuingCountry', String(metadata.issuingCountry ?? 'SL'));
|
|
254
|
+
formData.append('page', String(normalizedPage));
|
|
255
|
+
formData.append('documentType', normalizedDocumentType);
|
|
256
|
+
formData.append('documentVariant', normalizedVariant);
|
|
257
|
+
if (metadata.endUserId) {
|
|
258
|
+
formData.append('endUserId', metadata.endUserId);
|
|
259
|
+
}
|
|
260
|
+
if (metadata.businessId) {
|
|
261
|
+
formData.append('businessId', metadata.businessId);
|
|
262
|
+
}
|
|
263
|
+
return this.http.postFormData('/collection-flow/documents', formData, {
|
|
264
|
+
token: workflowToken,
|
|
265
|
+
onUploadProgress: options?.onUploadProgress,
|
|
266
|
+
timeoutMs: options?.timeoutMs,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Sync the collection flow context (document selections, form data, etc.).
|
|
271
|
+
*/
|
|
272
|
+
async syncContext(workflowToken, context) {
|
|
273
|
+
await this.http.patch('/collection-flow/sync/context', { context }, { token: workflowToken });
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Submit the collection flow (triggers verification pipeline).
|
|
277
|
+
*/
|
|
278
|
+
async submitFlow(workflowToken, context, options) {
|
|
279
|
+
await this.http.post('/collection-flow/final-submission', {
|
|
280
|
+
eventName: 'COLLECTION_FLOW_FINISHED',
|
|
281
|
+
...(context ? { context } : {}),
|
|
282
|
+
...(options?.preSubmissionCheckId
|
|
283
|
+
? { preSubmissionCheckId: options.preSubmissionCheckId }
|
|
284
|
+
: {}),
|
|
285
|
+
}, { token: workflowToken, timeoutMs: options?.timeoutMs });
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Run the backend pre-submission gate before final submission.
|
|
289
|
+
*/
|
|
290
|
+
async preSubmissionCheck(workflowToken, context, options) {
|
|
291
|
+
return this.http.post('/collection-flow/pre-submission-check', { context }, { token: workflowToken, timeoutMs: options?.timeoutMs });
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Record client-side collection-flow timing telemetry.
|
|
295
|
+
*/
|
|
296
|
+
async recordClientTiming(workflowToken, payload) {
|
|
297
|
+
await this.http.post('/collection-flow/client-timing', payload, { token: workflowToken });
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get the current collection flow context.
|
|
301
|
+
*/
|
|
302
|
+
async getFlowContext(workflowToken) {
|
|
303
|
+
const response = await this.http.get('/collection-flow/context', { token: workflowToken });
|
|
304
|
+
if (typeof response === 'object' &&
|
|
305
|
+
response !== null &&
|
|
306
|
+
'context' in response &&
|
|
307
|
+
response.context &&
|
|
308
|
+
typeof response.context === 'object') {
|
|
309
|
+
return response.context;
|
|
310
|
+
}
|
|
311
|
+
return response;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
function normalizeDocumentType(type) {
|
|
315
|
+
const normalized = type.trim().toLowerCase();
|
|
316
|
+
switch (normalized) {
|
|
317
|
+
case 'national_id':
|
|
318
|
+
case 'national-id':
|
|
319
|
+
return 'national_id';
|
|
320
|
+
case 'passport':
|
|
321
|
+
return 'passport';
|
|
322
|
+
case 'voter_id':
|
|
323
|
+
case 'voter-id':
|
|
324
|
+
return 'voter_id';
|
|
325
|
+
case 'drivers_license':
|
|
326
|
+
case 'driver_license':
|
|
327
|
+
case 'drivers-license':
|
|
328
|
+
case 'driver-license':
|
|
329
|
+
return 'drivers_license';
|
|
330
|
+
case 'selfie':
|
|
331
|
+
return 'selfie';
|
|
332
|
+
default:
|
|
333
|
+
return normalized;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function normalizeDocumentVariant(variant) {
|
|
337
|
+
if (variant === 'front' || variant === 'back' || variant === 'other') {
|
|
338
|
+
return variant;
|
|
339
|
+
}
|
|
340
|
+
return 'front';
|
|
341
|
+
}
|
|
342
|
+
function normalizeUploadFile(file, normalizedType, normalizedVariant) {
|
|
343
|
+
if (!isReactNativeUploadFile(file)) {
|
|
344
|
+
return file;
|
|
345
|
+
}
|
|
346
|
+
const name = file.name?.trim() || `${normalizedType}-${normalizedVariant}.${inferFileExtension(file.uri)}`;
|
|
347
|
+
const type = file.type?.trim() || inferMimeType(name);
|
|
348
|
+
return {
|
|
349
|
+
uri: file.uri,
|
|
350
|
+
name,
|
|
351
|
+
type,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
function isReactNativeUploadFile(file) {
|
|
355
|
+
return (typeof file === 'object' &&
|
|
356
|
+
file !== null &&
|
|
357
|
+
'uri' in file &&
|
|
358
|
+
typeof file.uri === 'string');
|
|
359
|
+
}
|
|
360
|
+
function inferFileExtension(uri) {
|
|
361
|
+
const match = uri.match(/\.([a-z0-9]+)(?:\?|#|$)/i);
|
|
362
|
+
const extension = match?.[1]?.toLowerCase();
|
|
363
|
+
return extension || 'jpg';
|
|
364
|
+
}
|
|
365
|
+
function inferMimeType(fileName) {
|
|
366
|
+
const extension = fileName.split('.').pop()?.toLowerCase();
|
|
367
|
+
switch (extension) {
|
|
368
|
+
case 'png':
|
|
369
|
+
return 'image/png';
|
|
370
|
+
case 'webp':
|
|
371
|
+
return 'image/webp';
|
|
372
|
+
case 'heic':
|
|
373
|
+
return 'image/heic';
|
|
374
|
+
case 'heif':
|
|
375
|
+
return 'image/heif';
|
|
376
|
+
default:
|
|
377
|
+
return 'image/jpeg';
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=agent-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-sdk.js","sourceRoot":"","sources":["../../src/agent-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EACpC,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EACpC,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare class AgentSDKError extends Error {
|
|
2
|
+
readonly statusCode?: number | undefined;
|
|
3
|
+
readonly responseBody?: unknown | undefined;
|
|
4
|
+
constructor(message: string, statusCode?: number | undefined, responseBody?: unknown | undefined);
|
|
5
|
+
}
|
|
6
|
+
export declare class AuthenticationError extends AgentSDKError {
|
|
7
|
+
constructor(message?: string, responseBody?: unknown);
|
|
8
|
+
}
|
|
9
|
+
export declare class ForbiddenError extends AgentSDKError {
|
|
10
|
+
constructor(message?: string, responseBody?: unknown);
|
|
11
|
+
}
|
|
12
|
+
export declare class NotFoundError extends AgentSDKError {
|
|
13
|
+
constructor(message?: string, responseBody?: unknown);
|
|
14
|
+
}
|
|
15
|
+
export declare class ConflictError extends AgentSDKError {
|
|
16
|
+
constructor(message?: string, responseBody?: unknown);
|
|
17
|
+
}
|
|
18
|
+
export declare class NetworkError extends AgentSDKError {
|
|
19
|
+
constructor(message?: string);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;aAGpB,UAAU,CAAC,EAAE,MAAM;aACnB,YAAY,CAAC,EAAE,OAAO;gBAFtC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,YAAY,CAAC,EAAE,OAAO,YAAA;CAKzC;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,OAAO,GAAE,MAAgC,EAAE,YAAY,CAAC,EAAE,OAAO;CAI9E;AAED,qBAAa,cAAe,SAAQ,aAAa;gBACnC,OAAO,GAAE,MAAwB,EAAE,YAAY,CAAC,EAAE,OAAO;CAItE;AAED,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,GAAE,MAA6B,EAAE,YAAY,CAAC,EAAE,OAAO;CAI3E;AAED,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,GAAE,MAA4B,EAAE,YAAY,CAAC,EAAE,OAAO;CAI1E;AAED,qBAAa,YAAa,SAAQ,aAAa;gBACjC,OAAO,GAAE,MAAiC;CAIvD"}
|