@incodetech/core 2.0.0-alpha.9 → 2.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Actor-CI32dTbG.d.ts +2 -0
- package/dist/BaseWasmProvider-C_DLEI40.esm.js +1118 -0
- package/dist/BrowserStorageProvider-CuOW1Er2.esm.js +55 -0
- package/dist/BrowserTimerProvider-DhNc_x02.esm.js +22 -0
- package/dist/ITimerCapability-C67ZRskg.esm.js +7 -0
- package/dist/IpifyProvider-D7jx52AL.esm.js +139 -0
- package/dist/MotionSensorProvider-4v7xkqAp.esm.js +254 -0
- package/dist/OpenViduRecordingProvider-CMu6XVdc.esm.js +87 -0
- package/dist/StateMachine-BCQrZJhf.d.ts +2 -0
- package/dist/WasmUtilProvider-j98OJf-S.esm.js +114 -0
- package/dist/addressSearch-BpTbTWCa.esm.js +430 -0
- package/dist/ae-signature-DDDZmWXj.esm.js +12 -0
- package/dist/ae-signature.d.ts +25 -0
- package/dist/ae-signature.esm.js +8 -0
- package/dist/antifraud.d.ts +57 -0
- package/dist/antifraud.esm.js +45 -0
- package/dist/antifraudStateMachine-O0TMf6yc.esm.js +39 -0
- package/dist/api-CESGtpbH.esm.js +53 -0
- package/dist/authentication.d.ts +12 -0
- package/dist/authentication.esm.js +25 -0
- package/dist/authenticationManager-5M-fKzXx.esm.js +67 -0
- package/dist/authenticationManager-C83GNIhl.d.ts +66 -0
- package/dist/authenticationStateMachine-BMZqatiF.esm.js +139 -0
- package/dist/backCameraStream-DMdMeGk2.esm.js +346 -0
- package/dist/browserSimulation-gxD8cSpM.esm.js +20 -0
- package/dist/camera-DBSxa6ML.d.ts +4 -0
- package/dist/camera-PA2Ljri3.esm.js +22 -0
- package/dist/camera.d.ts +15 -0
- package/dist/camera.esm.js +5 -0
- package/dist/consent.d.ts +398 -0
- package/dist/consent.esm.js +79 -0
- package/dist/consentStateMachine-CCT-B60O.esm.js +151 -0
- package/dist/cpf-PPz2Njto.esm.js +38 -0
- package/dist/cpf-ocr.d.ts +204 -0
- package/dist/cpf-ocr.esm.js +177 -0
- package/dist/cross-document-data-match.d.ts +34 -0
- package/dist/cross-document-data-match.esm.js +71 -0
- package/dist/curp-validation.d.ts +188 -0
- package/dist/curp-validation.esm.js +110 -0
- package/dist/curpValidationStateMachine-CitWLr2c.esm.js +595 -0
- package/dist/custom-fields.d.ts +115 -0
- package/dist/custom-fields.esm.js +177 -0
- package/dist/custom-watchlist.d.ts +66 -0
- package/dist/custom-watchlist.esm.js +86 -0
- package/dist/dateUtils-UoN5xswP.esm.js +23 -0
- package/dist/deepsightLoader-Cm4JIT_z.esm.js +52 -0
- package/dist/deepsightService-CEVxzehb.d.ts +412 -0
- package/dist/deepsightService-O74l4Y__.esm.js +489 -0
- package/dist/device.d.ts +46 -0
- package/dist/device.esm.js +106 -0
- package/dist/displayErrors-DqJ_IbsG.d.ts +39 -0
- package/dist/document-capture.d.ts +906 -0
- package/dist/document-capture.esm.js +156 -0
- package/dist/document-upload.d.ts +331 -0
- package/dist/document-upload.esm.js +203 -0
- package/dist/documentCaptureStateMachine-BqzTDy9k.esm.js +394 -0
- package/dist/dynamic-forms.d.ts +178 -0
- package/dist/dynamic-forms.esm.js +323 -0
- package/dist/ekyb.d.ts +148 -0
- package/dist/ekyb.esm.js +127 -0
- package/dist/ekybStateMachine-B59rQjgj.esm.js +674 -0
- package/dist/ekyc.d.ts +164 -0
- package/dist/ekyc.esm.js +104 -0
- package/dist/ekycStateMachine-oeO0Iekd.esm.js +10626 -0
- package/dist/electronic-signature.d.ts +4 -0
- package/dist/electronic-signature.esm.js +7 -0
- package/dist/electronicSignatureManager-D9OHzTpG.esm.js +428 -0
- package/dist/email.d.ts +3 -263
- package/dist/email.esm.js +7 -477
- package/dist/emailManager-DIfnS5g1.d.ts +352 -0
- package/dist/emailManager-wAV0LE-H.esm.js +238 -0
- package/dist/emailStateMachine-DOf4j58N.esm.js +292 -0
- package/dist/endpoints-CnN3SyDa.esm.js +87 -0
- package/dist/events-D6-e4vok.esm.js +596 -0
- package/dist/events.d.ts +265 -0
- package/dist/events.esm.js +4 -0
- package/dist/extensibility.d.ts +122 -0
- package/dist/extensibility.esm.js +43 -0
- package/dist/face-match.d.ts +228 -0
- package/dist/face-match.esm.js +173 -0
- package/dist/faceCaptureManagerFactory-Dh2PdGlF.esm.js +290 -0
- package/dist/faceCaptureManagerFactory-yqtpxjnN.d.ts +690 -0
- package/dist/faceCaptureSetup-B3faSpYA.esm.js +873 -0
- package/dist/faceMatchStateMachine-DNFrxTFS.esm.js +127 -0
- package/dist/flow-events.d.ts +6 -0
- package/dist/flow-events.esm.js +0 -0
- package/dist/flow.d.ts +101 -321
- package/dist/flow.esm.js +370 -173
- package/dist/flowCompletionService-DhkT4SRY.d.ts +10 -0
- package/dist/flowCompletionService-P54yzGvA.esm.js +13 -0
- package/dist/flowServices-DTsm-Vf1.esm.js +188 -0
- package/dist/geolocation.d.ts +127 -0
- package/dist/geolocation.esm.js +89 -0
- package/dist/geolocationStateMachine-asasuHY2.esm.js +105 -0
- package/dist/getBrowser-BSXUTWXw.esm.js +41 -0
- package/dist/getDeviceClass-BSntT9_j.esm.js +14 -0
- package/dist/government-validation.d.ts +67 -0
- package/dist/government-validation.esm.js +81 -0
- package/dist/governmentValidationStateMachine-BDDYrJTo.esm.js +271 -0
- package/dist/home.d.ts +99 -0
- package/dist/home.esm.js +61 -0
- package/dist/http.d.ts +68 -0
- package/dist/http.esm.js +3 -0
- package/dist/id-ocr.d.ts +635 -0
- package/dist/id-ocr.esm.js +86 -0
- package/dist/id-verification.d.ts +190 -0
- package/dist/id-verification.esm.js +43 -0
- package/dist/id.d.ts +24 -0
- package/dist/id.esm.js +164 -0
- package/dist/idCaptureManager-B9TGA5dq.d.ts +956 -0
- package/dist/idCaptureManager-DMK0GIt3.esm.js +581 -0
- package/dist/idCaptureStateMachine-Bq0fVZXl.esm.js +2954 -0
- package/dist/idOcrStateMachine-YbjjC_Gg.esm.js +388 -0
- package/dist/idVerificationStateMachine-xbw9HP1Z.esm.js +71 -0
- package/dist/identity-reuse.d.ts +530 -0
- package/dist/identity-reuse.esm.js +274 -0
- package/dist/index-BLKtMA0g.d.ts +1177 -0
- package/dist/index-BcRG8rtJ.d.ts +97 -0
- package/dist/index.d.ts +3 -226
- package/dist/index.esm.js +11 -154
- package/dist/invokeOnCaptureCallback-rc6kBHo5.esm.js +30 -0
- package/dist/{lib-Bu9XGMBW.esm.js → lib-BB0B_qQX.esm.js} +801 -2
- package/dist/mandatory-consent.d.ts +412 -0
- package/dist/mandatory-consent.esm.js +78 -0
- package/dist/mandatoryConsentStateMachine-Cnco1jvn.esm.js +126 -0
- package/dist/openviduLazy-Cm0XFh_v.esm.js +3 -0
- package/dist/openviduLazy-Cok70ZSg.esm.js +12 -0
- package/dist/permissionServices-D_i6nzEw.esm.js +50 -0
- package/dist/phone.d.ts +3 -291
- package/dist/phone.esm.js +7 -548
- package/dist/phoneManager-B6M30hKE.d.ts +397 -0
- package/dist/phoneManager-DAJbGhlY.esm.js +256 -0
- package/dist/phoneStateMachine-CuPARRaT.esm.js +351 -0
- package/dist/platform-CfrjKhmi.esm.js +83 -0
- package/dist/qe-signature-DFo_Cc-I.esm.js +12 -0
- package/dist/qe-signature.d.ts +25 -0
- package/dist/qe-signature.esm.js +8 -0
- package/dist/recordingService-Ig2UgbLv.esm.js +1003 -0
- package/dist/redirect-to-mobile.d.ts +107 -0
- package/dist/redirect-to-mobile.esm.js +102 -0
- package/dist/redirectToMobileStateMachine-BOEqe46A.esm.js +249 -0
- package/dist/runChildModule-CqqwqAkW.esm.js +219 -0
- package/dist/selfie.d.ts +21 -754
- package/dist/selfie.esm.js +113 -962
- package/dist/selfieManager-D0lSgd-J.d.ts +68 -0
- package/dist/selfieManager-Duisl7qN.esm.js +60 -0
- package/dist/selfieStateMachine-D76whWEf.esm.js +68 -0
- package/dist/session-BS-d_vuE.esm.js +3206 -0
- package/dist/session.d.ts +217 -0
- package/dist/session.esm.js +9 -0
- package/dist/setup-Buy-hyj4.esm.js +887 -0
- package/dist/setup-C5AITV8m.d.ts +254 -0
- package/dist/signature.d.ts +94 -0
- package/dist/signature.esm.js +66 -0
- package/dist/signatureStateMachine-B5-QVUve.esm.js +132 -0
- package/dist/stats-CIfiPzb1.esm.js +16 -0
- package/dist/stats.d.ts +16 -0
- package/dist/stats.esm.js +4 -0
- package/dist/trust-graph.d.ts +54 -0
- package/dist/trust-graph.esm.js +56 -0
- package/dist/types-B06Ypu2F.d.ts +49 -0
- package/dist/types-BP1m8VRw.d.ts +340 -0
- package/dist/types-CFV9G_7j.d.ts +24 -0
- package/dist/{warmup-CEJTfxQr.d.ts → warmup-CEcppFiS.d.ts} +11 -3
- package/dist/wasm.d.ts +15 -0
- package/dist/wasm.esm.js +12 -0
- package/dist/watchlist-for-business.d.ts +79 -0
- package/dist/watchlist-for-business.esm.js +148 -0
- package/dist/watchlist.d.ts +62 -0
- package/dist/watchlist.esm.js +86 -0
- package/dist/watchlistServices-DMbUhkBX.esm.js +12 -0
- package/dist/workflow.d.ts +907 -0
- package/dist/workflow.esm.js +702 -0
- package/dist/{xstate.esm-B_rda9yU.esm.js → xstate.esm-B70JrNqo.esm.js} +144 -1
- package/package.json +203 -6
- package/dist/OpenViduLogger-BdPfiZO6.esm.js +0 -3
- package/dist/OpenViduLogger-CQyDxBvM.esm.js +0 -803
- package/dist/StateMachine-DRE1oH2B.d.ts +0 -2
- package/dist/addEvent-W0ORK0jT.esm.js +0 -16
- package/dist/endpoints-BSTFaHYo.esm.js +0 -1706
- package/dist/permissionServices-I6vX6DBy.esm.js +0 -72
- /package/dist/{Manager-BGfxEmyv.d.ts → Manager-C8PrhBOx.d.ts} +0 -0
- /package/dist/{chunk-C_Yo44FK.esm.js → chunk-CRF6K_H_.esm.js} +0 -0
- /package/dist/{types-iZi2rawo.d.ts → types-CAD4va6a.d.ts} +0 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { t as Manager } from "./Manager-C8PrhBOx.js";
|
|
2
|
+
import * as xstate250 from "xstate";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/cpf-ocr/cpfOcrManager.d.ts
|
|
5
|
+
type CpfOcrIdleState = {
|
|
6
|
+
status: 'idle';
|
|
7
|
+
};
|
|
8
|
+
type CpfOcrLoadingState = {
|
|
9
|
+
status: 'loading';
|
|
10
|
+
};
|
|
11
|
+
type CpfOcrInputtingState = {
|
|
12
|
+
status: 'inputting';
|
|
13
|
+
cpf: string;
|
|
14
|
+
isValid: boolean;
|
|
15
|
+
};
|
|
16
|
+
type CpfOcrSubmittingState = {
|
|
17
|
+
status: 'submitting';
|
|
18
|
+
};
|
|
19
|
+
type CpfOcrErrorState = {
|
|
20
|
+
status: 'error';
|
|
21
|
+
error: string;
|
|
22
|
+
};
|
|
23
|
+
type CpfOcrFinishedState = {
|
|
24
|
+
status: 'finished';
|
|
25
|
+
};
|
|
26
|
+
type CpfOcrState = CpfOcrIdleState | CpfOcrLoadingState | CpfOcrInputtingState | CpfOcrSubmittingState | CpfOcrErrorState | CpfOcrFinishedState;
|
|
27
|
+
declare function createCpfOcrManager(): Manager<CpfOcrState> & {
|
|
28
|
+
load(): void;
|
|
29
|
+
setCpf(cpf: string): void;
|
|
30
|
+
submit(): void;
|
|
31
|
+
retry(): void;
|
|
32
|
+
};
|
|
33
|
+
type CpfOcrManager = ReturnType<typeof createCpfOcrManager>;
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/modules/cpf-ocr/types.d.ts
|
|
36
|
+
type CpfOcrDataResponse = {
|
|
37
|
+
documentNumber?: string;
|
|
38
|
+
};
|
|
39
|
+
type CpfOcrUpdateResponse = {
|
|
40
|
+
success?: boolean;
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/modules/cpf-ocr/cpfOcrStateMachine.d.ts
|
|
44
|
+
type CpfOcrContext = {
|
|
45
|
+
cpf: string;
|
|
46
|
+
isValid: boolean;
|
|
47
|
+
error: string | undefined;
|
|
48
|
+
};
|
|
49
|
+
type CpfOcrInput = Record<string, never>;
|
|
50
|
+
declare const cpfOcrMachine: xstate250.StateMachine<CpfOcrContext, {
|
|
51
|
+
type: "LOAD";
|
|
52
|
+
} | {
|
|
53
|
+
type: "SET_CPF";
|
|
54
|
+
cpf: string;
|
|
55
|
+
} | {
|
|
56
|
+
type: "SUBMIT";
|
|
57
|
+
} | {
|
|
58
|
+
type: "RETRY";
|
|
59
|
+
}, {
|
|
60
|
+
[x: string]: xstate250.ActorRefFromLogic<xstate250.PromiseActorLogic<CpfOcrDataResponse, void, xstate250.EventObject>> | xstate250.ActorRefFromLogic<xstate250.PromiseActorLogic<CpfOcrUpdateResponse, {
|
|
61
|
+
cpf: string;
|
|
62
|
+
}, xstate250.EventObject>> | undefined;
|
|
63
|
+
}, xstate250.Values<{
|
|
64
|
+
fetchCpfOcrData: {
|
|
65
|
+
src: "fetchCpfOcrData";
|
|
66
|
+
logic: xstate250.PromiseActorLogic<CpfOcrDataResponse, void, xstate250.EventObject>;
|
|
67
|
+
id: string | undefined;
|
|
68
|
+
};
|
|
69
|
+
submitCpfOcr: {
|
|
70
|
+
src: "submitCpfOcr";
|
|
71
|
+
logic: xstate250.PromiseActorLogic<CpfOcrUpdateResponse, {
|
|
72
|
+
cpf: string;
|
|
73
|
+
}, xstate250.EventObject>;
|
|
74
|
+
id: string | undefined;
|
|
75
|
+
};
|
|
76
|
+
}>, xstate250.Values<{
|
|
77
|
+
setError: {
|
|
78
|
+
type: "setError";
|
|
79
|
+
params: xstate250.NonReducibleUnknown;
|
|
80
|
+
};
|
|
81
|
+
clearError: {
|
|
82
|
+
type: "clearError";
|
|
83
|
+
params: xstate250.NonReducibleUnknown;
|
|
84
|
+
};
|
|
85
|
+
setPrefill: {
|
|
86
|
+
type: "setPrefill";
|
|
87
|
+
params: xstate250.NonReducibleUnknown;
|
|
88
|
+
};
|
|
89
|
+
setCpf: {
|
|
90
|
+
type: "setCpf";
|
|
91
|
+
params: xstate250.NonReducibleUnknown;
|
|
92
|
+
};
|
|
93
|
+
}>, {
|
|
94
|
+
type: "isValid";
|
|
95
|
+
params: unknown;
|
|
96
|
+
}, never, "error" | "idle" | "finished" | "loading" | "submitting" | "inputting", string, CpfOcrInput, xstate250.NonReducibleUnknown, xstate250.EventObject, xstate250.MetaObject, {
|
|
97
|
+
readonly id: "cpfOcr";
|
|
98
|
+
readonly initial: "idle";
|
|
99
|
+
readonly context: {
|
|
100
|
+
readonly cpf: "";
|
|
101
|
+
readonly isValid: false;
|
|
102
|
+
readonly error: undefined;
|
|
103
|
+
};
|
|
104
|
+
readonly states: {
|
|
105
|
+
readonly idle: {
|
|
106
|
+
readonly on: {
|
|
107
|
+
readonly LOAD: "loading";
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
readonly loading: {
|
|
111
|
+
readonly invoke: {
|
|
112
|
+
readonly src: "fetchCpfOcrData";
|
|
113
|
+
readonly onDone: {
|
|
114
|
+
readonly target: "inputting";
|
|
115
|
+
readonly actions: "setPrefill";
|
|
116
|
+
};
|
|
117
|
+
readonly onError: {
|
|
118
|
+
readonly target: "error";
|
|
119
|
+
readonly actions: "setError";
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
readonly inputting: {
|
|
124
|
+
readonly on: {
|
|
125
|
+
readonly SET_CPF: {
|
|
126
|
+
readonly actions: "setCpf";
|
|
127
|
+
};
|
|
128
|
+
readonly SUBMIT: {
|
|
129
|
+
readonly guard: "isValid";
|
|
130
|
+
readonly target: "submitting";
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
readonly submitting: {
|
|
135
|
+
readonly invoke: {
|
|
136
|
+
readonly src: "submitCpfOcr";
|
|
137
|
+
readonly input: ({
|
|
138
|
+
context
|
|
139
|
+
}: {
|
|
140
|
+
context: CpfOcrContext;
|
|
141
|
+
event: {
|
|
142
|
+
type: "LOAD";
|
|
143
|
+
} | {
|
|
144
|
+
type: "SET_CPF";
|
|
145
|
+
cpf: string;
|
|
146
|
+
} | {
|
|
147
|
+
type: "SUBMIT";
|
|
148
|
+
} | {
|
|
149
|
+
type: "RETRY";
|
|
150
|
+
};
|
|
151
|
+
self: xstate250.ActorRef<xstate250.MachineSnapshot<CpfOcrContext, {
|
|
152
|
+
type: "LOAD";
|
|
153
|
+
} | {
|
|
154
|
+
type: "SET_CPF";
|
|
155
|
+
cpf: string;
|
|
156
|
+
} | {
|
|
157
|
+
type: "SUBMIT";
|
|
158
|
+
} | {
|
|
159
|
+
type: "RETRY";
|
|
160
|
+
}, Record<string, xstate250.AnyActorRef>, xstate250.StateValue, string, unknown, any, any>, {
|
|
161
|
+
type: "LOAD";
|
|
162
|
+
} | {
|
|
163
|
+
type: "SET_CPF";
|
|
164
|
+
cpf: string;
|
|
165
|
+
} | {
|
|
166
|
+
type: "SUBMIT";
|
|
167
|
+
} | {
|
|
168
|
+
type: "RETRY";
|
|
169
|
+
}, xstate250.AnyEventObject>;
|
|
170
|
+
}) => {
|
|
171
|
+
cpf: string;
|
|
172
|
+
};
|
|
173
|
+
readonly onDone: {
|
|
174
|
+
readonly target: "finished";
|
|
175
|
+
};
|
|
176
|
+
readonly onError: {
|
|
177
|
+
readonly target: "error";
|
|
178
|
+
readonly actions: "setError";
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
readonly error: {
|
|
183
|
+
readonly on: {
|
|
184
|
+
readonly RETRY: {
|
|
185
|
+
readonly target: "loading";
|
|
186
|
+
readonly actions: "clearError";
|
|
187
|
+
};
|
|
188
|
+
readonly SET_CPF: {
|
|
189
|
+
readonly target: "inputting";
|
|
190
|
+
readonly actions: "setCpf";
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
readonly finished: {
|
|
195
|
+
readonly type: "final";
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
}>;
|
|
199
|
+
//#endregion
|
|
200
|
+
//#region src/modules/cpf-ocr/cpfOcrUtils.d.ts
|
|
201
|
+
declare function formatCPF(value: string): string;
|
|
202
|
+
declare function isValidCPF(value: string): boolean;
|
|
203
|
+
//#endregion
|
|
204
|
+
export { type CpfOcrManager, type CpfOcrState, cpfOcrMachine, createCpfOcrManager, formatCPF, isValidCPF };
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { t as api } from "./api-CESGtpbH.esm.js";
|
|
2
|
+
import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-D6-e4vok.esm.js";
|
|
3
|
+
import { t as endpoints } from "./endpoints-CnN3SyDa.esm.js";
|
|
4
|
+
import { a as fromPromise, c as createManager, r as assign, s as createActor, t as setup } from "./xstate.esm-B70JrNqo.esm.js";
|
|
5
|
+
import { t as validateCPF } from "./cpf-PPz2Njto.esm.js";
|
|
6
|
+
|
|
7
|
+
//#region src/modules/cpf-ocr/cpfOcrServices.ts
|
|
8
|
+
async function fetchCpfOcrData(signal) {
|
|
9
|
+
const res = await api.get(endpoints.ocrData, { signal });
|
|
10
|
+
if (!res.ok) throw new Error(`GET ${endpoints.ocrData} failed: ${res.status} ${res.statusText}`);
|
|
11
|
+
return res.data;
|
|
12
|
+
}
|
|
13
|
+
async function submitCpfOcr(documentNumber, signal) {
|
|
14
|
+
const res = await api.put(endpoints.updateSession, { documentNumber }, { signal });
|
|
15
|
+
if (!res.ok) throw new Error(`PUT ${endpoints.updateSession} failed: ${res.status} ${res.statusText}`);
|
|
16
|
+
return res.data;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/modules/cpf-ocr/cpfOcrUtils.ts
|
|
21
|
+
function formatCPF(value) {
|
|
22
|
+
const digits = value.replace(/\D/g, "").slice(0, 11);
|
|
23
|
+
const first = digits.slice(0, 3);
|
|
24
|
+
const second = digits.slice(3, 6);
|
|
25
|
+
const third = digits.slice(6, 9);
|
|
26
|
+
const verifier = digits.slice(9, 11);
|
|
27
|
+
if (digits.length > 9) return `${first}.${second}.${third}-${verifier}`;
|
|
28
|
+
if (digits.length > 6) return `${first}.${second}.${third}`;
|
|
29
|
+
if (digits.length > 3) return `${first}.${second}`;
|
|
30
|
+
return first;
|
|
31
|
+
}
|
|
32
|
+
function isValidCPF(value) {
|
|
33
|
+
return validateCPF(value);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/modules/cpf-ocr/cpfOcrStateMachine.ts
|
|
38
|
+
const cpfOcrMachine = setup({
|
|
39
|
+
types: {
|
|
40
|
+
context: {},
|
|
41
|
+
events: {},
|
|
42
|
+
input: {}
|
|
43
|
+
},
|
|
44
|
+
actors: {
|
|
45
|
+
fetchCpfOcrData: fromPromise(async ({ signal }) => fetchCpfOcrData(signal)),
|
|
46
|
+
submitCpfOcr: fromPromise(async ({ input, signal }) => submitCpfOcr(input.cpf, signal))
|
|
47
|
+
},
|
|
48
|
+
actions: {
|
|
49
|
+
setPrefill: assign(({ event }) => {
|
|
50
|
+
const output = event.output;
|
|
51
|
+
const cpf = formatCPF(output.documentNumber ?? "");
|
|
52
|
+
return {
|
|
53
|
+
cpf,
|
|
54
|
+
isValid: isValidCPF(cpf),
|
|
55
|
+
error: void 0
|
|
56
|
+
};
|
|
57
|
+
}),
|
|
58
|
+
setCpf: assign(({ event }) => {
|
|
59
|
+
const cpf = formatCPF(event.cpf);
|
|
60
|
+
return {
|
|
61
|
+
cpf,
|
|
62
|
+
isValid: isValidCPF(cpf),
|
|
63
|
+
error: void 0
|
|
64
|
+
};
|
|
65
|
+
}),
|
|
66
|
+
setError: assign(({ event }) => ({ error: String(event.error) })),
|
|
67
|
+
clearError: assign({ error: () => void 0 })
|
|
68
|
+
},
|
|
69
|
+
guards: { isValid: ({ context }) => context.isValid }
|
|
70
|
+
}).createMachine({
|
|
71
|
+
id: "cpfOcr",
|
|
72
|
+
initial: "idle",
|
|
73
|
+
context: {
|
|
74
|
+
cpf: "",
|
|
75
|
+
isValid: false,
|
|
76
|
+
error: void 0
|
|
77
|
+
},
|
|
78
|
+
states: {
|
|
79
|
+
idle: { on: { LOAD: "loading" } },
|
|
80
|
+
loading: { invoke: {
|
|
81
|
+
src: "fetchCpfOcrData",
|
|
82
|
+
onDone: {
|
|
83
|
+
target: "inputting",
|
|
84
|
+
actions: "setPrefill"
|
|
85
|
+
},
|
|
86
|
+
onError: {
|
|
87
|
+
target: "error",
|
|
88
|
+
actions: "setError"
|
|
89
|
+
}
|
|
90
|
+
} },
|
|
91
|
+
inputting: { on: {
|
|
92
|
+
SET_CPF: { actions: "setCpf" },
|
|
93
|
+
SUBMIT: {
|
|
94
|
+
guard: "isValid",
|
|
95
|
+
target: "submitting"
|
|
96
|
+
}
|
|
97
|
+
} },
|
|
98
|
+
submitting: { invoke: {
|
|
99
|
+
src: "submitCpfOcr",
|
|
100
|
+
input: ({ context }) => ({ cpf: context.cpf }),
|
|
101
|
+
onDone: { target: "finished" },
|
|
102
|
+
onError: {
|
|
103
|
+
target: "error",
|
|
104
|
+
actions: "setError"
|
|
105
|
+
}
|
|
106
|
+
} },
|
|
107
|
+
error: { on: {
|
|
108
|
+
RETRY: {
|
|
109
|
+
target: "loading",
|
|
110
|
+
actions: "clearError"
|
|
111
|
+
},
|
|
112
|
+
SET_CPF: {
|
|
113
|
+
target: "inputting",
|
|
114
|
+
actions: "setCpf"
|
|
115
|
+
}
|
|
116
|
+
} },
|
|
117
|
+
finished: { type: "final" }
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region src/modules/cpf-ocr/cpfOcrActor.ts
|
|
123
|
+
function createCpfOcrActor() {
|
|
124
|
+
return createActor(cpfOcrMachine, { input: {} }).start();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
//#endregion
|
|
128
|
+
//#region src/modules/cpf-ocr/cpfOcrManager.ts
|
|
129
|
+
function mapState(snapshot) {
|
|
130
|
+
const { context } = snapshot;
|
|
131
|
+
if (snapshot.matches("idle")) return { status: "idle" };
|
|
132
|
+
if (snapshot.matches("loading")) return { status: "loading" };
|
|
133
|
+
if (snapshot.matches("inputting")) return {
|
|
134
|
+
status: "inputting",
|
|
135
|
+
cpf: context.cpf,
|
|
136
|
+
isValid: context.isValid
|
|
137
|
+
};
|
|
138
|
+
if (snapshot.matches("submitting")) return { status: "submitting" };
|
|
139
|
+
if (snapshot.matches("error")) return {
|
|
140
|
+
status: "error",
|
|
141
|
+
error: context.error ?? "Unknown error"
|
|
142
|
+
};
|
|
143
|
+
if (snapshot.matches("finished")) return { status: "finished" };
|
|
144
|
+
return { status: "idle" };
|
|
145
|
+
}
|
|
146
|
+
function createApi({ actor, trackElementClicked }) {
|
|
147
|
+
return {
|
|
148
|
+
load() {
|
|
149
|
+
actor.send({ type: "LOAD" });
|
|
150
|
+
},
|
|
151
|
+
setCpf(cpf) {
|
|
152
|
+
actor.send({
|
|
153
|
+
type: "SET_CPF",
|
|
154
|
+
cpf
|
|
155
|
+
});
|
|
156
|
+
},
|
|
157
|
+
submit() {
|
|
158
|
+
trackElementClicked?.("continue");
|
|
159
|
+
actor.send({ type: "SUBMIT" });
|
|
160
|
+
},
|
|
161
|
+
retry() {
|
|
162
|
+
trackElementClicked?.("retry");
|
|
163
|
+
actor.send({ type: "RETRY" });
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function createCpfOcrManager() {
|
|
168
|
+
return createManager({
|
|
169
|
+
actor: createCpfOcrActor(),
|
|
170
|
+
mapState,
|
|
171
|
+
createApi,
|
|
172
|
+
instrumentation: createManagerInstrumentation(eventModuleNames.idOcr)
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
//#endregion
|
|
177
|
+
export { cpfOcrMachine, createCpfOcrManager, formatCPF, isValidCPF };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { t as Manager } from "./Manager-C8PrhBOx.js";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/cross-document-data-match/crossDocumentDataMatchManager.d.ts
|
|
4
|
+
type CrossDocumentDataMatchIdleState = {
|
|
5
|
+
status: 'idle';
|
|
6
|
+
};
|
|
7
|
+
type CrossDocumentDataMatchProcessingState = {
|
|
8
|
+
status: 'processing';
|
|
9
|
+
};
|
|
10
|
+
type CrossDocumentDataMatchFinishedState = {
|
|
11
|
+
status: 'finished';
|
|
12
|
+
};
|
|
13
|
+
type CrossDocumentDataMatchState = CrossDocumentDataMatchIdleState | CrossDocumentDataMatchProcessingState | CrossDocumentDataMatchFinishedState;
|
|
14
|
+
declare function createCrossDocumentDataMatchManager(): Manager<CrossDocumentDataMatchState> & {
|
|
15
|
+
/**
|
|
16
|
+
* Starts cross-document comparison (spinner + backend processing).
|
|
17
|
+
*/
|
|
18
|
+
load(): void;
|
|
19
|
+
};
|
|
20
|
+
type CrossDocumentDataMatchManager = ReturnType<typeof createCrossDocumentDataMatchManager>;
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/modules/cross-document-data-match/crossDocumentDataMatchStateMachine.d.ts
|
|
23
|
+
declare const crossDocumentDataMatchMachine: any;
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/modules/cross-document-data-match/types.d.ts
|
|
26
|
+
/**
|
|
27
|
+
* Configuration for the cross-document data match module.
|
|
28
|
+
*
|
|
29
|
+
* The module runs a backend comparison of OCR data across captured documents
|
|
30
|
+
* and completes after a minimum display duration (spinner), matching legacy behavior.
|
|
31
|
+
*/
|
|
32
|
+
type CrossDocumentDataMatchConfig = Record<string, never>;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { type CrossDocumentDataMatchConfig, type CrossDocumentDataMatchManager, type CrossDocumentDataMatchState, createCrossDocumentDataMatchManager, crossDocumentDataMatchMachine };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { t as api } from "./api-CESGtpbH.esm.js";
|
|
2
|
+
import { n as eventModuleNames, o as createManagerInstrumentation } from "./events-D6-e4vok.esm.js";
|
|
3
|
+
import { t as endpoints } from "./endpoints-CnN3SyDa.esm.js";
|
|
4
|
+
import { a as fromPromise, c as createManager, s as createActor, t as setup } from "./xstate.esm-B70JrNqo.esm.js";
|
|
5
|
+
import { t as sleep } from "./ITimerCapability-C67ZRskg.esm.js";
|
|
6
|
+
|
|
7
|
+
//#region src/modules/cross-document-data-match/crossDocumentDataMatchServices.ts
|
|
8
|
+
/** Minimum spinner duration (ms), aligned with SDK v1 `ProcessCrossDocumentData`. */
|
|
9
|
+
const MIN_DISPLAY_MS = 3e3;
|
|
10
|
+
async function processCrossDocumentDataMatch(signal) {
|
|
11
|
+
const [res] = await Promise.all([api.post(endpoints.processCrossDocumentDataMatch, {}, { signal }), sleep(MIN_DISPLAY_MS)]);
|
|
12
|
+
if (!res.ok) throw new Error(`POST ${endpoints.processCrossDocumentDataMatch} failed: ${res.status} ${res.statusText}`);
|
|
13
|
+
return res.data;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/modules/cross-document-data-match/crossDocumentDataMatchStateMachine.ts
|
|
18
|
+
const crossDocumentDataMatchMachine = setup({
|
|
19
|
+
types: {
|
|
20
|
+
context: {},
|
|
21
|
+
events: {}
|
|
22
|
+
},
|
|
23
|
+
actors: { processCrossDocumentDataMatch: fromPromise(async ({ signal }) => {
|
|
24
|
+
return processCrossDocumentDataMatch(signal);
|
|
25
|
+
}) }
|
|
26
|
+
}).createMachine({
|
|
27
|
+
id: "crossDocumentDataMatch",
|
|
28
|
+
initial: "idle",
|
|
29
|
+
context: {},
|
|
30
|
+
states: {
|
|
31
|
+
idle: { on: { LOAD: { target: "processing" } } },
|
|
32
|
+
processing: { invoke: {
|
|
33
|
+
id: "processCrossDocumentDataMatch",
|
|
34
|
+
src: "processCrossDocumentDataMatch",
|
|
35
|
+
onDone: { target: "finished" },
|
|
36
|
+
onError: { target: "finished" }
|
|
37
|
+
} },
|
|
38
|
+
finished: { type: "final" }
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/modules/cross-document-data-match/crossDocumentDataMatchActor.ts
|
|
44
|
+
function createCrossDocumentDataMatchActor() {
|
|
45
|
+
return createActor(crossDocumentDataMatchMachine).start();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/modules/cross-document-data-match/crossDocumentDataMatchManager.ts
|
|
50
|
+
function mapState(snapshot) {
|
|
51
|
+
const typedSnapshot = snapshot;
|
|
52
|
+
if (typedSnapshot.matches("processing")) return { status: "processing" };
|
|
53
|
+
if (typedSnapshot.matches("finished")) return { status: "finished" };
|
|
54
|
+
return { status: "idle" };
|
|
55
|
+
}
|
|
56
|
+
function createApi({ actor }) {
|
|
57
|
+
return { load() {
|
|
58
|
+
actor.send({ type: "LOAD" });
|
|
59
|
+
} };
|
|
60
|
+
}
|
|
61
|
+
function createCrossDocumentDataMatchManager() {
|
|
62
|
+
return createManager({
|
|
63
|
+
actor: createCrossDocumentDataMatchActor(),
|
|
64
|
+
mapState,
|
|
65
|
+
createApi,
|
|
66
|
+
instrumentation: createManagerInstrumentation(eventModuleNames.crossDocumentDataMatch)
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
export { createCrossDocumentDataMatchManager, crossDocumentDataMatchMachine };
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { t as Manager } from "./Manager-C8PrhBOx.js";
|
|
2
|
+
import "./Actor-CI32dTbG.js";
|
|
3
|
+
import "./camera-DBSxa6ML.js";
|
|
4
|
+
import "./types-CFV9G_7j.js";
|
|
5
|
+
import { i as FlowModuleConfig } from "./types-BP1m8VRw.js";
|
|
6
|
+
|
|
7
|
+
//#region src/modules/curp-validation/types.d.ts
|
|
8
|
+
type CurpValidationConfig = FlowModuleConfig['CURP_VALIDATION'] & {
|
|
9
|
+
/** Maximum validation retries before auto-advancing. @default 1 */
|
|
10
|
+
maxRetries?: number;
|
|
11
|
+
/** Whether to attempt OCR pre-fill on load. @default true */
|
|
12
|
+
prefillFromOcr?: boolean;
|
|
13
|
+
};
|
|
14
|
+
/** CURP generation form data */
|
|
15
|
+
type GenerateCurpForm = {
|
|
16
|
+
name: string;
|
|
17
|
+
firstLastName: string;
|
|
18
|
+
secondLastName: string;
|
|
19
|
+
gender: 'H' | 'M' | 'X' | '';
|
|
20
|
+
birthDate: string;
|
|
21
|
+
birthState: string;
|
|
22
|
+
};
|
|
23
|
+
type GenerateCurpFieldType = 'text' | 'date' | 'dropdown';
|
|
24
|
+
/**
|
|
25
|
+
* Discriminated union of validation rules supported across both CURP screens.
|
|
26
|
+
* `required` is used by Generate-CURP fields; `curpFormat` is used by the
|
|
27
|
+
* single-field CURP entry.
|
|
28
|
+
*/
|
|
29
|
+
type CurpValidationRule = {
|
|
30
|
+
type: 'required';
|
|
31
|
+
} | {
|
|
32
|
+
type: 'curpFormat';
|
|
33
|
+
};
|
|
34
|
+
type GenerateCurpFieldDef = {
|
|
35
|
+
key: keyof GenerateCurpForm;
|
|
36
|
+
labelKey: string;
|
|
37
|
+
type: GenerateCurpFieldType;
|
|
38
|
+
required: boolean;
|
|
39
|
+
autoComplete?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Validation rules evaluated by the state machine on blur (per-field) and
|
|
42
|
+
* on submit (full form). Required fields should include `{ type: 'required' }`.
|
|
43
|
+
* Optional fields (e.g. `secondLastName`) omit this entirely.
|
|
44
|
+
*/
|
|
45
|
+
validation?: CurpValidationRule[];
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Configuration for the single CURP-entry field on the gateway screen.
|
|
49
|
+
* Intentionally has no `required` rule: the user can leave it empty and
|
|
50
|
+
* use the "I don't have my CURP" escape-hatch button instead.
|
|
51
|
+
*/
|
|
52
|
+
type EnterCurpFieldDef = {
|
|
53
|
+
key: 'curp';
|
|
54
|
+
labelKey: string;
|
|
55
|
+
validation?: CurpValidationRule[];
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Map of field-key → i18n error key currently displayed for that field.
|
|
59
|
+
* Empty/undefined means no errors are currently shown. The state machine
|
|
60
|
+
* is the single source of truth for which entries exist here — UI must
|
|
61
|
+
* render this map as-is without further gating.
|
|
62
|
+
*/
|
|
63
|
+
type CurpValidationErrors = Partial<Record<string, string>>;
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/modules/curp-validation/curpValidationStateMachine.d.ts
|
|
66
|
+
|
|
67
|
+
declare const curpValidationMachine: any;
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region src/modules/curp-validation/curpValidationActor.d.ts
|
|
70
|
+
type CreateCurpValidationActorOptions = {
|
|
71
|
+
config: CurpValidationConfig;
|
|
72
|
+
};
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/modules/curp-validation/curpValidationManager.d.ts
|
|
75
|
+
type CurpValidationIdleState = {
|
|
76
|
+
status: 'idle';
|
|
77
|
+
};
|
|
78
|
+
type CurpValidationLoadingState = {
|
|
79
|
+
status: 'loading';
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* State exposed to UI for the CURP entry gateway screen.
|
|
83
|
+
*
|
|
84
|
+
* `isValid` is **derived** from `validationErrors`: it is `true` whenever
|
|
85
|
+
* no errors are currently displayed (including the initial empty render).
|
|
86
|
+
* The UI must not treat `isValid` as "the form would pass full validation
|
|
87
|
+
* right now" — that was the old pessimistic semantic. Use the absence of
|
|
88
|
+
* errors plus an additional `curp.length === 0` no-op guard on the submit
|
|
89
|
+
* button instead.
|
|
90
|
+
*/
|
|
91
|
+
type CurpValidationEnterCurpState = {
|
|
92
|
+
status: 'enterCurp';
|
|
93
|
+
curp: string;
|
|
94
|
+
isValid: boolean;
|
|
95
|
+
validationErrors?: CurpValidationErrors;
|
|
96
|
+
};
|
|
97
|
+
type CurpValidationVerifyingState = {
|
|
98
|
+
status: 'verifying';
|
|
99
|
+
};
|
|
100
|
+
type CurpValidationSuccessState = {
|
|
101
|
+
status: 'success';
|
|
102
|
+
};
|
|
103
|
+
type CurpValidationFailureState = {
|
|
104
|
+
status: 'failure';
|
|
105
|
+
retriesLeft: number;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* State exposed to UI for the multi-field Generate CURP form.
|
|
109
|
+
*
|
|
110
|
+
* `isValid` is derived: `true` when no errors are currently displayed.
|
|
111
|
+
* Validation runs on blur (single field) and on submit (full form);
|
|
112
|
+
* `validationErrors` reflects exactly what should be rendered next
|
|
113
|
+
* to each input.
|
|
114
|
+
*/
|
|
115
|
+
type CurpValidationGenerateCurpState = {
|
|
116
|
+
status: 'generateCurp';
|
|
117
|
+
form: GenerateCurpForm;
|
|
118
|
+
isValid: boolean;
|
|
119
|
+
validationErrors?: CurpValidationErrors;
|
|
120
|
+
};
|
|
121
|
+
type CurpValidationGeneratingState = {
|
|
122
|
+
status: 'generating';
|
|
123
|
+
};
|
|
124
|
+
type CurpValidationConfirmCurpState = {
|
|
125
|
+
status: 'confirmCurp';
|
|
126
|
+
curp: string;
|
|
127
|
+
};
|
|
128
|
+
type CurpValidationGenerateErrorState = {
|
|
129
|
+
status: 'generateError';
|
|
130
|
+
retriesLeft: number;
|
|
131
|
+
};
|
|
132
|
+
type CurpValidationFinishedState = {
|
|
133
|
+
status: 'finished';
|
|
134
|
+
};
|
|
135
|
+
type CurpValidationClosedState = {
|
|
136
|
+
status: 'closed';
|
|
137
|
+
};
|
|
138
|
+
type CurpValidationState = CurpValidationIdleState | CurpValidationLoadingState | CurpValidationEnterCurpState | CurpValidationVerifyingState | CurpValidationSuccessState | CurpValidationFailureState | CurpValidationGenerateCurpState | CurpValidationGeneratingState | CurpValidationConfirmCurpState | CurpValidationGenerateErrorState | CurpValidationFinishedState | CurpValidationClosedState;
|
|
139
|
+
declare function createCurpValidationManager(options: CreateCurpValidationActorOptions): Manager<CurpValidationState> & {
|
|
140
|
+
load(): void;
|
|
141
|
+
setCurp(curp: string): void;
|
|
142
|
+
/**
|
|
143
|
+
* Triggers single-field on-blur validation. The state machine routes
|
|
144
|
+
* the event to the validator for the currently active screen and
|
|
145
|
+
* updates the corresponding `validationErrors` map. Sending a field
|
|
146
|
+
* key that does not belong to the active screen is a no-op.
|
|
147
|
+
*/
|
|
148
|
+
validateField(field: "curp" | keyof GenerateCurpForm): void;
|
|
149
|
+
verify(): void;
|
|
150
|
+
switchToGenerate(): void;
|
|
151
|
+
setGenerateForm(form: Partial<GenerateCurpForm>): void;
|
|
152
|
+
generate(): void;
|
|
153
|
+
confirmGenerated(): void;
|
|
154
|
+
retry(): void;
|
|
155
|
+
close(): void;
|
|
156
|
+
};
|
|
157
|
+
type CurpValidationManager = ReturnType<typeof createCurpValidationManager>;
|
|
158
|
+
//#endregion
|
|
159
|
+
//#region src/modules/curp-validation/curpValidationUtils.d.ts
|
|
160
|
+
type MexicanState = {
|
|
161
|
+
value: string;
|
|
162
|
+
label: string;
|
|
163
|
+
};
|
|
164
|
+
declare const mexicanStates: MexicanState[];
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/modules/curp-validation/curpFields.d.ts
|
|
167
|
+
/**
|
|
168
|
+
* Declarative schema for the CURP generation form.
|
|
169
|
+
*
|
|
170
|
+
* `secondLastName` is intentionally optional: many people in Mexico have
|
|
171
|
+
* only a single paternal surname. It carries no validation rules.
|
|
172
|
+
*/
|
|
173
|
+
declare const GENERATE_CURP_FIELDS: GenerateCurpFieldDef[];
|
|
174
|
+
/**
|
|
175
|
+
* Config for the single field on the CURP entry gateway screen.
|
|
176
|
+
*
|
|
177
|
+
* Validation contains only `curpFormat` — there is intentionally no
|
|
178
|
+
* `required` rule. The user can legitimately leave this field empty
|
|
179
|
+
* and use the "I don't have my CURP" button to switch to the Generate
|
|
180
|
+
* flow; surfacing a "required" error on blur of an empty field would
|
|
181
|
+
* be misleading.
|
|
182
|
+
*
|
|
183
|
+
* The Continue button on this screen is gated by a UI-level no-op guard
|
|
184
|
+
* (`curp.length === 0`) instead, which lives in `curpInput.tsx`.
|
|
185
|
+
*/
|
|
186
|
+
declare const ENTER_CURP_FIELD: EnterCurpFieldDef;
|
|
187
|
+
//#endregion
|
|
188
|
+
export { type CurpValidationConfig, type CurpValidationErrors, type CurpValidationManager, type CurpValidationRule, type CurpValidationState, ENTER_CURP_FIELD, type EnterCurpFieldDef, GENERATE_CURP_FIELDS, type GenerateCurpFieldDef, type GenerateCurpFieldType, type GenerateCurpForm, createCurpValidationManager, curpValidationMachine, mexicanStates };
|