@gerege-systems/eid-mongolia-sdk 0.11.0 → 0.12.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 CHANGED
@@ -218,7 +218,8 @@ import { ForbiddenError, ApiError, ON_BEHALF_ERROR_CODES } from "@gerege-systems
218
218
 
219
219
  // 1. Иргэн сүүлийн 24 цагт танай RP-ээр нэвтэрсэн байх ёстой.
220
220
  const { representations } = await eid.organization.getRepresentations("PNOMN-12345678");
221
- // → [{ orgEtsi: "NTRMN-6235972", orgName: "Гэрэгэ Системс ХХК", role: "ceo", rightType: "ADMIN", … }]
221
+ // → [{ orgEtsi: "NTRMN-6235972", orgName: "Гэрэгэ Системс ХХК", role: "ceo", roleLabel: "Гүйцэтгэх захирал",
222
+ // rightType: "ADMIN", rightTypeLabel: "Админ", source: "REGISTRY", sourceLabel: "Улсын бүртгэл", … }]
222
223
 
223
224
  // 2. PDF (PAdES, CA угсарна) — санал болгох урсгал.
224
225
  try {
@@ -258,8 +259,14 @@ prepare 429 `PDF_PREPARE_BUSY`, 503 `LTV_UNAVAILABLE` / `TSA_UNAVAILABLE`; docum
258
259
  хүртэл уншина; хэтэрвэл `ResponseTooLargeError`. JSON хариу 4 MiB-ээс хэтэрвэл мөн `ResponseTooLargeError` (таслахгүй).
259
260
  `getRepresentations`-ийн `raw` — серверийн түүхий JSON.
260
261
 
262
+ **Хүнд харуулахдаа `roleLabel` / `rightTypeLabel` / `sourceLabel` ашигла** (representations болон session-ий
263
+ `onBehalfOf`; `onBehalfOf`-д `source` байхгүй тул зөвхөн `roleLabel` / `rightTypeLabel`) — `role` (`ceo` / `founder` /
264
+ `stakeholder` эсвэл MANAGER-т бичсэн текст), `rightType` (`ADMIN` | `MANAGER`), `source` (`REGISTRY` | `MANUAL`) нь
265
+ машин утга, өөрөө орчуулахгүй. Хэл: `new EidClient({ …, language: "en" })` → дуудлага бүрд `Accept-Language`; анхдагч
266
+ илгээхгүй (сервер mn). Хуучин CA-д эдгээр талбар байхгүй.
267
+
261
268
  Олон талт гэрээ: А байгууллагын гаралтыг өөрчлөлтгүй Б-ийн `prepare`-д (`docID`, өөр `onBehalfOf`) илгээнэ.
262
- Session-ий `onBehalfOf` блок (`role`/`rightType`) нь хариу угсрах үеийн бүртгэл; `pdf.signer.onBehalfOf`/`claimedRole`
269
+ Session-ий `onBehalfOf` блок (`role`/`roleLabel`/`rightType`/`rightTypeLabel`) нь хариу угсрах үеийн бүртгэл; `pdf.signer.onBehalfOf`/`claimedRole`
263
270
  нь баримтад бичигдсэн утга.
264
271
 
265
272
  ## 3b. Иргэний PKI самбар (`PKI_READ` эрх)
@@ -212,10 +212,22 @@ interface Representation {
212
212
  orgRegister: string;
213
213
  orgName: string;
214
214
  orgNameEn?: string;
215
- /** Бүртгэлийн албан тушаал (ХУР-аас холбогдсонд `ceo` / `founder`, MANAGER-т ADMIN-ий бичсэн текст). */
215
+ /**
216
+ * Албан тушаалын машин утга (ХУР-аас холбогдсонд `ceo` / `founder` / `stakeholder`, MANAGER-т ADMIN-ий бичсэн
217
+ * текст) — өөрөө орчуулахгүй, хүнд {@link Representation.roleLabel}-ийг харуулна.
218
+ */
216
219
  role?: string;
220
+ /**
221
+ * Албан тушаалын хүнд харуулах нэр (CA нэг газраас; хэл: `ClientConfig.language` → `Accept-Language`, анхдагч mn).
222
+ * Хуучин CA-д байхгүй.
223
+ */
224
+ roleLabel?: string;
217
225
  rightType: "ADMIN" | "MANAGER" | string;
226
+ /** Эрхийн төрлийн хүнд харуулах нэр (ADMIN → «Админ», MANAGER → «Гарын үсэг зурагч»; хэл нь `roleLabel`-тэй ижил). Хуучин CA-д байхгүй. */
227
+ rightTypeLabel?: string;
218
228
  source: "REGISTRY" | "MANUAL" | string;
229
+ /** Эх үүсвэрийн хүнд харуулах нэр (REGISTRY → «Улсын бүртгэл», MANUAL → «Захирал нэмсэн»; хэл нь `roleLabel`-тэй ижил). Хуучин CA-д байхгүй. */
230
+ sourceLabel?: string;
219
231
  /** ISO 8601. */
220
232
  validFrom: string;
221
233
  /** ISO 8601; байхгүй = хугацаагүй. */
@@ -233,10 +245,14 @@ interface OrgResult {
233
245
  /** `NTRMN-<улсын бүртгэлийн дугаар>`. */
234
246
  orgEtsi: string;
235
247
  orgName: string | null;
236
- /** Албан тушаал (ж: "Захирал"). Эрх хураагдсан бол null. */
248
+ /** Албан тушаалын машин утга (`ceo`, MANUAL текст) — өөрөө орчуулахгүй. Эрх хураагдсан бол null. */
237
249
  role: string | null;
250
+ /** Албан тушаалын хүнд харуулах нэр ({@link Representation.roleLabel}). Эрх хураагдсан / хуучин CA бол байхгүй. */
251
+ roleLabel?: string;
238
252
  /** ADMIN | MANAGER. Эрх хураагдсан бол null. */
239
253
  rightType: string | null;
254
+ /** Эрхийн төрлийн хүнд харуулах нэр ({@link Representation.rightTypeLabel}). Эрх хураагдсан / хуучин CA бол байхгүй. */
255
+ rightTypeLabel?: string;
240
256
  }
241
257
  /** RP-ийн нэвтрэх мэдээлэл — бүх дуудлагад хэрэгтэй таних тэмдэг + secret. */
242
258
  interface RpCredentials {
@@ -212,10 +212,22 @@ interface Representation {
212
212
  orgRegister: string;
213
213
  orgName: string;
214
214
  orgNameEn?: string;
215
- /** Бүртгэлийн албан тушаал (ХУР-аас холбогдсонд `ceo` / `founder`, MANAGER-т ADMIN-ий бичсэн текст). */
215
+ /**
216
+ * Албан тушаалын машин утга (ХУР-аас холбогдсонд `ceo` / `founder` / `stakeholder`, MANAGER-т ADMIN-ий бичсэн
217
+ * текст) — өөрөө орчуулахгүй, хүнд {@link Representation.roleLabel}-ийг харуулна.
218
+ */
216
219
  role?: string;
220
+ /**
221
+ * Албан тушаалын хүнд харуулах нэр (CA нэг газраас; хэл: `ClientConfig.language` → `Accept-Language`, анхдагч mn).
222
+ * Хуучин CA-д байхгүй.
223
+ */
224
+ roleLabel?: string;
217
225
  rightType: "ADMIN" | "MANAGER" | string;
226
+ /** Эрхийн төрлийн хүнд харуулах нэр (ADMIN → «Админ», MANAGER → «Гарын үсэг зурагч»; хэл нь `roleLabel`-тэй ижил). Хуучин CA-д байхгүй. */
227
+ rightTypeLabel?: string;
218
228
  source: "REGISTRY" | "MANUAL" | string;
229
+ /** Эх үүсвэрийн хүнд харуулах нэр (REGISTRY → «Улсын бүртгэл», MANUAL → «Захирал нэмсэн»; хэл нь `roleLabel`-тэй ижил). Хуучин CA-д байхгүй. */
230
+ sourceLabel?: string;
219
231
  /** ISO 8601. */
220
232
  validFrom: string;
221
233
  /** ISO 8601; байхгүй = хугацаагүй. */
@@ -233,10 +245,14 @@ interface OrgResult {
233
245
  /** `NTRMN-<улсын бүртгэлийн дугаар>`. */
234
246
  orgEtsi: string;
235
247
  orgName: string | null;
236
- /** Албан тушаал (ж: "Захирал"). Эрх хураагдсан бол null. */
248
+ /** Албан тушаалын машин утга (`ceo`, MANUAL текст) — өөрөө орчуулахгүй. Эрх хураагдсан бол null. */
237
249
  role: string | null;
250
+ /** Албан тушаалын хүнд харуулах нэр ({@link Representation.roleLabel}). Эрх хураагдсан / хуучин CA бол байхгүй. */
251
+ roleLabel?: string;
238
252
  /** ADMIN | MANAGER. Эрх хураагдсан бол null. */
239
253
  rightType: string | null;
254
+ /** Эрхийн төрлийн хүнд харуулах нэр ({@link Representation.rightTypeLabel}). Эрх хураагдсан / хуучин CA бол байхгүй. */
255
+ rightTypeLabel?: string;
240
256
  }
241
257
  /** RP-ийн нэвтрэх мэдээлэл — бүх дуудлагад хэрэгтэй таних тэмдэг + secret. */
242
258
  interface RpCredentials {
@@ -1 +1 @@
1
- export { f as DeviceLinkError, g as DeviceLinkInput, D as DeviceLinkSession, E as EidError, k as NavigatorLike, n as OpenOrShowQROptions, B as deviceLink, G as isMobileUserAgent, J as openOrShowQR } from './browser-BVR6gtrx.cjs';
1
+ export { f as DeviceLinkError, g as DeviceLinkInput, D as DeviceLinkSession, E as EidError, k as NavigatorLike, n as OpenOrShowQROptions, B as deviceLink, G as isMobileUserAgent, J as openOrShowQR } from './browser-C6JHm0lR.cjs';
package/dist/browser.d.ts CHANGED
@@ -1 +1 @@
1
- export { f as DeviceLinkError, g as DeviceLinkInput, D as DeviceLinkSession, E as EidError, k as NavigatorLike, n as OpenOrShowQROptions, B as deviceLink, G as isMobileUserAgent, J as openOrShowQR } from './browser-BVR6gtrx.js';
1
+ export { f as DeviceLinkError, g as DeviceLinkInput, D as DeviceLinkSession, E as EidError, k as NavigatorLike, n as OpenOrShowQROptions, B as deviceLink, G as isMobileUserAgent, J as openOrShowQR } from './browser-C6JHm0lR.js';
package/dist/index.cjs CHANGED
@@ -235,7 +235,8 @@ var Http = class {
235
235
  method,
236
236
  headers: {
237
237
  Authorization: `Bearer ${this.cfg.apiSecret}`,
238
- ...contentType ? { "Content-Type": contentType } : {}
238
+ ...contentType ? { "Content-Type": contentType } : {},
239
+ ...this.cfg.language ? { "Accept-Language": this.cfg.language } : {}
239
240
  },
240
241
  body,
241
242
  signal: AbortSignal.timeout(timeoutMs ?? this.cfg.timeoutMs ?? DEFAULT_TIMEOUT_MS)
@@ -645,11 +646,15 @@ function parseOrg(raw) {
645
646
  const o = asRecord(raw);
646
647
  const etsi = str(o.orgEtsi);
647
648
  if (!etsi) return null;
649
+ const roleLabel = str(o.roleLabel);
650
+ const rightTypeLabel = str(o.rightTypeLabel);
648
651
  return {
649
652
  orgEtsi: etsi,
650
653
  orgName: str(o.orgName),
651
654
  role: str(o.role),
652
- rightType: str(o.rightType)
655
+ ...roleLabel ? { roleLabel } : {},
656
+ rightType: str(o.rightType),
657
+ ...rightTypeLabel ? { rightTypeLabel } : {}
653
658
  };
654
659
  }
655
660
  var SessionApi = class {
@@ -1776,7 +1781,8 @@ var EidClient = class {
1776
1781
  apiSecret: cfg.credentials.apiSecret,
1777
1782
  timeoutMs: cfg.timeoutMs,
1778
1783
  dispatcher: cfg.dispatcher,
1779
- fetchImpl: cfg.fetchImpl
1784
+ fetchImpl: cfg.fetchImpl,
1785
+ language: cfg.language?.trim() || void 0
1780
1786
  });
1781
1787
  const level = cfg.defaultCertificateLevel ?? "QUALIFIED";
1782
1788
  this.auth = new AuthApi(http, cfg.credentials, { certificateLevel: level });
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as RpCredentials, C as CertificateLevel, I as Interaction, S as SignatureAlgorithm, H as HashAlgorithm, N as NotificationSession, D as DeviceLinkSession, a as SessionResult, P as PersonBlock, b as PdfSessionBlock, c as RepresentationsResponse, A as AcspContext, F as FlowType, E as EidError } from './browser-BVR6gtrx.cjs';
2
- export { d as ApiError, e as AuthenticationError, f as DeviceLinkError, g as DeviceLinkInput, h as EndResult, i as ForbiddenError, j as HttpErrorInit, k as NavigatorLike, l as NetworkError, O as ON_BEHALF_ERROR_CODES, m as OnBehalfErrorCode, n as OpenOrShowQROptions, o as OrgResult, p as PdfDocumentStatus, q as PdfSigner, r as RETRYABLE_ERROR_CODES, s as Representation, t as ResponseTooLargeError, u as RetryableErrorCode, v as SessionFailedError, w as SessionState, x as SignatureAlgorithmParameters, y as SignatureProtocol, T as TokenCertSessionBlock, z as TokenCertStatus, V as ValidationError, B as deviceLink, G as isMobileUserAgent, J as openOrShowQR, K as parseRetryAfter } from './browser-BVR6gtrx.cjs';
1
+ import { R as RpCredentials, C as CertificateLevel, I as Interaction, S as SignatureAlgorithm, H as HashAlgorithm, N as NotificationSession, D as DeviceLinkSession, a as SessionResult, P as PersonBlock, b as PdfSessionBlock, c as RepresentationsResponse, A as AcspContext, F as FlowType, E as EidError } from './browser-C6JHm0lR.cjs';
2
+ export { d as ApiError, e as AuthenticationError, f as DeviceLinkError, g as DeviceLinkInput, h as EndResult, i as ForbiddenError, j as HttpErrorInit, k as NavigatorLike, l as NetworkError, O as ON_BEHALF_ERROR_CODES, m as OnBehalfErrorCode, n as OpenOrShowQROptions, o as OrgResult, p as PdfDocumentStatus, q as PdfSigner, r as RETRYABLE_ERROR_CODES, s as Representation, t as ResponseTooLargeError, u as RetryableErrorCode, v as SessionFailedError, w as SessionState, x as SignatureAlgorithmParameters, y as SignatureProtocol, T as TokenCertSessionBlock, z as TokenCertStatus, V as ValidationError, B as deviceLink, G as isMobileUserAgent, J as openOrShowQR, K as parseRetryAfter } from './browser-C6JHm0lR.cjs';
3
3
  import { X509Certificate, KeyObject } from 'node:crypto';
4
4
 
5
5
  interface HttpConfig {
@@ -17,6 +17,8 @@ interface HttpConfig {
17
17
  dispatcher?: unknown;
18
18
  /** Тест/custom орчинд fetch-ийг орлуулах (default — global fetch). */
19
19
  fetchImpl?: typeof fetch;
20
+ /** `Accept-Language` header-ийн утга (ж: "en"); хоосон бол илгээхгүй. */
21
+ language?: string;
20
22
  }
21
23
  declare class Http {
22
24
  private readonly cfg;
@@ -806,6 +808,11 @@ interface ClientConfig {
806
808
  dispatcher?: unknown;
807
809
  /** fetch орлуулагч (тест). */
808
810
  fetchImpl?: typeof fetch;
811
+ /**
812
+ * Хүнд харуулах текстийн хэл (`roleLabel` г.м.) — дуудлага бүрд `Accept-Language` болж илгээгдэнэ (`"mn"` | `"en"`).
813
+ * Анхдагч: илгээхгүй (сервер mn).
814
+ */
815
+ language?: string;
809
816
  /** Trust anchor (Root CA) — validator-д. Production-д ЗААВАЛ. */
810
817
  trust?: TrustConfig;
811
818
  }
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as RpCredentials, C as CertificateLevel, I as Interaction, S as SignatureAlgorithm, H as HashAlgorithm, N as NotificationSession, D as DeviceLinkSession, a as SessionResult, P as PersonBlock, b as PdfSessionBlock, c as RepresentationsResponse, A as AcspContext, F as FlowType, E as EidError } from './browser-BVR6gtrx.js';
2
- export { d as ApiError, e as AuthenticationError, f as DeviceLinkError, g as DeviceLinkInput, h as EndResult, i as ForbiddenError, j as HttpErrorInit, k as NavigatorLike, l as NetworkError, O as ON_BEHALF_ERROR_CODES, m as OnBehalfErrorCode, n as OpenOrShowQROptions, o as OrgResult, p as PdfDocumentStatus, q as PdfSigner, r as RETRYABLE_ERROR_CODES, s as Representation, t as ResponseTooLargeError, u as RetryableErrorCode, v as SessionFailedError, w as SessionState, x as SignatureAlgorithmParameters, y as SignatureProtocol, T as TokenCertSessionBlock, z as TokenCertStatus, V as ValidationError, B as deviceLink, G as isMobileUserAgent, J as openOrShowQR, K as parseRetryAfter } from './browser-BVR6gtrx.js';
1
+ import { R as RpCredentials, C as CertificateLevel, I as Interaction, S as SignatureAlgorithm, H as HashAlgorithm, N as NotificationSession, D as DeviceLinkSession, a as SessionResult, P as PersonBlock, b as PdfSessionBlock, c as RepresentationsResponse, A as AcspContext, F as FlowType, E as EidError } from './browser-C6JHm0lR.js';
2
+ export { d as ApiError, e as AuthenticationError, f as DeviceLinkError, g as DeviceLinkInput, h as EndResult, i as ForbiddenError, j as HttpErrorInit, k as NavigatorLike, l as NetworkError, O as ON_BEHALF_ERROR_CODES, m as OnBehalfErrorCode, n as OpenOrShowQROptions, o as OrgResult, p as PdfDocumentStatus, q as PdfSigner, r as RETRYABLE_ERROR_CODES, s as Representation, t as ResponseTooLargeError, u as RetryableErrorCode, v as SessionFailedError, w as SessionState, x as SignatureAlgorithmParameters, y as SignatureProtocol, T as TokenCertSessionBlock, z as TokenCertStatus, V as ValidationError, B as deviceLink, G as isMobileUserAgent, J as openOrShowQR, K as parseRetryAfter } from './browser-C6JHm0lR.js';
3
3
  import { X509Certificate, KeyObject } from 'node:crypto';
4
4
 
5
5
  interface HttpConfig {
@@ -17,6 +17,8 @@ interface HttpConfig {
17
17
  dispatcher?: unknown;
18
18
  /** Тест/custom орчинд fetch-ийг орлуулах (default — global fetch). */
19
19
  fetchImpl?: typeof fetch;
20
+ /** `Accept-Language` header-ийн утга (ж: "en"); хоосон бол илгээхгүй. */
21
+ language?: string;
20
22
  }
21
23
  declare class Http {
22
24
  private readonly cfg;
@@ -806,6 +808,11 @@ interface ClientConfig {
806
808
  dispatcher?: unknown;
807
809
  /** fetch орлуулагч (тест). */
808
810
  fetchImpl?: typeof fetch;
811
+ /**
812
+ * Хүнд харуулах текстийн хэл (`roleLabel` г.м.) — дуудлага бүрд `Accept-Language` болж илгээгдэнэ (`"mn"` | `"en"`).
813
+ * Анхдагч: илгээхгүй (сервер mn).
814
+ */
815
+ language?: string;
809
816
  /** Trust anchor (Root CA) — validator-д. Production-д ЗААВАЛ. */
810
817
  trust?: TrustConfig;
811
818
  }
package/dist/index.js CHANGED
@@ -52,7 +52,8 @@ var Http = class {
52
52
  method,
53
53
  headers: {
54
54
  Authorization: `Bearer ${this.cfg.apiSecret}`,
55
- ...contentType ? { "Content-Type": contentType } : {}
55
+ ...contentType ? { "Content-Type": contentType } : {},
56
+ ...this.cfg.language ? { "Accept-Language": this.cfg.language } : {}
56
57
  },
57
58
  body,
58
59
  signal: AbortSignal.timeout(timeoutMs ?? this.cfg.timeoutMs ?? DEFAULT_TIMEOUT_MS)
@@ -462,11 +463,15 @@ function parseOrg(raw) {
462
463
  const o = asRecord(raw);
463
464
  const etsi = str(o.orgEtsi);
464
465
  if (!etsi) return null;
466
+ const roleLabel = str(o.roleLabel);
467
+ const rightTypeLabel = str(o.rightTypeLabel);
465
468
  return {
466
469
  orgEtsi: etsi,
467
470
  orgName: str(o.orgName),
468
471
  role: str(o.role),
469
- rightType: str(o.rightType)
472
+ ...roleLabel ? { roleLabel } : {},
473
+ rightType: str(o.rightType),
474
+ ...rightTypeLabel ? { rightTypeLabel } : {}
470
475
  };
471
476
  }
472
477
  var SessionApi = class {
@@ -1593,7 +1598,8 @@ var EidClient = class {
1593
1598
  apiSecret: cfg.credentials.apiSecret,
1594
1599
  timeoutMs: cfg.timeoutMs,
1595
1600
  dispatcher: cfg.dispatcher,
1596
- fetchImpl: cfg.fetchImpl
1601
+ fetchImpl: cfg.fetchImpl,
1602
+ language: cfg.language?.trim() || void 0
1597
1603
  });
1598
1604
  const level = cfg.defaultCertificateLevel ?? "QUALIFIED";
1599
1605
  this.auth = new AuthApi(http, cfg.credentials, { certificateLevel: level });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gerege-systems/eid-mongolia-sdk",
3
- "version": "0.11.0",
3
+ "version": "0.12.1",
4
4
  "description": "e-ID Mongolia Relying Party SDK — иргэнээр утсаар нь нэвтрэлт ба хууль ёсны цахим гарын үсэг (RP-API v3, Smart-ID нийцтэй).",
5
5
  "license": "MIT",
6
6
  "type": "module",