scandit-web-datacapture-id
Version:
Scandit Data Capture SDK for the Web
327 lines (326 loc) • 16.1 kB
TypeScript
import type { Prettify, PrivateLoadableFrameData, Rect } from "scandit-web-datacapture-core";
import type { AnyDataCaptureActionMessage as CoreAnyDataCaptureActionMessage, CaptureModeDeserializerInstance, DataCaptureActionMessageKey as CoreDataCaptureActionMessageKey, DataCaptureCallbackMessage as CoreDataCaptureCallbackMessage, DataCaptureCallbackMessageKeys as CoreDataCaptureCallbackMessageKeys, EmscriptenClassHandle, Module as CoreModule, WasmFrameData, WorkerResponse as CoreWorkerResponse } from "scandit-web-datacapture-core/build/js/worker/index";
import type { IdCaptureSettingsJSON } from "../IdCaptureSettings";
import type { CapturedIdCommonFieldsJSON, AamvaBarcodeVerificationResultJSON, AamvaVizBarcodeComparisonResultJSON, CapturedIdJSON, IdCaptureSessionJSON, VizMrzComparisonResultJSON, DrivingLicenseDetailsJSON } from "../SerializedTypes";
import type { ShutterButtonState } from "scandit-web-datacapture-id-private";
/**
* MESSAGES (ACTIONS) SENT TO THE WORKER
*/
export type DataCaptureActionMessageKey = CoreDataCaptureActionMessageKey | "idCaptureApplySettings" | "idCaptureBarcodeVerifyAamvaCapture" | "idCaptureParse" | "idCaptureReset" | "idCaptureSetLastDetectionIssue" | "idCaptureSetLastError" | "idCaptureSetLastLocalizedId" | "idCaptureSetLastResult" | "idCaptureVerifyAamvaCapture" | "idCaptureVerifyVizMrzCapture" | "idCaptureDrivingLicenseDetailsCreateWithBlinkIdData";
export interface IdCaptureVerifyAamvaCaptureResponse {
result: AamvaVizBarcodeComparisonResultJSON | null;
}
export interface IdCaptureParseResponse {
result: ParseResult | null;
}
export interface IdCaptureDrivingLicenseDetailsCreateWithBlinkIdDataResponse {
result: DrivingLicenseDetailsJSON;
}
export interface IdCaptureVerifyVizMrzCaptureResponse {
result: VizMrzComparisonResultJSON | null;
}
export interface IdCaptureBarcodeVerifyAamvaCaptureResponse {
result: AamvaBarcodeVerificationResultJSON & {
error: string;
serverResponseJSON: string;
isSuccess: boolean;
};
}
export type WorkerResponse<C extends DataCaptureActionMessageKey> = C extends "idCaptureVerifyAamvaCapture" ? IdCaptureVerifyAamvaCaptureResponse : C extends "idCaptureBarcodeVerifyAamvaCapture" ? IdCaptureBarcodeVerifyAamvaCaptureResponse : C extends "idCaptureVerifyVizMrzCapture" ? IdCaptureVerifyVizMrzCaptureResponse : C extends "idCaptureParse" ? IdCaptureParseResponse : C extends "idCaptureDrivingLicenseDetailsCreateWithBlinkIdData" ? IdCaptureDrivingLicenseDetailsCreateWithBlinkIdDataResponse : CoreWorkerResponse<C>;
interface DataCaptureActionMessage {
command: DataCaptureActionMessageKey;
id: number;
}
export interface IdCaptureSetLastResultDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureSetLastResult";
result: string;
}
export interface IdCaptureSetLastErrorDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureSetLastError";
error: string;
}
export interface IdCaptureSetLastLocalizedIdDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureSetLastLocalizedId";
localizedId: string;
}
export interface IdCaptureSetLastDetectionIssueDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureSetLastDetectionIssue";
issue: string;
}
export interface IdCaptureResetDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureReset";
}
export interface IdCaptureApplySettingsDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureApplySettings";
settings: IdCaptureSettingsJSON;
}
export interface IdCaptureParseDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureParse";
code: string;
}
export interface IdCaptureVerifyAamvaCaptureDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureVerifyAamvaCapture";
capturedId: CapturedIdJSON;
}
export interface IdCaptureVerifyVizMrzCaptureDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureVerifyVizMrzCapture";
capturedId: CapturedIdJSON;
}
export interface IdCaptureBarcodeVerifyAamvaCaptureDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureBarcodeVerifyAamvaCapture";
capturedId: CapturedIdJSON;
endpoint: string | null;
}
export interface IdCaptureDrivingLicenseDetailsCreateWithBlinkIdDataDataCaptureAction extends DataCaptureActionMessage {
command: "idCaptureDrivingLicenseDetailsCreateWithBlinkIdData";
details: {
vehicleClass: string;
restrictions: string;
endorsements: string;
};
}
export type AnyDataCaptureActionMessage = CoreAnyDataCaptureActionMessage | IdCaptureApplySettingsDataCaptureAction | IdCaptureBarcodeVerifyAamvaCaptureDataCaptureAction | IdCaptureParseDataCaptureAction | IdCaptureResetDataCaptureAction | IdCaptureSetLastDetectionIssueDataCaptureAction | IdCaptureSetLastErrorDataCaptureAction | IdCaptureSetLastLocalizedIdDataCaptureAction | IdCaptureSetLastResultDataCaptureAction | IdCaptureVerifyAamvaCaptureDataCaptureAction | IdCaptureVerifyVizMrzCaptureDataCaptureAction | IdCaptureDrivingLicenseDetailsCreateWithBlinkIdDataDataCaptureAction;
export type MessagePayloadByCommand = {
[key in AnyDataCaptureActionMessage["command"]]: Prettify<Omit<Extract<AnyDataCaptureActionMessage, {
command: key;
}>, "command" | "id">>;
};
export type WorkerCall = <C extends keyof MessagePayloadByCommand>(command: C, payload: Prettify<MessagePayloadByCommand[C]>) => Promise<WorkerResponse<C>>;
/**
* MESSAGES EMITTED BY THE WORKER
*/
type DataCaptureCallbackMessageKeys = CoreDataCaptureCallbackMessageKeys | "idCaptureBackendReset" | "idCaptureDetectionOnlyMode" | "idCaptureDidCaptureId" | "idCaptureDidLocalizeId" | "idCaptureDidRejectId" | "idCaptureDidShutterButtonPositionChanged" | "idCaptureDidShutterButtonStateChanged" | "idCaptureDidTimedOut" | "idCaptureDidUpdateSession" | "idCaptureIdCapturedFeedback" | "idCaptureIdCaptureTimeoutFeedback" | "idCaptureIdRejectedFeedback" | "IdCaptureProcessFrameWithCentaurus";
interface BaseDataCaptureCallbackMessage {
type: DataCaptureCallbackMessageKeys;
}
interface IdCaptureDidCapture extends BaseDataCaptureCallbackMessage {
type: "idCaptureDidCaptureId";
payload: {
session: IdCaptureSessionJSON;
frameData: PrivateLoadableFrameData;
};
}
interface IdCaptureDidUpdateSession extends BaseDataCaptureCallbackMessage {
type: "idCaptureDidUpdateSession";
payload: {
session: IdCaptureSessionJSON;
frameData: PrivateLoadableFrameData;
};
}
interface IdCaptureDidReject extends BaseDataCaptureCallbackMessage {
type: "idCaptureDidRejectId";
payload: {
session: IdCaptureSessionJSON;
frameData: PrivateLoadableFrameData;
};
}
interface IdCaptureDidLocalizeId extends BaseDataCaptureCallbackMessage {
type: "idCaptureDidLocalizeId";
payload: {
session: IdCaptureSessionJSON;
frameData: PrivateLoadableFrameData;
};
}
interface IdCaptureDidTimedOut extends BaseDataCaptureCallbackMessage {
type: "idCaptureDidTimedOut";
payload: {
session: IdCaptureSessionJSON;
frameData: PrivateLoadableFrameData;
};
}
interface IdCaptureDidShutterButtonPositionChanged extends BaseDataCaptureCallbackMessage {
type: "idCaptureDidShutterButtonPositionChanged";
payload: {
position: Rect;
};
}
interface IdCaptureDidShutterButtonStateChanged extends BaseDataCaptureCallbackMessage {
type: "idCaptureDidShutterButtonStateChanged";
payload: {
state: ShutterButtonState;
};
}
interface IdCaptureIdCapturedFeedback extends BaseDataCaptureCallbackMessage {
type: "idCaptureIdCapturedFeedback";
}
interface IdCaptureIdRejectedFeedback extends BaseDataCaptureCallbackMessage {
type: "idCaptureIdRejectedFeedback";
}
interface IdCaptureIdCaptureTimeoutFeedback extends BaseDataCaptureCallbackMessage {
type: "idCaptureIdCaptureTimeoutFeedback";
}
interface IdCaptureBackendReset extends BaseDataCaptureCallbackMessage {
type: "idCaptureBackendReset";
}
interface IdCaptureDetectionOnlyMode extends BaseDataCaptureCallbackMessage {
type: "idCaptureDetectionOnlyMode";
payload: {
detectionOnlyMode: boolean;
};
}
export type DataCaptureCallbackMessage = CoreDataCaptureCallbackMessage | IdCaptureBackendReset | IdCaptureDetectionOnlyMode | IdCaptureDidCapture | IdCaptureDidLocalizeId | IdCaptureDidReject | IdCaptureDidShutterButtonPositionChanged | IdCaptureDidShutterButtonStateChanged | IdCaptureDidTimedOut | IdCaptureDidUpdateSession | IdCaptureIdCapturedFeedback | IdCaptureIdCaptureTimeoutFeedback | IdCaptureIdRejectedFeedback;
export type CapturedIdJSONWithoutCommonFieldsJSON = Omit<CapturedIdJSON, keyof CapturedIdCommonFieldsJSON>;
export type ParseResult = {
status: "success";
capturedId: CapturedIdJSON;
} | {
status: "error";
error: string;
};
/**
* OTHERS
*/
export type PayloadForCommand<A, C> = A extends {
command: C;
} ? A : never;
export interface DataCaptureWorker extends Omit<Worker, "postMessage"> {
onmessage: ((this: Worker, event_: MessageEvent & {
data: unknown;
}) => void) | null;
postMessage: <C extends AnyDataCaptureActionMessage["command"]>(message: PayloadForCommand<AnyDataCaptureActionMessage, C>, transfer?: Transferable[]) => void;
}
export declare enum IdCaptureBackendErrorType {
Undefined = "Undefined",
InitializationError = "InitializationError",
ParsingError = "ParsingError"
}
export interface IdCaptureBackendError {
type: IdCaptureBackendErrorType;
message: string;
}
export interface CapturedIdCommonFieldsGetters extends Pick<EmscriptenClassHandle, "delete"> {
getFirstName: () => OptionalValueHolder<string>;
getLastName: () => OptionalValueHolder<string>;
getSecondaryLastName: () => OptionalValueHolder<string>;
getFullName: () => string;
getSex: () => OptionalValueHolder<string>;
getAge: () => OptionalValueHolder<number | null>;
isExpired: () => OptionalValueHolder<boolean | null>;
getNationality: () => OptionalValueHolder<string>;
getAddress: () => OptionalValueHolder<string>;
getIssuingCountry: () => OptionalValueHolder<string>;
getIssuingCountryIso: () => OptionalValueHolder<string>;
getDocumentNumber: () => OptionalValueHolder<string>;
getDocumentAdditionalNumber: () => OptionalValueHolder<string>;
getDateOfBirth: () => OptionalValueHolder<string>;
getDateOfExpiry: () => OptionalValueHolder<string>;
getDateOfIssue: () => OptionalValueHolder<string>;
getDocumentType: () => string;
}
interface ResultOk<T> {
ok: () => true;
value: () => T;
}
interface ResultFail<E> {
ok: () => false;
error: () => E;
}
export type FailableResult<T, E> = ResultFail<E> | ResultOk<T>;
interface HasValueHolder<T> {
has_value: () => true;
value: () => T;
}
interface HasNoValueHolder {
has_value: () => false;
}
export type OptionalValueHolder<T> = HasNoValueHolder | HasValueHolder<T>;
export interface IdCaptureSessionHolder {
getCapturedId: () => OptionalValueHolder<CapturedIdCommonFieldsGetters>;
getLocalizedOnlyId: () => OptionalValueHolder<string>;
getNewlyRejectedId: () => OptionalValueHolder<string>;
toJson: () => string;
}
export interface CapturedIdHolder extends CapturedIdCommonFieldsGetters {
toJson: () => string;
}
export interface SDCIdCaptureMode extends EmscriptenClassHandle {
reset: () => void;
applySettings: (settings: string) => void;
addListener: (listener: unknown) => void;
setFeedbacks: (idCaptured: unknown, idRejected: unknown, idCaptureTimeout: unknown) => void;
parse: (code: string) => FailableResult<CapturedIdHolder | null, string>;
}
interface BarcodeVerificationResponse {
isSuccess: boolean;
allChecksPassed: boolean;
error: string;
serverResponseJson: string;
}
interface IdCaptureModule {
IdCaptureDeserializer: new (helper: unknown) => CaptureModeDeserializerInstance;
IdCaptureListener: {
extend: (target: "IdCaptureListener", parameters: {
onSessionUpdated: (idCapture: unknown, session: IdCaptureSessionHolder, frameData: WasmFrameData) => void;
onIdCaptured: (idCapture: unknown, session: IdCaptureSessionHolder, frameData: WasmFrameData) => void;
onIdLocalized: (idCapture: unknown, session: IdCaptureSessionHolder, frameData: WasmFrameData) => void;
onIdRejected: (idCapture: unknown, session: IdCaptureSessionHolder, frameData: WasmFrameData) => void;
onIdCaptureTimedOut: (idCapture: unknown, session: IdCaptureSessionHolder, frameData: WasmFrameData) => void;
onShutterButtonPositionChanged: (position: string) => void;
onShutterButtonStateChanged: (state: string) => void;
}) => new () => EmscriptenClassHandle;
};
IdCaptureDeserializerListener: {
extend: (target: "IdCaptureDeserializerListener", parameters: {
onModeDeserializationStarted: (deserializer: unknown, mode: SDCIdCaptureMode, json: unknown) => void;
onModeDeserializationFinished: (deserializer: unknown, mode: SDCIdCaptureMode, json: unknown) => void;
onSettingsDeserializationStarted: (deserializer: unknown, settings: unknown, json: unknown) => void;
onSettingsDeserializationFinished: (deserializer: unknown, settings: unknown, json: unknown) => void;
}) => new () => EmscriptenClassHandle;
};
IdCaptureBackend: {
extend: (target: "IdCaptureBackend", parameters: {
getLastError: () => string;
getLastResult: () => string;
getLocalizedOnlyId: () => string;
getLastIssue: () => string;
processFrame: (data: Uint8ClampedArray, width: number, height: number, format: unknown) => void;
reset: () => void;
setDetectionOnlyMode: (detectionOnly: boolean) => void;
}) => new () => {
delete: () => void;
};
};
IdCaptureDeserializerHelper: {
extend: (target: "IdCaptureDeserializerHelper", parameters: {
createMode: (context: unknown, settings: unknown) => SDCIdCaptureMode;
}) => new () => EmscriptenClassHandle;
};
IdCapture: new (context: unknown, idCaptureBackend: unknown, settings: unknown, idCaptureImageHighlighter: unknown) => SDCIdCaptureMode;
AamvaVizBarcodeComparisonVerifier: new () => {
verify: (capturedId: string) => {
toJson: () => string;
};
};
VizMrzComparisonVerifier: new (context: unknown) => {
verify: (capturedId: string) => {
toJson: () => string;
};
};
AamvaBarcodeVerifier: {
extend: (target: "AamvaBarcodeVerifier", parameters: {
verificationEnded: () => void;
retriggerVerificationIn: (timeInMilliseconds: number) => void;
}) => new () => EmscriptenClassHandle & {
initialize: (context: unknown, endpoint: string) => void;
startVerification: (capturedId: string) => void;
getBarcodeVerificationResponse: () => BarcodeVerificationResponse;
};
};
DrivingLicenseDetails: {
createWithBlinkIdData: (vehicleClass: string, restrictions: string, endorsements: string) => string;
};
}
export interface Module extends CoreModule, IdCaptureModule {
}
export declare function getValueFromFailable<T, E, U>(holder: FailableResult<T, E>, defaultValue: U): T | U;
export declare function getErrorFromFailable<T, E, U>(holder: FailableResult<T, E>, defaultValue: U): E | U;
export declare function getValueFromOptional<T, U>(holder: OptionalValueHolder<T>, defaultValue: U): T | U;
export type EngineWorkerResponse<C extends DataCaptureActionMessageKey> = WorkerResponse<C> extends Promise<void> | void ? Promise<void> | void : {
payload: WorkerResponse<C>;
transferables?: Transferable[];
};
export type AugmentedWorker = Worker & {
Module: Module;
OffscreenCanvas: new (w: number, h: number) => OffscreenCanvas;
};
export {};