@gerege-systems/eid-mongolia-sdk 0.14.2 → 0.15.1
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/README.md +176 -54
- package/dist/{browser-CSZjH9Xs.d.cts → browser-8k_VDSP8.d.cts} +8 -183
- package/dist/{browser-CSZjH9Xs.d.ts → browser-BZ3hvv6-.d.ts} +8 -183
- package/dist/browser.d.cts +2 -1
- package/dist/browser.d.ts +2 -1
- package/dist/browser.js +5 -3
- package/dist/button.cjs +55 -45
- package/dist/button.js +55 -45
- package/dist/chunk-REWNE7PO.js +51 -0
- package/dist/{chunk-DXVHOZO7.js → chunk-TB2KQH3W.js} +1 -46
- package/dist/errors-Z7SgLVTr.d.cts +149 -0
- package/dist/errors-Z7SgLVTr.d.ts +149 -0
- package/dist/index.cjs +270 -256
- package/dist/index.d.cts +169 -159
- package/dist/index.d.ts +169 -159
- package/dist/index.js +256 -241
- package/dist/pades.cjs +3520 -0
- package/dist/pades.d.cts +128 -0
- package/dist/pades.d.ts +128 -0
- package/dist/pades.js +3484 -0
- package/package.json +16 -6
|
@@ -129,48 +129,6 @@ var ValidationError = class extends EidError {
|
|
|
129
129
|
var DeviceLinkError = class extends EidError {
|
|
130
130
|
};
|
|
131
131
|
|
|
132
|
-
// src/devicelink.ts
|
|
133
|
-
var SESSION_ID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
134
|
-
var VC_RE = /^[0-9]{5}$/;
|
|
135
|
-
function deviceLink(session) {
|
|
136
|
-
const base = session.deviceLinkBase?.trim();
|
|
137
|
-
if (!base) throw new DeviceLinkError("deviceLink: \u0445\u0430\u0440\u0438\u0443\u043D\u0434 deviceLinkBase \u0431\u0430\u0439\u0445\u0433\u04AF\u0439 \u2014 device-link session \u044D\u0441\u044D\u0445\u0438\u0439\u0433 \u0448\u0430\u043B\u0433\u0430");
|
|
138
|
-
let u;
|
|
139
|
-
try {
|
|
140
|
-
u = new URL(base);
|
|
141
|
-
} catch {
|
|
142
|
-
throw new DeviceLinkError(`deviceLink: deviceLinkBase \u0431\u0443\u0440\u0443\u0443 URL: ${base}`);
|
|
143
|
-
}
|
|
144
|
-
if (u.protocol !== "https:" && u.protocol !== "http:") {
|
|
145
|
-
throw new DeviceLinkError(`deviceLink: deviceLinkBase https URL \u0431\u0430\u0439\u0445 \u0451\u0441\u0442\u043E\u0439: ${u.protocol}`);
|
|
146
|
-
}
|
|
147
|
-
if (!SESSION_ID_RE.test(session.sessionId)) throw new DeviceLinkError("deviceLink: sessionId UUID (lowercase) \u0431\u0438\u0448");
|
|
148
|
-
if (session.vc == null || !VC_RE.test(session.vc)) throw new DeviceLinkError("deviceLink: vc 5 \u043E\u0440\u043E\u043D\u0442\u043E\u0439 \u0442\u043E\u043E \u0431\u0438\u0448");
|
|
149
|
-
u.searchParams.set("sessionId", session.sessionId);
|
|
150
|
-
u.searchParams.set("vc", session.vc);
|
|
151
|
-
return u.toString();
|
|
152
|
-
}
|
|
153
|
-
function isMobileUserAgent(nav) {
|
|
154
|
-
const n = nav ?? globalThis.navigator;
|
|
155
|
-
if (!n) return false;
|
|
156
|
-
if (n.userAgentData?.mobile === true) return true;
|
|
157
|
-
const ua = n.userAgent ?? "";
|
|
158
|
-
if (/Android|iPhone|iPod|iPad/i.test(ua)) return true;
|
|
159
|
-
return /Macintosh/.test(ua) && (n.maxTouchPoints ?? 0) > 1;
|
|
160
|
-
}
|
|
161
|
-
function openOrShowQR(session, opts) {
|
|
162
|
-
const link = deviceLink(session);
|
|
163
|
-
const mobile = typeof opts.isMobile === "function" ? opts.isMobile() : opts.isMobile ?? isMobileUserAgent();
|
|
164
|
-
if (mobile) {
|
|
165
|
-
const loc = globalThis.location;
|
|
166
|
-
if (!loc) throw new DeviceLinkError("openOrShowQR: location \u0431\u0430\u0439\u0445\u0433\u04AF\u0439 \u2014 \u0437\u04E9\u0432\u0445\u04E9\u043D \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0442");
|
|
167
|
-
loc.assign(link);
|
|
168
|
-
return "opened";
|
|
169
|
-
}
|
|
170
|
-
opts.showQR(link);
|
|
171
|
-
return "qr";
|
|
172
|
-
}
|
|
173
|
-
|
|
174
132
|
export {
|
|
175
133
|
EidError,
|
|
176
134
|
AuthenticationError,
|
|
@@ -187,8 +145,5 @@ export {
|
|
|
187
145
|
maskPath,
|
|
188
146
|
SessionFailedError,
|
|
189
147
|
ValidationError,
|
|
190
|
-
DeviceLinkError
|
|
191
|
-
deviceLink,
|
|
192
|
-
isMobileUserAgent,
|
|
193
|
-
openOrShowQR
|
|
148
|
+
DeviceLinkError
|
|
194
149
|
};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/** Бүх SDK алдааны суурь. */
|
|
2
|
+
declare class EidError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
/** HTTP хариуны нэмэлт мэдээлэл (алдааны төрлүүдэд). */
|
|
6
|
+
interface HttpErrorInit {
|
|
7
|
+
/** Хариуны header-ууд. */
|
|
8
|
+
headers?: Headers;
|
|
9
|
+
/** Retry-After (секунд эсвэл HTTP-огноо задалсан), мс; байхгүй/буруу бол undefined. */
|
|
10
|
+
retryAfterMs?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* HTTP 401 — API secret буруу/байхгүй. Тохиргооны (RP secret) алдаа. CA-ийн өөрийн 401 нь JSON `{"error"[,"code"]}` —
|
|
14
|
+
* `serverMessage` (ба байвал `code`) бөглөгдөнө; JSON биш (proxy / nginx) бол хоёул undefined — үүгээр CA-ийн 401-ийг
|
|
15
|
+
* proxy-ийнхоос ялгана.
|
|
16
|
+
*/
|
|
17
|
+
declare class AuthenticationError extends EidError {
|
|
18
|
+
/** Серверийн `{"code"}`; байхгүй / JSON биш (proxy) бол undefined. */
|
|
19
|
+
readonly code?: string;
|
|
20
|
+
/** Серверийн `{"error"}` текст (логт); JSON биш (proxy) бол undefined. */
|
|
21
|
+
readonly serverMessage?: string;
|
|
22
|
+
/** Хариуны бие (таслагдаагүй текст). */
|
|
23
|
+
readonly body?: string;
|
|
24
|
+
readonly headers?: Headers;
|
|
25
|
+
constructor(message: string, init?: {
|
|
26
|
+
code?: string;
|
|
27
|
+
serverMessage?: string;
|
|
28
|
+
body?: string;
|
|
29
|
+
headers?: Headers;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* HTTP 403 — IP allowlist/mTLS зөвшөөрөөгүй, RP-д эрх алга, эсвэл onBehalfOf-ийн төлөөлөл татгалзсан.
|
|
34
|
+
* Сервер `{"error","code"}` буцаасан бол `code` (ж: `REPRESENTATION_DENIED`) — салааллыг үүгээр хийнэ.
|
|
35
|
+
*/
|
|
36
|
+
declare class ForbiddenError extends EidError {
|
|
37
|
+
/** Серверийн тогтвортой алдааны код (`{"code"}`), байхгүй бол undefined. */
|
|
38
|
+
readonly code?: string | undefined;
|
|
39
|
+
readonly headers?: Headers;
|
|
40
|
+
/** Retry-After (мс), байхгүй бол undefined. */
|
|
41
|
+
readonly retryAfterMs?: number;
|
|
42
|
+
constructor(message: string,
|
|
43
|
+
/** Серверийн тогтвортой алдааны код (`{"code"}`), байхгүй бол undefined. */
|
|
44
|
+
code?: string | undefined, init?: HttpErrorInit);
|
|
45
|
+
}
|
|
46
|
+
/** RP-API-аас ирсэн бусад HTTP алдаа (4xx/5xx). status ба хариуны биеийг агуулна. */
|
|
47
|
+
declare class ApiError extends EidError {
|
|
48
|
+
readonly status: number;
|
|
49
|
+
readonly body: string;
|
|
50
|
+
/** Серверийн тогтвортой алдааны код (`{"error","code"}`-ийн `code`), байхгүй бол undefined. */
|
|
51
|
+
readonly code?: string | undefined;
|
|
52
|
+
readonly headers?: Headers;
|
|
53
|
+
/**
|
|
54
|
+
* Retry-After (мс, секунд эсвэл HTTP-огноо задалсан); байхгүй/буруу бол undefined. CA түр алдаанд (429
|
|
55
|
+
* PDF_PREPARE_BUSY / RATE_LIMITED, 503 DOCUMENT_PENDING / TSA_UNAVAILABLE / LTV_UNAVAILABLE г.м.) тавина.
|
|
56
|
+
*/
|
|
57
|
+
readonly retryAfterMs?: number;
|
|
58
|
+
constructor(status: number, body: string,
|
|
59
|
+
/** Серверийн тогтвортой алдааны код (`{"error","code"}`-ийн `code`), байхгүй бол undefined. */
|
|
60
|
+
code?: string | undefined, init?: HttpErrorInit);
|
|
61
|
+
/**
|
|
62
|
+
* CA-ийн түр алдаа ({@link RETRYABLE_ERROR_CODES}-ийн нэг, эсвэл 429/503 + Retry-After): `retryAfterMs`-ийн дараа
|
|
63
|
+
* ижил хүсэлтийг давтаж болно.
|
|
64
|
+
*/
|
|
65
|
+
get retryable(): boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 409 `NO_SIGNING_CERTIFICATE` — иргэнд (баримтад) идэвхтэй төхөөрөмж / SIGN credential / хүчинтэй гарын үсгийн
|
|
69
|
+
* гэрчилгээ алга: sign ба certificate-choice session start, `/pdf/sign/prepare`. Session үүсээгүй. Танихгүй
|
|
70
|
+
* лавлагаанд ч ижил хариу (бүртгэл задлахгүй) — хэрэглэгчид «eID гарын үсгийн гэрчилгээгүй» гэж харуулна.
|
|
71
|
+
*/
|
|
72
|
+
declare class NoSigningCertificateError extends ApiError {
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 409 `CERT_CHOICE_INVALID` — linked sign-ийн `linkedSessionID` (certificate-choice) хүчингүй: өөр RP, COMPLETE+OK биш,
|
|
76
|
+
* өөр documentNumber, 5 минутаас хуучин, гэрчилгээ солигдсон, эсвэл аль хэдийн ашиглагдсан. Certificate-choice-ийг
|
|
77
|
+
* дахин эхлүүлнэ.
|
|
78
|
+
*/
|
|
79
|
+
declare class CertChoiceInvalidError extends ApiError {
|
|
80
|
+
}
|
|
81
|
+
/** 400 `REQUEST_INVALID` — хүсэлтийн бие/талбар буруу (ж: linked sign-д `linkedSessionID` дутуу). Програмын алдаа. */
|
|
82
|
+
declare class RequestInvalidError extends ApiError {
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* CA-ийн түр (давтаж болох) алдааны кодууд — `ApiError.code`. PDF_PREPARE_BUSY (429 prepare, Retry-After 5),
|
|
86
|
+
* DOCUMENT_PENDING (503 document, 5), TSA_UNAVAILABLE (503, 30), LTV_UNAVAILABLE (503, 60), RATE_LIMITED (429 токен),
|
|
87
|
+
* STATE_UNAVAILABLE (503 токен), ISSUANCE_PENDING (503 токены үр дүн, 5).
|
|
88
|
+
*/
|
|
89
|
+
type RetryableErrorCode = "PDF_PREPARE_BUSY" | "DOCUMENT_PENDING" | "TSA_UNAVAILABLE" | "LTV_UNAVAILABLE" | "RATE_LIMITED" | "STATE_UNAVAILABLE" | "ISSUANCE_PENDING";
|
|
90
|
+
/** {@link RetryableErrorCode}-ийн бүх утга. */
|
|
91
|
+
declare const RETRYABLE_ERROR_CODES: readonly RetryableErrorCode[];
|
|
92
|
+
/** RFC 9110 §10.2.3: delay-seconds эсвэл HTTP-date → мс. Буруу / өнгөрсөн / 24 цагаас их → undefined. */
|
|
93
|
+
declare function parseRetryAfter(value: string | null | undefined, now?: number): number | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* Байгууллагын нэрийн өмнөөс (`onBehalfOf`) урсгалын татгалзлын кодууд — `ForbiddenError.code` /
|
|
96
|
+
* `ApiError.code`-д ирнэ. 403: REPRESENTATION_DENIED (идэвхтэй төлөөлөгч биш), REPRESENTATION_PENDING (PIN2-оор
|
|
97
|
+
* баталгаажуулаагүй), REPRESENTATION_EXPIRED (хугацааны гадна), ORG_NOT_ACTIVE, SIGNER_UNIDENTIFIED (anonymous
|
|
98
|
+
* session); 404: ORG_NOT_FOUND; PDF баримт татахад 403 REPRESENTATION_REVOKED (prepare-ээс хойш эрх хасагдсан —
|
|
99
|
+
* баримт үүсээгүй).
|
|
100
|
+
*/
|
|
101
|
+
type OnBehalfErrorCode = "REPRESENTATION_DENIED" | "REPRESENTATION_PENDING" | "REPRESENTATION_EXPIRED" | "ORG_NOT_ACTIVE" | "SIGNER_UNIDENTIFIED" | "ORG_NOT_FOUND" | "REPRESENTATION_REVOKED";
|
|
102
|
+
/** {@link OnBehalfErrorCode}-ийн бүх утга (runtime шалгалтад). */
|
|
103
|
+
declare const ON_BEHALF_ERROR_CODES: readonly OnBehalfErrorCode[];
|
|
104
|
+
/**
|
|
105
|
+
* Сүлжээ/timeout — upstream хариу өгсөнгүй. Мессеж ба `op`-д хувь хүний таних тэмдэг ОРОХГҮЙ (замын `/etsi/{…}`,
|
|
106
|
+
* `/document/{…}` → `…`) — шууд лог руу бичиж болно.
|
|
107
|
+
*/
|
|
108
|
+
declare class NetworkError extends EidError {
|
|
109
|
+
/** "GET /session/…" (таних тэмдэг хасагдсан зам). */
|
|
110
|
+
readonly op?: string;
|
|
111
|
+
/** Хүсэлт хугацаа хэтэрсэн. */
|
|
112
|
+
readonly timeout?: boolean;
|
|
113
|
+
constructor(message: string, init?: {
|
|
114
|
+
op?: string;
|
|
115
|
+
timeout?: boolean;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Хариуны бие SDK-ийн хязгаараас их (JSON 4 MiB, PDF `pdfMaxBytes`) — бие таслагдаж задлагдахгүй. `op` — method +
|
|
120
|
+
* таних тэмдэггүй зам.
|
|
121
|
+
*/
|
|
122
|
+
declare class ResponseTooLargeError extends EidError {
|
|
123
|
+
readonly op: string;
|
|
124
|
+
readonly limit: number;
|
|
125
|
+
constructor(op: string, limit: number);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Session амжилтгүй дууссан (endResult ≠ OK): TIMEOUT, USER_REFUSED*, DOCUMENT_UNUSABLE гм.
|
|
129
|
+
* endResult-оор салгаж RP UI-д тохирох мессеж харуулна.
|
|
130
|
+
*/
|
|
131
|
+
declare class SessionFailedError extends EidError {
|
|
132
|
+
readonly endResult: string;
|
|
133
|
+
constructor(endResult: string);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Хариуны баталгаажуулалт бүтэлгүйтсэн — cert chain итгэлцэлгүй, signature challenge-тэй
|
|
137
|
+
* таарсангүй, эсвэл certLevel хүрэлцээгүй. ЭНЭ алдаа гарвал хариунд ИТГЭХГҮЙ
|
|
138
|
+
* (хуурамч/proxy хийгдсэн байж болзошгүй).
|
|
139
|
+
*/
|
|
140
|
+
declare class ValidationError extends EidError {
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Device-link (App2App/Web2App) холбоос угсрах боломжгүй — хариунд `deviceLinkBase` байхгүй,
|
|
144
|
+
* эсвэл sessionId/vc/суурь URL хэлбэр буруу. Session-ийг дахин эхлүүлнэ; холбоосыг таахгүй.
|
|
145
|
+
*/
|
|
146
|
+
declare class DeviceLinkError extends EidError {
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export { ApiError as A, CertChoiceInvalidError as C, DeviceLinkError as D, EidError as E, ForbiddenError as F, type HttpErrorInit as H, NetworkError as N, ON_BEHALF_ERROR_CODES as O, RETRYABLE_ERROR_CODES as R, SessionFailedError as S, ValidationError as V, AuthenticationError as a, NoSigningCertificateError as b, type OnBehalfErrorCode as c, RequestInvalidError as d, ResponseTooLargeError as e, type RetryableErrorCode as f, parseRetryAfter as p };
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/** Бүх SDK алдааны суурь. */
|
|
2
|
+
declare class EidError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
/** HTTP хариуны нэмэлт мэдээлэл (алдааны төрлүүдэд). */
|
|
6
|
+
interface HttpErrorInit {
|
|
7
|
+
/** Хариуны header-ууд. */
|
|
8
|
+
headers?: Headers;
|
|
9
|
+
/** Retry-After (секунд эсвэл HTTP-огноо задалсан), мс; байхгүй/буруу бол undefined. */
|
|
10
|
+
retryAfterMs?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* HTTP 401 — API secret буруу/байхгүй. Тохиргооны (RP secret) алдаа. CA-ийн өөрийн 401 нь JSON `{"error"[,"code"]}` —
|
|
14
|
+
* `serverMessage` (ба байвал `code`) бөглөгдөнө; JSON биш (proxy / nginx) бол хоёул undefined — үүгээр CA-ийн 401-ийг
|
|
15
|
+
* proxy-ийнхоос ялгана.
|
|
16
|
+
*/
|
|
17
|
+
declare class AuthenticationError extends EidError {
|
|
18
|
+
/** Серверийн `{"code"}`; байхгүй / JSON биш (proxy) бол undefined. */
|
|
19
|
+
readonly code?: string;
|
|
20
|
+
/** Серверийн `{"error"}` текст (логт); JSON биш (proxy) бол undefined. */
|
|
21
|
+
readonly serverMessage?: string;
|
|
22
|
+
/** Хариуны бие (таслагдаагүй текст). */
|
|
23
|
+
readonly body?: string;
|
|
24
|
+
readonly headers?: Headers;
|
|
25
|
+
constructor(message: string, init?: {
|
|
26
|
+
code?: string;
|
|
27
|
+
serverMessage?: string;
|
|
28
|
+
body?: string;
|
|
29
|
+
headers?: Headers;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* HTTP 403 — IP allowlist/mTLS зөвшөөрөөгүй, RP-д эрх алга, эсвэл onBehalfOf-ийн төлөөлөл татгалзсан.
|
|
34
|
+
* Сервер `{"error","code"}` буцаасан бол `code` (ж: `REPRESENTATION_DENIED`) — салааллыг үүгээр хийнэ.
|
|
35
|
+
*/
|
|
36
|
+
declare class ForbiddenError extends EidError {
|
|
37
|
+
/** Серверийн тогтвортой алдааны код (`{"code"}`), байхгүй бол undefined. */
|
|
38
|
+
readonly code?: string | undefined;
|
|
39
|
+
readonly headers?: Headers;
|
|
40
|
+
/** Retry-After (мс), байхгүй бол undefined. */
|
|
41
|
+
readonly retryAfterMs?: number;
|
|
42
|
+
constructor(message: string,
|
|
43
|
+
/** Серверийн тогтвортой алдааны код (`{"code"}`), байхгүй бол undefined. */
|
|
44
|
+
code?: string | undefined, init?: HttpErrorInit);
|
|
45
|
+
}
|
|
46
|
+
/** RP-API-аас ирсэн бусад HTTP алдаа (4xx/5xx). status ба хариуны биеийг агуулна. */
|
|
47
|
+
declare class ApiError extends EidError {
|
|
48
|
+
readonly status: number;
|
|
49
|
+
readonly body: string;
|
|
50
|
+
/** Серверийн тогтвортой алдааны код (`{"error","code"}`-ийн `code`), байхгүй бол undefined. */
|
|
51
|
+
readonly code?: string | undefined;
|
|
52
|
+
readonly headers?: Headers;
|
|
53
|
+
/**
|
|
54
|
+
* Retry-After (мс, секунд эсвэл HTTP-огноо задалсан); байхгүй/буруу бол undefined. CA түр алдаанд (429
|
|
55
|
+
* PDF_PREPARE_BUSY / RATE_LIMITED, 503 DOCUMENT_PENDING / TSA_UNAVAILABLE / LTV_UNAVAILABLE г.м.) тавина.
|
|
56
|
+
*/
|
|
57
|
+
readonly retryAfterMs?: number;
|
|
58
|
+
constructor(status: number, body: string,
|
|
59
|
+
/** Серверийн тогтвортой алдааны код (`{"error","code"}`-ийн `code`), байхгүй бол undefined. */
|
|
60
|
+
code?: string | undefined, init?: HttpErrorInit);
|
|
61
|
+
/**
|
|
62
|
+
* CA-ийн түр алдаа ({@link RETRYABLE_ERROR_CODES}-ийн нэг, эсвэл 429/503 + Retry-After): `retryAfterMs`-ийн дараа
|
|
63
|
+
* ижил хүсэлтийг давтаж болно.
|
|
64
|
+
*/
|
|
65
|
+
get retryable(): boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 409 `NO_SIGNING_CERTIFICATE` — иргэнд (баримтад) идэвхтэй төхөөрөмж / SIGN credential / хүчинтэй гарын үсгийн
|
|
69
|
+
* гэрчилгээ алга: sign ба certificate-choice session start, `/pdf/sign/prepare`. Session үүсээгүй. Танихгүй
|
|
70
|
+
* лавлагаанд ч ижил хариу (бүртгэл задлахгүй) — хэрэглэгчид «eID гарын үсгийн гэрчилгээгүй» гэж харуулна.
|
|
71
|
+
*/
|
|
72
|
+
declare class NoSigningCertificateError extends ApiError {
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 409 `CERT_CHOICE_INVALID` — linked sign-ийн `linkedSessionID` (certificate-choice) хүчингүй: өөр RP, COMPLETE+OK биш,
|
|
76
|
+
* өөр documentNumber, 5 минутаас хуучин, гэрчилгээ солигдсон, эсвэл аль хэдийн ашиглагдсан. Certificate-choice-ийг
|
|
77
|
+
* дахин эхлүүлнэ.
|
|
78
|
+
*/
|
|
79
|
+
declare class CertChoiceInvalidError extends ApiError {
|
|
80
|
+
}
|
|
81
|
+
/** 400 `REQUEST_INVALID` — хүсэлтийн бие/талбар буруу (ж: linked sign-д `linkedSessionID` дутуу). Програмын алдаа. */
|
|
82
|
+
declare class RequestInvalidError extends ApiError {
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* CA-ийн түр (давтаж болох) алдааны кодууд — `ApiError.code`. PDF_PREPARE_BUSY (429 prepare, Retry-After 5),
|
|
86
|
+
* DOCUMENT_PENDING (503 document, 5), TSA_UNAVAILABLE (503, 30), LTV_UNAVAILABLE (503, 60), RATE_LIMITED (429 токен),
|
|
87
|
+
* STATE_UNAVAILABLE (503 токен), ISSUANCE_PENDING (503 токены үр дүн, 5).
|
|
88
|
+
*/
|
|
89
|
+
type RetryableErrorCode = "PDF_PREPARE_BUSY" | "DOCUMENT_PENDING" | "TSA_UNAVAILABLE" | "LTV_UNAVAILABLE" | "RATE_LIMITED" | "STATE_UNAVAILABLE" | "ISSUANCE_PENDING";
|
|
90
|
+
/** {@link RetryableErrorCode}-ийн бүх утга. */
|
|
91
|
+
declare const RETRYABLE_ERROR_CODES: readonly RetryableErrorCode[];
|
|
92
|
+
/** RFC 9110 §10.2.3: delay-seconds эсвэл HTTP-date → мс. Буруу / өнгөрсөн / 24 цагаас их → undefined. */
|
|
93
|
+
declare function parseRetryAfter(value: string | null | undefined, now?: number): number | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* Байгууллагын нэрийн өмнөөс (`onBehalfOf`) урсгалын татгалзлын кодууд — `ForbiddenError.code` /
|
|
96
|
+
* `ApiError.code`-д ирнэ. 403: REPRESENTATION_DENIED (идэвхтэй төлөөлөгч биш), REPRESENTATION_PENDING (PIN2-оор
|
|
97
|
+
* баталгаажуулаагүй), REPRESENTATION_EXPIRED (хугацааны гадна), ORG_NOT_ACTIVE, SIGNER_UNIDENTIFIED (anonymous
|
|
98
|
+
* session); 404: ORG_NOT_FOUND; PDF баримт татахад 403 REPRESENTATION_REVOKED (prepare-ээс хойш эрх хасагдсан —
|
|
99
|
+
* баримт үүсээгүй).
|
|
100
|
+
*/
|
|
101
|
+
type OnBehalfErrorCode = "REPRESENTATION_DENIED" | "REPRESENTATION_PENDING" | "REPRESENTATION_EXPIRED" | "ORG_NOT_ACTIVE" | "SIGNER_UNIDENTIFIED" | "ORG_NOT_FOUND" | "REPRESENTATION_REVOKED";
|
|
102
|
+
/** {@link OnBehalfErrorCode}-ийн бүх утга (runtime шалгалтад). */
|
|
103
|
+
declare const ON_BEHALF_ERROR_CODES: readonly OnBehalfErrorCode[];
|
|
104
|
+
/**
|
|
105
|
+
* Сүлжээ/timeout — upstream хариу өгсөнгүй. Мессеж ба `op`-д хувь хүний таних тэмдэг ОРОХГҮЙ (замын `/etsi/{…}`,
|
|
106
|
+
* `/document/{…}` → `…`) — шууд лог руу бичиж болно.
|
|
107
|
+
*/
|
|
108
|
+
declare class NetworkError extends EidError {
|
|
109
|
+
/** "GET /session/…" (таних тэмдэг хасагдсан зам). */
|
|
110
|
+
readonly op?: string;
|
|
111
|
+
/** Хүсэлт хугацаа хэтэрсэн. */
|
|
112
|
+
readonly timeout?: boolean;
|
|
113
|
+
constructor(message: string, init?: {
|
|
114
|
+
op?: string;
|
|
115
|
+
timeout?: boolean;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Хариуны бие SDK-ийн хязгаараас их (JSON 4 MiB, PDF `pdfMaxBytes`) — бие таслагдаж задлагдахгүй. `op` — method +
|
|
120
|
+
* таних тэмдэггүй зам.
|
|
121
|
+
*/
|
|
122
|
+
declare class ResponseTooLargeError extends EidError {
|
|
123
|
+
readonly op: string;
|
|
124
|
+
readonly limit: number;
|
|
125
|
+
constructor(op: string, limit: number);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Session амжилтгүй дууссан (endResult ≠ OK): TIMEOUT, USER_REFUSED*, DOCUMENT_UNUSABLE гм.
|
|
129
|
+
* endResult-оор салгаж RP UI-д тохирох мессеж харуулна.
|
|
130
|
+
*/
|
|
131
|
+
declare class SessionFailedError extends EidError {
|
|
132
|
+
readonly endResult: string;
|
|
133
|
+
constructor(endResult: string);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Хариуны баталгаажуулалт бүтэлгүйтсэн — cert chain итгэлцэлгүй, signature challenge-тэй
|
|
137
|
+
* таарсангүй, эсвэл certLevel хүрэлцээгүй. ЭНЭ алдаа гарвал хариунд ИТГЭХГҮЙ
|
|
138
|
+
* (хуурамч/proxy хийгдсэн байж болзошгүй).
|
|
139
|
+
*/
|
|
140
|
+
declare class ValidationError extends EidError {
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Device-link (App2App/Web2App) холбоос угсрах боломжгүй — хариунд `deviceLinkBase` байхгүй,
|
|
144
|
+
* эсвэл sessionId/vc/суурь URL хэлбэр буруу. Session-ийг дахин эхлүүлнэ; холбоосыг таахгүй.
|
|
145
|
+
*/
|
|
146
|
+
declare class DeviceLinkError extends EidError {
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export { ApiError as A, CertChoiceInvalidError as C, DeviceLinkError as D, EidError as E, ForbiddenError as F, type HttpErrorInit as H, NetworkError as N, ON_BEHALF_ERROR_CODES as O, RETRYABLE_ERROR_CODES as R, SessionFailedError as S, ValidationError as V, AuthenticationError as a, NoSigningCertificateError as b, type OnBehalfErrorCode as c, RequestInvalidError as d, ResponseTooLargeError as e, type RetryableErrorCode as f, parseRetryAfter as p };
|