@qnsp/tenant-sdk 0.1.1 → 0.3.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/index.js CHANGED
@@ -1,11 +1,170 @@
1
1
  import { performance } from "node:perf_hooks";
2
2
  import { createTenantClientTelemetry, isTenantClientTelemetry } from "./observability.js";
3
3
  import { validateUUID } from "./validation.js";
4
+ /**
5
+ * Default algorithms per crypto policy tier.
6
+ */
7
+ export const CRYPTO_POLICY_ALGORITHMS = {
8
+ default: {
9
+ kemAlgorithms: ["kyber-512", "kyber-768", "kyber-1024"],
10
+ signatureAlgorithms: ["dilithium-2", "dilithium-3", "dilithium-5"],
11
+ defaultKemAlgorithm: "kyber-768",
12
+ defaultSignatureAlgorithm: "dilithium-3",
13
+ },
14
+ strict: {
15
+ kemAlgorithms: ["kyber-768", "kyber-1024"],
16
+ signatureAlgorithms: ["dilithium-3", "dilithium-5", "falcon-1024"],
17
+ defaultKemAlgorithm: "kyber-768",
18
+ defaultSignatureAlgorithm: "dilithium-3",
19
+ },
20
+ maximum: {
21
+ kemAlgorithms: ["kyber-1024"],
22
+ signatureAlgorithms: ["dilithium-5", "falcon-1024", "sphincs-shake-256f-simple"],
23
+ defaultKemAlgorithm: "kyber-1024",
24
+ defaultSignatureAlgorithm: "dilithium-5",
25
+ },
26
+ government: {
27
+ kemAlgorithms: ["kyber-1024"],
28
+ signatureAlgorithms: ["dilithium-5", "sphincs-shake-256f-simple"],
29
+ defaultKemAlgorithm: "kyber-1024",
30
+ defaultSignatureAlgorithm: "dilithium-5",
31
+ },
32
+ };
33
+ /**
34
+ * Mapping from internal algorithm names to NIST/standards display names.
35
+ * Covers all 90 PQC algorithms supported by QNSP.
36
+ * Canonical source: @qnsp/cryptography pqc-standards.ts ALGORITHM_NIST_NAMES
37
+ */
38
+ export const ALGORITHM_TO_NIST = {
39
+ // FIPS 203 — ML-KEM
40
+ "kyber-512": "ML-KEM-512",
41
+ "kyber-768": "ML-KEM-768",
42
+ "kyber-1024": "ML-KEM-1024",
43
+ // FIPS 204 — ML-DSA
44
+ "dilithium-2": "ML-DSA-44",
45
+ "dilithium-3": "ML-DSA-65",
46
+ "dilithium-5": "ML-DSA-87",
47
+ // FIPS 205 — SLH-DSA (SHA-2 variants)
48
+ "sphincs-sha2-128f-simple": "SLH-DSA-SHA2-128f",
49
+ "sphincs-sha2-128s-simple": "SLH-DSA-SHA2-128s",
50
+ "sphincs-sha2-192f-simple": "SLH-DSA-SHA2-192f",
51
+ "sphincs-sha2-192s-simple": "SLH-DSA-SHA2-192s",
52
+ "sphincs-sha2-256f-simple": "SLH-DSA-SHA2-256f",
53
+ "sphincs-sha2-256s-simple": "SLH-DSA-SHA2-256s",
54
+ // FIPS 205 — SLH-DSA (SHAKE variants)
55
+ "sphincs-shake-128f-simple": "SLH-DSA-SHAKE-128f",
56
+ "sphincs-shake-128s-simple": "SLH-DSA-SHAKE-128s",
57
+ "sphincs-shake-192f-simple": "SLH-DSA-SHAKE-192f",
58
+ "sphincs-shake-192s-simple": "SLH-DSA-SHAKE-192s",
59
+ "sphincs-shake-256f-simple": "SLH-DSA-SHAKE-256f",
60
+ "sphincs-shake-256s-simple": "SLH-DSA-SHAKE-256s",
61
+ // FN-DSA (FIPS 206 draft)
62
+ "falcon-512": "FN-DSA-512",
63
+ "falcon-1024": "FN-DSA-1024",
64
+ // HQC (NIST selected March 2025)
65
+ "hqc-128": "HQC-128",
66
+ "hqc-192": "HQC-192",
67
+ "hqc-256": "HQC-256",
68
+ // BIKE (NIST Round 4)
69
+ "bike-l1": "BIKE-L1",
70
+ "bike-l3": "BIKE-L3",
71
+ "bike-l5": "BIKE-L5",
72
+ // Classic McEliece (ISO standard)
73
+ "mceliece-348864": "Classic-McEliece-348864",
74
+ "mceliece-460896": "Classic-McEliece-460896",
75
+ "mceliece-6688128": "Classic-McEliece-6688128",
76
+ "mceliece-6960119": "Classic-McEliece-6960119",
77
+ "mceliece-8192128": "Classic-McEliece-8192128",
78
+ // FrodoKEM (ISO standard)
79
+ "frodokem-640-aes": "FrodoKEM-640-AES",
80
+ "frodokem-640-shake": "FrodoKEM-640-SHAKE",
81
+ "frodokem-976-aes": "FrodoKEM-976-AES",
82
+ "frodokem-976-shake": "FrodoKEM-976-SHAKE",
83
+ "frodokem-1344-aes": "FrodoKEM-1344-AES",
84
+ "frodokem-1344-shake": "FrodoKEM-1344-SHAKE",
85
+ // NTRU (lattice-based, re-added in liboqs 0.15)
86
+ "ntru-hps-2048-509": "NTRU-HPS-2048-509",
87
+ "ntru-hps-2048-677": "NTRU-HPS-2048-677",
88
+ "ntru-hps-4096-821": "NTRU-HPS-4096-821",
89
+ "ntru-hps-4096-1229": "NTRU-HPS-4096-1229",
90
+ "ntru-hrss-701": "NTRU-HRSS-701",
91
+ "ntru-hrss-1373": "NTRU-HRSS-1373",
92
+ // NTRU-Prime
93
+ sntrup761: "sntrup761",
94
+ // MAYO (NIST Additional Signatures Round 2)
95
+ "mayo-1": "MAYO-1",
96
+ "mayo-2": "MAYO-2",
97
+ "mayo-3": "MAYO-3",
98
+ "mayo-5": "MAYO-5",
99
+ // CROSS (NIST Additional Signatures Round 2)
100
+ "cross-rsdp-128-balanced": "CROSS-RSDP-128-balanced",
101
+ "cross-rsdp-128-fast": "CROSS-RSDP-128-fast",
102
+ "cross-rsdp-128-small": "CROSS-RSDP-128-small",
103
+ "cross-rsdp-192-balanced": "CROSS-RSDP-192-balanced",
104
+ "cross-rsdp-192-fast": "CROSS-RSDP-192-fast",
105
+ "cross-rsdp-192-small": "CROSS-RSDP-192-small",
106
+ "cross-rsdp-256-balanced": "CROSS-RSDP-256-balanced",
107
+ "cross-rsdp-256-fast": "CROSS-RSDP-256-fast",
108
+ "cross-rsdp-256-small": "CROSS-RSDP-256-small",
109
+ "cross-rsdpg-128-balanced": "CROSS-RSDPG-128-balanced",
110
+ "cross-rsdpg-128-fast": "CROSS-RSDPG-128-fast",
111
+ "cross-rsdpg-128-small": "CROSS-RSDPG-128-small",
112
+ "cross-rsdpg-192-balanced": "CROSS-RSDPG-192-balanced",
113
+ "cross-rsdpg-192-fast": "CROSS-RSDPG-192-fast",
114
+ "cross-rsdpg-192-small": "CROSS-RSDPG-192-small",
115
+ "cross-rsdpg-256-balanced": "CROSS-RSDPG-256-balanced",
116
+ "cross-rsdpg-256-fast": "CROSS-RSDPG-256-fast",
117
+ "cross-rsdpg-256-small": "CROSS-RSDPG-256-small",
118
+ // UOV (NIST Additional Signatures Round 2)
119
+ "ov-Is": "UOV-Is",
120
+ "ov-Ip": "UOV-Ip",
121
+ "ov-III": "UOV-III",
122
+ "ov-V": "UOV-V",
123
+ "ov-Is-pkc": "UOV-Is-pkc",
124
+ "ov-Ip-pkc": "UOV-Ip-pkc",
125
+ "ov-III-pkc": "UOV-III-pkc",
126
+ "ov-V-pkc": "UOV-V-pkc",
127
+ "ov-Is-pkc-skc": "UOV-Is-pkc-skc",
128
+ "ov-Ip-pkc-skc": "UOV-Ip-pkc-skc",
129
+ "ov-III-pkc-skc": "UOV-III-pkc-skc",
130
+ "ov-V-pkc-skc": "UOV-V-pkc-skc",
131
+ // SNOVA (NIST Additional Signatures Round 2, liboqs 0.14+)
132
+ "snova-24-5-4": "SNOVA-24-5-4",
133
+ "snova-24-5-4-shake": "SNOVA-24-5-4-SHAKE",
134
+ "snova-24-5-4-esk": "SNOVA-24-5-4-ESK",
135
+ "snova-24-5-4-shake-esk": "SNOVA-24-5-4-SHAKE-ESK",
136
+ "snova-25-8-3": "SNOVA-25-8-3",
137
+ "snova-37-17-2": "SNOVA-37-17-2",
138
+ "snova-37-8-4": "SNOVA-37-8-4",
139
+ "snova-24-5-5": "SNOVA-24-5-5",
140
+ "snova-56-25-2": "SNOVA-56-25-2",
141
+ "snova-49-11-3": "SNOVA-49-11-3",
142
+ "snova-60-10-4": "SNOVA-60-10-4",
143
+ "snova-29-6-5": "SNOVA-29-6-5",
144
+ };
145
+ /**
146
+ * Convert internal algorithm name to NIST standardized name.
147
+ */
148
+ export function toNistAlgorithmName(internal) {
149
+ return ALGORITHM_TO_NIST[internal] ?? internal;
150
+ }
151
+ /**
152
+ * Get algorithm config for a crypto policy tier.
153
+ */
154
+ export function getAlgorithmConfigForTier(tier) {
155
+ return CRYPTO_POLICY_ALGORITHMS[tier];
156
+ }
4
157
  export class TenantClient {
5
158
  config;
6
159
  telemetry;
7
160
  targetService;
8
161
  constructor(config) {
162
+ if (!config.apiKey || config.apiKey.trim().length === 0) {
163
+ throw new Error("QNSP Tenant SDK: apiKey is required. " +
164
+ "Get your free API key at https://cloud.qnsp.cuilabs.io/signup — " +
165
+ "no credit card required (FREE tier: 5 GB storage, 2,000 API calls/month). " +
166
+ "Docs: https://docs.qnsp.cuilabs.io/sdk/tenant-sdk");
167
+ }
9
168
  const baseUrl = config.baseUrl.replace(/\/$/, "");
10
169
  // Enforce HTTPS in production (allow HTTP only for localhost in development)
11
170
  if (!baseUrl.startsWith("https://")) {
@@ -17,7 +176,7 @@ export class TenantClient {
17
176
  }
18
177
  this.config = {
19
178
  baseUrl,
20
- apiKey: config.apiKey ?? "",
179
+ apiKey: config.apiKey,
21
180
  timeoutMs: config.timeoutMs ?? 30_000,
22
181
  maxRetries: config.maxRetries ?? 3,
23
182
  retryDelayMs: config.retryDelayMs ?? 1_000,
@@ -43,9 +202,7 @@ export class TenantClient {
43
202
  "Content-Type": "application/json",
44
203
  ...options?.headers,
45
204
  };
46
- if (this.config.apiKey) {
47
- headers["Authorization"] = `Bearer ${this.config.apiKey}`;
48
- }
205
+ headers["Authorization"] = `Bearer ${this.config.apiKey}`;
49
206
  const controller = new AbortController();
50
207
  const timeoutId = setTimeout(() => controller.abort(), this.config.timeoutMs);
51
208
  const signal = options?.signal ?? controller.signal;
@@ -147,6 +304,7 @@ export class TenantClient {
147
304
  ...(request.plan !== undefined ? { plan: request.plan } : {}),
148
305
  ...(request.region !== undefined ? { region: request.region } : {}),
149
306
  ...(request.complianceTags !== undefined ? { complianceTags: request.complianceTags } : {}),
307
+ ...(request.hsmMode !== undefined ? { hsmMode: request.hsmMode } : {}),
150
308
  ...(request.metadata !== undefined ? { metadata: request.metadata } : {}),
151
309
  ...(request.domains !== undefined ? { domains: request.domains } : {}),
152
310
  security: request.security,
@@ -166,6 +324,7 @@ export class TenantClient {
166
324
  ...(request.plan !== undefined ? { plan: request.plan } : {}),
167
325
  ...(request.status !== undefined ? { status: request.status } : {}),
168
326
  ...(request.complianceTags !== undefined ? { complianceTags: request.complianceTags } : {}),
327
+ ...(request.hsmMode !== undefined ? { hsmMode: request.hsmMode } : {}),
169
328
  ...(request.metadata !== undefined ? { metadata: request.metadata } : {}),
170
329
  security: request.security,
171
330
  ...(request.signature !== undefined ? { signature: request.signature } : {}),
@@ -201,6 +360,190 @@ export class TenantClient {
201
360
  operation: "listTenants",
202
361
  });
203
362
  }
363
+ /**
364
+ * Get the crypto policy for a tenant.
365
+ * Returns the tenant's crypto policy configuration including allowed algorithms.
366
+ * If no policy exists, a default policy is created and returned.
367
+ */
368
+ async getTenantCryptoPolicy(tenantId) {
369
+ validateUUID(tenantId, "tenantId");
370
+ return this.request("GET", `/tenant/v1/tenants/${tenantId}/crypto-policy`, {
371
+ operation: "getTenantCryptoPolicy",
372
+ });
373
+ }
374
+ /**
375
+ * Get the v1 crypto policy for a tenant (profiles + tiers model).
376
+ * If no policy exists, a default policy is created and returned.
377
+ */
378
+ async getTenantCryptoPolicyV1(tenantId) {
379
+ validateUUID(tenantId, "tenantId");
380
+ return this.request("GET", `/tenant/v1/tenants/${tenantId}/crypto-policy-v1`, {
381
+ operation: "getTenantCryptoPolicyV1",
382
+ });
383
+ }
384
+ /**
385
+ * List v1 crypto policy history entries.
386
+ */
387
+ async listTenantCryptoPolicyV1History(tenantId, options) {
388
+ validateUUID(tenantId, "tenantId");
389
+ const params = new URLSearchParams();
390
+ if (options?.limit !== undefined) {
391
+ params.set("limit", String(options.limit));
392
+ }
393
+ const query = params.toString();
394
+ const path = query
395
+ ? `/tenant/v1/tenants/${tenantId}/crypto-policy-v1/history?${query}`
396
+ : `/tenant/v1/tenants/${tenantId}/crypto-policy-v1/history`;
397
+ return this.request("GET", path, {
398
+ operation: "listTenantCryptoPolicyV1History",
399
+ });
400
+ }
401
+ /**
402
+ * Create or update the crypto policy for a tenant.
403
+ * Sets the policy tier and optional custom algorithm restrictions.
404
+ */
405
+ async upsertTenantCryptoPolicy(tenantId, policy) {
406
+ validateUUID(tenantId, "tenantId");
407
+ return this.request("PUT", `/tenant/v1/tenants/${tenantId}/crypto-policy`, {
408
+ body: {
409
+ policyTier: policy.policyTier,
410
+ ...(policy.customAllowedKemAlgorithms !== undefined
411
+ ? { customAllowedKemAlgorithms: policy.customAllowedKemAlgorithms }
412
+ : {}),
413
+ ...(policy.customAllowedSignatureAlgorithms !== undefined
414
+ ? { customAllowedSignatureAlgorithms: policy.customAllowedSignatureAlgorithms }
415
+ : {}),
416
+ ...(policy.requireHsmForRootKeys !== undefined
417
+ ? { requireHsmForRootKeys: policy.requireHsmForRootKeys }
418
+ : {}),
419
+ ...(policy.maxKeyAgeDays !== undefined ? { maxKeyAgeDays: policy.maxKeyAgeDays } : {}),
420
+ },
421
+ operation: "upsertTenantCryptoPolicy",
422
+ });
423
+ }
424
+ /**
425
+ * Update the v1 crypto policy for a tenant (requires If-Match with current ETag).
426
+ */
427
+ async updateTenantCryptoPolicyV1(tenantId, policy, etag) {
428
+ validateUUID(tenantId, "tenantId");
429
+ if (!etag) {
430
+ throw new Error("etag is required for updateTenantCryptoPolicyV1");
431
+ }
432
+ return this.request("PUT", `/tenant/v1/tenants/${tenantId}/crypto-policy-v1`, {
433
+ body: { policy },
434
+ headers: {
435
+ "If-Match": etag,
436
+ },
437
+ operation: "updateTenantCryptoPolicyV1",
438
+ });
439
+ }
440
+ /**
441
+ * Enable Tier0 legacy algorithms (time-bounded) for a tenant.
442
+ */
443
+ async enableTier0Legacy(tenantId, input, etag) {
444
+ validateUUID(tenantId, "tenantId");
445
+ if (!etag) {
446
+ throw new Error("etag is required for enableTier0Legacy");
447
+ }
448
+ return this.request("POST", `/tenant/v1/tenants/${tenantId}/crypto-policy-v1/tier0/enable`, {
449
+ body: { expiry: input.expiry },
450
+ headers: {
451
+ "If-Match": etag,
452
+ },
453
+ operation: "enableTier0Legacy",
454
+ });
455
+ }
456
+ /**
457
+ * Disable Tier0 legacy algorithms for a tenant.
458
+ */
459
+ async disableTier0Legacy(tenantId, etag) {
460
+ validateUUID(tenantId, "tenantId");
461
+ if (!etag) {
462
+ throw new Error("etag is required for disableTier0Legacy");
463
+ }
464
+ return this.request("POST", `/tenant/v1/tenants/${tenantId}/crypto-policy-v1/tier0/disable`, {
465
+ body: {},
466
+ headers: {
467
+ "If-Match": etag,
468
+ },
469
+ operation: "disableTier0Legacy",
470
+ });
471
+ }
472
+ /**
473
+ * Enable Tier4 experimental algorithms with acknowledgement.
474
+ */
475
+ async enableTier4Experimental(tenantId, input, etag) {
476
+ validateUUID(tenantId, "tenantId");
477
+ if (!etag) {
478
+ throw new Error("etag is required for enableTier4Experimental");
479
+ }
480
+ return this.request("POST", `/tenant/v1/tenants/${tenantId}/crypto-policy-v1/tier4/enable`, {
481
+ body: { approvedBy: input.approvedBy },
482
+ headers: {
483
+ "If-Match": etag,
484
+ },
485
+ operation: "enableTier4Experimental",
486
+ });
487
+ }
488
+ /**
489
+ * Roll back the v1 crypto policy to a previous history record or policy hash.
490
+ */
491
+ async rollbackTenantCryptoPolicyV1(tenantId, input, etag) {
492
+ validateUUID(tenantId, "tenantId");
493
+ if (!etag) {
494
+ throw new Error("etag is required for rollbackTenantCryptoPolicyV1");
495
+ }
496
+ if (!input.historyId && !input.policyHash) {
497
+ throw new Error("historyId or policyHash is required for rollbackTenantCryptoPolicyV1");
498
+ }
499
+ return this.request("POST", `/tenant/v1/tenants/${tenantId}/crypto-policy-v1/rollback`, {
500
+ body: {
501
+ ...(input.historyId ? { historyId: input.historyId } : {}),
502
+ ...(input.policyHash ? { policyHash: input.policyHash } : {}),
503
+ },
504
+ headers: {
505
+ "If-Match": etag,
506
+ },
507
+ operation: "rollbackTenantCryptoPolicyV1",
508
+ });
509
+ }
510
+ /**
511
+ * Get the allowed KEM algorithms for a tenant based on their crypto policy.
512
+ * Convenience method that fetches the policy and returns the allowed algorithms.
513
+ */
514
+ async getAllowedKemAlgorithms(tenantId) {
515
+ const policy = await this.getTenantCryptoPolicy(tenantId);
516
+ if (policy.customAllowedKemAlgorithms && policy.customAllowedKemAlgorithms.length > 0) {
517
+ return policy.customAllowedKemAlgorithms;
518
+ }
519
+ return CRYPTO_POLICY_ALGORITHMS[policy.policyTier].kemAlgorithms;
520
+ }
521
+ /**
522
+ * Get the allowed signature algorithms for a tenant based on their crypto policy.
523
+ * Convenience method that fetches the policy and returns the allowed algorithms.
524
+ */
525
+ async getAllowedSignatureAlgorithms(tenantId) {
526
+ const policy = await this.getTenantCryptoPolicy(tenantId);
527
+ if (policy.customAllowedSignatureAlgorithms &&
528
+ policy.customAllowedSignatureAlgorithms.length > 0) {
529
+ return policy.customAllowedSignatureAlgorithms;
530
+ }
531
+ return CRYPTO_POLICY_ALGORITHMS[policy.policyTier].signatureAlgorithms;
532
+ }
533
+ /**
534
+ * Get the default KEM algorithm for a tenant based on their crypto policy tier.
535
+ */
536
+ async getDefaultKemAlgorithm(tenantId) {
537
+ const policy = await this.getTenantCryptoPolicy(tenantId);
538
+ return CRYPTO_POLICY_ALGORITHMS[policy.policyTier].defaultKemAlgorithm;
539
+ }
540
+ /**
541
+ * Get the default signature algorithm for a tenant based on their crypto policy tier.
542
+ */
543
+ async getDefaultSignatureAlgorithm(tenantId) {
544
+ const policy = await this.getTenantCryptoPolicy(tenantId);
545
+ return CRYPTO_POLICY_ALGORITHMS[policy.policyTier].defaultSignatureAlgorithm;
546
+ }
204
547
  }
205
548
  export * from "./observability.js";
206
549
  export * from "./validation.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAkK/C;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAkD;IACtF,OAAO,EAAE;QACR,aAAa,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC;QACvD,mBAAmB,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;QAClE,mBAAmB,EAAE,WAAW;QAChC,yBAAyB,EAAE,aAAa;KACxC;IACD,MAAM,EAAE;QACP,aAAa,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;QAC1C,mBAAmB,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;QAClE,mBAAmB,EAAE,WAAW;QAChC,yBAAyB,EAAE,aAAa;KACxC;IACD,OAAO,EAAE;QACR,aAAa,EAAE,CAAC,YAAY,CAAC;QAC7B,mBAAmB,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,2BAA2B,CAAC;QAChF,mBAAmB,EAAE,YAAY;QACjC,yBAAyB,EAAE,aAAa;KACxC;IACD,UAAU,EAAE;QACX,aAAa,EAAE,CAAC,YAAY,CAAC;QAC7B,mBAAmB,EAAE,CAAC,aAAa,EAAE,2BAA2B,CAAC;QACjE,mBAAmB,EAAE,YAAY;QACjC,yBAAyB,EAAE,aAAa;KACxC;CACD,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACxD,oBAAoB;IACpB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,aAAa;IAC3B,oBAAoB;IACpB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,WAAW;IAC1B,sCAAsC;IACtC,0BAA0B,EAAE,mBAAmB;IAC/C,0BAA0B,EAAE,mBAAmB;IAC/C,0BAA0B,EAAE,mBAAmB;IAC/C,0BAA0B,EAAE,mBAAmB;IAC/C,0BAA0B,EAAE,mBAAmB;IAC/C,0BAA0B,EAAE,mBAAmB;IAC/C,sCAAsC;IACtC,2BAA2B,EAAE,oBAAoB;IACjD,2BAA2B,EAAE,oBAAoB;IACjD,2BAA2B,EAAE,oBAAoB;IACjD,2BAA2B,EAAE,oBAAoB;IACjD,2BAA2B,EAAE,oBAAoB;IACjD,2BAA2B,EAAE,oBAAoB;IACjD,0BAA0B;IAC1B,YAAY,EAAE,YAAY;IAC1B,aAAa,EAAE,aAAa;IAC5B,iCAAiC;IACjC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,sBAAsB;IACtB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,kCAAkC;IAClC,iBAAiB,EAAE,yBAAyB;IAC5C,iBAAiB,EAAE,yBAAyB;IAC5C,kBAAkB,EAAE,0BAA0B;IAC9C,kBAAkB,EAAE,0BAA0B;IAC9C,kBAAkB,EAAE,0BAA0B;IAC9C,0BAA0B;IAC1B,kBAAkB,EAAE,kBAAkB;IACtC,oBAAoB,EAAE,oBAAoB;IAC1C,kBAAkB,EAAE,kBAAkB;IACtC,oBAAoB,EAAE,oBAAoB;IAC1C,mBAAmB,EAAE,mBAAmB;IACxC,qBAAqB,EAAE,qBAAqB;IAC5C,gDAAgD;IAChD,mBAAmB,EAAE,mBAAmB;IACxC,mBAAmB,EAAE,mBAAmB;IACxC,mBAAmB,EAAE,mBAAmB;IACxC,oBAAoB,EAAE,oBAAoB;IAC1C,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,gBAAgB;IAClC,aAAa;IACb,SAAS,EAAE,WAAW;IACtB,4CAA4C;IAC5C,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,6CAA6C;IAC7C,yBAAyB,EAAE,yBAAyB;IACpD,qBAAqB,EAAE,qBAAqB;IAC5C,sBAAsB,EAAE,sBAAsB;IAC9C,yBAAyB,EAAE,yBAAyB;IACpD,qBAAqB,EAAE,qBAAqB;IAC5C,sBAAsB,EAAE,sBAAsB;IAC9C,yBAAyB,EAAE,yBAAyB;IACpD,qBAAqB,EAAE,qBAAqB;IAC5C,sBAAsB,EAAE,sBAAsB;IAC9C,0BAA0B,EAAE,0BAA0B;IACtD,sBAAsB,EAAE,sBAAsB;IAC9C,uBAAuB,EAAE,uBAAuB;IAChD,0BAA0B,EAAE,0BAA0B;IACtD,sBAAsB,EAAE,sBAAsB;IAC9C,uBAAuB,EAAE,uBAAuB;IAChD,0BAA0B,EAAE,0BAA0B;IACtD,sBAAsB,EAAE,sBAAsB;IAC9C,uBAAuB,EAAE,uBAAuB;IAChD,2CAA2C;IAC3C,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,aAAa;IAC3B,UAAU,EAAE,WAAW;IACvB,eAAe,EAAE,gBAAgB;IACjC,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,eAAe;IAC/B,2DAA2D;IAC3D,cAAc,EAAE,cAAc;IAC9B,oBAAoB,EAAE,oBAAoB;IAC1C,kBAAkB,EAAE,kBAAkB;IACtC,wBAAwB,EAAE,wBAAwB;IAClD,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,eAAe;IAChC,cAAc,EAAE,cAAc;IAC9B,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,eAAe;IAChC,eAAe,EAAE,eAAe;IAChC,eAAe,EAAE,eAAe;IAChC,cAAc,EAAE,cAAc;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IACnD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAsB;IAC/D,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAsFD,MAAM,OAAO,YAAY;IACP,MAAM,CAA6B;IACnC,SAAS,CAA+B;IACxC,aAAa,CAAS;IAEvC,YAAY,MAA0B;QACrC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACd,uCAAuC;gBACtC,kEAAkE;gBAClE,4EAA4E;gBAC5E,mDAAmD,CACpD,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAElD,6EAA6E;QAC7E,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAClF,MAAM,aAAa,GAClB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC;YACjF,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACd,0FAA0F,CAC1F,CAAC;YACH,CAAC;QACF,CAAC;QAED,IAAI,CAAC,MAAM,GAAG;YACb,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,KAAK;SAC1C,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;YAChC,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC1C,CAAC,CAAC,MAAM,CAAC,SAAS;gBAClB,CAAC,CAAC,2BAA2B,CAAC,MAAM,CAAC,SAAS,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC;QAER,IAAI,CAAC;YACJ,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACR,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;QACvC,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,OAAwB;QAC9E,OAAO,IAAI,CAAC,gBAAgB,CAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC7B,MAAc,EACd,IAAY,EACZ,OAAmC,EACnC,OAAe;QAEf,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAC5C,MAAM,OAAO,GAA2B;YACvC,cAAc,EAAE,kBAAkB;YAClC,GAAG,OAAO,EAAE,OAAO;SACnB,CAAC;QAEF,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAE1D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;QACrF,MAAM,MAAM,GAAG,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC;QAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,MAAM,GAAmB,IAAI,CAAC;QAClC,IAAI,UAA8B,CAAC;QACnC,IAAI,YAAgC,CAAC;QAErC,IAAI,CAAC;YACJ,MAAM,IAAI,GAAgB;gBACzB,MAAM;gBACN,OAAO;gBACP,MAAM;aACN,CAAC;YAEF,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAExC,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE7B,8CAA8C;YAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC7D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;oBAEvC,IAAI,gBAAgB,EAAE,CAAC;wBACtB,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;wBAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;4BAC/D,OAAO,GAAG,iBAAiB,GAAG,KAAK,CAAC;wBACrC,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,mEAAmE;wBACnE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;oBACrE,CAAC;oBAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC7D,OAAO,IAAI,CAAC,gBAAgB,CAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBACrE,CAAC;gBAED,MAAM,GAAG,OAAO,CAAC;gBACjB,YAAY,GAAG,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CACd,+CAA+C,IAAI,CAAC,MAAM,CAAC,UAAU,UAAU,CAC/E,CAAC;YACH,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,GAAG,OAAO,CAAC;gBACjB,2DAA2D;gBAC3D,4EAA4E;gBAC5E,YAAY,GAAG,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAChF,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC7B,OAAO,SAAc,CAAC;YACvB,CAAC;YAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,GAAG,OAAO,CAAC;YACjB,IAAI,CAAC,YAAY,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC7C,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,CAAC;YACD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3D,YAAY,GAAG,iBAAiB,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;gBAAS,CAAC;YACV,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC7C,MAAM,KAAK,GAA+B;gBACzC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,GAAG,MAAM,IAAI,KAAK,EAAE;gBACrD,MAAM;gBACN,KAAK;gBACL,MAAM;gBACN,MAAM;gBACN,UAAU;gBACV,GAAG,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE,CAAC;YACF,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACF,CAAC;IAEO,oBAAoB,CAAC,KAAiC;QAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC9C,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAS,MAAM,EAAE,oBAAoB,EAAE;YACzD,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3F,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E;YACD,SAAS,EAAE,cAAc;SACzB,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,OAA4B;QAC1D,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAEvB,OAAO,IAAI,CAAC,OAAO,CAAS,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE;YAChE,IAAI,EAAE;gBACL,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3F,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E;YACD,SAAS,EAAE,cAAc;SACzB,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,EAAU;QACzB,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAEvB,OAAO,IAAI,CAAC,OAAO,CAAS,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE;YAC9D,SAAS,EAAE,WAAW;SACtB,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,OAGjB;QACA,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAEtF,OAAO,IAAI,CAAC,OAAO,CAAsB,KAAK,EAAE,IAAI,EAAE;YACrD,SAAS,EAAE,aAAa;SACxB,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QAC3C,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC,OAAO,CAAqB,KAAK,EAAE,sBAAsB,QAAQ,gBAAgB,EAAE;YAC9F,SAAS,EAAE,uBAAuB;SAClC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,uBAAuB,CAAC,QAAgB;QAC7C,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC,OAAO,CAClB,KAAK,EACL,sBAAsB,QAAQ,mBAAmB,EACjD;YACC,SAAS,EAAE,yBAAyB;SACpC,CACD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,+BAA+B,CACpC,QAAgB,EAChB,OAAqC;QAErC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK;YACjB,CAAC,CAAC,sBAAsB,QAAQ,6BAA6B,KAAK,EAAE;YACpE,CAAC,CAAC,sBAAsB,QAAQ,2BAA2B,CAAC;QAE7D,OAAO,IAAI,CAAC,OAAO,CAAsC,KAAK,EAAE,IAAI,EAAE;YACrE,SAAS,EAAE,iCAAiC;SAC5C,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,wBAAwB,CAC7B,QAAgB,EAChB,MAA+B;QAE/B,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC,OAAO,CAAqB,KAAK,EAAE,sBAAsB,QAAQ,gBAAgB,EAAE;YAC9F,IAAI,EAAE;gBACL,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,GAAG,CAAC,MAAM,CAAC,0BAA0B,KAAK,SAAS;oBAClD,CAAC,CAAC,EAAE,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAAE;oBACnE,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,gCAAgC,KAAK,SAAS;oBACxD,CAAC,CAAC,EAAE,gCAAgC,EAAE,MAAM,CAAC,gCAAgC,EAAE;oBAC/E,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,qBAAqB,KAAK,SAAS;oBAC7C,CAAC,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,EAAE;oBACzD,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtF;YACD,SAAS,EAAE,0BAA0B;SACrC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,0BAA0B,CAC/B,QAAgB,EAChB,MAAsB,EACtB,IAAY;QAEZ,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAClB,KAAK,EACL,sBAAsB,QAAQ,mBAAmB,EACjD;YACC,IAAI,EAAE,EAAE,MAAM,EAAE;YAChB,OAAO,EAAE;gBACR,UAAU,EAAE,IAAI;aAChB;YACD,SAAS,EAAE,4BAA4B;SACvC,CACD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACtB,QAAgB,EAChB,KAAkC,EAClC,IAAY;QAEZ,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAClB,MAAM,EACN,sBAAsB,QAAQ,gCAAgC,EAC9D;YACC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;YAC9B,OAAO,EAAE;gBACR,UAAU,EAAE,IAAI;aAChB;YACD,SAAS,EAAE,mBAAmB;SAC9B,CACD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,IAAY;QACtD,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAClB,MAAM,EACN,sBAAsB,QAAQ,iCAAiC,EAC/D;YACC,IAAI,EAAE,EAAE;YACR,OAAO,EAAE;gBACR,UAAU,EAAE,IAAI;aAChB;YACD,SAAS,EAAE,oBAAoB;SAC/B,CACD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAC5B,QAAgB,EAChB,KAAsC,EACtC,IAAY;QAEZ,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAClB,MAAM,EACN,sBAAsB,QAAQ,gCAAgC,EAC9D;YACC,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;YACtC,OAAO,EAAE;gBACR,UAAU,EAAE,IAAI;aAChB;YACD,SAAS,EAAE,yBAAyB;SACpC,CACD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,4BAA4B,CACjC,QAAgB,EAChB,KAAoE,EACpE,IAAY;QAEZ,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAClB,MAAM,EACN,sBAAsB,QAAQ,4BAA4B,EAC1D;YACC,IAAI,EAAE;gBACL,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D;YACD,OAAO,EAAE;gBACR,UAAU,EAAE,IAAI;aAChB;YACD,SAAS,EAAE,8BAA8B;SACzC,CACD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,uBAAuB,CAAC,QAAgB;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,0BAA0B,IAAI,MAAM,CAAC,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvF,OAAO,MAAM,CAAC,0BAA0B,CAAC;QAC1C,CAAC;QACD,OAAO,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,6BAA6B,CAAC,QAAgB;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IACC,MAAM,CAAC,gCAAgC;YACvC,MAAM,CAAC,gCAAgC,CAAC,MAAM,GAAG,CAAC,EACjD,CAAC;YACF,OAAO,MAAM,CAAC,gCAAgC,CAAC;QAChD,CAAC;QACD,OAAO,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,QAAgB;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,4BAA4B,CAAC,QAAgB;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,yBAAyB,CAAC;IAC9E,CAAC;CACD;AAED,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qnsp/tenant-sdk",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -23,16 +23,16 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@opentelemetry/api": "^1.9.0",
26
- "@opentelemetry/exporter-metrics-otlp-http": "^0.208.0",
27
- "@opentelemetry/resources": "^2.0.0",
28
- "@opentelemetry/sdk-metrics": "^2.2.0",
29
- "undici": "^7.16.0",
30
- "zod": "^4.1.12"
26
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.210.0",
27
+ "@opentelemetry/resources": "^2.4.0",
28
+ "@opentelemetry/sdk-metrics": "^2.4.0",
29
+ "undici": "^7.18.2",
30
+ "zod": "^4.3.5"
31
31
  },
32
32
  "devDependencies": {
33
- "@types/node": "^22.13.14",
34
- "tsx": "^4.20.6",
35
- "vitest": "^4.0.10"
33
+ "@types/node": "^25.0.9",
34
+ "tsx": "^4.21.0",
35
+ "vitest": "4.0.17"
36
36
  },
37
37
  "engines": {
38
38
  "node": "24.12.0"
package/src/index.test.ts CHANGED
@@ -13,6 +13,7 @@ describe("TenantClient Security Tests", () => {
13
13
  expect(() => {
14
14
  new TenantClient({
15
15
  baseUrl: "http://example.com",
16
+ apiKey: "test-api-key",
16
17
  });
17
18
  }).toThrow("baseUrl must use HTTPS in production");
18
19
 
@@ -26,6 +27,7 @@ describe("TenantClient Security Tests", () => {
26
27
  expect(() => {
27
28
  new TenantClient({
28
29
  baseUrl: "http://localhost:3000",
30
+ apiKey: "test-api-key",
29
31
  });
30
32
  }).not.toThrow();
31
33
 
@@ -36,6 +38,7 @@ describe("TenantClient Security Tests", () => {
36
38
  describe("Input Validation", () => {
37
39
  const client = new TenantClient({
38
40
  baseUrl: "https://api.example.com",
41
+ apiKey: "test-api-key",
39
42
  });
40
43
 
41
44
  it("should reject invalid UUIDs", async () => {
@@ -58,6 +61,7 @@ describe("TenantClient Security Tests", () => {
58
61
  describe("Error Message Sanitization", () => {
59
62
  const client = new TenantClient({
60
63
  baseUrl: "https://api.example.com",
64
+ apiKey: "test-api-key",
61
65
  });
62
66
 
63
67
  it("should not expose sensitive data in error messages", async () => {
@@ -98,6 +102,7 @@ describe("TenantClient Security Tests", () => {
98
102
  describe("Rate Limiting", () => {
99
103
  const client = new TenantClient({
100
104
  baseUrl: "https://api.example.com",
105
+ apiKey: "test-api-key",
101
106
  maxRetries: 2,
102
107
  retryDelayMs: 10,
103
108
  });