@onfido/api 2.5.0 → 2.7.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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## v2.7.0, 24 January 2023
4
+
5
+ - Updated to use API v3.6. For more details please see our [release notes](https://developers.onfido.com/release-notes#api-v36)
6
+
7
+ ## v2.6.0, 7 December 2022
8
+
9
+ - Added WorkflowRuns support
10
+
3
11
  ## v2.5.0, 22 November 2022
4
12
 
5
13
  - Added Motion capture support
package/README.md CHANGED
@@ -6,7 +6,7 @@ Documentation can be found at <https://documentation.onfido.com>
6
6
 
7
7
  This library is only for use on the backend, as it uses Onfido API tokens which must be kept secret. If you do need to collect applicant data in the frontend of your application, we recommend that you use the Onfido SDKs: [iOS](https://github.com/onfido/onfido-ios-sdk), [Android](https://github.com/onfido/onfido-android-sdk), [Web](https://github.com/onfido/onfido-sdk-ui), and [React Native](https://github.com/onfido/react-native-sdk).
8
8
 
9
- This version uses Onfido API v3.5. Refer to our [API versioning guide](https://developers.onfido.com/guide/api-versioning-policy#client-libraries) for details of which client library versions use which versions of the API.
9
+ This version uses Onfido API v3.6. Refer to our [API versioning guide](https://developers.onfido.com/guide/api-versioning-policy#client-libraries) for details of which client library versions use which versions of the API.
10
10
 
11
11
  ## Installation
12
12
 
package/dist/Onfido.d.ts CHANGED
@@ -10,6 +10,7 @@ import { MotionCaptures } from "./resources/MotionCaptures";
10
10
  import { Reports } from "./resources/Reports";
11
11
  import { SdkTokens } from "./resources/SdkTokens";
12
12
  import { Webhooks } from "./resources/Webhooks";
13
+ import { WorkflowRuns } from "./resources/WorkflowRuns";
13
14
  export declare enum Region {
14
15
  EU = "EU",
15
16
  US = "US",
@@ -30,6 +31,7 @@ export declare class Onfido {
30
31
  readonly motionCapture: MotionCaptures;
31
32
  readonly check: Checks;
32
33
  readonly report: Reports;
34
+ readonly workflowRun: WorkflowRuns;
33
35
  readonly address: Addresses;
34
36
  readonly webhook: Webhooks;
35
37
  readonly sdkToken: SdkTokens;
package/dist/index.d.ts CHANGED
@@ -16,3 +16,4 @@ export { Report } from "./resources/Reports";
16
16
  export { Webhook, WebhookRequest } from "./resources/Webhooks";
17
17
  export { SdkTokenRequest } from "./resources/SdkTokens";
18
18
  export { Autofill, ExtractionResult } from "./resources/Autofill";
19
+ export { WorkflowRun, WorkflowRunRequest } from "./resources/WorkflowRuns";
package/dist/index.es.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import axios from 'axios';
2
2
  import { PassThrough, Readable } from 'stream';
3
3
 
4
- var version = "2.5.0";
4
+ var version = "2.7.0";
5
5
 
6
6
  class OnfidoError extends Error {
7
7
  constructor(message) {
@@ -172,9 +172,10 @@ class Resource {
172
172
  this.axiosInstance = axiosInstance;
173
173
  }
174
174
  async request({ method, path = "", body, query }) {
175
+ const url = path === null ? `${this.name}` : `${this.name}/${path}`;
175
176
  const request = this.axiosInstance({
176
177
  method,
177
- url: `${this.name}/${path}`,
178
+ url: url,
178
179
  data: body && convertObjectToSnakeCase(body),
179
180
  params: query && convertObjectToSnakeCase(query)
180
181
  });
@@ -435,6 +436,25 @@ class Webhooks extends Resource {
435
436
  }
436
437
  }
437
438
 
439
+ class WorkflowRuns extends Resource {
440
+ constructor(axiosInstance) {
441
+ super("workflow_runs", axiosInstance);
442
+ }
443
+ async create(workflowRunRequest) {
444
+ return this.request({ method: Method.POST, body: workflowRunRequest });
445
+ }
446
+ async find(id) {
447
+ return this.request({ method: Method.GET, path: id });
448
+ }
449
+ async list(queryParams) {
450
+ const workflowRuns = await this.request({
451
+ method: Method.GET,
452
+ query: queryParams
453
+ });
454
+ return workflowRuns;
455
+ }
456
+ }
457
+
438
458
  var Region;
439
459
  (function (Region) {
440
460
  Region["EU"] = "EU";
@@ -451,7 +471,7 @@ class Onfido {
451
471
  "We previously defaulted to region 'EU', so if you previously didn’t " +
452
472
  "set a region or used api.onfido.com, please set your region to 'EU'");
453
473
  }
454
- const regionUrl = `https://api.${region.toLowerCase()}.onfido.com/v3.5/`;
474
+ const regionUrl = `https://api.${region.toLowerCase()}.onfido.com/v3.6/`;
455
475
  this.axiosInstance = axios.create({
456
476
  baseURL: unknownApiUrl || regionUrl,
457
477
  headers: {
@@ -469,6 +489,7 @@ class Onfido {
469
489
  this.motionCapture = new MotionCaptures(this.axiosInstance);
470
490
  this.check = new Checks(this.axiosInstance);
471
491
  this.report = new Reports(this.axiosInstance);
492
+ this.workflowRun = new WorkflowRuns(this.axiosInstance);
472
493
  // Other endpoints
473
494
  this.address = new Addresses(this.axiosInstance);
474
495
  this.webhook = new Webhooks(this.axiosInstance);
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/errors/OnfidoError.ts","../src/errors/OnfidoApiError.ts","../src/formatting.ts","../src/OnfidoDownload.ts","../src/Resource.ts","../src/resources/Addresses.ts","../src/resources/Applicants.ts","../src/resources/Autofill.ts","../src/resources/Checks.ts","../src/resources/Documents.ts","../src/resources/LivePhotos.ts","../src/resources/LiveVideos.ts","../src/resources/MotionCaptures.ts","../src/resources/Reports.ts","../src/resources/SdkTokens.ts","../src/resources/Webhooks.ts","../src/Onfido.ts","../src/WebhookEventVerifier.ts"],"sourcesContent":["export class OnfidoError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"OnfidoError\";\n }\n}\n","import { OnfidoError } from \"./OnfidoError\";\n\nexport class OnfidoApiError extends OnfidoError {\n public readonly responseBody: unknown;\n public readonly statusCode: number;\n public readonly type: string;\n public readonly fields: unknown;\n\n private constructor(\n message: string,\n responseBody: unknown,\n statusCode: number,\n type: string,\n fields: unknown\n ) {\n super(message);\n this.name = \"OnfidoApiError\";\n\n this.responseBody = responseBody;\n this.statusCode = statusCode;\n this.type = type;\n this.fields = fields;\n }\n\n public static fromResponse(\n responseBody: unknown,\n statusCode: number\n ): OnfidoApiError {\n const innerErrorData: unknown =\n responseBody instanceof Object ? (responseBody as any).error : {};\n\n const innerError: {\n type?: unknown;\n message?: unknown;\n fields?: unknown;\n } = innerErrorData instanceof Object ? innerErrorData : {};\n\n const type = `${innerError.type || \"unknown\"}`;\n const message = `${innerError.message || responseBody}`;\n const fields = innerError.fields;\n\n const fullMessage =\n `${message} (status code ${statusCode})` +\n (fields ? ` | ${JSON.stringify(fields)}` : \"\");\n\n return new OnfidoApiError(\n fullMessage,\n responseBody,\n statusCode,\n type,\n fields\n );\n }\n\n public isClientError(): boolean {\n return this.statusCode < 500;\n }\n}\n","import { Readable } from \"stream\";\nimport { IFormData } from \"./types/formData\";\n\n// Using require because \"form-data\" exports this object as a default export which breaks integration when esModuleInterop: false\n// tslint:disable-next-line: no-var-requires\nconst FormData = require(\"form-data\");\n\nexport type SimpleObject = { [key: string]: unknown };\n\ntype ContentsAndOptions = {\n contents: Readable;\n filepath: string;\n contentType?: string;\n};\n\nexport type FileLike = Readable | ContentsAndOptions;\n\nconst snakeCase = (camelCaseString: string): string =>\n camelCaseString.replace(/[A-Z]/g, char => `_${char.toLowerCase()}`);\n\nconst camelCase = (snakeCaseString: string): string =>\n snakeCaseString\n .replace(/_[0-9]/g, underscoreDigit => underscoreDigit[1])\n .replace(/_[a-z]/g, underscoreChar => underscoreChar[1].toUpperCase());\n\nconst deepMapObjectKeys = (value: unknown, f: (key: string) => string): any => {\n if (!(value instanceof Object)) {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(item => deepMapObjectKeys(item, f));\n } else {\n return Object.keys(value).reduce<SimpleObject>((acc, key) => {\n acc[f(key)] = deepMapObjectKeys((value as SimpleObject)[key], f);\n return acc;\n }, {});\n }\n};\n\nexport const convertObjectToSnakeCase = (requestBody: unknown): unknown => {\n // Converting to JSON and back first handles things like dates, circular references etc.\n requestBody = JSON.parse(JSON.stringify(requestBody));\n\n return deepMapObjectKeys(requestBody, snakeCase);\n};\n\nexport const convertObjectToCamelCase = (\n responseBody: SimpleObject\n): SimpleObject => deepMapObjectKeys(responseBody, camelCase);\n\nexport const toFormData = (object: SimpleObject): IFormData => {\n return Object.entries(object).reduce((formData, [key, value]) => {\n if (value instanceof Object && \"contents\" in value) {\n const { contents, ...options } = value as ContentsAndOptions;\n formData.append(snakeCase(key), contents, options);\n } else if (value !== undefined && value !== null) {\n if (value instanceof Object) {\n for (const [elementKey, elementValue] of Object.entries(value)) {\n formData.append(snakeCase(key + \"[\" + elementKey + \"]\"), elementValue);\n }\n } else {\n formData.append(snakeCase(key), value);\n }\n }\n return formData;\n }, new FormData());\n};\n","import { IncomingMessage } from \"http\";\nimport { PassThrough, Readable } from \"stream\";\n\nexport class OnfidoDownload {\n private readonly incomingMessage: IncomingMessage;\n\n constructor(incomingMessage: IncomingMessage) {\n this.incomingMessage = incomingMessage;\n }\n\n public asStream(): Readable {\n // Use a PassThrough stream so the IncomingMessage isn't exposed.\n const passThroughStream = new PassThrough();\n this.incomingMessage.pipe(passThroughStream);\n return passThroughStream;\n }\n\n public get contentType(): string {\n return this.incomingMessage.headers[\"content-type\"]!;\n }\n}\n","import { AxiosInstance, AxiosPromise, AxiosResponse } from \"axios\";\nimport { IncomingMessage } from \"http\";\nimport { Readable } from \"stream\";\nimport { OnfidoApiError } from \"./errors/OnfidoApiError\";\nimport { OnfidoError } from \"./errors/OnfidoError\";\nimport {\n convertObjectToCamelCase,\n convertObjectToSnakeCase,\n SimpleObject,\n toFormData\n} from \"./formatting\";\nimport { OnfidoDownload } from \"./OnfidoDownload\";\n\nexport enum Method {\n GET = \"get\",\n POST = \"post\",\n PUT = \"put\",\n DELETE = \"delete\"\n}\n\nconst isJson = (response: AxiosResponse<unknown>): boolean =>\n (response.headers[\"content-type\"] || \"\").includes(\"application/json\");\n\nconst readFullStream = (stream: Readable): Promise<unknown> =>\n new Promise((resolve): void => {\n let all = \"\";\n\n stream.on(\"data\", data => (all += data));\n stream.on(\"error\", () => resolve(\"An error occurred reading the response\"));\n stream.on(\"end\", () => {\n // Try to parse as JSON, but fall back to just returning the raw text.\n try {\n resolve(JSON.parse(all));\n } catch {\n resolve(all);\n }\n });\n });\n\nconst convertAxiosErrorToOnfidoError = async (\n error: any\n): Promise<OnfidoError> => {\n if (!error.response) {\n return new OnfidoError(\n error.message || \"An unknown error occurred making the request\"\n );\n }\n\n // Received a 4XX or 5XX response.\n const response: AxiosResponse = error.response;\n const data = response.data;\n\n // If we were downloading a file, we will have a stream instead of a string.\n const body = data instanceof Readable ? await readFullStream(data) : data;\n\n return OnfidoApiError.fromResponse(body, response.status);\n};\n\nconst handleResponse = async (request: AxiosPromise<any>): Promise<any> => {\n try {\n const response = await request;\n const data = response.data;\n return isJson(response) ? convertObjectToCamelCase(data) : data;\n } catch (error) {\n throw await convertAxiosErrorToOnfidoError(error);\n }\n};\n\nexport class Resource<T extends SimpleObject> {\n private readonly name: string;\n private readonly axiosInstance: AxiosInstance;\n\n protected constructor(name: string, axiosInstance: AxiosInstance) {\n this.name = name;\n this.axiosInstance = axiosInstance;\n }\n\n protected async request({\n method,\n path = \"\",\n body,\n query\n }: {\n method: Method;\n path?: string;\n body?: T;\n query?: SimpleObject;\n }): Promise<any> {\n const request = this.axiosInstance({\n method,\n url: `${this.name}/${path}`,\n data: body && convertObjectToSnakeCase(body),\n params: query && convertObjectToSnakeCase(query)\n });\n\n return handleResponse(request);\n }\n\n protected async upload(body: T): Promise<any> {\n const formData = toFormData(body);\n\n const request = this.axiosInstance({\n method: Method.POST,\n url: `${this.name}/`,\n data: formData,\n headers: formData.getHeaders()\n });\n\n return handleResponse(request);\n }\n\n protected async download(path: string): Promise<OnfidoDownload> {\n const request = this.axiosInstance({\n method: Method.GET,\n url: `${this.name}/${path}`,\n responseType: \"stream\",\n // Accept a response with any content type (e.g. image/png, application/pdf, video/mp4)\n headers: { Accept: \"*/*\" }\n });\n\n const stream: IncomingMessage = await handleResponse(request);\n return new OnfidoDownload(stream);\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\ntype AddressOptional = {\n flatNumber: string | null;\n buildingNumber: string | null;\n buildingName: string | null;\n street: string | null;\n subStreet: string | null;\n town: string | null;\n state: string | null;\n line1: string | null;\n line2: string | null;\n line3: string | null;\n};\n\nexport type AddressRequest = {\n postcode: string;\n country: string;\n} & Partial<AddressOptional>;\n\nexport type Address = {\n postcode: string;\n country: string;\n} & Partial<AddressOptional>;\n\nexport class Addresses extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"addresses\", axiosInstance);\n }\n\n public async pick(postcode: string): Promise<Address[]> {\n const { addresses } = await this.request({\n method: Method.GET,\n path: \"pick\",\n query: { postcode }\n });\n\n return addresses;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\nimport { Address, AddressRequest } from \"./Addresses\";\nimport { IdNumber, IdNumberRequest } from \"./IdNumbers\";\nimport { Location, LocationRequest } from \"./Location\";\nimport { ConsentsRequest } from \"./ConsentsRequest\";\n\n// firstName and lastName are also optional, to allow updating.\nexport type ApplicantRequest = {\n firstName?: string | null;\n lastName?: string | null;\n email?: string | null;\n dob?: string | null;\n address?: AddressRequest | null;\n idNumbers?: IdNumberRequest[] | null;\n phoneNumber?: string | null;\n location?: LocationRequest | null;\n consents?: ConsentsRequest[] | null;\n};\n\nexport type Applicant = {\n id: string;\n createdAt: string;\n deleteAt: string | null;\n href: string;\n firstName: string;\n lastName: string;\n email: string | null;\n dob: string | null;\n address: Address | null;\n idNumbers: IdNumber[] | null;\n phoneNumber: string | null;\n location: Location | null;\n};\n\nexport class Applicants extends Resource<ApplicantRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"applicants\", axiosInstance);\n }\n\n public async create(applicantRequest: ApplicantRequest): Promise<Applicant> {\n return this.request({ method: Method.POST, body: applicantRequest });\n }\n\n public async find(id: string): Promise<Applicant> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async update(\n id: string,\n applicantRequest: ApplicantRequest\n ): Promise<Applicant> {\n return this.request({\n method: Method.PUT,\n path: id,\n body: applicantRequest\n });\n }\n\n public async delete(id: string): Promise<void> {\n await this.request({ method: Method.DELETE, path: id });\n }\n\n public async restore(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/restore` });\n }\n\n public async list({\n page,\n perPage,\n includeDeleted\n }: {\n page?: number;\n perPage?: number;\n includeDeleted?: boolean;\n } = {}): Promise<Applicant[]> {\n const { applicants } = await this.request({\n method: Method.GET,\n query: { page, perPage, includeDeleted }\n });\n\n return applicants;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type ExtractionResult = {\n documentId: string;\n documentClassification: {\n issuingCountry: string;\n documentType: string;\n issuingState?: string;\n };\n extractedData: {\n documentNumber?: string;\n firstName?: string;\n lastName?: string;\n middleName?: string;\n fullName?: string;\n gender?: string;\n dateOfBirth?: string;\n dateOfExpiry?: string;\n nationality?: string;\n mrzLine1?: string;\n mrzLine2?: string;\n mrzLine3?: string;\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n addressLine4?: string;\n addressLine5?: string;\n };\n};\n\ntype AutofillResource = {\n documentId: string;\n};\n\nexport class Autofill extends Resource<AutofillResource> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"extractions\", axiosInstance);\n }\n\n public async perform(documentId: string): Promise<ExtractionResult> {\n return this.request({\n method: Method.POST,\n body: { documentId }\n });\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type CheckRequest = {\n applicantId: string;\n reportNames: string[];\n documentIds?: string[] | null;\n applicantProvidesData?: boolean;\n asynchronous?: boolean;\n tags?: string[] | null;\n suppressFormEmails?: boolean;\n redirectUri?: string | null;\n privacyNoticesReadConsentGiven?: boolean;\n webhookIds?: string[] | null;\n subResult?: string;\n consider?: string[];\n};\n\nexport type Check = {\n id: string;\n reportIds: string[];\n createdAt: string;\n href: string;\n applicantId: string;\n applicantProvidesData: boolean;\n status: string;\n tags: string[];\n result: string | null;\n formUri: string | null;\n redirectUri: string | null;\n resultsUri: string;\n privacyNoticesReadConsentGiven: boolean;\n webhookIds: string[] | null;\n};\n\nexport class Checks extends Resource<CheckRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"checks\", axiosInstance);\n }\n\n public async create(checkRequest: CheckRequest): Promise<Check> {\n return this.request({ method: Method.POST, body: checkRequest });\n }\n\n public async find(id: string): Promise<Check> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<Check[]> {\n const { checks } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return checks;\n }\n\n public async resume(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/resume` });\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { FileLike } from \"../formatting\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\nimport { LocationRequest } from \"./Location\";\n\nexport type DocumentRequest = {\n applicantId?: string | null;\n file: FileLike;\n type: string;\n side?: string | null;\n issuingCountry?: string | null;\n validateImageQuality?: boolean | null;\n location?: LocationRequest | null;\n};\n\nexport type Document = {\n id: string;\n applicantId: string | null;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n type: string;\n side: string | null;\n issuingCountry: string | null;\n};\n\nexport class Documents extends Resource<DocumentRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"documents\", axiosInstance);\n }\n\n public async upload(documentRequest: DocumentRequest): Promise<Document> {\n return super.upload(documentRequest);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async find(id: string): Promise<Document> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<Document[]> {\n const { documents } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return documents;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { FileLike } from \"../formatting\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type LivePhotoRequest = {\n applicantId: string;\n file: FileLike;\n advancedValidation?: string;\n};\n\nexport type LivePhoto = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class LivePhotos extends Resource<LivePhotoRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"live_photos\", axiosInstance);\n }\n\n public async upload(livePhotoRequest: LivePhotoRequest): Promise<LivePhoto> {\n return super.upload(livePhotoRequest);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async find(id: string): Promise<LivePhoto> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<LivePhoto[]> {\n const { livePhotos } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return livePhotos;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type LiveVideo = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class LiveVideos extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"live_videos\", axiosInstance);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async frame(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/frame`);\n }\n\n public async find(id: string): Promise<LiveVideo> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<LiveVideo[]> {\n const { liveVideos } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return liveVideos;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type MotionCapture = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class MotionCaptures extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"motion_captures\", axiosInstance);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async frame(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/frame`);\n }\n\n public async find(id: string): Promise<MotionCapture> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<MotionCapture[]> {\n const { motionCaptures } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return motionCaptures;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type Report = {\n id: string;\n createdAt: string;\n name: string;\n href: string;\n status: string;\n result: string | null;\n subResult: string | null;\n properties: object | null;\n breakdown: object | null;\n documents: Array<{ id: string }>;\n checkId: string;\n};\n\nexport class Reports extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"reports\", axiosInstance);\n }\n\n public async find(id: string): Promise<Report> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(checkId: string): Promise<Report[]> {\n const { reports } = await this.request({\n method: Method.GET,\n query: { checkId }\n });\n\n return reports;\n }\n\n public async resume(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/resume` });\n }\n\n public async cancel(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/cancel` });\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type SdkTokenRequest = {\n applicantId: string;\n applicationId?: string | null;\n referrer?: string | null;\n crossDeviceUrl?: string | null;\n};\n\nexport class SdkTokens extends Resource<SdkTokenRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"sdk_token\", axiosInstance);\n }\n\n public async generate(sdkTokenRequest: SdkTokenRequest): Promise<string> {\n const { token } = await this.request({\n method: Method.POST,\n body: sdkTokenRequest\n });\n\n return token;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\n// url is also optional to allow updating.\nexport type WebhookRequest = {\n url?: string | null;\n enabled?: boolean;\n environments?: string[];\n events?: string[] | null;\n};\n\nexport type Webhook = {\n id: string;\n url: string;\n enabled: boolean;\n events: string[];\n token: string;\n href: string;\n environments: string[];\n};\n\nexport class Webhooks extends Resource<WebhookRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"webhooks\", axiosInstance);\n }\n\n public async create(webhookRequest: WebhookRequest): Promise<Webhook> {\n return this.request({ method: Method.POST, body: webhookRequest });\n }\n\n public async find(id: string): Promise<Webhook> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async update(\n id: string,\n webhookRequest: WebhookRequest\n ): Promise<Webhook> {\n return this.request({\n method: Method.PUT,\n path: id,\n body: webhookRequest\n });\n }\n\n public async delete(id: string): Promise<void> {\n await this.request({ method: Method.DELETE, path: id });\n }\n\n public async list(): Promise<Webhook[]> {\n const { webhooks } = await this.request({ method: Method.GET });\n\n return webhooks;\n }\n}\n","import axios, { AxiosInstance } from \"axios\";\nimport { version } from \"../package.json\";\nimport { Addresses } from \"./resources/Addresses\";\nimport { Applicants } from \"./resources/Applicants\";\nimport { Autofill } from \"./resources/Autofill\";\nimport { Checks } from \"./resources/Checks\";\nimport { Documents } from \"./resources/Documents\";\nimport { LivePhotos } from \"./resources/LivePhotos\";\nimport { LiveVideos } from \"./resources/LiveVideos\";\nimport { MotionCaptures } from \"./resources/MotionCaptures\";\nimport { Reports } from \"./resources/Reports\";\nimport { SdkTokens } from \"./resources/SdkTokens\";\nimport { Webhooks } from \"./resources/Webhooks\";\n\nexport enum Region {\n EU = \"EU\",\n US = \"US\",\n CA = \"CA\"\n}\n\nexport type OnfidoOptions = {\n apiToken: string;\n region: Region;\n timeout?: number;\n unknownApiUrl?: string;\n};\n\nexport class Onfido {\n public readonly axiosInstance: AxiosInstance;\n // Core resources\n public readonly applicant: Applicants;\n public readonly document: Documents;\n public readonly livePhoto: LivePhotos;\n public readonly liveVideo: LiveVideos;\n public readonly motionCapture: MotionCaptures;\n public readonly check: Checks;\n public readonly report: Reports;\n // Other endpoints\n public readonly address: Addresses;\n public readonly webhook: Webhooks;\n public readonly sdkToken: SdkTokens;\n public readonly autofill: Autofill;\n\n constructor({\n apiToken,\n region,\n timeout = 30_000,\n unknownApiUrl\n }: OnfidoOptions) {\n if (!apiToken) {\n throw new Error(\"No apiToken provided\");\n }\n if (!region || !Object.values(Region).includes(region)) {\n throw new Error(\n `Unknown or missing region '${region}'. ` +\n \"We previously defaulted to region 'EU', so if you previously didn’t \" +\n \"set a region or used api.onfido.com, please set your region to 'EU'\"\n );\n }\n\n const regionUrl = `https://api.${region.toLowerCase()}.onfido.com/v3.5/`;\n\n this.axiosInstance = axios.create({\n baseURL: unknownApiUrl || regionUrl,\n headers: {\n Authorization: `Token token=${apiToken}`,\n Accept: \"application/json\",\n \"User-Agent\": `onfido-node/${version}`\n },\n timeout\n });\n\n // Core resources\n this.applicant = new Applicants(this.axiosInstance);\n this.document = new Documents(this.axiosInstance);\n this.livePhoto = new LivePhotos(this.axiosInstance);\n this.liveVideo = new LiveVideos(this.axiosInstance);\n this.motionCapture = new MotionCaptures(this.axiosInstance);\n this.check = new Checks(this.axiosInstance);\n this.report = new Reports(this.axiosInstance);\n // Other endpoints\n this.address = new Addresses(this.axiosInstance);\n this.webhook = new Webhooks(this.axiosInstance);\n this.sdkToken = new SdkTokens(this.axiosInstance);\n this.autofill = new Autofill(this.axiosInstance);\n }\n}\n","import { OnfidoError } from \"./errors/OnfidoError\";\nimport { convertObjectToCamelCase } from \"./formatting\";\n\n// Require crypto instead of importing, because Node can be built without crypto support.\nlet crypto: typeof import(\"crypto\") | undefined;\ntry {\n // tslint:disable-next-line: no-var-requires\n crypto = require(\"crypto\");\n} catch {\n // We throw an error when verifying webhooks instead.\n}\n\nexport type WebhookEvent = {\n resourceType: string;\n action: string;\n object: {\n id: string;\n status: string;\n href: string;\n completedAtIso8601: string;\n };\n};\n\nexport class WebhookEventVerifier {\n private readonly webhookToken: string;\n\n constructor(webhookToken: string) {\n this.webhookToken = webhookToken;\n }\n\n public readPayload(\n rawEventBody: string | Buffer,\n hexSignature: string\n ): WebhookEvent {\n if (!crypto) {\n throw new Error(\"Verifying webhook events requires crypto support\");\n }\n\n const givenSignature = Buffer.from(hexSignature, \"hex\");\n\n // Compute the the actual HMAC signature from the raw request body.\n const hmac = crypto.createHmac(\"sha256\", this.webhookToken);\n hmac.update(rawEventBody);\n const eventSignature = hmac.digest();\n\n // Use timingSafeEqual to prevent against timing attacks.\n if (!crypto.timingSafeEqual(givenSignature, eventSignature)) {\n throw new OnfidoError(\"Invalid signature for webhook event\");\n }\n\n const { payload } = JSON.parse(rawEventBody.toString());\n return convertObjectToCamelCase(payload) as WebhookEvent;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/errors/OnfidoError.ts","../src/errors/OnfidoApiError.ts","../src/formatting.ts","../src/OnfidoDownload.ts","../src/Resource.ts","../src/resources/Addresses.ts","../src/resources/Applicants.ts","../src/resources/Autofill.ts","../src/resources/Checks.ts","../src/resources/Documents.ts","../src/resources/LivePhotos.ts","../src/resources/LiveVideos.ts","../src/resources/MotionCaptures.ts","../src/resources/Reports.ts","../src/resources/SdkTokens.ts","../src/resources/Webhooks.ts","../src/resources/WorkflowRuns.ts","../src/Onfido.ts","../src/WebhookEventVerifier.ts"],"sourcesContent":["export class OnfidoError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"OnfidoError\";\n }\n}\n","import { OnfidoError } from \"./OnfidoError\";\n\nexport class OnfidoApiError extends OnfidoError {\n public readonly responseBody: unknown;\n public readonly statusCode: number;\n public readonly type: string;\n public readonly fields: unknown;\n\n private constructor(\n message: string,\n responseBody: unknown,\n statusCode: number,\n type: string,\n fields: unknown\n ) {\n super(message);\n this.name = \"OnfidoApiError\";\n\n this.responseBody = responseBody;\n this.statusCode = statusCode;\n this.type = type;\n this.fields = fields;\n }\n\n public static fromResponse(\n responseBody: unknown,\n statusCode: number\n ): OnfidoApiError {\n const innerErrorData: unknown =\n responseBody instanceof Object ? (responseBody as any).error : {};\n\n const innerError: {\n type?: unknown;\n message?: unknown;\n fields?: unknown;\n } = innerErrorData instanceof Object ? innerErrorData : {};\n\n const type = `${innerError.type || \"unknown\"}`;\n const message = `${innerError.message || responseBody}`;\n const fields = innerError.fields;\n\n const fullMessage =\n `${message} (status code ${statusCode})` +\n (fields ? ` | ${JSON.stringify(fields)}` : \"\");\n\n return new OnfidoApiError(\n fullMessage,\n responseBody,\n statusCode,\n type,\n fields\n );\n }\n\n public isClientError(): boolean {\n return this.statusCode < 500;\n }\n}\n","import { Readable } from \"stream\";\nimport { IFormData } from \"./types/formData\";\n\n// Using require because \"form-data\" exports this object as a default export which breaks integration when esModuleInterop: false\n// tslint:disable-next-line: no-var-requires\nconst FormData = require(\"form-data\");\n\nexport type SimpleObject = { [key: string]: unknown };\n\ntype ContentsAndOptions = {\n contents: Readable;\n filepath: string;\n contentType?: string;\n};\n\nexport type FileLike = Readable | ContentsAndOptions;\n\nconst snakeCase = (camelCaseString: string): string =>\n camelCaseString.replace(/[A-Z]/g, char => `_${char.toLowerCase()}`);\n\nconst camelCase = (snakeCaseString: string): string =>\n snakeCaseString\n .replace(/_[0-9]/g, underscoreDigit => underscoreDigit[1])\n .replace(/_[a-z]/g, underscoreChar => underscoreChar[1].toUpperCase());\n\nconst deepMapObjectKeys = (value: unknown, f: (key: string) => string): any => {\n if (!(value instanceof Object)) {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(item => deepMapObjectKeys(item, f));\n } else {\n return Object.keys(value).reduce<SimpleObject>((acc, key) => {\n acc[f(key)] = deepMapObjectKeys((value as SimpleObject)[key], f);\n return acc;\n }, {});\n }\n};\n\nexport const convertObjectToSnakeCase = (requestBody: unknown): unknown => {\n // Converting to JSON and back first handles things like dates, circular references etc.\n requestBody = JSON.parse(JSON.stringify(requestBody));\n\n return deepMapObjectKeys(requestBody, snakeCase);\n};\n\nexport const convertObjectToCamelCase = (\n responseBody: SimpleObject\n): SimpleObject => deepMapObjectKeys(responseBody, camelCase);\n\nexport const toFormData = (object: SimpleObject): IFormData => {\n return Object.entries(object).reduce((formData, [key, value]) => {\n if (value instanceof Object && \"contents\" in value) {\n const { contents, ...options } = value as ContentsAndOptions;\n formData.append(snakeCase(key), contents, options);\n } else if (value !== undefined && value !== null) {\n if (value instanceof Object) {\n for (const [elementKey, elementValue] of Object.entries(value)) {\n formData.append(snakeCase(key + \"[\" + elementKey + \"]\"), elementValue);\n }\n } else {\n formData.append(snakeCase(key), value);\n }\n }\n return formData;\n }, new FormData());\n};\n","import { IncomingMessage } from \"http\";\nimport { PassThrough, Readable } from \"stream\";\n\nexport class OnfidoDownload {\n private readonly incomingMessage: IncomingMessage;\n\n constructor(incomingMessage: IncomingMessage) {\n this.incomingMessage = incomingMessage;\n }\n\n public asStream(): Readable {\n // Use a PassThrough stream so the IncomingMessage isn't exposed.\n const passThroughStream = new PassThrough();\n this.incomingMessage.pipe(passThroughStream);\n return passThroughStream;\n }\n\n public get contentType(): string {\n return this.incomingMessage.headers[\"content-type\"]!;\n }\n}\n","import { AxiosInstance, AxiosPromise, AxiosResponse } from \"axios\";\nimport { IncomingMessage } from \"http\";\nimport { Readable } from \"stream\";\nimport { OnfidoApiError } from \"./errors/OnfidoApiError\";\nimport { OnfidoError } from \"./errors/OnfidoError\";\nimport {\n convertObjectToCamelCase,\n convertObjectToSnakeCase,\n SimpleObject,\n toFormData\n} from \"./formatting\";\nimport { OnfidoDownload } from \"./OnfidoDownload\";\n\nexport enum Method {\n GET = \"get\",\n POST = \"post\",\n PUT = \"put\",\n DELETE = \"delete\"\n}\n\nconst isJson = (response: AxiosResponse<unknown>): boolean =>\n (response.headers[\"content-type\"] || \"\").includes(\"application/json\");\n\nconst readFullStream = (stream: Readable): Promise<unknown> =>\n new Promise((resolve): void => {\n let all = \"\";\n\n stream.on(\"data\", data => (all += data));\n stream.on(\"error\", () => resolve(\"An error occurred reading the response\"));\n stream.on(\"end\", () => {\n // Try to parse as JSON, but fall back to just returning the raw text.\n try {\n resolve(JSON.parse(all));\n } catch {\n resolve(all);\n }\n });\n });\n\nconst convertAxiosErrorToOnfidoError = async (\n error: any\n): Promise<OnfidoError> => {\n if (!error.response) {\n return new OnfidoError(\n error.message || \"An unknown error occurred making the request\"\n );\n }\n\n // Received a 4XX or 5XX response.\n const response: AxiosResponse = error.response;\n const data = response.data;\n\n // If we were downloading a file, we will have a stream instead of a string.\n const body = data instanceof Readable ? await readFullStream(data) : data;\n\n return OnfidoApiError.fromResponse(body, response.status);\n};\n\nconst handleResponse = async (request: AxiosPromise<any>): Promise<any> => {\n try {\n const response = await request;\n const data = response.data;\n return isJson(response) ? convertObjectToCamelCase(data) : data;\n } catch (error) {\n throw await convertAxiosErrorToOnfidoError(error);\n }\n};\n\nexport class Resource<T extends SimpleObject> {\n private readonly name: string;\n private readonly axiosInstance: AxiosInstance;\n\n protected constructor(name: string, axiosInstance: AxiosInstance) {\n this.name = name;\n this.axiosInstance = axiosInstance;\n }\n\n protected async request({\n method,\n path = \"\",\n body,\n query\n }: {\n method: Method;\n path?: string;\n body?: T;\n query?: SimpleObject;\n }): Promise<any> {\n const url = path === null ? `${this.name}` : `${this.name}/${path}`;\n const request = this.axiosInstance({\n method,\n url: url,\n data: body && convertObjectToSnakeCase(body),\n params: query && convertObjectToSnakeCase(query)\n });\n\n return handleResponse(request);\n }\n\n protected async upload(body: T): Promise<any> {\n const formData = toFormData(body);\n\n const request = this.axiosInstance({\n method: Method.POST,\n url: `${this.name}/`,\n data: formData,\n headers: formData.getHeaders()\n });\n\n return handleResponse(request);\n }\n\n protected async download(path: string): Promise<OnfidoDownload> {\n const request = this.axiosInstance({\n method: Method.GET,\n url: `${this.name}/${path}`,\n responseType: \"stream\",\n // Accept a response with any content type (e.g. image/png, application/pdf, video/mp4)\n headers: { Accept: \"*/*\" }\n });\n\n const stream: IncomingMessage = await handleResponse(request);\n return new OnfidoDownload(stream);\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\ntype AddressOptional = {\n flatNumber: string | null;\n buildingNumber: string | null;\n buildingName: string | null;\n street: string | null;\n subStreet: string | null;\n town: string | null;\n state: string | null;\n line1: string | null;\n line2: string | null;\n line3: string | null;\n};\n\nexport type AddressRequest = {\n postcode: string;\n country: string;\n} & Partial<AddressOptional>;\n\nexport type Address = {\n postcode: string;\n country: string;\n} & Partial<AddressOptional>;\n\nexport class Addresses extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"addresses\", axiosInstance);\n }\n\n public async pick(postcode: string): Promise<Address[]> {\n const { addresses } = await this.request({\n method: Method.GET,\n path: \"pick\",\n query: { postcode }\n });\n\n return addresses;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\nimport { Address, AddressRequest } from \"./Addresses\";\nimport { IdNumber, IdNumberRequest } from \"./IdNumbers\";\nimport { Location, LocationRequest } from \"./Location\";\nimport { ConsentsRequest } from \"./ConsentsRequest\";\n\n// firstName and lastName are also optional, to allow updating.\nexport type ApplicantRequest = {\n firstName?: string | null;\n lastName?: string | null;\n email?: string | null;\n dob?: string | null;\n address?: AddressRequest | null;\n idNumbers?: IdNumberRequest[] | null;\n phoneNumber?: string | null;\n location?: LocationRequest | null;\n consents?: ConsentsRequest[] | null;\n};\n\nexport type Applicant = {\n id: string;\n createdAt: string;\n deleteAt: string | null;\n href: string;\n firstName: string;\n lastName: string;\n email: string | null;\n dob: string | null;\n address: Address | null;\n idNumbers: IdNumber[] | null;\n phoneNumber: string | null;\n location: Location | null;\n};\n\nexport class Applicants extends Resource<ApplicantRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"applicants\", axiosInstance);\n }\n\n public async create(applicantRequest: ApplicantRequest): Promise<Applicant> {\n return this.request({ method: Method.POST, body: applicantRequest });\n }\n\n public async find(id: string): Promise<Applicant> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async update(\n id: string,\n applicantRequest: ApplicantRequest\n ): Promise<Applicant> {\n return this.request({\n method: Method.PUT,\n path: id,\n body: applicantRequest\n });\n }\n\n public async delete(id: string): Promise<void> {\n await this.request({ method: Method.DELETE, path: id });\n }\n\n public async restore(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/restore` });\n }\n\n public async list({\n page,\n perPage,\n includeDeleted\n }: {\n page?: number;\n perPage?: number;\n includeDeleted?: boolean;\n } = {}): Promise<Applicant[]> {\n const { applicants } = await this.request({\n method: Method.GET,\n query: { page, perPage, includeDeleted }\n });\n\n return applicants;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type ExtractionResult = {\n documentId: string;\n documentClassification: {\n issuingCountry: string;\n documentType: string;\n issuingState?: string;\n };\n extractedData: {\n documentNumber?: string;\n firstName?: string;\n lastName?: string;\n middleName?: string;\n fullName?: string;\n gender?: string;\n dateOfBirth?: string;\n dateOfExpiry?: string;\n nationality?: string;\n mrzLine1?: string;\n mrzLine2?: string;\n mrzLine3?: string;\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n addressLine4?: string;\n addressLine5?: string;\n };\n};\n\ntype AutofillResource = {\n documentId: string;\n};\n\nexport class Autofill extends Resource<AutofillResource> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"extractions\", axiosInstance);\n }\n\n public async perform(documentId: string): Promise<ExtractionResult> {\n return this.request({\n method: Method.POST,\n body: { documentId }\n });\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type CheckRequest = {\n applicantId: string;\n reportNames: string[];\n documentIds?: string[] | null;\n applicantProvidesData?: boolean;\n asynchronous?: boolean;\n tags?: string[] | null;\n suppressFormEmails?: boolean;\n redirectUri?: string | null;\n privacyNoticesReadConsentGiven?: boolean;\n webhookIds?: string[] | null;\n subResult?: string;\n consider?: string[];\n};\n\nexport type Check = {\n id: string;\n reportIds: string[];\n createdAt: string;\n href: string;\n applicantId: string;\n applicantProvidesData: boolean;\n status: string;\n tags: string[];\n result: string | null;\n formUri: string | null;\n redirectUri: string | null;\n resultsUri: string;\n privacyNoticesReadConsentGiven: boolean;\n webhookIds: string[] | null;\n};\n\nexport class Checks extends Resource<CheckRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"checks\", axiosInstance);\n }\n\n public async create(checkRequest: CheckRequest): Promise<Check> {\n return this.request({ method: Method.POST, body: checkRequest });\n }\n\n public async find(id: string): Promise<Check> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<Check[]> {\n const { checks } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return checks;\n }\n\n public async resume(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/resume` });\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { FileLike } from \"../formatting\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\nimport { LocationRequest } from \"./Location\";\n\nexport type DocumentRequest = {\n applicantId?: string | null;\n file: FileLike;\n type: string;\n side?: string | null;\n issuingCountry?: string | null;\n validateImageQuality?: boolean | null;\n location?: LocationRequest | null;\n};\n\nexport type Document = {\n id: string;\n applicantId: string | null;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n type: string;\n side: string | null;\n issuingCountry: string | null;\n};\n\nexport class Documents extends Resource<DocumentRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"documents\", axiosInstance);\n }\n\n public async upload(documentRequest: DocumentRequest): Promise<Document> {\n return super.upload(documentRequest);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async find(id: string): Promise<Document> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<Document[]> {\n const { documents } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return documents;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { FileLike } from \"../formatting\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type LivePhotoRequest = {\n applicantId: string;\n file: FileLike;\n advancedValidation?: string;\n};\n\nexport type LivePhoto = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class LivePhotos extends Resource<LivePhotoRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"live_photos\", axiosInstance);\n }\n\n public async upload(livePhotoRequest: LivePhotoRequest): Promise<LivePhoto> {\n return super.upload(livePhotoRequest);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async find(id: string): Promise<LivePhoto> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<LivePhoto[]> {\n const { livePhotos } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return livePhotos;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type LiveVideo = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class LiveVideos extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"live_videos\", axiosInstance);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async frame(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/frame`);\n }\n\n public async find(id: string): Promise<LiveVideo> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<LiveVideo[]> {\n const { liveVideos } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return liveVideos;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type MotionCapture = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class MotionCaptures extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"motion_captures\", axiosInstance);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async frame(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/frame`);\n }\n\n public async find(id: string): Promise<MotionCapture> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<MotionCapture[]> {\n const { motionCaptures } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return motionCaptures;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type Report = {\n id: string;\n createdAt: string;\n name: string;\n href: string;\n status: string;\n result: string | null;\n subResult: string | null;\n properties: object | null;\n breakdown: object | null;\n documents: Array<{ id: string }>;\n checkId: string;\n};\n\nexport class Reports extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"reports\", axiosInstance);\n }\n\n public async find(id: string): Promise<Report> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(checkId: string): Promise<Report[]> {\n const { reports } = await this.request({\n method: Method.GET,\n query: { checkId }\n });\n\n return reports;\n }\n\n public async resume(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/resume` });\n }\n\n public async cancel(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/cancel` });\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type SdkTokenRequest = {\n applicantId: string;\n applicationId?: string | null;\n referrer?: string | null;\n crossDeviceUrl?: string | null;\n};\n\nexport class SdkTokens extends Resource<SdkTokenRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"sdk_token\", axiosInstance);\n }\n\n public async generate(sdkTokenRequest: SdkTokenRequest): Promise<string> {\n const { token } = await this.request({\n method: Method.POST,\n body: sdkTokenRequest\n });\n\n return token;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\n// url is also optional to allow updating.\nexport type WebhookRequest = {\n url?: string | null;\n enabled?: boolean;\n environments?: string[];\n events?: string[] | null;\n};\n\nexport type Webhook = {\n id: string;\n url: string;\n enabled: boolean;\n events: string[];\n token: string;\n href: string;\n environments: string[];\n};\n\nexport class Webhooks extends Resource<WebhookRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"webhooks\", axiosInstance);\n }\n\n public async create(webhookRequest: WebhookRequest): Promise<Webhook> {\n return this.request({ method: Method.POST, body: webhookRequest });\n }\n\n public async find(id: string): Promise<Webhook> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async update(\n id: string,\n webhookRequest: WebhookRequest\n ): Promise<Webhook> {\n return this.request({\n method: Method.PUT,\n path: id,\n body: webhookRequest\n });\n }\n\n public async delete(id: string): Promise<void> {\n await this.request({ method: Method.DELETE, path: id });\n }\n\n public async list(): Promise<Webhook[]> {\n const { webhooks } = await this.request({ method: Method.GET });\n\n return webhooks;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type WorkflowRunRequest = {\n applicantId: string;\n workflowId: string;\n customData?: any;\n};\n\ntype WorkflowRunError = {\n type:\tstring;\n message: string;\n}\n\ntype WorkflowRunLink = {\n url:\tstring;\n completed_redirect_url:\tstring;\n expired_redirect_url:\tstring;\n expires_at:\tstring;\n language: string;\n}\n\nexport type WorkflowRun = {\n id: string;\n applicantId: string;\n workflowId: string;\n workflowVersionId: number;\n dashboardUrl: string;\n status: string;\n output: any;\n reasons: string[] | null;\n error: WorkflowRunError | null;\n link: WorkflowRunLink | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type WorkflowRunListRequest = {\n page?: number;\n status?: string;\n created_at_gt?: string;\n created_at_lt?: string;\n}\n\nexport class WorkflowRuns extends Resource<WorkflowRunRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"workflow_runs\", axiosInstance);\n }\n\n public async create(workflowRunRequest: WorkflowRunRequest): Promise<WorkflowRun> {\n return this.request({ method: Method.POST, body: workflowRunRequest });\n }\n\n public async find(id: string): Promise<WorkflowRun> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(queryParams?: WorkflowRunListRequest): Promise<WorkflowRun[]> {\n const workflowRuns = await this.request({\n method: Method.GET,\n query: queryParams\n });\n\n return workflowRuns;\n }\n}\n","import axios, { AxiosInstance } from \"axios\";\nimport { version } from \"../package.json\";\nimport { Addresses } from \"./resources/Addresses\";\nimport { Applicants } from \"./resources/Applicants\";\nimport { Autofill } from \"./resources/Autofill\";\nimport { Checks } from \"./resources/Checks\";\nimport { Documents } from \"./resources/Documents\";\nimport { LivePhotos } from \"./resources/LivePhotos\";\nimport { LiveVideos } from \"./resources/LiveVideos\";\nimport { MotionCaptures } from \"./resources/MotionCaptures\";\nimport { Reports } from \"./resources/Reports\";\nimport { SdkTokens } from \"./resources/SdkTokens\";\nimport { Webhooks } from \"./resources/Webhooks\";\nimport { WorkflowRuns } from \"./resources/WorkflowRuns\";\n\nexport enum Region {\n EU = \"EU\",\n US = \"US\",\n CA = \"CA\"\n}\n\nexport type OnfidoOptions = {\n apiToken: string;\n region: Region;\n timeout?: number;\n unknownApiUrl?: string;\n};\n\nexport class Onfido {\n public readonly axiosInstance: AxiosInstance;\n // Core resources\n public readonly applicant: Applicants;\n public readonly document: Documents;\n public readonly livePhoto: LivePhotos;\n public readonly liveVideo: LiveVideos;\n public readonly motionCapture: MotionCaptures;\n public readonly check: Checks;\n public readonly report: Reports;\n public readonly workflowRun: WorkflowRuns;\n // Other endpoints\n public readonly address: Addresses;\n public readonly webhook: Webhooks;\n public readonly sdkToken: SdkTokens;\n public readonly autofill: Autofill;\n\n constructor({\n apiToken,\n region,\n timeout = 30_000,\n unknownApiUrl\n }: OnfidoOptions) {\n if (!apiToken) {\n throw new Error(\"No apiToken provided\");\n }\n if (!region || !Object.values(Region).includes(region)) {\n throw new Error(\n `Unknown or missing region '${region}'. ` +\n \"We previously defaulted to region 'EU', so if you previously didn’t \" +\n \"set a region or used api.onfido.com, please set your region to 'EU'\"\n );\n }\n\n const regionUrl = `https://api.${region.toLowerCase()}.onfido.com/v3.6/`;\n\n this.axiosInstance = axios.create({\n baseURL: unknownApiUrl || regionUrl,\n headers: {\n Authorization: `Token token=${apiToken}`,\n Accept: \"application/json\",\n \"User-Agent\": `onfido-node/${version}`\n },\n timeout\n });\n\n // Core resources\n this.applicant = new Applicants(this.axiosInstance);\n this.document = new Documents(this.axiosInstance);\n this.livePhoto = new LivePhotos(this.axiosInstance);\n this.liveVideo = new LiveVideos(this.axiosInstance);\n this.motionCapture = new MotionCaptures(this.axiosInstance);\n this.check = new Checks(this.axiosInstance);\n this.report = new Reports(this.axiosInstance);\n this.workflowRun = new WorkflowRuns(this.axiosInstance);\n // Other endpoints\n this.address = new Addresses(this.axiosInstance);\n this.webhook = new Webhooks(this.axiosInstance);\n this.sdkToken = new SdkTokens(this.axiosInstance);\n this.autofill = new Autofill(this.axiosInstance);\n }\n}\n","import { OnfidoError } from \"./errors/OnfidoError\";\nimport { convertObjectToCamelCase } from \"./formatting\";\n\n// Require crypto instead of importing, because Node can be built without crypto support.\nlet crypto: typeof import(\"crypto\") | undefined;\ntry {\n // tslint:disable-next-line: no-var-requires\n crypto = require(\"crypto\");\n} catch {\n // We throw an error when verifying webhooks instead.\n}\n\nexport type WebhookEvent = {\n resourceType: string;\n action: string;\n object: {\n id: string;\n status: string;\n href: string;\n completedAtIso8601: string;\n };\n};\n\nexport class WebhookEventVerifier {\n private readonly webhookToken: string;\n\n constructor(webhookToken: string) {\n this.webhookToken = webhookToken;\n }\n\n public readPayload(\n rawEventBody: string | Buffer,\n hexSignature: string\n ): WebhookEvent {\n if (!crypto) {\n throw new Error(\"Verifying webhook events requires crypto support\");\n }\n\n const givenSignature = Buffer.from(hexSignature, \"hex\");\n\n // Compute the the actual HMAC signature from the raw request body.\n const hmac = crypto.createHmac(\"sha256\", this.webhookToken);\n hmac.update(rawEventBody);\n const eventSignature = hmac.digest();\n\n // Use timingSafeEqual to prevent against timing attacks.\n if (!crypto.timingSafeEqual(givenSignature, eventSignature)) {\n throw new OnfidoError(\"Invalid signature for webhook event\");\n }\n\n const { payload } = JSON.parse(rawEventBody.toString());\n return convertObjectToCamelCase(payload) as WebhookEvent;\n }\n}\n"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
7
7
  var axios = _interopDefault(require('axios'));
8
8
  var stream = require('stream');
9
9
 
10
- var version = "2.5.0";
10
+ var version = "2.7.0";
11
11
 
12
12
  class OnfidoError extends Error {
13
13
  constructor(message) {
@@ -178,9 +178,10 @@ class Resource {
178
178
  this.axiosInstance = axiosInstance;
179
179
  }
180
180
  async request({ method, path = "", body, query }) {
181
+ const url = path === null ? `${this.name}` : `${this.name}/${path}`;
181
182
  const request = this.axiosInstance({
182
183
  method,
183
- url: `${this.name}/${path}`,
184
+ url: url,
184
185
  data: body && convertObjectToSnakeCase(body),
185
186
  params: query && convertObjectToSnakeCase(query)
186
187
  });
@@ -441,6 +442,25 @@ class Webhooks extends Resource {
441
442
  }
442
443
  }
443
444
 
445
+ class WorkflowRuns extends Resource {
446
+ constructor(axiosInstance) {
447
+ super("workflow_runs", axiosInstance);
448
+ }
449
+ async create(workflowRunRequest) {
450
+ return this.request({ method: Method.POST, body: workflowRunRequest });
451
+ }
452
+ async find(id) {
453
+ return this.request({ method: Method.GET, path: id });
454
+ }
455
+ async list(queryParams) {
456
+ const workflowRuns = await this.request({
457
+ method: Method.GET,
458
+ query: queryParams
459
+ });
460
+ return workflowRuns;
461
+ }
462
+ }
463
+
444
464
  (function (Region) {
445
465
  Region["EU"] = "EU";
446
466
  Region["US"] = "US";
@@ -456,7 +476,7 @@ class Onfido {
456
476
  "We previously defaulted to region 'EU', so if you previously didn’t " +
457
477
  "set a region or used api.onfido.com, please set your region to 'EU'");
458
478
  }
459
- const regionUrl = `https://api.${region.toLowerCase()}.onfido.com/v3.5/`;
479
+ const regionUrl = `https://api.${region.toLowerCase()}.onfido.com/v3.6/`;
460
480
  this.axiosInstance = axios.create({
461
481
  baseURL: unknownApiUrl || regionUrl,
462
482
  headers: {
@@ -474,6 +494,7 @@ class Onfido {
474
494
  this.motionCapture = new MotionCaptures(this.axiosInstance);
475
495
  this.check = new Checks(this.axiosInstance);
476
496
  this.report = new Reports(this.axiosInstance);
497
+ this.workflowRun = new WorkflowRuns(this.axiosInstance);
477
498
  // Other endpoints
478
499
  this.address = new Addresses(this.axiosInstance);
479
500
  this.webhook = new Webhooks(this.axiosInstance);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/errors/OnfidoError.ts","../src/errors/OnfidoApiError.ts","../src/formatting.ts","../src/OnfidoDownload.ts","../src/Resource.ts","../src/resources/Addresses.ts","../src/resources/Applicants.ts","../src/resources/Autofill.ts","../src/resources/Checks.ts","../src/resources/Documents.ts","../src/resources/LivePhotos.ts","../src/resources/LiveVideos.ts","../src/resources/MotionCaptures.ts","../src/resources/Reports.ts","../src/resources/SdkTokens.ts","../src/resources/Webhooks.ts","../src/Onfido.ts","../src/WebhookEventVerifier.ts"],"sourcesContent":["export class OnfidoError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"OnfidoError\";\n }\n}\n","import { OnfidoError } from \"./OnfidoError\";\n\nexport class OnfidoApiError extends OnfidoError {\n public readonly responseBody: unknown;\n public readonly statusCode: number;\n public readonly type: string;\n public readonly fields: unknown;\n\n private constructor(\n message: string,\n responseBody: unknown,\n statusCode: number,\n type: string,\n fields: unknown\n ) {\n super(message);\n this.name = \"OnfidoApiError\";\n\n this.responseBody = responseBody;\n this.statusCode = statusCode;\n this.type = type;\n this.fields = fields;\n }\n\n public static fromResponse(\n responseBody: unknown,\n statusCode: number\n ): OnfidoApiError {\n const innerErrorData: unknown =\n responseBody instanceof Object ? (responseBody as any).error : {};\n\n const innerError: {\n type?: unknown;\n message?: unknown;\n fields?: unknown;\n } = innerErrorData instanceof Object ? innerErrorData : {};\n\n const type = `${innerError.type || \"unknown\"}`;\n const message = `${innerError.message || responseBody}`;\n const fields = innerError.fields;\n\n const fullMessage =\n `${message} (status code ${statusCode})` +\n (fields ? ` | ${JSON.stringify(fields)}` : \"\");\n\n return new OnfidoApiError(\n fullMessage,\n responseBody,\n statusCode,\n type,\n fields\n );\n }\n\n public isClientError(): boolean {\n return this.statusCode < 500;\n }\n}\n","import { Readable } from \"stream\";\nimport { IFormData } from \"./types/formData\";\n\n// Using require because \"form-data\" exports this object as a default export which breaks integration when esModuleInterop: false\n// tslint:disable-next-line: no-var-requires\nconst FormData = require(\"form-data\");\n\nexport type SimpleObject = { [key: string]: unknown };\n\ntype ContentsAndOptions = {\n contents: Readable;\n filepath: string;\n contentType?: string;\n};\n\nexport type FileLike = Readable | ContentsAndOptions;\n\nconst snakeCase = (camelCaseString: string): string =>\n camelCaseString.replace(/[A-Z]/g, char => `_${char.toLowerCase()}`);\n\nconst camelCase = (snakeCaseString: string): string =>\n snakeCaseString\n .replace(/_[0-9]/g, underscoreDigit => underscoreDigit[1])\n .replace(/_[a-z]/g, underscoreChar => underscoreChar[1].toUpperCase());\n\nconst deepMapObjectKeys = (value: unknown, f: (key: string) => string): any => {\n if (!(value instanceof Object)) {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(item => deepMapObjectKeys(item, f));\n } else {\n return Object.keys(value).reduce<SimpleObject>((acc, key) => {\n acc[f(key)] = deepMapObjectKeys((value as SimpleObject)[key], f);\n return acc;\n }, {});\n }\n};\n\nexport const convertObjectToSnakeCase = (requestBody: unknown): unknown => {\n // Converting to JSON and back first handles things like dates, circular references etc.\n requestBody = JSON.parse(JSON.stringify(requestBody));\n\n return deepMapObjectKeys(requestBody, snakeCase);\n};\n\nexport const convertObjectToCamelCase = (\n responseBody: SimpleObject\n): SimpleObject => deepMapObjectKeys(responseBody, camelCase);\n\nexport const toFormData = (object: SimpleObject): IFormData => {\n return Object.entries(object).reduce((formData, [key, value]) => {\n if (value instanceof Object && \"contents\" in value) {\n const { contents, ...options } = value as ContentsAndOptions;\n formData.append(snakeCase(key), contents, options);\n } else if (value !== undefined && value !== null) {\n if (value instanceof Object) {\n for (const [elementKey, elementValue] of Object.entries(value)) {\n formData.append(snakeCase(key + \"[\" + elementKey + \"]\"), elementValue);\n }\n } else {\n formData.append(snakeCase(key), value);\n }\n }\n return formData;\n }, new FormData());\n};\n","import { IncomingMessage } from \"http\";\nimport { PassThrough, Readable } from \"stream\";\n\nexport class OnfidoDownload {\n private readonly incomingMessage: IncomingMessage;\n\n constructor(incomingMessage: IncomingMessage) {\n this.incomingMessage = incomingMessage;\n }\n\n public asStream(): Readable {\n // Use a PassThrough stream so the IncomingMessage isn't exposed.\n const passThroughStream = new PassThrough();\n this.incomingMessage.pipe(passThroughStream);\n return passThroughStream;\n }\n\n public get contentType(): string {\n return this.incomingMessage.headers[\"content-type\"]!;\n }\n}\n","import { AxiosInstance, AxiosPromise, AxiosResponse } from \"axios\";\nimport { IncomingMessage } from \"http\";\nimport { Readable } from \"stream\";\nimport { OnfidoApiError } from \"./errors/OnfidoApiError\";\nimport { OnfidoError } from \"./errors/OnfidoError\";\nimport {\n convertObjectToCamelCase,\n convertObjectToSnakeCase,\n SimpleObject,\n toFormData\n} from \"./formatting\";\nimport { OnfidoDownload } from \"./OnfidoDownload\";\n\nexport enum Method {\n GET = \"get\",\n POST = \"post\",\n PUT = \"put\",\n DELETE = \"delete\"\n}\n\nconst isJson = (response: AxiosResponse<unknown>): boolean =>\n (response.headers[\"content-type\"] || \"\").includes(\"application/json\");\n\nconst readFullStream = (stream: Readable): Promise<unknown> =>\n new Promise((resolve): void => {\n let all = \"\";\n\n stream.on(\"data\", data => (all += data));\n stream.on(\"error\", () => resolve(\"An error occurred reading the response\"));\n stream.on(\"end\", () => {\n // Try to parse as JSON, but fall back to just returning the raw text.\n try {\n resolve(JSON.parse(all));\n } catch {\n resolve(all);\n }\n });\n });\n\nconst convertAxiosErrorToOnfidoError = async (\n error: any\n): Promise<OnfidoError> => {\n if (!error.response) {\n return new OnfidoError(\n error.message || \"An unknown error occurred making the request\"\n );\n }\n\n // Received a 4XX or 5XX response.\n const response: AxiosResponse = error.response;\n const data = response.data;\n\n // If we were downloading a file, we will have a stream instead of a string.\n const body = data instanceof Readable ? await readFullStream(data) : data;\n\n return OnfidoApiError.fromResponse(body, response.status);\n};\n\nconst handleResponse = async (request: AxiosPromise<any>): Promise<any> => {\n try {\n const response = await request;\n const data = response.data;\n return isJson(response) ? convertObjectToCamelCase(data) : data;\n } catch (error) {\n throw await convertAxiosErrorToOnfidoError(error);\n }\n};\n\nexport class Resource<T extends SimpleObject> {\n private readonly name: string;\n private readonly axiosInstance: AxiosInstance;\n\n protected constructor(name: string, axiosInstance: AxiosInstance) {\n this.name = name;\n this.axiosInstance = axiosInstance;\n }\n\n protected async request({\n method,\n path = \"\",\n body,\n query\n }: {\n method: Method;\n path?: string;\n body?: T;\n query?: SimpleObject;\n }): Promise<any> {\n const request = this.axiosInstance({\n method,\n url: `${this.name}/${path}`,\n data: body && convertObjectToSnakeCase(body),\n params: query && convertObjectToSnakeCase(query)\n });\n\n return handleResponse(request);\n }\n\n protected async upload(body: T): Promise<any> {\n const formData = toFormData(body);\n\n const request = this.axiosInstance({\n method: Method.POST,\n url: `${this.name}/`,\n data: formData,\n headers: formData.getHeaders()\n });\n\n return handleResponse(request);\n }\n\n protected async download(path: string): Promise<OnfidoDownload> {\n const request = this.axiosInstance({\n method: Method.GET,\n url: `${this.name}/${path}`,\n responseType: \"stream\",\n // Accept a response with any content type (e.g. image/png, application/pdf, video/mp4)\n headers: { Accept: \"*/*\" }\n });\n\n const stream: IncomingMessage = await handleResponse(request);\n return new OnfidoDownload(stream);\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\ntype AddressOptional = {\n flatNumber: string | null;\n buildingNumber: string | null;\n buildingName: string | null;\n street: string | null;\n subStreet: string | null;\n town: string | null;\n state: string | null;\n line1: string | null;\n line2: string | null;\n line3: string | null;\n};\n\nexport type AddressRequest = {\n postcode: string;\n country: string;\n} & Partial<AddressOptional>;\n\nexport type Address = {\n postcode: string;\n country: string;\n} & Partial<AddressOptional>;\n\nexport class Addresses extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"addresses\", axiosInstance);\n }\n\n public async pick(postcode: string): Promise<Address[]> {\n const { addresses } = await this.request({\n method: Method.GET,\n path: \"pick\",\n query: { postcode }\n });\n\n return addresses;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\nimport { Address, AddressRequest } from \"./Addresses\";\nimport { IdNumber, IdNumberRequest } from \"./IdNumbers\";\nimport { Location, LocationRequest } from \"./Location\";\nimport { ConsentsRequest } from \"./ConsentsRequest\";\n\n// firstName and lastName are also optional, to allow updating.\nexport type ApplicantRequest = {\n firstName?: string | null;\n lastName?: string | null;\n email?: string | null;\n dob?: string | null;\n address?: AddressRequest | null;\n idNumbers?: IdNumberRequest[] | null;\n phoneNumber?: string | null;\n location?: LocationRequest | null;\n consents?: ConsentsRequest[] | null;\n};\n\nexport type Applicant = {\n id: string;\n createdAt: string;\n deleteAt: string | null;\n href: string;\n firstName: string;\n lastName: string;\n email: string | null;\n dob: string | null;\n address: Address | null;\n idNumbers: IdNumber[] | null;\n phoneNumber: string | null;\n location: Location | null;\n};\n\nexport class Applicants extends Resource<ApplicantRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"applicants\", axiosInstance);\n }\n\n public async create(applicantRequest: ApplicantRequest): Promise<Applicant> {\n return this.request({ method: Method.POST, body: applicantRequest });\n }\n\n public async find(id: string): Promise<Applicant> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async update(\n id: string,\n applicantRequest: ApplicantRequest\n ): Promise<Applicant> {\n return this.request({\n method: Method.PUT,\n path: id,\n body: applicantRequest\n });\n }\n\n public async delete(id: string): Promise<void> {\n await this.request({ method: Method.DELETE, path: id });\n }\n\n public async restore(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/restore` });\n }\n\n public async list({\n page,\n perPage,\n includeDeleted\n }: {\n page?: number;\n perPage?: number;\n includeDeleted?: boolean;\n } = {}): Promise<Applicant[]> {\n const { applicants } = await this.request({\n method: Method.GET,\n query: { page, perPage, includeDeleted }\n });\n\n return applicants;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type ExtractionResult = {\n documentId: string;\n documentClassification: {\n issuingCountry: string;\n documentType: string;\n issuingState?: string;\n };\n extractedData: {\n documentNumber?: string;\n firstName?: string;\n lastName?: string;\n middleName?: string;\n fullName?: string;\n gender?: string;\n dateOfBirth?: string;\n dateOfExpiry?: string;\n nationality?: string;\n mrzLine1?: string;\n mrzLine2?: string;\n mrzLine3?: string;\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n addressLine4?: string;\n addressLine5?: string;\n };\n};\n\ntype AutofillResource = {\n documentId: string;\n};\n\nexport class Autofill extends Resource<AutofillResource> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"extractions\", axiosInstance);\n }\n\n public async perform(documentId: string): Promise<ExtractionResult> {\n return this.request({\n method: Method.POST,\n body: { documentId }\n });\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type CheckRequest = {\n applicantId: string;\n reportNames: string[];\n documentIds?: string[] | null;\n applicantProvidesData?: boolean;\n asynchronous?: boolean;\n tags?: string[] | null;\n suppressFormEmails?: boolean;\n redirectUri?: string | null;\n privacyNoticesReadConsentGiven?: boolean;\n webhookIds?: string[] | null;\n subResult?: string;\n consider?: string[];\n};\n\nexport type Check = {\n id: string;\n reportIds: string[];\n createdAt: string;\n href: string;\n applicantId: string;\n applicantProvidesData: boolean;\n status: string;\n tags: string[];\n result: string | null;\n formUri: string | null;\n redirectUri: string | null;\n resultsUri: string;\n privacyNoticesReadConsentGiven: boolean;\n webhookIds: string[] | null;\n};\n\nexport class Checks extends Resource<CheckRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"checks\", axiosInstance);\n }\n\n public async create(checkRequest: CheckRequest): Promise<Check> {\n return this.request({ method: Method.POST, body: checkRequest });\n }\n\n public async find(id: string): Promise<Check> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<Check[]> {\n const { checks } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return checks;\n }\n\n public async resume(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/resume` });\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { FileLike } from \"../formatting\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\nimport { LocationRequest } from \"./Location\";\n\nexport type DocumentRequest = {\n applicantId?: string | null;\n file: FileLike;\n type: string;\n side?: string | null;\n issuingCountry?: string | null;\n validateImageQuality?: boolean | null;\n location?: LocationRequest | null;\n};\n\nexport type Document = {\n id: string;\n applicantId: string | null;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n type: string;\n side: string | null;\n issuingCountry: string | null;\n};\n\nexport class Documents extends Resource<DocumentRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"documents\", axiosInstance);\n }\n\n public async upload(documentRequest: DocumentRequest): Promise<Document> {\n return super.upload(documentRequest);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async find(id: string): Promise<Document> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<Document[]> {\n const { documents } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return documents;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { FileLike } from \"../formatting\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type LivePhotoRequest = {\n applicantId: string;\n file: FileLike;\n advancedValidation?: string;\n};\n\nexport type LivePhoto = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class LivePhotos extends Resource<LivePhotoRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"live_photos\", axiosInstance);\n }\n\n public async upload(livePhotoRequest: LivePhotoRequest): Promise<LivePhoto> {\n return super.upload(livePhotoRequest);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async find(id: string): Promise<LivePhoto> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<LivePhoto[]> {\n const { livePhotos } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return livePhotos;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type LiveVideo = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class LiveVideos extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"live_videos\", axiosInstance);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async frame(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/frame`);\n }\n\n public async find(id: string): Promise<LiveVideo> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<LiveVideo[]> {\n const { liveVideos } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return liveVideos;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type MotionCapture = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class MotionCaptures extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"motion_captures\", axiosInstance);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async frame(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/frame`);\n }\n\n public async find(id: string): Promise<MotionCapture> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<MotionCapture[]> {\n const { motionCaptures } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return motionCaptures;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type Report = {\n id: string;\n createdAt: string;\n name: string;\n href: string;\n status: string;\n result: string | null;\n subResult: string | null;\n properties: object | null;\n breakdown: object | null;\n documents: Array<{ id: string }>;\n checkId: string;\n};\n\nexport class Reports extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"reports\", axiosInstance);\n }\n\n public async find(id: string): Promise<Report> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(checkId: string): Promise<Report[]> {\n const { reports } = await this.request({\n method: Method.GET,\n query: { checkId }\n });\n\n return reports;\n }\n\n public async resume(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/resume` });\n }\n\n public async cancel(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/cancel` });\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type SdkTokenRequest = {\n applicantId: string;\n applicationId?: string | null;\n referrer?: string | null;\n crossDeviceUrl?: string | null;\n};\n\nexport class SdkTokens extends Resource<SdkTokenRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"sdk_token\", axiosInstance);\n }\n\n public async generate(sdkTokenRequest: SdkTokenRequest): Promise<string> {\n const { token } = await this.request({\n method: Method.POST,\n body: sdkTokenRequest\n });\n\n return token;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\n// url is also optional to allow updating.\nexport type WebhookRequest = {\n url?: string | null;\n enabled?: boolean;\n environments?: string[];\n events?: string[] | null;\n};\n\nexport type Webhook = {\n id: string;\n url: string;\n enabled: boolean;\n events: string[];\n token: string;\n href: string;\n environments: string[];\n};\n\nexport class Webhooks extends Resource<WebhookRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"webhooks\", axiosInstance);\n }\n\n public async create(webhookRequest: WebhookRequest): Promise<Webhook> {\n return this.request({ method: Method.POST, body: webhookRequest });\n }\n\n public async find(id: string): Promise<Webhook> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async update(\n id: string,\n webhookRequest: WebhookRequest\n ): Promise<Webhook> {\n return this.request({\n method: Method.PUT,\n path: id,\n body: webhookRequest\n });\n }\n\n public async delete(id: string): Promise<void> {\n await this.request({ method: Method.DELETE, path: id });\n }\n\n public async list(): Promise<Webhook[]> {\n const { webhooks } = await this.request({ method: Method.GET });\n\n return webhooks;\n }\n}\n","import axios, { AxiosInstance } from \"axios\";\nimport { version } from \"../package.json\";\nimport { Addresses } from \"./resources/Addresses\";\nimport { Applicants } from \"./resources/Applicants\";\nimport { Autofill } from \"./resources/Autofill\";\nimport { Checks } from \"./resources/Checks\";\nimport { Documents } from \"./resources/Documents\";\nimport { LivePhotos } from \"./resources/LivePhotos\";\nimport { LiveVideos } from \"./resources/LiveVideos\";\nimport { MotionCaptures } from \"./resources/MotionCaptures\";\nimport { Reports } from \"./resources/Reports\";\nimport { SdkTokens } from \"./resources/SdkTokens\";\nimport { Webhooks } from \"./resources/Webhooks\";\n\nexport enum Region {\n EU = \"EU\",\n US = \"US\",\n CA = \"CA\"\n}\n\nexport type OnfidoOptions = {\n apiToken: string;\n region: Region;\n timeout?: number;\n unknownApiUrl?: string;\n};\n\nexport class Onfido {\n public readonly axiosInstance: AxiosInstance;\n // Core resources\n public readonly applicant: Applicants;\n public readonly document: Documents;\n public readonly livePhoto: LivePhotos;\n public readonly liveVideo: LiveVideos;\n public readonly motionCapture: MotionCaptures;\n public readonly check: Checks;\n public readonly report: Reports;\n // Other endpoints\n public readonly address: Addresses;\n public readonly webhook: Webhooks;\n public readonly sdkToken: SdkTokens;\n public readonly autofill: Autofill;\n\n constructor({\n apiToken,\n region,\n timeout = 30_000,\n unknownApiUrl\n }: OnfidoOptions) {\n if (!apiToken) {\n throw new Error(\"No apiToken provided\");\n }\n if (!region || !Object.values(Region).includes(region)) {\n throw new Error(\n `Unknown or missing region '${region}'. ` +\n \"We previously defaulted to region 'EU', so if you previously didn’t \" +\n \"set a region or used api.onfido.com, please set your region to 'EU'\"\n );\n }\n\n const regionUrl = `https://api.${region.toLowerCase()}.onfido.com/v3.5/`;\n\n this.axiosInstance = axios.create({\n baseURL: unknownApiUrl || regionUrl,\n headers: {\n Authorization: `Token token=${apiToken}`,\n Accept: \"application/json\",\n \"User-Agent\": `onfido-node/${version}`\n },\n timeout\n });\n\n // Core resources\n this.applicant = new Applicants(this.axiosInstance);\n this.document = new Documents(this.axiosInstance);\n this.livePhoto = new LivePhotos(this.axiosInstance);\n this.liveVideo = new LiveVideos(this.axiosInstance);\n this.motionCapture = new MotionCaptures(this.axiosInstance);\n this.check = new Checks(this.axiosInstance);\n this.report = new Reports(this.axiosInstance);\n // Other endpoints\n this.address = new Addresses(this.axiosInstance);\n this.webhook = new Webhooks(this.axiosInstance);\n this.sdkToken = new SdkTokens(this.axiosInstance);\n this.autofill = new Autofill(this.axiosInstance);\n }\n}\n","import { OnfidoError } from \"./errors/OnfidoError\";\nimport { convertObjectToCamelCase } from \"./formatting\";\n\n// Require crypto instead of importing, because Node can be built without crypto support.\nlet crypto: typeof import(\"crypto\") | undefined;\ntry {\n // tslint:disable-next-line: no-var-requires\n crypto = require(\"crypto\");\n} catch {\n // We throw an error when verifying webhooks instead.\n}\n\nexport type WebhookEvent = {\n resourceType: string;\n action: string;\n object: {\n id: string;\n status: string;\n href: string;\n completedAtIso8601: string;\n };\n};\n\nexport class WebhookEventVerifier {\n private readonly webhookToken: string;\n\n constructor(webhookToken: string) {\n this.webhookToken = webhookToken;\n }\n\n public readPayload(\n rawEventBody: string | Buffer,\n hexSignature: string\n ): WebhookEvent {\n if (!crypto) {\n throw new Error(\"Verifying webhook events requires crypto support\");\n }\n\n const givenSignature = Buffer.from(hexSignature, \"hex\");\n\n // Compute the the actual HMAC signature from the raw request body.\n const hmac = crypto.createHmac(\"sha256\", this.webhookToken);\n hmac.update(rawEventBody);\n const eventSignature = hmac.digest();\n\n // Use timingSafeEqual to prevent against timing attacks.\n if (!crypto.timingSafeEqual(givenSignature, eventSignature)) {\n throw new OnfidoError(\"Invalid signature for webhook event\");\n }\n\n const { payload } = JSON.parse(rawEventBody.toString());\n return convertObjectToCamelCase(payload) as WebhookEvent;\n }\n}\n"],"names":["PassThrough","Readable","Region"],"mappings":";;;;;;;;;;;MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;KAC3B;CACF;;MCHY,cAAe,SAAQ,WAAW;IAM7C,YACE,OAAe,EACf,YAAqB,EACrB,UAAkB,EAClB,IAAY,EACZ,MAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAE7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;IAEM,OAAO,YAAY,CACxB,YAAqB,EACrB,UAAkB;QAElB,MAAM,cAAc,GAClB,YAAY,YAAY,MAAM,GAAI,YAAoB,CAAC,KAAK,GAAG,EAAE,CAAC;QAEpE,MAAM,UAAU,GAIZ,cAAc,YAAY,MAAM,GAAG,cAAc,GAAG,EAAE,CAAC;QAE3D,MAAM,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,UAAU,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAEjC,MAAM,WAAW,GACf,GAAG,OAAO,iBAAiB,UAAU,GAAG;aACvC,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAEjD,OAAO,IAAI,cAAc,CACvB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,MAAM,CACP,CAAC;KACH;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;KAC9B;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtDD;AACA;AACA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAYtC,MAAM,SAAS,GAAG,CAAC,eAAuB,KACxC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEtE,MAAM,SAAS,GAAG,CAAC,eAAuB,KACxC,eAAe;KACZ,OAAO,CAAC,SAAS,EAAE,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;KACzD,OAAO,CAAC,SAAS,EAAE,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAE3E,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,CAA0B;IACnE,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACtD;SAAM;QACL,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG;YACtD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAE,KAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACjE,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;AACH,CAAC,CAAC;AAEF,AAAO,MAAM,wBAAwB,GAAG,CAAC,WAAoB;;IAE3D,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtD,OAAO,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,AAAO,MAAM,wBAAwB,GAAG,CACtC,YAA0B,KACT,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAE9D,AAAO,MAAM,UAAU,GAAG,CAAC,MAAoB;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QAC1D,IAAI,KAAK,YAAY,MAAM,IAAI,UAAU,IAAI,KAAK,EAAE;YAClD,MAAM,KAA2B,KAA2B,EAAtD,EAAE,QAAQ,OAA4C,EAAvC,OAAO,cAAtB,YAAwB,CAA8B,CAAC;YAC7D,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SACpD;aAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YAChD,IAAI,KAAK,YAAY,MAAM,EAAE;gBAC3B,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC9D,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;iBACxE;aACF;iBAAM;gBACL,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;aACxC;SACF;QACD,OAAO,QAAQ,CAAC;KACjB,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;AACrB,CAAC,CAAC;;MC9DW,cAAc;IAGzB,YAAY,eAAgC;QAC1C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;KACxC;IAEM,QAAQ;;QAEb,MAAM,iBAAiB,GAAG,IAAIA,kBAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7C,OAAO,iBAAiB,CAAC;KAC1B;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,CAAE,CAAC;KACtD;CACF;;ACPD,IAAY,MAKX;AALD,WAAY,MAAM;IAChB,qBAAW,CAAA;IACX,uBAAa,CAAA;IACb,qBAAW,CAAA;IACX,2BAAiB,CAAA;AACnB,CAAC,EALW,MAAM,KAAN,MAAM,QAKjB;AAED,MAAM,MAAM,GAAG,CAAC,QAAgC,KAC9C,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAExE,MAAM,cAAc,GAAG,CAAC,MAAgB,KACtC,IAAI,OAAO,CAAC,CAAC,OAAO;IAClB,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;;QAEf,IAAI;YACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1B;QAAC,WAAM;YACN,OAAO,CAAC,GAAG,CAAC,CAAC;SACd;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,MAAM,8BAA8B,GAAG,OACrC,KAAU;IAEV,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACnB,OAAO,IAAI,WAAW,CACpB,KAAK,CAAC,OAAO,IAAI,8CAA8C,CAChE,CAAC;KACH;;IAGD,MAAM,QAAQ,GAAkB,KAAK,CAAC,QAAQ,CAAC;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;;IAG3B,MAAM,IAAI,GAAG,IAAI,YAAYC,eAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE1E,OAAO,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,OAAO,OAA0B;IACtD,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACjE;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,MAAM,8BAA8B,CAAC,KAAK,CAAC,CAAC;KACnD;AACH,CAAC,CAAC;AAEF,MAAa,QAAQ;IAInB,YAAsB,IAAY,EAAE,aAA4B;QAC9D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACpC;IAES,MAAM,OAAO,CAAC,EACtB,MAAM,EACN,IAAI,GAAG,EAAE,EACT,IAAI,EACJ,KAAK,EAMN;QACC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,MAAM;YACN,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAC3B,IAAI,EAAE,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAC;YAC5C,MAAM,EAAE,KAAK,IAAI,wBAAwB,CAAC,KAAK,CAAC;SACjD,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;KAChC;IAES,MAAM,MAAM,CAAC,IAAO;QAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG;YACpB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE;SAC/B,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;KAChC;IAES,MAAM,QAAQ,CAAC,IAAY;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAC3B,YAAY,EAAE,QAAQ;;YAEtB,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;SAC3B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAoB,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;KACnC;CACF;;MCjGY,SAAU,SAAQ,QAAe;IAC5C,YAAY,aAA4B;QACtC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;KACnC;IAEM,MAAM,IAAI,CAAC,QAAgB;QAChC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACvC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE,QAAQ,EAAE;SACpB,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KAClB;CACF;;MCLY,UAAW,SAAQ,QAA0B;IACxD,YAAY,aAA4B;QACtC,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;KACpC;IAEM,MAAM,MAAM,CAAC,gBAAkC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;KACtE;IAEM,MAAM,IAAI,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IAEM,MAAM,MAAM,CACjB,EAAU,EACV,gBAAkC;QAElC,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;KACJ;IAEM,MAAM,MAAM,CAAC,EAAU;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACzD;IAEM,MAAM,OAAO,CAAC,EAAU;QAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;KACpE;IAEM,MAAM,IAAI,CAAC,EAChB,IAAI,EACJ,OAAO,EACP,cAAc,KAKZ,EAAE;QACJ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACxC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;SACzC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;KACnB;CACF;;MChDY,QAAS,SAAQ,QAA0B;IACtD,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;KACrC;IAEM,MAAM,OAAO,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,IAAI,EAAE,EAAE,UAAU,EAAE;SACrB,CAAC,CAAC;KACJ;CACF;;MCVY,MAAO,SAAQ,QAAsB;IAChD,YAAY,aAA4B;QACtC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;KAChC;IAEM,MAAM,MAAM,CAAC,YAA0B;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;KAClE;IAEM,MAAM,IAAI,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IAEM,MAAM,IAAI,CAAC,WAAmB;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACpC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,KAAK,EAAE,EAAE,WAAW,EAAE;SACvB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;KACf;IAEM,MAAM,MAAM,CAAC,EAAU;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;KACnE;IAEM,MAAM,QAAQ,CAAC,EAAU;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACzC;CACF;;MCnCY,SAAU,SAAQ,QAAyB;IACtD,YAAY,aAA4B;QACtC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;KACnC;IAEM,MAAM,MAAM,CAAC,eAAgC;QAClD,OAAO,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KACtC;IAEM,MAAM,QAAQ,CAAC,EAAU;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACzC;IAEM,MAAM,IAAI,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IAEM,MAAM,IAAI,CAAC,WAAmB;QACnC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACvC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,KAAK,EAAE,EAAE,WAAW,EAAE;SACvB,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KAClB;CACF;;MClCY,UAAW,SAAQ,QAA0B;IACxD,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;KACrC;IAEM,MAAM,MAAM,CAAC,gBAAkC;QACpD,OAAO,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KACvC;IAEM,MAAM,QAAQ,CAAC,EAAU;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACzC;IAEM,MAAM,IAAI,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IAEM,MAAM,IAAI,CAAC,WAAmB;QACnC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACxC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,KAAK,EAAE,EAAE,WAAW,EAAE;SACvB,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;KACnB;CACF;;MChCY,UAAW,SAAQ,QAAe;IAC7C,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;KACrC;IAEM,MAAM,QAAQ,CAAC,EAAU;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACzC;IAEM,MAAM,KAAK,CAAC,EAAU;QAC3B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACtC;IAEM,MAAM,IAAI,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IAEM,MAAM,IAAI,CAAC,WAAmB;QACnC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACxC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,KAAK,EAAE,EAAE,WAAW,EAAE;SACvB,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;KACnB;CACF;;MCzBY,cAAe,SAAQ,QAAe;IACjD,YAAY,aAA4B;QACtC,KAAK,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;KACzC;IAEM,MAAM,QAAQ,CAAC,EAAU;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACzC;IAEM,MAAM,KAAK,CAAC,EAAU;QAC3B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACtC;IAEM,MAAM,IAAI,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IAEM,MAAM,IAAI,CAAC,WAAmB;QACnC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5C,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,KAAK,EAAE,EAAE,WAAW,EAAE;SACvB,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;KACvB;CACF;;MCtBY,OAAQ,SAAQ,QAAe;IAC1C,YAAY,aAA4B;QACtC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;KACjC;IAEM,MAAM,IAAI,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IAEM,MAAM,IAAI,CAAC,OAAe;QAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACrC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,KAAK,EAAE,EAAE,OAAO,EAAE;SACnB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;KAChB;IAEM,MAAM,MAAM,CAAC,EAAU;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;KACnE;IAEM,MAAM,MAAM,CAAC,EAAU;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;KACnE;CACF;;MChCY,SAAU,SAAQ,QAAyB;IACtD,YAAY,aAA4B;QACtC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;KACnC;IAEM,MAAM,QAAQ,CAAC,eAAgC;QACpD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACnC,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;KACd;CACF;;MCFY,QAAS,SAAQ,QAAwB;IACpD,YAAY,aAA4B;QACtC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;KAClC;IAEM,MAAM,MAAM,CAAC,cAA8B;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;KACpE;IAEM,MAAM,IAAI,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACvD;IAEM,MAAM,MAAM,CACjB,EAAU,EACV,cAA8B;QAE9B,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;KACJ;IAEM,MAAM,MAAM,CAAC,EAAU;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;KACzD;IAEM,MAAM,IAAI;QACf,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAEhE,OAAO,QAAQ,CAAC;KACjB;CACF;;ACxCD,WAAY,MAAM;IAChB,mBAAS,CAAA;IACT,mBAAS,CAAA;IACT,mBAAS,CAAA;AACX,CAAC,EAJWC,cAAM,KAANA,cAAM,QAIjB;AASD,MAAa,MAAM;IAgBjB,YAAY,EACV,QAAQ,EACR,MAAM,EACN,OAAO,GAAG,KAAM,EAChB,aAAa,EACC;QACd,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAACA,cAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACtD,MAAM,IAAI,KAAK,CACb,8BAA8B,MAAM,KAAK;gBACvC,sEAAsE;gBACtE,qEAAqE,CACxE,CAAC;SACH;QAED,MAAM,SAAS,GAAG,eAAe,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC;QAEzE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;YAChC,OAAO,EAAE,aAAa,IAAI,SAAS;YACnC,OAAO,EAAE;gBACP,aAAa,EAAE,eAAe,QAAQ,EAAE;gBACxC,MAAM,EAAE,kBAAkB;gBAC1B,YAAY,EAAE,eAAe,OAAO,EAAE;aACvC;YACD,OAAO;SACR,CAAC,CAAC;;QAGH,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;QAE9C,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAClD;CACF;;ACnFD;AACA,IAAI,MAA2C,CAAC;AAChD,IAAI;;IAEF,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC5B;AAAC,WAAM;;CAEP;AAaD,MAAa,oBAAoB;IAG/B,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KAClC;IAEM,WAAW,CAChB,YAA6B,EAC7B,YAAoB;QAEpB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACrE;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;;QAGxD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;;QAGrC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;YAC3D,MAAM,IAAI,WAAW,CAAC,qCAAqC,CAAC,CAAC;SAC9D;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,OAAO,wBAAwB,CAAC,OAAO,CAAiB,CAAC;KAC1D;CACF;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/errors/OnfidoError.ts","../src/errors/OnfidoApiError.ts","../src/formatting.ts","../src/OnfidoDownload.ts","../src/Resource.ts","../src/resources/Addresses.ts","../src/resources/Applicants.ts","../src/resources/Autofill.ts","../src/resources/Checks.ts","../src/resources/Documents.ts","../src/resources/LivePhotos.ts","../src/resources/LiveVideos.ts","../src/resources/MotionCaptures.ts","../src/resources/Reports.ts","../src/resources/SdkTokens.ts","../src/resources/Webhooks.ts","../src/resources/WorkflowRuns.ts","../src/Onfido.ts","../src/WebhookEventVerifier.ts"],"sourcesContent":["export class OnfidoError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"OnfidoError\";\n }\n}\n","import { OnfidoError } from \"./OnfidoError\";\n\nexport class OnfidoApiError extends OnfidoError {\n public readonly responseBody: unknown;\n public readonly statusCode: number;\n public readonly type: string;\n public readonly fields: unknown;\n\n private constructor(\n message: string,\n responseBody: unknown,\n statusCode: number,\n type: string,\n fields: unknown\n ) {\n super(message);\n this.name = \"OnfidoApiError\";\n\n this.responseBody = responseBody;\n this.statusCode = statusCode;\n this.type = type;\n this.fields = fields;\n }\n\n public static fromResponse(\n responseBody: unknown,\n statusCode: number\n ): OnfidoApiError {\n const innerErrorData: unknown =\n responseBody instanceof Object ? (responseBody as any).error : {};\n\n const innerError: {\n type?: unknown;\n message?: unknown;\n fields?: unknown;\n } = innerErrorData instanceof Object ? innerErrorData : {};\n\n const type = `${innerError.type || \"unknown\"}`;\n const message = `${innerError.message || responseBody}`;\n const fields = innerError.fields;\n\n const fullMessage =\n `${message} (status code ${statusCode})` +\n (fields ? ` | ${JSON.stringify(fields)}` : \"\");\n\n return new OnfidoApiError(\n fullMessage,\n responseBody,\n statusCode,\n type,\n fields\n );\n }\n\n public isClientError(): boolean {\n return this.statusCode < 500;\n }\n}\n","import { Readable } from \"stream\";\nimport { IFormData } from \"./types/formData\";\n\n// Using require because \"form-data\" exports this object as a default export which breaks integration when esModuleInterop: false\n// tslint:disable-next-line: no-var-requires\nconst FormData = require(\"form-data\");\n\nexport type SimpleObject = { [key: string]: unknown };\n\ntype ContentsAndOptions = {\n contents: Readable;\n filepath: string;\n contentType?: string;\n};\n\nexport type FileLike = Readable | ContentsAndOptions;\n\nconst snakeCase = (camelCaseString: string): string =>\n camelCaseString.replace(/[A-Z]/g, char => `_${char.toLowerCase()}`);\n\nconst camelCase = (snakeCaseString: string): string =>\n snakeCaseString\n .replace(/_[0-9]/g, underscoreDigit => underscoreDigit[1])\n .replace(/_[a-z]/g, underscoreChar => underscoreChar[1].toUpperCase());\n\nconst deepMapObjectKeys = (value: unknown, f: (key: string) => string): any => {\n if (!(value instanceof Object)) {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(item => deepMapObjectKeys(item, f));\n } else {\n return Object.keys(value).reduce<SimpleObject>((acc, key) => {\n acc[f(key)] = deepMapObjectKeys((value as SimpleObject)[key], f);\n return acc;\n }, {});\n }\n};\n\nexport const convertObjectToSnakeCase = (requestBody: unknown): unknown => {\n // Converting to JSON and back first handles things like dates, circular references etc.\n requestBody = JSON.parse(JSON.stringify(requestBody));\n\n return deepMapObjectKeys(requestBody, snakeCase);\n};\n\nexport const convertObjectToCamelCase = (\n responseBody: SimpleObject\n): SimpleObject => deepMapObjectKeys(responseBody, camelCase);\n\nexport const toFormData = (object: SimpleObject): IFormData => {\n return Object.entries(object).reduce((formData, [key, value]) => {\n if (value instanceof Object && \"contents\" in value) {\n const { contents, ...options } = value as ContentsAndOptions;\n formData.append(snakeCase(key), contents, options);\n } else if (value !== undefined && value !== null) {\n if (value instanceof Object) {\n for (const [elementKey, elementValue] of Object.entries(value)) {\n formData.append(snakeCase(key + \"[\" + elementKey + \"]\"), elementValue);\n }\n } else {\n formData.append(snakeCase(key), value);\n }\n }\n return formData;\n }, new FormData());\n};\n","import { IncomingMessage } from \"http\";\nimport { PassThrough, Readable } from \"stream\";\n\nexport class OnfidoDownload {\n private readonly incomingMessage: IncomingMessage;\n\n constructor(incomingMessage: IncomingMessage) {\n this.incomingMessage = incomingMessage;\n }\n\n public asStream(): Readable {\n // Use a PassThrough stream so the IncomingMessage isn't exposed.\n const passThroughStream = new PassThrough();\n this.incomingMessage.pipe(passThroughStream);\n return passThroughStream;\n }\n\n public get contentType(): string {\n return this.incomingMessage.headers[\"content-type\"]!;\n }\n}\n","import { AxiosInstance, AxiosPromise, AxiosResponse } from \"axios\";\nimport { IncomingMessage } from \"http\";\nimport { Readable } from \"stream\";\nimport { OnfidoApiError } from \"./errors/OnfidoApiError\";\nimport { OnfidoError } from \"./errors/OnfidoError\";\nimport {\n convertObjectToCamelCase,\n convertObjectToSnakeCase,\n SimpleObject,\n toFormData\n} from \"./formatting\";\nimport { OnfidoDownload } from \"./OnfidoDownload\";\n\nexport enum Method {\n GET = \"get\",\n POST = \"post\",\n PUT = \"put\",\n DELETE = \"delete\"\n}\n\nconst isJson = (response: AxiosResponse<unknown>): boolean =>\n (response.headers[\"content-type\"] || \"\").includes(\"application/json\");\n\nconst readFullStream = (stream: Readable): Promise<unknown> =>\n new Promise((resolve): void => {\n let all = \"\";\n\n stream.on(\"data\", data => (all += data));\n stream.on(\"error\", () => resolve(\"An error occurred reading the response\"));\n stream.on(\"end\", () => {\n // Try to parse as JSON, but fall back to just returning the raw text.\n try {\n resolve(JSON.parse(all));\n } catch {\n resolve(all);\n }\n });\n });\n\nconst convertAxiosErrorToOnfidoError = async (\n error: any\n): Promise<OnfidoError> => {\n if (!error.response) {\n return new OnfidoError(\n error.message || \"An unknown error occurred making the request\"\n );\n }\n\n // Received a 4XX or 5XX response.\n const response: AxiosResponse = error.response;\n const data = response.data;\n\n // If we were downloading a file, we will have a stream instead of a string.\n const body = data instanceof Readable ? await readFullStream(data) : data;\n\n return OnfidoApiError.fromResponse(body, response.status);\n};\n\nconst handleResponse = async (request: AxiosPromise<any>): Promise<any> => {\n try {\n const response = await request;\n const data = response.data;\n return isJson(response) ? convertObjectToCamelCase(data) : data;\n } catch (error) {\n throw await convertAxiosErrorToOnfidoError(error);\n }\n};\n\nexport class Resource<T extends SimpleObject> {\n private readonly name: string;\n private readonly axiosInstance: AxiosInstance;\n\n protected constructor(name: string, axiosInstance: AxiosInstance) {\n this.name = name;\n this.axiosInstance = axiosInstance;\n }\n\n protected async request({\n method,\n path = \"\",\n body,\n query\n }: {\n method: Method;\n path?: string;\n body?: T;\n query?: SimpleObject;\n }): Promise<any> {\n const url = path === null ? `${this.name}` : `${this.name}/${path}`;\n const request = this.axiosInstance({\n method,\n url: url,\n data: body && convertObjectToSnakeCase(body),\n params: query && convertObjectToSnakeCase(query)\n });\n\n return handleResponse(request);\n }\n\n protected async upload(body: T): Promise<any> {\n const formData = toFormData(body);\n\n const request = this.axiosInstance({\n method: Method.POST,\n url: `${this.name}/`,\n data: formData,\n headers: formData.getHeaders()\n });\n\n return handleResponse(request);\n }\n\n protected async download(path: string): Promise<OnfidoDownload> {\n const request = this.axiosInstance({\n method: Method.GET,\n url: `${this.name}/${path}`,\n responseType: \"stream\",\n // Accept a response with any content type (e.g. image/png, application/pdf, video/mp4)\n headers: { Accept: \"*/*\" }\n });\n\n const stream: IncomingMessage = await handleResponse(request);\n return new OnfidoDownload(stream);\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\ntype AddressOptional = {\n flatNumber: string | null;\n buildingNumber: string | null;\n buildingName: string | null;\n street: string | null;\n subStreet: string | null;\n town: string | null;\n state: string | null;\n line1: string | null;\n line2: string | null;\n line3: string | null;\n};\n\nexport type AddressRequest = {\n postcode: string;\n country: string;\n} & Partial<AddressOptional>;\n\nexport type Address = {\n postcode: string;\n country: string;\n} & Partial<AddressOptional>;\n\nexport class Addresses extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"addresses\", axiosInstance);\n }\n\n public async pick(postcode: string): Promise<Address[]> {\n const { addresses } = await this.request({\n method: Method.GET,\n path: \"pick\",\n query: { postcode }\n });\n\n return addresses;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\nimport { Address, AddressRequest } from \"./Addresses\";\nimport { IdNumber, IdNumberRequest } from \"./IdNumbers\";\nimport { Location, LocationRequest } from \"./Location\";\nimport { ConsentsRequest } from \"./ConsentsRequest\";\n\n// firstName and lastName are also optional, to allow updating.\nexport type ApplicantRequest = {\n firstName?: string | null;\n lastName?: string | null;\n email?: string | null;\n dob?: string | null;\n address?: AddressRequest | null;\n idNumbers?: IdNumberRequest[] | null;\n phoneNumber?: string | null;\n location?: LocationRequest | null;\n consents?: ConsentsRequest[] | null;\n};\n\nexport type Applicant = {\n id: string;\n createdAt: string;\n deleteAt: string | null;\n href: string;\n firstName: string;\n lastName: string;\n email: string | null;\n dob: string | null;\n address: Address | null;\n idNumbers: IdNumber[] | null;\n phoneNumber: string | null;\n location: Location | null;\n};\n\nexport class Applicants extends Resource<ApplicantRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"applicants\", axiosInstance);\n }\n\n public async create(applicantRequest: ApplicantRequest): Promise<Applicant> {\n return this.request({ method: Method.POST, body: applicantRequest });\n }\n\n public async find(id: string): Promise<Applicant> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async update(\n id: string,\n applicantRequest: ApplicantRequest\n ): Promise<Applicant> {\n return this.request({\n method: Method.PUT,\n path: id,\n body: applicantRequest\n });\n }\n\n public async delete(id: string): Promise<void> {\n await this.request({ method: Method.DELETE, path: id });\n }\n\n public async restore(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/restore` });\n }\n\n public async list({\n page,\n perPage,\n includeDeleted\n }: {\n page?: number;\n perPage?: number;\n includeDeleted?: boolean;\n } = {}): Promise<Applicant[]> {\n const { applicants } = await this.request({\n method: Method.GET,\n query: { page, perPage, includeDeleted }\n });\n\n return applicants;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type ExtractionResult = {\n documentId: string;\n documentClassification: {\n issuingCountry: string;\n documentType: string;\n issuingState?: string;\n };\n extractedData: {\n documentNumber?: string;\n firstName?: string;\n lastName?: string;\n middleName?: string;\n fullName?: string;\n gender?: string;\n dateOfBirth?: string;\n dateOfExpiry?: string;\n nationality?: string;\n mrzLine1?: string;\n mrzLine2?: string;\n mrzLine3?: string;\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n addressLine4?: string;\n addressLine5?: string;\n };\n};\n\ntype AutofillResource = {\n documentId: string;\n};\n\nexport class Autofill extends Resource<AutofillResource> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"extractions\", axiosInstance);\n }\n\n public async perform(documentId: string): Promise<ExtractionResult> {\n return this.request({\n method: Method.POST,\n body: { documentId }\n });\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type CheckRequest = {\n applicantId: string;\n reportNames: string[];\n documentIds?: string[] | null;\n applicantProvidesData?: boolean;\n asynchronous?: boolean;\n tags?: string[] | null;\n suppressFormEmails?: boolean;\n redirectUri?: string | null;\n privacyNoticesReadConsentGiven?: boolean;\n webhookIds?: string[] | null;\n subResult?: string;\n consider?: string[];\n};\n\nexport type Check = {\n id: string;\n reportIds: string[];\n createdAt: string;\n href: string;\n applicantId: string;\n applicantProvidesData: boolean;\n status: string;\n tags: string[];\n result: string | null;\n formUri: string | null;\n redirectUri: string | null;\n resultsUri: string;\n privacyNoticesReadConsentGiven: boolean;\n webhookIds: string[] | null;\n};\n\nexport class Checks extends Resource<CheckRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"checks\", axiosInstance);\n }\n\n public async create(checkRequest: CheckRequest): Promise<Check> {\n return this.request({ method: Method.POST, body: checkRequest });\n }\n\n public async find(id: string): Promise<Check> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<Check[]> {\n const { checks } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return checks;\n }\n\n public async resume(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/resume` });\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { FileLike } from \"../formatting\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\nimport { LocationRequest } from \"./Location\";\n\nexport type DocumentRequest = {\n applicantId?: string | null;\n file: FileLike;\n type: string;\n side?: string | null;\n issuingCountry?: string | null;\n validateImageQuality?: boolean | null;\n location?: LocationRequest | null;\n};\n\nexport type Document = {\n id: string;\n applicantId: string | null;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n type: string;\n side: string | null;\n issuingCountry: string | null;\n};\n\nexport class Documents extends Resource<DocumentRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"documents\", axiosInstance);\n }\n\n public async upload(documentRequest: DocumentRequest): Promise<Document> {\n return super.upload(documentRequest);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async find(id: string): Promise<Document> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<Document[]> {\n const { documents } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return documents;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { FileLike } from \"../formatting\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type LivePhotoRequest = {\n applicantId: string;\n file: FileLike;\n advancedValidation?: string;\n};\n\nexport type LivePhoto = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class LivePhotos extends Resource<LivePhotoRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"live_photos\", axiosInstance);\n }\n\n public async upload(livePhotoRequest: LivePhotoRequest): Promise<LivePhoto> {\n return super.upload(livePhotoRequest);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async find(id: string): Promise<LivePhoto> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<LivePhoto[]> {\n const { livePhotos } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return livePhotos;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type LiveVideo = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class LiveVideos extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"live_videos\", axiosInstance);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async frame(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/frame`);\n }\n\n public async find(id: string): Promise<LiveVideo> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<LiveVideo[]> {\n const { liveVideos } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return liveVideos;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { OnfidoDownload } from \"../OnfidoDownload\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type MotionCapture = {\n id: string;\n createdAt: string;\n href: string;\n downloadHref: string;\n fileName: string;\n fileType: string;\n fileSize: number;\n};\n\nexport class MotionCaptures extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"motion_captures\", axiosInstance);\n }\n\n public async download(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/download`);\n }\n\n public async frame(id: string): Promise<OnfidoDownload> {\n return super.download(`${id}/frame`);\n }\n\n public async find(id: string): Promise<MotionCapture> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(applicantId: string): Promise<MotionCapture[]> {\n const { motionCaptures } = await this.request({\n method: Method.GET,\n query: { applicantId }\n });\n\n return motionCaptures;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type Report = {\n id: string;\n createdAt: string;\n name: string;\n href: string;\n status: string;\n result: string | null;\n subResult: string | null;\n properties: object | null;\n breakdown: object | null;\n documents: Array<{ id: string }>;\n checkId: string;\n};\n\nexport class Reports extends Resource<never> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"reports\", axiosInstance);\n }\n\n public async find(id: string): Promise<Report> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(checkId: string): Promise<Report[]> {\n const { reports } = await this.request({\n method: Method.GET,\n query: { checkId }\n });\n\n return reports;\n }\n\n public async resume(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/resume` });\n }\n\n public async cancel(id: string): Promise<void> {\n await this.request({ method: Method.POST, path: `${id}/cancel` });\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type SdkTokenRequest = {\n applicantId: string;\n applicationId?: string | null;\n referrer?: string | null;\n crossDeviceUrl?: string | null;\n};\n\nexport class SdkTokens extends Resource<SdkTokenRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"sdk_token\", axiosInstance);\n }\n\n public async generate(sdkTokenRequest: SdkTokenRequest): Promise<string> {\n const { token } = await this.request({\n method: Method.POST,\n body: sdkTokenRequest\n });\n\n return token;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\n// url is also optional to allow updating.\nexport type WebhookRequest = {\n url?: string | null;\n enabled?: boolean;\n environments?: string[];\n events?: string[] | null;\n};\n\nexport type Webhook = {\n id: string;\n url: string;\n enabled: boolean;\n events: string[];\n token: string;\n href: string;\n environments: string[];\n};\n\nexport class Webhooks extends Resource<WebhookRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"webhooks\", axiosInstance);\n }\n\n public async create(webhookRequest: WebhookRequest): Promise<Webhook> {\n return this.request({ method: Method.POST, body: webhookRequest });\n }\n\n public async find(id: string): Promise<Webhook> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async update(\n id: string,\n webhookRequest: WebhookRequest\n ): Promise<Webhook> {\n return this.request({\n method: Method.PUT,\n path: id,\n body: webhookRequest\n });\n }\n\n public async delete(id: string): Promise<void> {\n await this.request({ method: Method.DELETE, path: id });\n }\n\n public async list(): Promise<Webhook[]> {\n const { webhooks } = await this.request({ method: Method.GET });\n\n return webhooks;\n }\n}\n","import { AxiosInstance } from \"axios\";\nimport { Method, Resource } from \"../Resource\";\n\nexport type WorkflowRunRequest = {\n applicantId: string;\n workflowId: string;\n customData?: any;\n};\n\ntype WorkflowRunError = {\n type:\tstring;\n message: string;\n}\n\ntype WorkflowRunLink = {\n url:\tstring;\n completed_redirect_url:\tstring;\n expired_redirect_url:\tstring;\n expires_at:\tstring;\n language: string;\n}\n\nexport type WorkflowRun = {\n id: string;\n applicantId: string;\n workflowId: string;\n workflowVersionId: number;\n dashboardUrl: string;\n status: string;\n output: any;\n reasons: string[] | null;\n error: WorkflowRunError | null;\n link: WorkflowRunLink | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type WorkflowRunListRequest = {\n page?: number;\n status?: string;\n created_at_gt?: string;\n created_at_lt?: string;\n}\n\nexport class WorkflowRuns extends Resource<WorkflowRunRequest> {\n constructor(axiosInstance: AxiosInstance) {\n super(\"workflow_runs\", axiosInstance);\n }\n\n public async create(workflowRunRequest: WorkflowRunRequest): Promise<WorkflowRun> {\n return this.request({ method: Method.POST, body: workflowRunRequest });\n }\n\n public async find(id: string): Promise<WorkflowRun> {\n return this.request({ method: Method.GET, path: id });\n }\n\n public async list(queryParams?: WorkflowRunListRequest): Promise<WorkflowRun[]> {\n const workflowRuns = await this.request({\n method: Method.GET,\n query: queryParams\n });\n\n return workflowRuns;\n }\n}\n","import axios, { AxiosInstance } from \"axios\";\nimport { version } from \"../package.json\";\nimport { Addresses } from \"./resources/Addresses\";\nimport { Applicants } from \"./resources/Applicants\";\nimport { Autofill } from \"./resources/Autofill\";\nimport { Checks } from \"./resources/Checks\";\nimport { Documents } from \"./resources/Documents\";\nimport { LivePhotos } from \"./resources/LivePhotos\";\nimport { LiveVideos } from \"./resources/LiveVideos\";\nimport { MotionCaptures } from \"./resources/MotionCaptures\";\nimport { Reports } from \"./resources/Reports\";\nimport { SdkTokens } from \"./resources/SdkTokens\";\nimport { Webhooks } from \"./resources/Webhooks\";\nimport { WorkflowRuns } from \"./resources/WorkflowRuns\";\n\nexport enum Region {\n EU = \"EU\",\n US = \"US\",\n CA = \"CA\"\n}\n\nexport type OnfidoOptions = {\n apiToken: string;\n region: Region;\n timeout?: number;\n unknownApiUrl?: string;\n};\n\nexport class Onfido {\n public readonly axiosInstance: AxiosInstance;\n // Core resources\n public readonly applicant: Applicants;\n public readonly document: Documents;\n public readonly livePhoto: LivePhotos;\n public readonly liveVideo: LiveVideos;\n public readonly motionCapture: MotionCaptures;\n public readonly check: Checks;\n public readonly report: Reports;\n public readonly workflowRun: WorkflowRuns;\n // Other endpoints\n public readonly address: Addresses;\n public readonly webhook: Webhooks;\n public readonly sdkToken: SdkTokens;\n public readonly autofill: Autofill;\n\n constructor({\n apiToken,\n region,\n timeout = 30_000,\n unknownApiUrl\n }: OnfidoOptions) {\n if (!apiToken) {\n throw new Error(\"No apiToken provided\");\n }\n if (!region || !Object.values(Region).includes(region)) {\n throw new Error(\n `Unknown or missing region '${region}'. ` +\n \"We previously defaulted to region 'EU', so if you previously didn’t \" +\n \"set a region or used api.onfido.com, please set your region to 'EU'\"\n );\n }\n\n const regionUrl = `https://api.${region.toLowerCase()}.onfido.com/v3.6/`;\n\n this.axiosInstance = axios.create({\n baseURL: unknownApiUrl || regionUrl,\n headers: {\n Authorization: `Token token=${apiToken}`,\n Accept: \"application/json\",\n \"User-Agent\": `onfido-node/${version}`\n },\n timeout\n });\n\n // Core resources\n this.applicant = new Applicants(this.axiosInstance);\n this.document = new Documents(this.axiosInstance);\n this.livePhoto = new LivePhotos(this.axiosInstance);\n this.liveVideo = new LiveVideos(this.axiosInstance);\n this.motionCapture = new MotionCaptures(this.axiosInstance);\n this.check = new Checks(this.axiosInstance);\n this.report = new Reports(this.axiosInstance);\n this.workflowRun = new WorkflowRuns(this.axiosInstance);\n // Other endpoints\n this.address = new Addresses(this.axiosInstance);\n this.webhook = new Webhooks(this.axiosInstance);\n this.sdkToken = new SdkTokens(this.axiosInstance);\n this.autofill = new Autofill(this.axiosInstance);\n }\n}\n","import { OnfidoError } from \"./errors/OnfidoError\";\nimport { convertObjectToCamelCase } from \"./formatting\";\n\n// Require crypto instead of importing, because Node can be built without crypto support.\nlet crypto: typeof import(\"crypto\") | undefined;\ntry {\n // tslint:disable-next-line: no-var-requires\n crypto = require(\"crypto\");\n} catch {\n // We throw an error when verifying webhooks instead.\n}\n\nexport type WebhookEvent = {\n resourceType: string;\n action: string;\n object: {\n id: string;\n status: string;\n href: string;\n completedAtIso8601: string;\n };\n};\n\nexport class WebhookEventVerifier {\n private readonly webhookToken: string;\n\n constructor(webhookToken: string) {\n this.webhookToken = webhookToken;\n }\n\n public readPayload(\n rawEventBody: string | Buffer,\n hexSignature: string\n ): WebhookEvent {\n if (!crypto) {\n throw new Error(\"Verifying webhook events requires crypto support\");\n }\n\n const givenSignature = Buffer.from(hexSignature, \"hex\");\n\n // Compute the the actual HMAC signature from the raw request body.\n const hmac = crypto.createHmac(\"sha256\", this.webhookToken);\n hmac.update(rawEventBody);\n const eventSignature = hmac.digest();\n\n // Use timingSafeEqual to prevent against timing attacks.\n if (!crypto.timingSafeEqual(givenSignature, eventSignature)) {\n throw new OnfidoError(\"Invalid signature for webhook event\");\n }\n\n const { payload } = JSON.parse(rawEventBody.toString());\n return convertObjectToCamelCase(payload) as WebhookEvent;\n }\n}\n"],"names":["PassThrough","Readable","Region"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { AxiosInstance } from "axios";
2
+ import { Resource } from "../Resource";
3
+ export declare type WorkflowRunRequest = {
4
+ applicantId: string;
5
+ workflowId: string;
6
+ customData?: any;
7
+ };
8
+ declare type WorkflowRunError = {
9
+ type: string;
10
+ message: string;
11
+ };
12
+ declare type WorkflowRunLink = {
13
+ url: string;
14
+ completed_redirect_url: string;
15
+ expired_redirect_url: string;
16
+ expires_at: string;
17
+ language: string;
18
+ };
19
+ export declare type WorkflowRun = {
20
+ id: string;
21
+ applicantId: string;
22
+ workflowId: string;
23
+ workflowVersionId: number;
24
+ dashboardUrl: string;
25
+ status: string;
26
+ output: any;
27
+ reasons: string[] | null;
28
+ error: WorkflowRunError | null;
29
+ link: WorkflowRunLink | null;
30
+ createdAt: string;
31
+ updatedAt: string;
32
+ };
33
+ export declare type WorkflowRunListRequest = {
34
+ page?: number;
35
+ status?: string;
36
+ created_at_gt?: string;
37
+ created_at_lt?: string;
38
+ };
39
+ export declare class WorkflowRuns extends Resource<WorkflowRunRequest> {
40
+ constructor(axiosInstance: AxiosInstance);
41
+ create(workflowRunRequest: WorkflowRunRequest): Promise<WorkflowRun>;
42
+ find(id: string): Promise<WorkflowRun>;
43
+ list(queryParams?: WorkflowRunListRequest): Promise<WorkflowRun[]>;
44
+ }
45
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onfido/api",
3
- "version": "2.5.0",
3
+ "version": "2.7.0",
4
4
  "description": "Node.js library for the Onfido API",
5
5
  "keywords": [
6
6
  "onfido",