@docrouter/sdk 0.1.0 → 0.2.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 +68 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.mts +296 -169
- package/dist/index.d.ts +296 -169
- package/dist/index.js +111 -82
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +111 -82
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -263,11 +263,20 @@ var DocRouterAccount = class {
|
|
|
263
263
|
return this.http.post(`/v0/orgs/${organizationId}/access_tokens`, request);
|
|
264
264
|
}
|
|
265
265
|
async getOrganizationTokens(organizationId) {
|
|
266
|
-
|
|
266
|
+
const resp = await this.http.get(`/v0/orgs/${organizationId}/access_tokens`);
|
|
267
|
+
return Array.isArray(resp) ? resp : resp.access_tokens;
|
|
267
268
|
}
|
|
268
269
|
async deleteOrganizationToken(tokenId, organizationId) {
|
|
269
270
|
return this.http.delete(`/v0/orgs/${organizationId}/access_tokens/${tokenId}`);
|
|
270
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* Get the organization ID associated with an API token
|
|
274
|
+
* @param token The API token to resolve
|
|
275
|
+
* @returns The organization ID for org-specific tokens, or null for account-level tokens
|
|
276
|
+
*/
|
|
277
|
+
async getOrganizationFromToken(token) {
|
|
278
|
+
return this.http.get(`/v0/account/token/organization?token=${encodeURIComponent(token)}`);
|
|
279
|
+
}
|
|
271
280
|
// --------------- LLM (account-level) ---------------
|
|
272
281
|
async listLLMModels(params) {
|
|
273
282
|
return this.http.get("/v0/account/llm/models", {
|
|
@@ -296,22 +305,13 @@ var DocRouterAccount = class {
|
|
|
296
305
|
}
|
|
297
306
|
async getUser(userId) {
|
|
298
307
|
const response = await this.listUsers({ user_id: userId });
|
|
299
|
-
|
|
300
|
-
return { user };
|
|
308
|
+
return response.users[0];
|
|
301
309
|
}
|
|
302
310
|
async createUser(user) {
|
|
303
|
-
|
|
304
|
-
"/v0/account/users",
|
|
305
|
-
user
|
|
306
|
-
);
|
|
307
|
-
return created.user ? created : { user: created };
|
|
311
|
+
return this.http.post("/v0/account/users", user);
|
|
308
312
|
}
|
|
309
313
|
async updateUser(userId, update) {
|
|
310
|
-
|
|
311
|
-
`/v0/account/users/${userId}`,
|
|
312
|
-
update
|
|
313
|
-
);
|
|
314
|
-
return updated.user ? updated : { user: updated };
|
|
314
|
+
return this.http.put(`/v0/account/users/${userId}`, update);
|
|
315
315
|
}
|
|
316
316
|
async deleteUser(userId) {
|
|
317
317
|
await this.http.delete(`/v0/account/users/${userId}`);
|
|
@@ -336,6 +336,69 @@ var DocRouterAccount = class {
|
|
|
336
336
|
async deleteAWSConfig() {
|
|
337
337
|
return this.http.delete("/v0/account/aws_config");
|
|
338
338
|
}
|
|
339
|
+
// --------------- Invitations ---------------
|
|
340
|
+
async createInvitation(invitation) {
|
|
341
|
+
return this.http.post("/v0/account/email/invitations", invitation);
|
|
342
|
+
}
|
|
343
|
+
async getInvitations(params) {
|
|
344
|
+
const queryParams = new URLSearchParams();
|
|
345
|
+
if (params?.skip !== void 0) queryParams.append("skip", String(params.skip));
|
|
346
|
+
if (params?.limit !== void 0) queryParams.append("limit", String(params.limit));
|
|
347
|
+
return this.http.get(`/v0/account/email/invitations?${queryParams.toString()}`);
|
|
348
|
+
}
|
|
349
|
+
async getInvitation(token) {
|
|
350
|
+
return this.http.get(`/v0/account/email/invitations/${token}`);
|
|
351
|
+
}
|
|
352
|
+
async acceptInvitation(token, data) {
|
|
353
|
+
return this.http.post(`/v0/account/email/invitations/${token}/accept`, data);
|
|
354
|
+
}
|
|
355
|
+
// --------------- Payments & Subscriptions ---------------
|
|
356
|
+
async getCustomerPortal(orgId) {
|
|
357
|
+
return this.http.post(`/v0/orgs/${orgId}/payments/customer-portal`);
|
|
358
|
+
}
|
|
359
|
+
async getSubscription(orgId) {
|
|
360
|
+
return this.http.get(`/v0/orgs/${orgId}/payments/subscription`);
|
|
361
|
+
}
|
|
362
|
+
async activateSubscription(orgId) {
|
|
363
|
+
return this.http.put(`/v0/orgs/${orgId}/payments/subscription`);
|
|
364
|
+
}
|
|
365
|
+
async cancelSubscription(orgId) {
|
|
366
|
+
return this.http.delete(`/v0/orgs/${orgId}/payments/subscription`);
|
|
367
|
+
}
|
|
368
|
+
async getCurrentUsage(orgId) {
|
|
369
|
+
return this.http.get(`/v0/orgs/${orgId}/payments/usage`);
|
|
370
|
+
}
|
|
371
|
+
async addCredits(orgId, amount) {
|
|
372
|
+
return this.http.post(`/v0/orgs/${orgId}/payments/credits/add`, { amount });
|
|
373
|
+
}
|
|
374
|
+
async getCreditConfig(orgId) {
|
|
375
|
+
return this.http.get(`/v0/orgs/${orgId}/payments/credits/config`);
|
|
376
|
+
}
|
|
377
|
+
async purchaseCredits(orgId, request) {
|
|
378
|
+
return this.http.post(`/v0/orgs/${orgId}/payments/credits/purchase`, request);
|
|
379
|
+
}
|
|
380
|
+
async getUsageRange(orgId, request) {
|
|
381
|
+
const queryParams = new URLSearchParams();
|
|
382
|
+
if (request.start_date) queryParams.append("start_date", request.start_date);
|
|
383
|
+
if (request.end_date) queryParams.append("end_date", request.end_date);
|
|
384
|
+
return this.http.get(`/v0/orgs/${orgId}/payments/usage/range?${queryParams.toString()}`);
|
|
385
|
+
}
|
|
386
|
+
async createCheckoutSession(orgId, planId) {
|
|
387
|
+
return this.http.post(`/v0/orgs/${orgId}/payments/checkout-session`, { plan_id: planId });
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Run LLM chat (account level)
|
|
391
|
+
*/
|
|
392
|
+
async runLLMChat(request) {
|
|
393
|
+
return this.http.post("/v0/account/llm/run", request);
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Run LLM chat with streaming (account level)
|
|
397
|
+
*/
|
|
398
|
+
async runLLMChatStream(request, onChunk, onError, abortSignal) {
|
|
399
|
+
const streamingRequest = { ...request, stream: true };
|
|
400
|
+
return this.http.stream("/v0/account/llm/run", streamingRequest, onChunk, onError, abortSignal);
|
|
401
|
+
}
|
|
339
402
|
/**
|
|
340
403
|
* Get the current HTTP client (for advanced usage)
|
|
341
404
|
*/
|
|
@@ -366,24 +429,16 @@ var DocRouterOrg = class {
|
|
|
366
429
|
async uploadDocuments(params) {
|
|
367
430
|
const documentsPayload = params.documents.map((doc) => {
|
|
368
431
|
let base64Content;
|
|
369
|
-
if (doc.content
|
|
370
|
-
|
|
371
|
-
base64Content = buffer.toString("base64");
|
|
372
|
-
} else if (doc.content instanceof Buffer) {
|
|
373
|
-
base64Content = doc.content.toString("base64");
|
|
374
|
-
} else if (doc.content instanceof Uint8Array) {
|
|
375
|
-
const buffer = Buffer.from(doc.content);
|
|
376
|
-
base64Content = buffer.toString("base64");
|
|
432
|
+
if (doc.content.startsWith("data:")) {
|
|
433
|
+
base64Content = doc.content.split(",")[1];
|
|
377
434
|
} else {
|
|
378
|
-
|
|
379
|
-
const buffer = Buffer.from(uint8Array);
|
|
380
|
-
base64Content = buffer.toString("base64");
|
|
435
|
+
base64Content = doc.content;
|
|
381
436
|
}
|
|
382
437
|
const payload = {
|
|
383
438
|
name: doc.name,
|
|
384
|
-
content: base64Content
|
|
385
|
-
type: doc.type
|
|
439
|
+
content: base64Content
|
|
386
440
|
};
|
|
441
|
+
if (doc.tag_ids && doc.tag_ids.length > 0) payload.tag_ids = doc.tag_ids;
|
|
387
442
|
if (doc.metadata) payload.metadata = doc.metadata;
|
|
388
443
|
return payload;
|
|
389
444
|
});
|
|
@@ -479,10 +534,7 @@ var DocRouterOrg = class {
|
|
|
479
534
|
{ updated_llm_result: result, is_verified: isVerified },
|
|
480
535
|
{ params: { prompt_revid: promptId } }
|
|
481
536
|
);
|
|
482
|
-
|
|
483
|
-
throw new Error(`Failed to update LLM result for document ${documentId} and prompt ${promptId}: ${response.data}`);
|
|
484
|
-
}
|
|
485
|
-
return response.data;
|
|
537
|
+
return response;
|
|
486
538
|
}
|
|
487
539
|
async deleteLLMResult(params) {
|
|
488
540
|
const { documentId, promptId } = params;
|
|
@@ -498,6 +550,35 @@ var DocRouterOrg = class {
|
|
|
498
550
|
{ responseType: "blob" }
|
|
499
551
|
);
|
|
500
552
|
}
|
|
553
|
+
// ---------------- Prompts ----------------
|
|
554
|
+
async createPrompt(params) {
|
|
555
|
+
const { prompt } = params;
|
|
556
|
+
return this.http.post(`/v0/orgs/${this.organizationId}/prompts`, prompt);
|
|
557
|
+
}
|
|
558
|
+
async listPrompts(params) {
|
|
559
|
+
const { skip, limit, document_id, tag_ids, nameSearch } = params || {};
|
|
560
|
+
return this.http.get(`/v0/orgs/${this.organizationId}/prompts`, {
|
|
561
|
+
params: {
|
|
562
|
+
skip: skip || 0,
|
|
563
|
+
limit: limit || 10,
|
|
564
|
+
document_id,
|
|
565
|
+
tag_ids,
|
|
566
|
+
name_search: nameSearch
|
|
567
|
+
}
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
async getPrompt(params) {
|
|
571
|
+
const { promptRevId } = params;
|
|
572
|
+
return this.http.get(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);
|
|
573
|
+
}
|
|
574
|
+
async updatePrompt(params) {
|
|
575
|
+
const { promptId, prompt } = params;
|
|
576
|
+
return this.http.put(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);
|
|
577
|
+
}
|
|
578
|
+
async deletePrompt(params) {
|
|
579
|
+
const { promptId } = params;
|
|
580
|
+
return this.http.delete(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);
|
|
581
|
+
}
|
|
501
582
|
// ---------------- Tags ----------------
|
|
502
583
|
async createTag(params) {
|
|
503
584
|
const { tag } = params;
|
|
@@ -559,35 +640,6 @@ var DocRouterOrg = class {
|
|
|
559
640
|
const { documentId, formRevId } = params;
|
|
560
641
|
await this.http.delete(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, { params: { form_revid: formRevId } });
|
|
561
642
|
}
|
|
562
|
-
// ---------------- Prompts ----------------
|
|
563
|
-
async createPrompt(params) {
|
|
564
|
-
const { prompt } = params;
|
|
565
|
-
return this.http.post(`/v0/orgs/${this.organizationId}/prompts`, prompt);
|
|
566
|
-
}
|
|
567
|
-
async listPrompts(params) {
|
|
568
|
-
const { skip, limit, document_id, tag_ids, nameSearch } = params || {};
|
|
569
|
-
return this.http.get(`/v0/orgs/${this.organizationId}/prompts`, {
|
|
570
|
-
params: {
|
|
571
|
-
skip: skip || 0,
|
|
572
|
-
limit: limit || 10,
|
|
573
|
-
document_id,
|
|
574
|
-
tag_ids,
|
|
575
|
-
name_search: nameSearch
|
|
576
|
-
}
|
|
577
|
-
});
|
|
578
|
-
}
|
|
579
|
-
async getPrompt(params) {
|
|
580
|
-
const { promptRevId } = params;
|
|
581
|
-
return this.http.get(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);
|
|
582
|
-
}
|
|
583
|
-
async updatePrompt(params) {
|
|
584
|
-
const { promptId, prompt } = params;
|
|
585
|
-
return this.http.put(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);
|
|
586
|
-
}
|
|
587
|
-
async deletePrompt(params) {
|
|
588
|
-
const { promptId } = params;
|
|
589
|
-
return this.http.delete(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);
|
|
590
|
-
}
|
|
591
643
|
// ---------------- Schemas ----------------
|
|
592
644
|
async createSchema(schema) {
|
|
593
645
|
return this.http.post(`/v0/orgs/${this.organizationId}/schemas`, schema);
|
|
@@ -614,29 +666,6 @@ var DocRouterOrg = class {
|
|
|
614
666
|
const { schemaRevId, data } = params;
|
|
615
667
|
return this.http.post(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}/validate`, { data });
|
|
616
668
|
}
|
|
617
|
-
// ---------------- Flows ----------------
|
|
618
|
-
async createFlow(params) {
|
|
619
|
-
const { flow } = params;
|
|
620
|
-
return this.http.post(`/v0/orgs/${this.organizationId}/flows`, flow);
|
|
621
|
-
}
|
|
622
|
-
async updateFlow(params) {
|
|
623
|
-
const { flowId, flow } = params;
|
|
624
|
-
return this.http.put(`/v0/orgs/${this.organizationId}/flows/${flowId}`, flow);
|
|
625
|
-
}
|
|
626
|
-
async listFlows(params) {
|
|
627
|
-
const { skip, limit } = params || {};
|
|
628
|
-
return this.http.get(`/v0/orgs/${this.organizationId}/flows`, {
|
|
629
|
-
params: { skip: skip || 0, limit: limit || 10 }
|
|
630
|
-
});
|
|
631
|
-
}
|
|
632
|
-
async getFlow(params) {
|
|
633
|
-
const { flowId } = params;
|
|
634
|
-
return this.http.get(`/v0/orgs/${this.organizationId}/flows/${flowId}`);
|
|
635
|
-
}
|
|
636
|
-
async deleteFlow(params) {
|
|
637
|
-
const { flowId } = params;
|
|
638
|
-
await this.http.delete(`/v0/orgs/${this.organizationId}/flows/${flowId}`);
|
|
639
|
-
}
|
|
640
669
|
// ---------------- Payments ----------------
|
|
641
670
|
async getCustomerPortal() {
|
|
642
671
|
return this.http.post(`/v0/orgs/${this.organizationId}/payments/customer-portal`, {});
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/http-client.ts","../src/docrouter-account.ts","../src/docrouter-org.ts"],"names":[],"mappings":";;;AAGO,IAAM,aAAN,MAAiB;AAAA,EAStB,YAAY,MAAA,EAAyB;AANrC,IAAA,IAAA,CAAQ,YAAA,GAAe,KAAA;AACvB,IAAA,IAAA,CAAQ,cAGH,EAAC;AAGJ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,MAAM,MAAA,CAAO;AAAA,MACxB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,OAAA,EAAS,OAAO,OAAA,IAAW,GAAA;AAAA,MAC3B,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB;AAAA;AAClB,KACD,CAAA;AAED,IAAA,IAAA,CAAK,iBAAA,EAAkB;AAAA,EACzB;AAAA,EAEQ,iBAAA,GAA0B;AAEhC,IAAA,IAAA,CAAK,KAAA,CAAM,aAAa,OAAA,CAAQ,GAAA;AAAA,MAC9B,OAAO,MAAA,KAAW;AAChB,QAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,QAAA,EAAS;AAClC,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAA,CAAO,OAAA,CAAQ,aAAA,GAAgB,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AAAA,QAChD;AACA,QAAA,OAAO,MAAA;AAAA,MACT,CAAA;AAAA,MACA,CAAC,KAAA,KAAU,OAAA,CAAQ,MAAA,CAAO,KAAK;AAAA,KACjC;AAGA,IAAA,IAAA,CAAK,KAAA,CAAM,aAAa,QAAA,CAAS,GAAA;AAAA,MAC/B,CAAC,QAAA,KAAa,QAAA;AAAA,MACd,OAAO,KAAA,KAAU;AACf,QAAA,MAAM,kBAAkB,KAAA,CAAM,MAAA;AAG9B,QAAA,IAAI,MAAM,QAAA,EAAU,MAAA,KAAW,GAAA,IAAO,CAAC,gBAAgB,MAAA,EAAQ;AAC7D,UAAA,IAAI,KAAK,YAAA,EAAc;AACrB,YAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,cAAA,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,EAAE,OAAA,EAAS,QAAQ,CAAA;AAAA,YAC3C,CAAC,CAAA,CACE,IAAA,CAAK,MAAM,IAAA,CAAK,KAAA,CAAM,eAAe,CAAC,CAAA,CACtC,KAAA,CAAM,CAAC,GAAA,KAAQ;AACd,cAAA,IAAA,CAAK,gBAAgB,GAAG,CAAA;AACxB,cAAA,OAAO,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA,YAC3B,CAAC,CAAA;AAAA,UACL;AAEA,UAAA,eAAA,CAAgB,MAAA,GAAS,IAAA;AACzB,UAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AAEpB,UAAA,IAAI;AAEF,YAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,EAAS;AACrC,YAAA,IAAI,QAAA,EAAU;AACZ,cAAA,eAAA,CAAgB,OAAA,CAAQ,aAAA,GAAgB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAA;AAC1D,cAAA,IAAA,CAAK,YAAA,EAAa;AAClB,cAAA,OAAO,IAAA,CAAK,MAAM,eAAe,CAAA;AAAA,YACnC,CAAA,MAAO;AACL,cAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA;AAC1B,cAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA,YAClD;AAAA,UACF,SAAS,YAAA,EAAc;AACrB,YAAA,IAAA,CAAK,aAAa,YAAA,YAAwB,KAAA,GAAQ,eAAe,IAAI,KAAA,CAAM,sBAAsB,CAAC,CAAA;AAClG,YAAA,IAAA,CAAK,gBAAgB,KAAK,CAAA;AAC1B,YAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA,UAClD,CAAA,SAAE;AACA,YAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AAAA,UACtB;AAAA,QACF;AAEA,QAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA,MAClD;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAc,QAAA,GAAmC;AAC/C,IAAA,IAAI,IAAA,CAAK,OAAO,KAAA,EAAO;AACrB,MAAA,OAAO,KAAK,MAAA,CAAO,KAAA;AAAA,IACrB;AAEA,IAAA,IAAI,IAAA,CAAK,OAAO,aAAA,EAAe;AAC7B,MAAA,IAAI;AACF,QAAA,OAAO,MAAM,IAAA,CAAK,MAAA,CAAO,aAAA,EAAc;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,IAAA,CAAK,0BAA0B,KAAK,CAAA;AAC5C,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,YAAA,CAAa,QAAsB,IAAA,EAAY;AACrD,IAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,CAAA,IAAA,KAAQ;AAC/B,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,MACnB,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,MACf;AAAA,IACF,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,cAAc,EAAC;AAAA,EACtB;AAAA,EAEQ,gBAAgB,KAAA,EAAsB;AAC5C,IAAA,IAAI,IAAA,CAAK,OAAO,WAAA,EAAa;AAC3B,MAAA,IAAA,CAAK,MAAA,CAAO,YAAY,KAAA,YAAiB,KAAA,GAAQ,QAAQ,IAAI,KAAA,CAAM,uBAAuB,CAAC,CAAA;AAAA,IAC7F;AAAA,EACF;AAAA,EAEQ,eAAe,KAAA,EAA0B;AAC/C,IAAA,IAAI,YAAA,CAAa,KAAK,CAAA,EAAG;AACvB,MAAA,MAAM,UAAU,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,MAAA,IAAU,MAAM,OAAA,IAAW,gBAAA;AACjE,MAAA,MAAM,QAAA,GAAqB,IAAI,KAAA,CAAM,OAAO,CAAA;AAC5C,MAAA,QAAA,CAAS,MAAA,GAAS,MAAM,QAAA,EAAU,MAAA;AAClC,MAAA,QAAA,CAAS,OAAO,KAAA,CAAM,IAAA;AACtB,MAAA,QAAA,CAAS,OAAA,GAAU,MAAM,QAAA,EAAU,IAAA;AACnC,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,MAAA,MAAM,QAAA,GAAqB,KAAA;AAC3B,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAI,MAAM,wBAAwB,CAAA;AAAA,EAC3C;AAAA;AAAA,EAGA,MAAM,GAAA,CAAiB,GAAA,EAAa,MAAA,EAAyC;AAC3E,IAAA,MAAM,WAA6B,MAAM,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,KAAK,MAAM,CAAA;AACnE,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB;AAAA,EAEA,MAAM,IAAA,CAAkB,GAAA,EAAa,IAAA,EAAgB,MAAA,EAAyC;AAC5F,IAAA,MAAM,WAA6B,MAAM,IAAA,CAAK,MAAM,IAAA,CAAK,GAAA,EAAK,MAAM,MAAM,CAAA;AAC1E,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB;AAAA,EAEA,MAAM,GAAA,CAAiB,GAAA,EAAa,IAAA,EAAgB,MAAA,EAAyC;AAC3F,IAAA,MAAM,WAA6B,MAAM,IAAA,CAAK,MAAM,GAAA,CAAI,GAAA,EAAK,MAAM,MAAM,CAAA;AACzE,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB;AAAA,EAEA,MAAM,MAAA,CAAoB,GAAA,EAAa,MAAA,EAAyC;AAC9E,IAAA,MAAM,WAA6B,MAAM,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,KAAK,MAAM,CAAA;AACtE,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB;AAAA,EAEA,MAAM,QAAqB,MAAA,EAAwC;AACjE,IAAA,MAAM,QAAA,GAA6B,MAAM,IAAA,CAAK,KAAA,CAAM,QAAQ,MAAM,CAAA;AAClE,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB;AAAA;AAAA,EAGA,MAAM,MAAA,CACJ,GAAA,EACA,IAAA,EACA,OAAA,EACA,SACA,WAAA,EACe;AACf,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,QAAA,EAAS;AAClC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAAA,MAC5D;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,KAAK,MAAA,CAAO,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI;AAAA,QAC3D,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB,kBAAA;AAAA,UAChB,eAAA,EAAiB,UAAU,KAAK,CAAA,CAAA;AAAA,UAChC,QAAA,EAAU,YAAA;AAAA,UACV,eAAA,EAAiB;AAAA,SACnB;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAAA,QACzB,MAAA,EAAQ;AAAA,OACT,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAC1D;AAEA,MAAA,IAAI,CAAC,SAAS,IAAA,EAAM;AAClB,QAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,MAChE;AAEA,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,IAAA,CAAK,SAAA,EAAU;AACvC,MAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,MAAA,IAAI,MAAA,GAAS,EAAA;AAEb,MAAA,IAAI;AACF,QAAA,OAAO,IAAA,EAAM;AACX,UAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAE1C,UAAA,IAAI,IAAA,EAAM;AACR,YAAA;AAAA,UACF;AAGA,UAAA,MAAA,IAAU,QAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAGhD,UAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC/B,UAAA,MAAA,GAAS,KAAA,CAAM,KAAI,IAAK,EAAA;AAExB,UAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,YAAA,IAAI,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC7B,cAAA,IAAI;AACF,gBAAA,MAAM,YAAY,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAC1C,gBAAA,OAAA,CAAQ,SAAS,CAAA;AAGjB,gBAAA,IAAI,UAAU,IAAA,EAAM;AAClB,kBAAA;AAAA,gBACF;AAAA,cACF,SAAS,UAAA,EAAY;AACnB,gBAAA,OAAA,CAAQ,IAAA,CAAK,oCAAoC,UAAU,CAAA;AAAA,cAC7D;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAA,SAAE;AACA,QAAA,MAAA,CAAO,WAAA,EAAY;AAAA,MACrB;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,OAAA,CAAQ,iBAAiB,KAAA,GAAQ,KAAA,GAAQ,IAAI,KAAA,CAAM,0BAA0B,CAAC,CAAA;AAAA,MAChF,CAAA,MAAO;AACL,QAAA,MAAM,KAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,YAAY,KAAA,EAAqB;AAC/B,IAAA,IAAA,CAAK,OAAO,KAAA,GAAQ,KAAA;AAAA,EACtB;AAAA;AAAA,EAGA,oBAAoB,QAAA,EAAuC;AACzD,IAAA,IAAA,CAAK,OAAO,aAAA,GAAgB,QAAA;AAAA,EAC9B;AACF;;;AClOO,IAAM,mBAAN,MAAuB;AAAA,EAG5B,YAAY,MAAA,EAAgC;AAC1C,IAAA,IAAA,CAAK,IAAA,GAAO,IAAI,UAAA,CAAW;AAAA,MACzB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,OAAO,MAAA,CAAO,YAAA;AAAA,MACd,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,aAAa,MAAA,CAAO;AAAA,KACrB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAA,EAAqB;AAC/B,IAAA,IAAA,CAAK,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA,EAC7B;AAAA;AAAA,EAGA,MAAM,kBAAkB,MAAA,EAOe;AACrC,IAAA,MAAM,WAAA,GAAc,IAAI,eAAA,EAAgB;AACxC,IAAA,IAAI,QAAQ,MAAA,EAAQ,WAAA,CAAY,MAAA,CAAO,SAAA,EAAW,OAAO,MAAM,CAAA;AAC/D,IAAA,IAAI,QAAQ,cAAA,EAAgB,WAAA,CAAY,MAAA,CAAO,iBAAA,EAAmB,OAAO,cAAc,CAAA;AACvF,IAAA,IAAI,QAAQ,UAAA,EAAY,WAAA,CAAY,MAAA,CAAO,aAAA,EAAe,OAAO,UAAU,CAAA;AAC3E,IAAA,IAAI,QAAQ,YAAA,EAAc,WAAA,CAAY,MAAA,CAAO,eAAA,EAAiB,OAAO,YAAY,CAAA;AACjF,IAAA,IAAI,MAAA,EAAQ,SAAS,MAAA,EAAW,WAAA,CAAY,OAAO,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,IAAI,CAAC,CAAA;AAC9E,IAAA,IAAI,MAAA,EAAQ,UAAU,MAAA,EAAW,WAAA,CAAY,OAAO,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACjF,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAA+B,6BAA6B,WAAA,CAAY,QAAA,EAAU,CAAA,CAAE,CAAA;AAAA,EACvG;AAAA,EAEA,MAAM,gBAAgB,cAAA,EAA+C;AACnE,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,EAAE,gBAAgB,CAAA;AAChE,IAAA,OAAO,QAAA,CAAS,cAAc,CAAC,CAAA;AAAA,EACjC;AAAA,EAEA,MAAM,mBAAmB,YAAA,EAAgE;AACvF,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,IAAA,CAAK,IAAA,CAQ9B,6BAA6B,YAAY,CAAA;AAC5C,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,QAAA,CAAS,GAAA,IAAO,QAAA,CAAS,EAAA;AAAA,MAC7B,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,SAAS,QAAA,CAAS,OAAA;AAAA,MAClB,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,YAAY,QAAA,CAAS,UAAA;AAAA,MACrB,YAAY,QAAA,CAAS;AAAA,KACvB;AAAA,EACF;AAAA,EAEA,MAAM,kBAAA,CAAmB,cAAA,EAAwB,MAAA,EAA0D;AACzG,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAI,CAAA,0BAAA,EAA6B,cAAc,IAAI,MAAM,CAAA;AAAA,EAC5E;AAAA,EAEA,MAAM,mBAAmB,cAAA,EAAwB;AAC/C,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,0BAAA,EAA6B,cAAc,CAAA,CAAE,CAAA;AAAA,EACvE;AAAA;AAAA,EAGA,MAAM,mBAAmB,OAAA,EAA6B;AACpD,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAA,yBAAA,CAAA,EAA6B,OAAO,CAAA;AAAA,EAC5D;AAAA,EAEA,MAAM,gBAAA,GAAgE;AACpE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CAAK,IAA8C,CAAA,yBAAA,CAA2B,CAAA;AAEtG,IAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAQ,IAAA,CAAkC,aAAA;AAAA,EACzE;AAAA,EAEA,MAAM,mBAAmB,OAAA,EAAiB;AACxC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,0BAAA,EAA6B,OAAO,CAAA,CAAE,CAAA;AAAA,EAChE;AAAA,EAEA,MAAM,uBAAA,CAAwB,OAAA,EAA6B,cAAA,EAAwB;AACjF,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA,CAAK,CAAA,SAAA,EAAY,cAAc,kBAAkB,OAAO,CAAA;AAAA,EAC3E;AAAA,EAEA,MAAM,sBAAsB,cAAA,EAAwB;AAClD,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAA,SAAA,EAAY,cAAc,CAAA,cAAA,CAAgB,CAAA;AAAA,EACjE;AAAA,EAEA,MAAM,uBAAA,CAAwB,OAAA,EAAiB,cAAA,EAAwB;AACrE,IAAA,OAAO,KAAK,IAAA,CAAK,MAAA,CAAO,YAAY,cAAc,CAAA,eAAA,EAAkB,OAAO,CAAA,CAAE,CAAA;AAAA,EAC/E;AAAA;AAAA,EAGA,MAAM,cAAc,MAAA,EAA6D;AAC/E,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAA2B,wBAAA,EAA0B;AAAA,MACpE,MAAA,EAAQ;AAAA,QACN,eAAe,MAAA,CAAO,YAAA;AAAA,QACtB,kBAAkB,MAAA,CAAO,eAAA;AAAA,QACzB,aAAa,MAAA,CAAO;AAAA;AACtB,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,gBAAA,GAAsD;AAC1D,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAA8B,2BAA2B,CAAA;AAAA,EAC5E;AAAA,EAEA,MAAM,oBAAA,CAAqB,YAAA,EAAsB,OAAA,EAAsC;AACrF,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAiC,CAAA,yBAAA,EAA4B,YAAY,IAAI,OAAO,CAAA;AAAA,EACvG;AAAA;AAAA,EAGA,MAAM,UAAU,MAAA,EAAsD;AACpE,IAAA,MAAM,WAAA,GAAc,IAAI,eAAA,EAAgB;AACxC,IAAA,IAAI,MAAA,EAAQ,MAAM,WAAA,CAAY,MAAA,CAAO,QAAQ,MAAA,CAAO,MAAA,CAAO,IAAI,CAAC,CAAA;AAChE,IAAA,IAAI,MAAA,EAAQ,OAAO,WAAA,CAAY,MAAA,CAAO,SAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACnE,IAAA,IAAI,QAAQ,eAAA,EAAiB,WAAA,CAAY,MAAA,CAAO,iBAAA,EAAmB,OAAO,eAAe,CAAA;AACzF,IAAA,IAAI,QAAQ,OAAA,EAAS,WAAA,CAAY,MAAA,CAAO,SAAA,EAAW,OAAO,OAAO,CAAA;AACjE,IAAA,IAAI,QAAQ,WAAA,EAAa,WAAA,CAAY,MAAA,CAAO,aAAA,EAAe,OAAO,WAAW,CAAA;AAC7E,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAuB,qBAAqB,WAAA,CAAY,QAAA,EAAU,CAAA,CAAE,CAAA;AAAA,EACvF;AAAA,EAEA,MAAM,QAAQ,MAAA,EAAuC;AACnD,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,UAAU,EAAE,OAAA,EAAS,QAAQ,CAAA;AACzD,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA;AAC7B,IAAA,OAAO,EAAE,IAAA,EAAK;AAAA,EAChB;AAAA,EAEA,MAAM,WAAW,IAAA,EAAyC;AACxD,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,IAAA,CAAK,IAAA;AAAA,MAC9B,mBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,OAAQ,OAAA,CAAyB,IAAA,GAC5B,OAAA,GACA,EAAE,MAAM,OAAA,EAA2B;AAAA,EAC1C;AAAA,EAEA,MAAM,UAAA,CAAW,MAAA,EAAgB,MAAA,EAA2C;AAC1E,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,IAAA,CAAK,GAAA;AAAA,MAC9B,qBAAqB,MAAM,CAAA,CAAA;AAAA,MAC3B;AAAA,KACF;AACA,IAAA,OAAQ,OAAA,CAAyB,IAAA,GAC5B,OAAA,GACA,EAAE,MAAM,OAAA,EAA2B;AAAA,EAC1C;AAAA,EAEA,MAAM,WAAW,MAAA,EAA+B;AAC9C,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAE,CAAA;AAAA,EACtD;AAAA;AAAA,EAGA,MAAM,sBAAsB,MAAA,EAAgB;AAC1C,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAA,oCAAA,EAAuC,MAAM,CAAA,CAAE,CAAA;AAAA,EACvE;AAAA,EAEA,MAAM,kCAAkC,MAAA,EAAgB;AACtD,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAA,wCAAA,EAA2C,MAAM,CAAA,CAAE,CAAA;AAAA,EAC3E;AAAA,EAEA,MAAM,YAAY,KAAA,EAAe;AAC/B,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAA,+BAAA,EAAkC,KAAK,CAAA,CAAE,CAAA;AAAA,EACjE;AAAA;AAAA,EAGA,MAAM,gBAAgB,MAAA,EAAuC;AAC3D,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,wBAAA,EAA0B,MAAM,CAAA;AAAA,EACxD;AAAA,EAEA,MAAM,YAAA,GAAe;AACnB,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,wBAAwB,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,eAAA,GAAkB;AACtB,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,wBAAwB,CAAA;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,GAA4B;AAC1B,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd;AACF;;;AC9JO,IAAM,eAAN,MAAmB;AAAA,EAIxB,YAAY,MAAA,EAA4B;AACtC,IAAA,IAAA,CAAK,iBAAiB,MAAA,CAAO,cAAA;AAC7B,IAAA,IAAA,CAAK,IAAA,GAAO,IAAI,UAAA,CAAW;AAAA,MACzB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,OAAO,MAAA,CAAO,QAAA;AAAA,MACd,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,aAAa,MAAA,CAAO;AAAA,KACrB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAA,EAAqB;AAC/B,IAAA,IAAA,CAAK,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA,EAC7B;AAAA;AAAA,EAIA,MAAM,gBAAgB,MAAA,EAAiL;AACrM,IAAA,MAAM,gBAAA,GAAmB,MAAA,CAAO,SAAA,CAAU,GAAA,CAAI,CAAA,GAAA,KAAO;AACnD,MAAA,IAAI,aAAA;AACJ,MAAA,IAAI,GAAA,CAAI,mBAAmB,WAAA,EAAa;AACtC,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA;AACtC,QAAA,aAAA,GAAgB,MAAA,CAAO,SAAS,QAAQ,CAAA;AAAA,MAC1C,CAAA,MAAA,IAAW,GAAA,CAAI,OAAA,YAAmB,MAAA,EAAQ;AACxC,QAAA,aAAA,GAAgB,GAAA,CAAI,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AAAA,MAC/C,CAAA,MAAA,IAAW,GAAA,CAAI,OAAA,YAAmB,UAAA,EAAY;AAC5C,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA;AACtC,QAAA,aAAA,GAAgB,MAAA,CAAO,SAAS,QAAQ,CAAA;AAAA,MAC1C,CAAA,MAAO;AAEL,QAAA,MAAM,UAAA,GAAa,IAAI,UAAA,CAAW,GAAA,CAAI,OAAO,CAAA;AAC7C,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA;AACrC,QAAA,aAAA,GAAgB,MAAA,CAAO,SAAS,QAAQ,CAAA;AAAA,MAC1C;AAEA,MAAA,MAAM,OAAA,GAKF;AAAA,QACF,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,OAAA,EAAS,aAAA;AAAA,QACT,MAAM,GAAA,CAAI;AAAA,OACZ;AACA,MAAA,IAAI,GAAA,CAAI,QAAA,EAAU,OAAA,CAAQ,QAAA,GAAW,GAAA,CAAI,QAAA;AACzC,MAAA,OAAO,OAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA;AAAA,MACf,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,UAAA,CAAA;AAAA,MAC/B,EAAE,WAAW,gBAAA;AAAiB,KAChC;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,MAAA,EAA4I;AAC9J,IAAA,MAAM,WAAA,GAA2D;AAAA,MAC/D,IAAA,EAAM,QAAQ,IAAA,IAAQ,CAAA;AAAA,MACtB,KAAA,EAAO,QAAQ,KAAA,IAAS;AAAA,KAC1B;AACA,IAAA,IAAI,MAAA,EAAQ,MAAA,EAAQ,WAAA,CAAY,OAAA,GAAU,MAAA,CAAO,MAAA;AACjD,IAAA,IAAI,MAAA,EAAQ,UAAA,EAAY,WAAA,CAAY,WAAA,GAAc,MAAA,CAAO,UAAA;AACzD,IAAA,IAAI,MAAA,EAAQ,cAAA,EAAgB,WAAA,CAAY,eAAA,GAAkB,MAAA,CAAO,cAAA;AAEjE,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAA2B,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,UAAA,CAAA,EAAc;AAAA,MACvF,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,YAAY,MAAA,EAAiF;AACjG,IAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAS,GAAI,MAAA;AACjC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAW9B,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,WAAA,EAAc,UAAU,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAA;AAElF,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA;AAC3C,IAAA,MAAM,MAAM,aAAA,CAAc,MAAA;AAC1B,IAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,GAAG,CAAA;AAChC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AAC5B,MAAA,KAAA,CAAM,CAAC,CAAA,GAAI,aAAA,CAAc,UAAA,CAAW,CAAC,CAAA;AAAA,IACvC;AAEA,IAAA,OAAO;AAAA,MACL,IAAI,QAAA,CAAS,EAAA;AAAA,MACb,QAAQ,QAAA,CAAS,MAAA;AAAA,MACjB,eAAe,QAAA,CAAS,aAAA;AAAA,MACxB,aAAa,QAAA,CAAS,WAAA;AAAA,MACtB,aAAa,QAAA,CAAS,WAAA;AAAA,MACtB,OAAO,QAAA,CAAS,KAAA;AAAA,MAChB,SAAS,QAAA,CAAS,OAAA;AAAA,MAClB,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,UAAU,QAAA,CAAS,QAAA;AAAA,MACnB,SAAS,KAAA,CAAM;AAAA,KACjB;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,MAAA,EAA8G;AACjI,IAAA,MAAM,EAAE,UAAA,EAAY,YAAA,EAAc,MAAA,EAAQ,UAAS,GAAI,MAAA;AACvD,IAAA,MAAM,aAAgG,EAAC;AACvG,IAAA,IAAI,YAAA,KAAiB,MAAA,EAAW,UAAA,CAAW,aAAA,GAAgB,YAAA;AAC3D,IAAA,IAAI,MAAA,KAAW,MAAA,EAAW,UAAA,CAAW,OAAA,GAAU,MAAA;AAC/C,IAAA,IAAI,QAAA,KAAa,MAAA,EAAW,UAAA,CAAW,QAAA,GAAW,QAAA;AAClD,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAI,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,WAAA,EAAc,UAAU,CAAA,CAAA,EAAI,UAAU,CAAA;AAAA,EAC5F;AAAA,EAEA,MAAM,eAAe,MAAA,EAAiC;AACpD,IAAA,MAAM,EAAE,YAAW,GAAI,MAAA;AACvB,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAAO,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,WAAA,EAAc,UAAU,CAAA,CAAE,CAAA;AAAA,EACnF;AAAA;AAAA,EAIA,MAAM,aAAa,MAAA,EAAiC;AAClD,IAAA,MAAM,EAAE,YAAW,GAAI,MAAA;AACvB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAI,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,qBAAA,EAAwB,UAAU,CAAA,CAAE,CAAA;AAAA,EAC1F;AAAA,EAEA,MAAM,WAAW,MAAA,EAAmD;AAClE,IAAA,MAAM,EAAE,UAAA,EAAY,OAAA,EAAQ,GAAI,MAAA;AAChC,IAAA,MAAM,GAAA,GAAM,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,mBAAA,EAAsB,UAAU,CAAA,EAAG,OAAA,GAAU,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AACnH,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AAAA,EAC1B;AAAA,EAEA,MAAM,eAAe,MAAA,EAAkE;AACrF,IAAA,MAAM,EAAE,YAAW,GAAI,MAAA;AACvB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAA4B,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,uBAAA,EAA0B,UAAU,CAAA,CAAE,CAAA;AAAA,EACpH;AAAA;AAAA,EAIA,MAAM,OAAO,MAAA,EAAgG;AAC3G,IAAA,MAAM,EAAE,UAAA,EAAY,WAAA,EAAa,KAAA,EAAM,GAAI,MAAA;AAC3C,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA;AAAA,MACf,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,SAAA,EAAY,UAAU,CAAA,CAAA;AAAA,MACrD,EAAC;AAAA,MACD,EAAE,MAAA,EAAQ,EAAE,YAAA,EAAc,WAAA,EAAa,OAAM;AAAE,KACjD;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,MAAA,EAAyG;AAC1H,IAAA,MAAM,EAAE,UAAA,EAAY,WAAA,EAAa,QAAA,EAAS,GAAI,MAAA;AAC9C,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA;AAAA,MACf,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,YAAA,EAAe,UAAU,CAAA,CAAA;AAAA,MACxD,EAAE,MAAA,EAAQ,EAAE,YAAA,EAAc,WAAA,EAAa,UAAS;AAAE,KACpD;AAAA,EACF;AAAA,EAEA,MAAM,eAAA,CAAgB;AAAA,IACpB,UAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA,GAAa;AAAA,GACf,EAAqG;AACnG,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,GAAA;AAAA,MAI/B,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,YAAA,EAAe,UAAU,CAAA,CAAA;AAAA,MACxD,EAAE,kBAAA,EAAoB,MAAA,EAAQ,WAAA,EAAa,UAAA,EAAW;AAAA,MACtD,EAAE,MAAA,EAAQ,EAAE,YAAA,EAAc,UAAS;AAAE,KACvC;AACA,IAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,MAAA,MAAM,IAAI,MAAM,CAAA,yCAAA,EAA4C,UAAU,eAAe,QAAQ,CAAA,EAAA,EAAK,QAAA,CAAS,IAAI,CAAA,CAAE,CAAA;AAAA,IACnH;AACA,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB;AAAA,EAEA,MAAM,gBAAgB,MAAA,EAAmD;AACvE,IAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAS,GAAI,MAAA;AACjC,IAAA,OAAO,KAAK,IAAA,CAAK,MAAA;AAAA,MACf,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,YAAA,EAAe,UAAU,CAAA,CAAA;AAAA,MACxD,EAAE,MAAA,EAAQ,EAAE,YAAA,EAAc,UAAS;AAAE,KACvC;AAAA,EACF;AAAA,EAEA,MAAM,sBAAsB,MAAA,EAAiC;AAC3D,IAAA,MAAM,EAAE,YAAW,GAAI,MAAA;AACvB,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA;AAAA,MACf,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,aAAA,EAAgB,UAAU,CAAA,SAAA,CAAA;AAAA,MACzD,EAAE,cAAc,MAAA;AAAgB,KAClC;AAAA,EACF;AAAA;AAAA,EAIA,MAAM,UAAU,MAAA,EAA+E;AAC7F,IAAA,MAAM,EAAE,KAAI,GAAI,MAAA;AAChB,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA,CAAU,YAAY,IAAA,CAAK,cAAc,SAAS,GAAG,CAAA;AAAA,EACxE;AAAA,EAEA,MAAM,MAAA,CAAO,EAAE,KAAA,EAAM,EAAqC;AACxD,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAS,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,EAC3E;AAAA,EAEA,MAAM,SAAS,MAAA,EAA6F;AAC1G,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,UAAA,EAAW,GAAI,UAAU,EAAC;AAC/C,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAsB,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,KAAA,CAAA,EAAS;AAAA,MAC7E,MAAA,EAAQ,EAAE,IAAA,EAAM,IAAA,IAAQ,GAAG,KAAA,EAAO,KAAA,IAAS,EAAA,EAAI,WAAA,EAAa,UAAA;AAAW,KACxE,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,UAAU,MAAA,EAAuG;AACrH,IAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,MAAA;AACvB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAS,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA;AAAA,EAChF;AAAA,EAEA,MAAM,UAAU,MAAA,EAA0D;AACxE,IAAA,MAAM,EAAE,OAAM,GAAI,MAAA;AAClB,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAA4B,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,EAC9F;AAAA;AAAA,EAIA,MAAM,WAAW,IAAA,EAA+D;AAC9E,IAAA,MAAM,EAAE,IAAA,EAAM,eAAA,EAAgB,GAAI,IAAA;AAClC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAW,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,MAAA,CAAA,EAAU,EAAE,IAAA,EAAM,eAAA,EAAiB,CAAA;AAAA,EAChG;AAAA,EAEA,MAAM,UAAU,MAAA,EAA8E;AAC5F,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,OAAA,EAAQ,GAAI,UAAU,EAAC;AAC5C,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAuB,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,MAAA,CAAA,EAAU;AAAA,MAC/E,MAAA,EAAQ,EAAE,IAAA,EAAM,IAAA,IAAQ,GAAG,KAAA,EAAO,KAAA,IAAS,IAAI,OAAA;AAAQ,KACxD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,QAAQ,MAAA,EAA8D;AAC1E,IAAA,MAAM,EAAE,WAAU,GAAI,MAAA;AACtB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAU,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,OAAA,EAAU,SAAS,CAAA,CAAE,CAAA;AAAA,EACjF;AAAA,EAEA,MAAM,WAAW,MAAA,EAAiE;AAChF,IAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,MAAA;AACzB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAU,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA,EACpF;AAAA,EAEA,MAAM,WAAW,MAAA,EAAgF;AAC/F,IAAA,MAAM,EAAE,QAAO,GAAI,MAAA;AACnB,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAA4B,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,OAAA,EAAU,MAAM,CAAA,CAAE,CAAA;AAAA,EAChG;AAAA,EAEA,MAAM,WAAW,MAAA,EAA2E;AAC1F,IAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAW,eAAA,EAAiB,cAAa,GAAI,MAAA;AACjE,IAAA,OAAO,IAAA,CAAK,KAAK,IAAA,CAAqB,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,mBAAA,EAAsB,UAAU,CAAA,CAAA,EAAI;AAAA,MACvG,UAAA,EAAY,SAAA;AAAA,MACZ,eAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,kBAAkB,MAAA,EAAyF;AAC/G,IAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAU,GAAI,MAAA;AAClC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAA2B,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,mBAAA,EAAsB,UAAU,CAAA,YAAA,EAAe,SAAS,CAAA,CAAE,CAAA;AAAA,EACvI;AAAA,EAEA,MAAM,qBAAqB,MAAA,EAA2E;AACpG,IAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAU,GAAI,MAAA;AAClC,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,mBAAA,EAAsB,UAAU,CAAA,CAAA,EAAI,EAAE,MAAA,EAAQ,EAAE,UAAA,EAAY,SAAA,IAAa,CAAA;AAAA,EACjI;AAAA;AAAA,EAIA,MAAM,aAAa,MAAA,EAAqE;AACtF,IAAA,MAAM,EAAE,QAAO,GAAI,MAAA;AACnB,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA,CAAa,YAAY,IAAA,CAAK,cAAc,YAAY,MAAM,CAAA;AAAA,EACjF;AAAA,EAEA,MAAM,YAAY,MAAA,EAAiF;AACjG,IAAA,MAAM,EAAE,MAAM,KAAA,EAAO,WAAA,EAAa,SAAS,UAAA,EAAW,GAAI,UAAU,EAAC;AACrE,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAyB,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,QAAA,CAAA,EAAY;AAAA,MACnF,MAAA,EAAQ;AAAA,QACN,MAAM,IAAA,IAAQ,CAAA;AAAA,QACd,OAAO,KAAA,IAAS,EAAA;AAAA,QAChB,WAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAa;AAAA;AACf,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,UAAU,MAAA,EAAkE;AAChF,IAAA,MAAM,EAAE,aAAY,GAAI,MAAA;AACxB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAY,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,SAAA,EAAY,WAAW,CAAA,CAAE,CAAA;AAAA,EACvF;AAAA,EAEA,MAAM,aAAa,MAAA,EAAqE;AACtF,IAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAO,GAAI,MAAA;AAC7B,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAY,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,SAAA,EAAY,QAAQ,CAAA,CAAA,EAAI,MAAM,CAAA;AAAA,EAC5F;AAAA,EAEA,MAAM,aAAa,MAAA,EAAkF;AACnG,IAAA,MAAM,EAAE,UAAS,GAAI,MAAA;AACrB,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAA4B,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,SAAA,EAAY,QAAQ,CAAA,CAAE,CAAA;AAAA,EACpG;AAAA;AAAA,EAIA,MAAM,aAAa,MAAA,EAAqE;AACtF,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA,CAAa,YAAY,IAAA,CAAK,cAAc,YAAY,MAAM,CAAA;AAAA,EACjF;AAAA,EAEA,MAAM,YAAY,MAAA,EAAiF;AACjG,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,UAAA,EAAW,GAAI,UAAU,EAAC;AAC/C,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAyB,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,QAAA,CAAA,EAAY;AAAA,MACnF,MAAA,EAAQ,EAAE,IAAA,EAAM,IAAA,IAAQ,GAAG,KAAA,EAAO,KAAA,IAAS,EAAA,EAAI,WAAA,EAAa,UAAA;AAAW,KACxE,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,UAAU,MAAA,EAAkE;AAChF,IAAA,MAAM,EAAE,aAAY,GAAI,MAAA;AACxB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAY,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,SAAA,EAAY,WAAW,CAAA,CAAE,CAAA;AAAA,EACvF;AAAA,EAEA,MAAM,aAAa,MAAA,EAAqE;AACtF,IAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAO,GAAI,MAAA;AAC7B,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAY,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,SAAA,EAAY,QAAQ,CAAA,CAAA,EAAI,MAAM,CAAA;AAAA,EAC5F;AAAA,EAEA,MAAM,aAAa,MAAA,EAAkF;AACnG,IAAA,MAAM,EAAE,UAAS,GAAI,MAAA;AACrB,IAAA,OAAO,IAAA,CAAK,KAAK,MAAA,CAA4B,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,SAAA,EAAY,QAAQ,CAAA,CAAE,CAAA;AAAA,EACpG;AAAA,EAEA,MAAM,sBAAsB,MAAA,EAAgH;AAC1I,IAAA,MAAM,EAAE,WAAA,EAAa,IAAA,EAAK,GAAI,MAAA;AAC9B,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAA4C,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,SAAA,EAAY,WAAW,CAAA,SAAA,CAAA,EAAa,EAAE,IAAA,EAAM,CAAA;AAAA,EAC1I;AAAA;AAAA,EAIA,MAAM,WAAW,MAAA,EAAiE;AAChF,IAAA,MAAM,EAAE,MAAK,GAAI,MAAA;AACjB,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA,CAAW,YAAY,IAAA,CAAK,cAAc,UAAU,IAAI,CAAA;AAAA,EAC3E;AAAA,EAEA,MAAM,WAAW,MAAA,EAAiE;AAChF,IAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,MAAA;AACzB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAU,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA,EACpF;AAAA,EAEA,MAAM,UAAU,MAAA,EAA8E;AAC5F,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,UAAU,EAAC;AACnC,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAuB,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,MAAA,CAAA,EAAU;AAAA,MAC/E,QAAQ,EAAE,IAAA,EAAM,QAAQ,CAAA,EAAG,KAAA,EAAO,SAAS,EAAA;AAAG,KAC/C,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,QAAQ,MAAA,EAA8D;AAC1E,IAAA,MAAM,EAAE,QAAO,GAAI,MAAA;AACnB,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAU,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,OAAA,EAAU,MAAM,CAAA,CAAE,CAAA;AAAA,EAC9E;AAAA,EAEA,MAAM,WAAW,MAAA,EAAiE;AAChF,IAAA,MAAM,EAAE,QAAO,GAAI,MAAA;AACnB,IAAA,MAAM,IAAA,CAAK,KAAK,MAAA,CAAO,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,OAAA,EAAU,MAAM,CAAA,CAAE,CAAA;AAAA,EAC1E;AAAA;AAAA,EAIA,MAAM,iBAAA,GAAoD;AACxD,IAAA,OAAO,IAAA,CAAK,KAAK,IAAA,CAA4B,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,yBAAA,CAAA,EAA6B,EAAE,CAAA;AAAA,EAC7G;AAAA,EAEA,MAAM,eAAA,GAAiD;AACrD,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAA0B,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,sBAAA,CAAwB,CAAA;AAAA,EACpG;AAAA,EAEA,MAAM,oBAAA,GAAqE;AACzE,IAAA,OAAO,IAAA,CAAK,KAAK,GAAA,CAAyC,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,sBAAA,CAAA,EAA0B,EAAE,CAAA;AAAA,EACvH;AAAA,EAEA,MAAM,kBAAA,GAAmE;AACvE,IAAA,OAAO,KAAK,IAAA,CAAK,MAAA,CAA4C,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,sBAAA,CAAwB,CAAA;AAAA,EACtH;AAAA,EAGA,MAAM,eAAA,GAA0C;AAC9C,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAmB,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,eAAA,CAAiB,CAAA;AAAA,EACtF;AAAA,EAEA,MAAM,WAAW,MAAA,EAA+C;AAC9D,IAAA,OAAO,IAAA,CAAK,KAAK,IAAA,CAA2B,CAAA,SAAA,EAAY,KAAK,cAAc,CAAA,qBAAA,CAAA,EAAyB,EAAE,MAAA,EAAQ,CAAA;AAAA,EAChH;AAAA,EAEA,MAAM,eAAA,GAAyC;AAC7C,IAAA,OAAO,KAAK,IAAA,CAAK,GAAA,CAAkB,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,wBAAA,CAA0B,CAAA;AAAA,EAC9F;AAAA,EAEA,MAAM,gBAAgB,OAAA,EAAwE;AAC5F,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA,CAAK,YAAY,IAAA,CAAK,cAAc,8BAA8B,OAAO,CAAA;AAAA,EAC5F;AAAA,EAEA,MAAM,cAAc,OAAA,EAAyD;AAC3E,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAwB,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,qBAAA,CAAA,EAAyB,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAA;AAAA,EACtH;AAAA,EAEA,MAAM,sBAAsB,MAAA,EAAgD;AAC1E,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAA4B,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,0BAAA,CAAA,EAA8B,EAAE,OAAA,EAAS,MAAA,EAAQ,CAAA;AAAA,EAC/H;AAAA;AAAA,EAIA,MAAM,WAAW,OAAA,EAAwK;AACvL,IAAA,OAAO,KAAK,IAAA,CAAK,IAAA,CAAK,YAAY,IAAA,CAAK,cAAc,YAAY,OAAO,CAAA;AAAA,EAC1E;AAAA,EAEA,MAAM,gBAAA,CACJ,OAAA,EACA,OAAA,EACA,SACA,WAAA,EACe;AACf,IAAA,MAAM,gBAAA,GAAmB,EAAE,GAAG,OAAA,EAAS,QAAQ,IAAA,EAAK;AACpD,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,SAAA,EAAY,IAAA,CAAK,cAAc,CAAA,QAAA,CAAA,EAAY,gBAAA,EAAkB,OAAA,EAAS,OAAA,EAAS,WAAW,CAAA;AAAA,EACpH;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,GAA4B;AAC1B,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd;AACF","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, isAxiosError } from 'axios';\nimport { DocRouterConfig, ApiError } from './types';\n\nexport class HttpClient {\n private axios: AxiosInstance;\n private config: DocRouterConfig;\n private isRefreshing = false;\n private failedQueue: Array<{\n resolve: (value?: unknown) => void;\n reject: (error: Error) => void;\n }> = [];\n\n constructor(config: DocRouterConfig) {\n this.config = config;\n this.axios = axios.create({\n baseURL: config.baseURL,\n timeout: config.timeout || 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n this.setupInterceptors();\n }\n\n private setupInterceptors(): void {\n // Request interceptor for auth\n this.axios.interceptors.request.use(\n async (config) => {\n const token = await this.getToken();\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n // Response interceptor for error handling\n this.axios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n\n // Handle 401 errors (unauthorized)\n if (error.response?.status === 401 && !originalRequest._retry) {\n if (this.isRefreshing) {\n return new Promise((resolve, reject) => {\n this.failedQueue.push({ resolve, reject });\n })\n .then(() => this.axios(originalRequest))\n .catch((err) => {\n this.handleAuthError(err);\n return Promise.reject(err);\n });\n }\n\n originalRequest._retry = true;\n this.isRefreshing = true;\n\n try {\n // Try to get a new token\n const newToken = await this.getToken();\n if (newToken) {\n originalRequest.headers.Authorization = `Bearer ${newToken}`;\n this.processQueue();\n return this.axios(originalRequest);\n } else {\n this.handleAuthError(error);\n return Promise.reject(this.createApiError(error));\n }\n } catch (refreshError) {\n this.processQueue(refreshError instanceof Error ? refreshError : new Error('Token refresh failed'));\n this.handleAuthError(error);\n return Promise.reject(this.createApiError(error));\n } finally {\n this.isRefreshing = false;\n }\n }\n\n return Promise.reject(this.createApiError(error));\n }\n );\n }\n\n private async getToken(): Promise<string | null> {\n if (this.config.token) {\n return this.config.token;\n }\n \n if (this.config.tokenProvider) {\n try {\n return await this.config.tokenProvider();\n } catch (error) {\n console.warn('Token provider failed:', error);\n return null;\n }\n }\n\n return null;\n }\n\n private processQueue(error: Error | null = null): void {\n this.failedQueue.forEach(prom => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve();\n }\n });\n this.failedQueue = [];\n }\n\n private handleAuthError(error: unknown): void {\n if (this.config.onAuthError) {\n this.config.onAuthError(error instanceof Error ? error : new Error('Authentication failed'));\n }\n }\n\n private createApiError(error: unknown): ApiError {\n if (isAxiosError(error)) {\n const message = error.response?.data?.detail || error.message || 'Request failed';\n const apiError: ApiError = new Error(message);\n apiError.status = error.response?.status;\n apiError.code = error.code;\n apiError.details = error.response?.data;\n return apiError;\n }\n\n if (error instanceof Error) {\n const apiError: ApiError = error;\n return apiError;\n }\n\n return new Error('Unknown error occurred');\n }\n\n // Public methods\n async get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.get(url, config);\n return response.data;\n }\n\n async post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.post(url, data, config);\n return response.data;\n }\n\n async put<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.put(url, data, config);\n return response.data;\n }\n\n async delete<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.delete(url, config);\n return response.data;\n }\n\n async request<T = unknown>(config: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.request(config);\n return response.data;\n }\n\n // For streaming requests\n async stream(\n url: string,\n data: unknown,\n onChunk: (chunk: unknown) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n try {\n const token = await this.getToken();\n if (!token) {\n throw new Error('No token available for streaming request');\n }\n\n const response = await fetch(`${this.config.baseURL}${url}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n 'Accept': 'text/plain',\n 'Cache-Control': 'no-cache',\n },\n body: JSON.stringify(data),\n signal: abortSignal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n if (!response.body) {\n throw new Error('Response body is not available for streaming');\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n \n if (done) {\n break;\n }\n\n // Decode the chunk and add to buffer\n buffer += decoder.decode(value, { stream: true });\n \n // Process complete lines from buffer\n const lines = buffer.split('\\n');\n buffer = lines.pop() || ''; // Keep incomplete line in buffer\n \n for (const line of lines) {\n if (line.startsWith('data: ')) {\n try {\n const chunkData = JSON.parse(line.slice(6));\n onChunk(chunkData);\n \n // Stop if we're done\n if (chunkData.done) {\n return;\n }\n } catch (parseError) {\n console.warn('Failed to parse streaming chunk:', parseError);\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n } catch (error) {\n if (onError) {\n onError(error instanceof Error ? error : new Error('Streaming request failed'));\n } else {\n throw error;\n }\n }\n }\n\n // Update token\n updateToken(token: string): void {\n this.config.token = token;\n }\n\n // Update token provider\n updateTokenProvider(provider: () => Promise<string>): void {\n this.config.tokenProvider = provider;\n }\n}\n","import { HttpClient } from './http-client';\nimport {\n DocRouterAccountConfig,\n AccessToken,\n ListOrganizationsResponse,\n Organization,\n CreateOrganizationRequest,\n UpdateOrganizationRequest,\n CreateTokenRequest,\n ListAccessTokensResponse,\n ListLLMModelsParams,\n ListLLMModelsResponse,\n ListLLMProvidersResponse,\n SetLLMProviderConfigRequest,\n ListUsersParams,\n ListUsersResponse,\n UserCreate,\n UserResponse,\n UserUpdate,\n User,\n AWSConfig,\n} from './types';\n\n/**\n * DocRouterAccount - For account-level operations with account tokens\n * Use this for server-to-server integrations that need full account access\n */\nexport class DocRouterAccount {\n private http: HttpClient;\n\n constructor(config: DocRouterAccountConfig) {\n this.http = new HttpClient({\n baseURL: config.baseURL,\n token: config.accountToken,\n timeout: config.timeout,\n retries: config.retries,\n onAuthError: config.onAuthError,\n });\n }\n\n /**\n * Update the account token\n */\n updateToken(token: string): void {\n this.http.updateToken(token);\n }\n\n // --------------- Organizations ---------------\n async listOrganizations(params?: { \n userId?: string;\n organizationId?: string;\n nameSearch?: string;\n memberSearch?: string;\n skip?: number;\n limit?: number;\n }): Promise<ListOrganizationsResponse> {\n const queryParams = new URLSearchParams();\n if (params?.userId) queryParams.append('user_id', params.userId);\n if (params?.organizationId) queryParams.append('organization_id', params.organizationId);\n if (params?.nameSearch) queryParams.append('name_search', params.nameSearch);\n if (params?.memberSearch) queryParams.append('member_search', params.memberSearch);\n if (params?.skip !== undefined) queryParams.append('skip', String(params.skip));\n if (params?.limit !== undefined) queryParams.append('limit', String(params.limit));\n return this.http.get<ListOrganizationsResponse>(`/v0/account/organizations?${queryParams.toString()}`);\n }\n\n async getOrganization(organizationId: string): Promise<Organization> {\n const response = await this.listOrganizations({ organizationId });\n return response.organizations[0];\n }\n\n async createOrganization(organization: CreateOrganizationRequest): Promise<Organization> {\n const response = await this.http.post<{\n _id?: string;\n id: string;\n name: string;\n members: Organization['members'];\n type: Organization['type'];\n created_at: string;\n updated_at: string;\n }>(`/v0/account/organizations`, organization);\n return {\n id: response._id || response.id,\n name: response.name,\n members: response.members,\n type: response.type,\n created_at: response.created_at,\n updated_at: response.updated_at,\n };\n }\n\n async updateOrganization(organizationId: string, update: UpdateOrganizationRequest): Promise<Organization> {\n return this.http.put(`/v0/account/organizations/${organizationId}`, update);\n }\n\n async deleteOrganization(organizationId: string) {\n return this.http.delete(`/v0/account/organizations/${organizationId}`);\n }\n\n // --------------- Tokens ---------------\n async createAccountToken(request: CreateTokenRequest) {\n return this.http.post(`/v0/account/access_tokens`, request);\n }\n\n async getAccountTokens(): Promise<ListAccessTokensResponse | unknown> {\n const resp = await this.http.get<ListAccessTokensResponse | AccessToken[]>(`/v0/account/access_tokens`);\n // Normalize to array for SDK consumers/tests\n return Array.isArray(resp) ? resp : (resp as ListAccessTokensResponse).access_tokens;\n }\n\n async deleteAccountToken(tokenId: string) {\n return this.http.delete(`/v0/account/access_tokens/${tokenId}`);\n }\n\n async createOrganizationToken(request: CreateTokenRequest, organizationId: string) {\n return this.http.post(`/v0/orgs/${organizationId}/access_tokens`, request);\n }\n\n async getOrganizationTokens(organizationId: string) {\n return this.http.get(`/v0/orgs/${organizationId}/access_tokens`);\n }\n\n async deleteOrganizationToken(tokenId: string, organizationId: string) {\n return this.http.delete(`/v0/orgs/${organizationId}/access_tokens/${tokenId}`);\n }\n\n // --------------- LLM (account-level) ---------------\n async listLLMModels(params: ListLLMModelsParams): Promise<ListLLMModelsResponse> {\n return this.http.get<ListLLMModelsResponse>('/v0/account/llm/models', {\n params: {\n provider_name: params.providerName,\n provider_enabled: params.providerEnabled,\n llm_enabled: params.llmEnabled,\n }\n });\n }\n\n async listLLMProviders(): Promise<ListLLMProvidersResponse> {\n return this.http.get<ListLLMProvidersResponse>('/v0/account/llm/providers');\n }\n\n async setLLMProviderConfig(providerName: string, request: SetLLMProviderConfigRequest) {\n return this.http.put<SetLLMProviderConfigRequest>(`/v0/account/llm/provider/${providerName}`, request);\n }\n\n // --------------- Users ---------------\n async listUsers(params?: ListUsersParams): Promise<ListUsersResponse> {\n const queryParams = new URLSearchParams();\n if (params?.skip) queryParams.append('skip', String(params.skip));\n if (params?.limit) queryParams.append('limit', String(params.limit));\n if (params?.organization_id) queryParams.append('organization_id', params.organization_id);\n if (params?.user_id) queryParams.append('user_id', params.user_id);\n if (params?.search_name) queryParams.append('search_name', params.search_name);\n return this.http.get<ListUsersResponse>(`/v0/account/users?${queryParams.toString()}`);\n }\n\n async getUser(userId: string): Promise<UserResponse> {\n const response = await this.listUsers({ user_id: userId });\n const user = response.users[0];\n return { user } as UserResponse;\n }\n\n async createUser(user: UserCreate): Promise<UserResponse> {\n const created = await this.http.post<UserResponse | { user: User }>(\n '/v0/account/users',\n user\n );\n // Normalize to { user }\n return (created as UserResponse).user\n ? (created as UserResponse)\n : ({ user: created as unknown as User }) as UserResponse;\n }\n\n async updateUser(userId: string, update: UserUpdate): Promise<UserResponse> {\n const updated = await this.http.put<UserResponse | { user: User }>(\n `/v0/account/users/${userId}`,\n update\n );\n return (updated as UserResponse).user\n ? (updated as UserResponse)\n : ({ user: updated as unknown as User }) as UserResponse;\n }\n\n async deleteUser(userId: string): Promise<void> {\n await this.http.delete(`/v0/account/users/${userId}`);\n }\n\n // --------------- Email Verification ---------------\n async sendVerificationEmail(userId: string) {\n return this.http.post(`/v0/account/email/verification/send/${userId}`);\n }\n\n async sendRegistrationVerificationEmail(userId: string) {\n return this.http.post(`/v0/account/email/verification/register/${userId}`);\n }\n\n async verifyEmail(token: string) {\n return this.http.post(`/v0/account/email/verification/${token}`);\n }\n\n // --------------- AWS Config ---------------\n async createAWSConfig(config: Omit<AWSConfig, 'created_at'>) {\n return this.http.post('/v0/account/aws_config', config);\n }\n\n async getAWSConfig() {\n return this.http.get('/v0/account/aws_config');\n }\n\n async deleteAWSConfig() {\n return this.http.delete('/v0/account/aws_config');\n }\n\n /**\n * Get the current HTTP client (for advanced usage)\n */\n getHttpClient(): HttpClient {\n return this.http;\n }\n}\n","import { HttpClient } from './http-client';\nimport {\n DocRouterOrgConfig,\n UploadDocumentsResponse,\n ListDocumentsResponse,\n GetDocumentResponse,\n GetOCRMetadataResponse,\n RunLLMResponse,\n GetLLMResultResponse,\n ListTagsResponse,\n Tag,\n // Forms\n CreateFormParams,\n ListFormsParams,\n ListFormsResponse,\n GetFormParams,\n UpdateFormParams,\n DeleteFormParams,\n SubmitFormParams,\n GetFormSubmissionParams,\n DeleteFormSubmissionParams,\n Form,\n FormSubmission,\n // Prompts\n CreatePromptParams,\n ListPromptsParams,\n ListPromptsResponse,\n GetPromptParams,\n UpdatePromptParams,\n DeletePromptParams,\n Prompt,\n // Schemas\n CreateSchemaParams,\n ListSchemasParams,\n ListSchemasResponse,\n GetSchemaParams,\n UpdateSchemaParams,\n DeleteSchemaParams,\n Schema,\n // Flows\n CreateFlowParams,\n ListFlowsParams,\n ListFlowsResponse,\n GetFlowParams,\n UpdateFlowParams,\n DeleteFlowParams,\n Flow,\n // Payments\n PortalSessionResponse,\n SubscriptionResponse,\n UsageResponse,\n CreditConfig,\n CreditUpdateResponse,\n UsageRangeRequest,\n UsageRangeResponse,\n} from './types';\n\n/**\n * DocRouterOrg - For organization-scoped operations with org tokens\n * Use this when you have an organization token and want to work within that org\n */\nexport class DocRouterOrg {\n public readonly organizationId: string;\n private http: HttpClient;\n\n constructor(config: DocRouterOrgConfig) {\n this.organizationId = config.organizationId;\n this.http = new HttpClient({\n baseURL: config.baseURL,\n token: config.orgToken,\n timeout: config.timeout,\n retries: config.retries,\n onAuthError: config.onAuthError,\n });\n }\n\n /**\n * Update the organization token\n */\n updateToken(token: string): void {\n this.http.updateToken(token);\n }\n\n // ---------------- Documents ----------------\n\n async uploadDocuments(params: { documents: Array<{ name: string; content: ArrayBuffer | Buffer | Uint8Array; type: string; metadata?: Record<string, string>; }>; }): Promise<UploadDocumentsResponse> {\n const documentsPayload = params.documents.map(doc => {\n let base64Content: string;\n if (doc.content instanceof ArrayBuffer) {\n const buffer = Buffer.from(doc.content);\n base64Content = buffer.toString('base64');\n } else if (doc.content instanceof Buffer) {\n base64Content = doc.content.toString('base64');\n } else if (doc.content instanceof Uint8Array) {\n const buffer = Buffer.from(doc.content);\n base64Content = buffer.toString('base64');\n } else {\n // Handle remaining types (ArrayBuffer or Uint8Array)\n const uint8Array = new Uint8Array(doc.content);\n const buffer = Buffer.from(uint8Array);\n base64Content = buffer.toString('base64');\n }\n\n const payload: {\n name: string;\n content: string;\n type?: string;\n metadata?: Record<string, string>;\n } = {\n name: doc.name,\n content: base64Content,\n type: doc.type,\n };\n if (doc.metadata) payload.metadata = doc.metadata;\n return payload;\n });\n\n return this.http.post<UploadDocumentsResponse>(\n `/v0/orgs/${this.organizationId}/documents`,\n { documents: documentsPayload }\n );\n }\n\n async listDocuments(params?: { skip?: number; limit?: number; tagIds?: string; nameSearch?: string; metadataSearch?: string; }): Promise<ListDocumentsResponse> {\n const queryParams: Record<string, string | number | undefined> = {\n skip: params?.skip || 0,\n limit: params?.limit || 10,\n };\n if (params?.tagIds) queryParams.tag_ids = params.tagIds;\n if (params?.nameSearch) queryParams.name_search = params.nameSearch;\n if (params?.metadataSearch) queryParams.metadata_search = params.metadataSearch;\n\n return this.http.get<ListDocumentsResponse>(`/v0/orgs/${this.organizationId}/documents`, {\n params: queryParams\n });\n }\n\n async getDocument(params: { documentId: string; fileType: string; }): Promise<GetDocumentResponse> {\n const { documentId, fileType } = params;\n const response = await this.http.get<{\n id: string;\n pdf_id: string;\n document_name: string;\n upload_date: string;\n uploaded_by: string;\n state: string;\n tag_ids: string[];\n type: string;\n metadata: Record<string, string>;\n content: string;\n }>(`/v0/orgs/${this.organizationId}/documents/${documentId}?file_type=${fileType}`);\n\n const binaryContent = atob(response.content);\n const len = binaryContent.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryContent.charCodeAt(i);\n }\n\n return {\n id: response.id,\n pdf_id: response.pdf_id,\n document_name: response.document_name,\n upload_date: response.upload_date,\n uploaded_by: response.uploaded_by,\n state: response.state,\n tag_ids: response.tag_ids,\n type: response.type,\n metadata: response.metadata,\n content: bytes.buffer\n };\n }\n\n async updateDocument(params: { documentId: string; documentName?: string; tagIds?: string[]; metadata?: Record<string, string>; }) {\n const { documentId, documentName, tagIds, metadata } = params;\n const updateData: { tag_ids?: string[]; document_name?: string; metadata?: Record<string, string> } = {};\n if (documentName !== undefined) updateData.document_name = documentName;\n if (tagIds !== undefined) updateData.tag_ids = tagIds;\n if (metadata !== undefined) updateData.metadata = metadata;\n return this.http.put(`/v0/orgs/${this.organizationId}/documents/${documentId}`, updateData);\n }\n\n async deleteDocument(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.delete(`/v0/orgs/${this.organizationId}/documents/${documentId}`);\n }\n\n // ---------------- OCR ----------------\n\n async getOCRBlocks(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.get(`/v0/orgs/${this.organizationId}/ocr/download/blocks/${documentId}`);\n }\n\n async getOCRText(params: { documentId: string; pageNum?: number; }) {\n const { documentId, pageNum } = params;\n const url = `/v0/orgs/${this.organizationId}/ocr/download/text/${documentId}${pageNum ? `?page_num=${pageNum}` : ''}`;\n return this.http.get(url);\n }\n\n async getOCRMetadata(params: { documentId: string; }): Promise<GetOCRMetadataResponse> {\n const { documentId } = params;\n return this.http.get<GetOCRMetadataResponse>(`/v0/orgs/${this.organizationId}/ocr/download/metadata/${documentId}`);\n }\n\n // ---------------- LLM ----------------\n\n async runLLM(params: { documentId: string; promptRevId: string; force?: boolean; }): Promise<RunLLMResponse> {\n const { documentId, promptRevId, force } = params;\n return this.http.post<RunLLMResponse>(\n `/v0/orgs/${this.organizationId}/llm/run/${documentId}`,\n {},\n { params: { prompt_revid: promptRevId, force } }\n );\n }\n\n async getLLMResult(params: { documentId: string; promptRevId: string; fallback?: boolean; }): Promise<GetLLMResultResponse> {\n const { documentId, promptRevId, fallback } = params;\n return this.http.get<GetLLMResultResponse>(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { params: { prompt_revid: promptRevId, fallback } }\n );\n }\n\n async updateLLMResult({\n documentId,\n promptId,\n result,\n isVerified = false\n }: { documentId: string; promptId: string; result: Record<string, unknown>; isVerified?: boolean; }) {\n const response = await this.http.put<{\n status: number;\n data: unknown;\n }>(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { updated_llm_result: result, is_verified: isVerified },\n { params: { prompt_revid: promptId } }\n );\n if (response.status !== 200) {\n throw new Error(`Failed to update LLM result for document ${documentId} and prompt ${promptId}: ${response.data}`);\n }\n return response.data;\n }\n\n async deleteLLMResult(params: { documentId: string; promptId: string; }) {\n const { documentId, promptId } = params;\n return this.http.delete(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { params: { prompt_revid: promptId } }\n );\n }\n\n async downloadAllLLMResults(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.get(\n `/v0/orgs/${this.organizationId}/llm/results/${documentId}/download`,\n { responseType: 'blob' as const }\n );\n }\n\n // ---------------- Tags ----------------\n\n async createTag(params: { tag: Omit<Tag, 'id' | 'created_at' | 'updated_at'>; }): Promise<Tag> {\n const { tag } = params;\n return this.http.post<Tag>(`/v0/orgs/${this.organizationId}/tags`, tag);\n }\n\n async getTag({ tagId }: { tagId: string; }): Promise<Tag> {\n return this.http.get<Tag>(`/v0/orgs/${this.organizationId}/tags/${tagId}`);\n }\n\n async listTags(params?: { skip?: number; limit?: number; nameSearch?: string; }): Promise<ListTagsResponse> {\n const { skip, limit, nameSearch } = params || {};\n return this.http.get<ListTagsResponse>(`/v0/orgs/${this.organizationId}/tags`, {\n params: { skip: skip || 0, limit: limit || 10, name_search: nameSearch }\n });\n }\n\n async updateTag(params: { tagId: string; tag: Partial<Omit<Tag, 'id' | 'created_at' | 'updated_at'>>; }): Promise<Tag> {\n const { tagId, tag } = params;\n return this.http.put<Tag>(`/v0/orgs/${this.organizationId}/tags/${tagId}`, tag);\n }\n\n async deleteTag(params: { tagId: string; }): Promise<{ message: string }> {\n const { tagId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/tags/${tagId}`);\n }\n\n // ---------------- Forms ----------------\n\n async createForm(form: Omit<CreateFormParams, 'organizationId'>): Promise<Form> {\n const { name, response_format } = form;\n return this.http.post<Form>(`/v0/orgs/${this.organizationId}/forms`, { name, response_format });\n }\n\n async listForms(params?: Omit<ListFormsParams, 'organizationId'>): Promise<ListFormsResponse> {\n const { skip, limit, tag_ids } = params || {};\n return this.http.get<ListFormsResponse>(`/v0/orgs/${this.organizationId}/forms`, {\n params: { skip: skip || 0, limit: limit || 10, tag_ids }\n });\n }\n\n async getForm(params: Omit<GetFormParams, 'organizationId'>): Promise<Form> {\n const { formRevId } = params;\n return this.http.get<Form>(`/v0/orgs/${this.organizationId}/forms/${formRevId}`);\n }\n\n async updateForm(params: Omit<UpdateFormParams, 'organizationId'>): Promise<Form> {\n const { formId, form } = params;\n return this.http.put<Form>(`/v0/orgs/${this.organizationId}/forms/${formId}`, form);\n }\n\n async deleteForm(params: Omit<DeleteFormParams, 'organizationId'>): Promise<{ message: string }> {\n const { formId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/forms/${formId}`);\n }\n\n async submitForm(params: Omit<SubmitFormParams, 'organizationId'>): Promise<FormSubmission> {\n const { documentId, formRevId, submission_data, submitted_by } = params;\n return this.http.post<FormSubmission>(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, {\n form_revid: formRevId,\n submission_data: submission_data,\n submitted_by: submitted_by\n });\n }\n\n async getFormSubmission(params: Omit<GetFormSubmissionParams, 'organizationId'>): Promise<FormSubmission | null> {\n const { documentId, formRevId } = params;\n return this.http.get<FormSubmission | null>(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}?form_revid=${formRevId}`);\n }\n\n async deleteFormSubmission(params: Omit<DeleteFormSubmissionParams, 'organizationId'>): Promise<void> {\n const { documentId, formRevId } = params;\n await this.http.delete(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, { params: { form_revid: formRevId } });\n }\n\n // ---------------- Prompts ----------------\n\n async createPrompt(params: Omit<CreatePromptParams, 'organizationId'>): Promise<Prompt> {\n const { prompt } = params;\n return this.http.post<Prompt>(`/v0/orgs/${this.organizationId}/prompts`, prompt);\n }\n\n async listPrompts(params: Omit<ListPromptsParams, 'organizationId'>): Promise<ListPromptsResponse> {\n const { skip, limit, document_id, tag_ids, nameSearch } = params || {};\n return this.http.get<ListPromptsResponse>(`/v0/orgs/${this.organizationId}/prompts`, {\n params: {\n skip: skip || 0,\n limit: limit || 10,\n document_id,\n tag_ids,\n name_search: nameSearch\n }\n });\n }\n\n async getPrompt(params: Omit<GetPromptParams, 'organizationId'>): Promise<Prompt> {\n const { promptRevId } = params;\n return this.http.get<Prompt>(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);\n }\n\n async updatePrompt(params: Omit<UpdatePromptParams, 'organizationId'>): Promise<Prompt> {\n const { promptId, prompt } = params;\n return this.http.put<Prompt>(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);\n }\n\n async deletePrompt(params: Omit<DeletePromptParams, 'organizationId'>): Promise<{ message: string }> {\n const { promptId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);\n }\n\n // ---------------- Schemas ----------------\n\n async createSchema(schema: Omit<CreateSchemaParams, 'organizationId'>): Promise<Schema> {\n return this.http.post<Schema>(`/v0/orgs/${this.organizationId}/schemas`, schema);\n }\n\n async listSchemas(params: Omit<ListSchemasParams, 'organizationId'>): Promise<ListSchemasResponse> {\n const { skip, limit, nameSearch } = params || {};\n return this.http.get<ListSchemasResponse>(`/v0/orgs/${this.organizationId}/schemas`, {\n params: { skip: skip || 0, limit: limit || 10, name_search: nameSearch }\n });\n }\n\n async getSchema(params: Omit<GetSchemaParams, 'organizationId'>): Promise<Schema> {\n const { schemaRevId } = params;\n return this.http.get<Schema>(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}`);\n }\n\n async updateSchema(params: Omit<UpdateSchemaParams, 'organizationId'>): Promise<Schema> {\n const { schemaId, schema } = params;\n return this.http.put<Schema>(`/v0/orgs/${this.organizationId}/schemas/${schemaId}`, schema);\n }\n\n async deleteSchema(params: Omit<DeleteSchemaParams, 'organizationId'>): Promise<{ message: string }> {\n const { schemaId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/schemas/${schemaId}`);\n }\n\n async validateAgainstSchema(params: { schemaRevId: string; data: Record<string, unknown> }): Promise<{ valid: boolean; errors?: string[] }> {\n const { schemaRevId, data } = params;\n return this.http.post<{ valid: boolean; errors?: string[] }>(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}/validate`, { data });\n }\n\n // ---------------- Flows ----------------\n\n async createFlow(params: Omit<CreateFlowParams, 'organizationId'>): Promise<Flow> {\n const { flow } = params;\n return this.http.post<Flow>(`/v0/orgs/${this.organizationId}/flows`, flow);\n }\n\n async updateFlow(params: Omit<UpdateFlowParams, 'organizationId'>): Promise<Flow> {\n const { flowId, flow } = params;\n return this.http.put<Flow>(`/v0/orgs/${this.organizationId}/flows/${flowId}`, flow);\n }\n\n async listFlows(params?: Omit<ListFlowsParams, 'organizationId'>): Promise<ListFlowsResponse> {\n const { skip, limit } = params || {};\n return this.http.get<ListFlowsResponse>(`/v0/orgs/${this.organizationId}/flows`, {\n params: { skip: skip || 0, limit: limit || 10 }\n });\n }\n\n async getFlow(params: Omit<GetFlowParams, 'organizationId'>): Promise<Flow> {\n const { flowId } = params;\n return this.http.get<Flow>(`/v0/orgs/${this.organizationId}/flows/${flowId}`);\n }\n\n async deleteFlow(params: Omit<DeleteFlowParams, 'organizationId'>): Promise<void> {\n const { flowId } = params;\n await this.http.delete(`/v0/orgs/${this.organizationId}/flows/${flowId}`);\n }\n\n // ---------------- Payments ----------------\n\n async getCustomerPortal(): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${this.organizationId}/payments/customer-portal`, {});\n }\n\n async getSubscription(): Promise<SubscriptionResponse> {\n return this.http.get<SubscriptionResponse>(`/v0/orgs/${this.organizationId}/payments/subscription`);\n }\n\n async activateSubscription(): Promise<{ status: string; message: string }> {\n return this.http.put<{ status: string; message: string }>(`/v0/orgs/${this.organizationId}/payments/subscription`, {});\n }\n\n async cancelSubscription(): Promise<{ status: string; message: string }> {\n return this.http.delete<{ status: string; message: string }>(`/v0/orgs/${this.organizationId}/payments/subscription`);\n }\n\n\n async getCurrentUsage(): Promise<UsageResponse> {\n return this.http.get<UsageResponse>(`/v0/orgs/${this.organizationId}/payments/usage`);\n }\n\n async addCredits(amount: number): Promise<CreditUpdateResponse> {\n return this.http.post<CreditUpdateResponse>(`/v0/orgs/${this.organizationId}/payments/credits/add`, { amount });\n }\n\n async getCreditConfig(): Promise<CreditConfig> {\n return this.http.get<CreditConfig>(`/v0/orgs/${this.organizationId}/payments/credits/config`);\n }\n\n async purchaseCredits(request: { credits: number; success_url: string; cancel_url: string; }) {\n return this.http.post(`/v0/orgs/${this.organizationId}/payments/credits/purchase`, request);\n }\n\n async getUsageRange(request: UsageRangeRequest): Promise<UsageRangeResponse> {\n return this.http.get<UsageRangeResponse>(`/v0/orgs/${this.organizationId}/payments/usage/range`, { params: request });\n }\n\n async createCheckoutSession(planId: string): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${this.organizationId}/payments/checkout-session`, { plan_id: planId });\n }\n\n // ---------------- LLM Chat (Org) ----------------\n\n async runLLMChat(request: { messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }>; model?: string; temperature?: number; max_tokens?: number; stream?: boolean; }) {\n return this.http.post(`/v0/orgs/${this.organizationId}/llm/run`, request);\n }\n\n async runLLMChatStream(\n request: { messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }>; model?: string; temperature?: number; max_tokens?: number; stream?: boolean; },\n onChunk: (chunk: unknown) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n const streamingRequest = { ...request, stream: true };\n return this.http.stream(`/v0/orgs/${this.organizationId}/llm/run`, streamingRequest, onChunk, onError, abortSignal);\n }\n\n /**\n * Get the current HTTP client (for advanced usage)\n */\n getHttpClient(): HttpClient {\n return this.http;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/http-client.ts","../src/docrouter-account.ts","../src/docrouter-org.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, isAxiosError } from 'axios';\nimport { DocRouterConfig, ApiError, LLMChatStreamChunk, LLMChatStreamError } from './types';\n\nexport class HttpClient {\n private axios: AxiosInstance;\n private config: DocRouterConfig;\n private isRefreshing = false;\n private failedQueue: Array<{\n resolve: (value?: unknown) => void;\n reject: (error: Error) => void;\n }> = [];\n\n constructor(config: DocRouterConfig) {\n this.config = config;\n this.axios = axios.create({\n baseURL: config.baseURL,\n timeout: config.timeout || 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n this.setupInterceptors();\n }\n\n private setupInterceptors(): void {\n // Request interceptor for auth\n this.axios.interceptors.request.use(\n async (config) => {\n const token = await this.getToken();\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n // Response interceptor for error handling\n this.axios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n\n // Handle 401 errors (unauthorized)\n if (error.response?.status === 401 && !originalRequest._retry) {\n if (this.isRefreshing) {\n return new Promise((resolve, reject) => {\n this.failedQueue.push({ resolve, reject });\n })\n .then(() => this.axios(originalRequest))\n .catch((err) => {\n this.handleAuthError(err);\n return Promise.reject(err);\n });\n }\n\n originalRequest._retry = true;\n this.isRefreshing = true;\n\n try {\n // Try to get a new token\n const newToken = await this.getToken();\n if (newToken) {\n originalRequest.headers.Authorization = `Bearer ${newToken}`;\n this.processQueue();\n return this.axios(originalRequest);\n } else {\n this.handleAuthError(error);\n return Promise.reject(this.createApiError(error));\n }\n } catch (refreshError) {\n this.processQueue(refreshError instanceof Error ? refreshError : new Error('Token refresh failed'));\n this.handleAuthError(error);\n return Promise.reject(this.createApiError(error));\n } finally {\n this.isRefreshing = false;\n }\n }\n\n return Promise.reject(this.createApiError(error));\n }\n );\n }\n\n private async getToken(): Promise<string | null> {\n if (this.config.token) {\n return this.config.token;\n }\n \n if (this.config.tokenProvider) {\n try {\n return await this.config.tokenProvider();\n } catch (error) {\n console.warn('Token provider failed:', error);\n return null;\n }\n }\n\n return null;\n }\n\n private processQueue(error: Error | null = null): void {\n this.failedQueue.forEach(prom => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve();\n }\n });\n this.failedQueue = [];\n }\n\n private handleAuthError(error: unknown): void {\n if (this.config.onAuthError) {\n this.config.onAuthError(error instanceof Error ? error : new Error('Authentication failed'));\n }\n }\n\n private createApiError(error: unknown): ApiError {\n if (isAxiosError(error)) {\n const message = error.response?.data?.detail || error.message || 'Request failed';\n const apiError: ApiError = new Error(message);\n apiError.status = error.response?.status;\n apiError.code = error.code;\n apiError.details = error.response?.data;\n return apiError;\n }\n\n if (error instanceof Error) {\n const apiError: ApiError = error;\n return apiError;\n }\n\n return new Error('Unknown error occurred');\n }\n\n // Public methods\n async get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.get(url, config);\n return response.data;\n }\n\n async post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.post(url, data, config);\n return response.data;\n }\n\n async put<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.put(url, data, config);\n return response.data;\n }\n\n async delete<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.delete(url, config);\n return response.data;\n }\n\n async request<T = unknown>(config: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.request(config);\n return response.data;\n }\n\n // For streaming requests\n async stream(\n url: string,\n data: unknown,\n onChunk: (chunk: LLMChatStreamChunk | LLMChatStreamError) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n try {\n const token = await this.getToken();\n if (!token) {\n throw new Error('No token available for streaming request');\n }\n\n const response = await fetch(`${this.config.baseURL}${url}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n 'Accept': 'text/plain',\n 'Cache-Control': 'no-cache',\n },\n body: JSON.stringify(data),\n signal: abortSignal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n if (!response.body) {\n throw new Error('Response body is not available for streaming');\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n \n if (done) {\n break;\n }\n\n // Decode the chunk and add to buffer\n buffer += decoder.decode(value, { stream: true });\n \n // Process complete lines from buffer\n const lines = buffer.split('\\n');\n buffer = lines.pop() || ''; // Keep incomplete line in buffer\n \n for (const line of lines) {\n if (line.startsWith('data: ')) {\n try {\n const chunkData = JSON.parse(line.slice(6));\n onChunk(chunkData);\n \n // Stop if we're done\n if (chunkData.done) {\n return;\n }\n } catch (parseError) {\n console.warn('Failed to parse streaming chunk:', parseError);\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n } catch (error) {\n if (onError) {\n onError(error instanceof Error ? error : new Error('Streaming request failed'));\n } else {\n throw error;\n }\n }\n }\n\n // Update token\n updateToken(token: string): void {\n this.config.token = token;\n }\n\n // Update token provider\n updateTokenProvider(provider: () => Promise<string>): void {\n this.config.tokenProvider = provider;\n }\n}\n","import { HttpClient } from './http-client';\nimport {\n DocRouterAccountConfig,\n AccessToken,\n ListOrganizationsResponse,\n Organization,\n CreateOrganizationRequest,\n UpdateOrganizationRequest,\n CreateTokenRequest,\n ListAccessTokensResponse,\n TokenOrganizationResponse,\n ListLLMModelsParams,\n ListLLMModelsResponse,\n ListLLMProvidersResponse,\n SetLLMProviderConfigRequest,\n LLMChatRequest,\n LLMChatResponse,\n LLMChatStreamChunk,\n LLMChatStreamError,\n ListUsersParams,\n ListUsersResponse,\n UserCreate,\n UserUpdate,\n User,\n AWSConfig,\n // Invitation types\n InvitationResponse,\n CreateInvitationRequest,\n ListInvitationsParams,\n ListInvitationsResponse,\n AcceptInvitationRequest,\n // Payment types\n PortalSessionResponse,\n SubscriptionResponse,\n UsageResponse,\n CreditConfig,\n CreditUpdateResponse,\n UsageRangeRequest,\n UsageRangeResponse,\n} from './types';\n\n/**\n * DocRouterAccount - For account-level operations with account tokens\n * Use this for server-to-server integrations that need full account access\n */\nexport class DocRouterAccount {\n private http: HttpClient;\n\n constructor(config: DocRouterAccountConfig) {\n this.http = new HttpClient({\n baseURL: config.baseURL,\n token: config.accountToken,\n timeout: config.timeout,\n retries: config.retries,\n onAuthError: config.onAuthError,\n });\n }\n\n /**\n * Update the account token\n */\n updateToken(token: string): void {\n this.http.updateToken(token);\n }\n\n // --------------- Organizations ---------------\n async listOrganizations(params?: { \n userId?: string;\n organizationId?: string;\n nameSearch?: string;\n memberSearch?: string;\n skip?: number;\n limit?: number;\n }): Promise<ListOrganizationsResponse> {\n const queryParams = new URLSearchParams();\n if (params?.userId) queryParams.append('user_id', params.userId);\n if (params?.organizationId) queryParams.append('organization_id', params.organizationId);\n if (params?.nameSearch) queryParams.append('name_search', params.nameSearch);\n if (params?.memberSearch) queryParams.append('member_search', params.memberSearch);\n if (params?.skip !== undefined) queryParams.append('skip', String(params.skip));\n if (params?.limit !== undefined) queryParams.append('limit', String(params.limit));\n return this.http.get<ListOrganizationsResponse>(`/v0/account/organizations?${queryParams.toString()}`);\n }\n\n async getOrganization(organizationId: string): Promise<Organization> {\n const response = await this.listOrganizations({ organizationId });\n return response.organizations[0];\n }\n\n async createOrganization(organization: CreateOrganizationRequest): Promise<Organization> {\n const response = await this.http.post<{\n _id?: string;\n id: string;\n name: string;\n members: Organization['members'];\n type: Organization['type'];\n created_at: string;\n updated_at: string;\n }>(`/v0/account/organizations`, organization);\n return {\n id: response._id || response.id,\n name: response.name,\n members: response.members,\n type: response.type,\n created_at: response.created_at,\n updated_at: response.updated_at,\n };\n }\n\n async updateOrganization(organizationId: string, update: UpdateOrganizationRequest): Promise<Organization> {\n return this.http.put(`/v0/account/organizations/${organizationId}`, update);\n }\n\n async deleteOrganization(organizationId: string) {\n return this.http.delete(`/v0/account/organizations/${organizationId}`);\n }\n\n // --------------- Tokens ---------------\n async createAccountToken(request: CreateTokenRequest): Promise<AccessToken> {\n return this.http.post(`/v0/account/access_tokens`, request);\n }\n\n async getAccountTokens(): Promise<AccessToken[]> {\n const resp = await this.http.get<ListAccessTokensResponse | AccessToken[]>(`/v0/account/access_tokens`);\n // Normalize to array for SDK consumers/tests\n return Array.isArray(resp) ? resp : (resp as ListAccessTokensResponse).access_tokens;\n }\n\n async deleteAccountToken(tokenId: string): Promise<void> {\n return this.http.delete(`/v0/account/access_tokens/${tokenId}`);\n }\n\n async createOrganizationToken(request: CreateTokenRequest, organizationId: string): Promise<AccessToken> {\n return this.http.post(`/v0/orgs/${organizationId}/access_tokens`, request);\n }\n\n async getOrganizationTokens(organizationId: string): Promise<AccessToken[]> {\n const resp = await this.http.get<ListAccessTokensResponse | AccessToken[]>(`/v0/orgs/${organizationId}/access_tokens`);\n // Normalize to array for SDK consumers/tests\n return Array.isArray(resp) ? resp : (resp as ListAccessTokensResponse).access_tokens;\n }\n\n async deleteOrganizationToken(tokenId: string, organizationId: string): Promise<void> {\n return this.http.delete(`/v0/orgs/${organizationId}/access_tokens/${tokenId}`);\n }\n\n /**\n * Get the organization ID associated with an API token\n * @param token The API token to resolve\n * @returns The organization ID for org-specific tokens, or null for account-level tokens\n */\n async getOrganizationFromToken(token: string): Promise<TokenOrganizationResponse> {\n return this.http.get<TokenOrganizationResponse>(`/v0/account/token/organization?token=${encodeURIComponent(token)}`);\n }\n\n // --------------- LLM (account-level) ---------------\n async listLLMModels(params: ListLLMModelsParams): Promise<ListLLMModelsResponse> {\n return this.http.get<ListLLMModelsResponse>('/v0/account/llm/models', {\n params: {\n provider_name: params.providerName,\n provider_enabled: params.providerEnabled,\n llm_enabled: params.llmEnabled,\n }\n });\n }\n\n async listLLMProviders(): Promise<ListLLMProvidersResponse> {\n return this.http.get<ListLLMProvidersResponse>('/v0/account/llm/providers');\n }\n\n async setLLMProviderConfig(providerName: string, request: SetLLMProviderConfigRequest) {\n return this.http.put<SetLLMProviderConfigRequest>(`/v0/account/llm/provider/${providerName}`, request);\n }\n\n // --------------- Users ---------------\n async listUsers(params?: ListUsersParams): Promise<ListUsersResponse> {\n const queryParams = new URLSearchParams();\n if (params?.skip) queryParams.append('skip', String(params.skip));\n if (params?.limit) queryParams.append('limit', String(params.limit));\n if (params?.organization_id) queryParams.append('organization_id', params.organization_id);\n if (params?.user_id) queryParams.append('user_id', params.user_id);\n if (params?.search_name) queryParams.append('search_name', params.search_name);\n return this.http.get<ListUsersResponse>(`/v0/account/users?${queryParams.toString()}`);\n }\n\n async getUser(userId: string): Promise<User> {\n const response = await this.listUsers({ user_id: userId });\n return response.users[0];\n }\n\n async createUser(user: UserCreate): Promise<User> {\n return this.http.post<User>('/v0/account/users', user);\n }\n\n async updateUser(userId: string, update: UserUpdate): Promise<User> {\n return this.http.put<User>(`/v0/account/users/${userId}`, update);\n }\n\n async deleteUser(userId: string): Promise<void> {\n await this.http.delete(`/v0/account/users/${userId}`);\n }\n\n // --------------- Email Verification ---------------\n async sendVerificationEmail(userId: string) {\n return this.http.post(`/v0/account/email/verification/send/${userId}`);\n }\n\n async sendRegistrationVerificationEmail(userId: string) {\n return this.http.post(`/v0/account/email/verification/register/${userId}`);\n }\n\n async verifyEmail(token: string) {\n return this.http.post(`/v0/account/email/verification/${token}`);\n }\n\n // --------------- AWS Config ---------------\n async createAWSConfig(config: Omit<AWSConfig, 'created_at'>): Promise<AWSConfig> {\n return this.http.post('/v0/account/aws_config', config);\n }\n\n async getAWSConfig(): Promise<AWSConfig> {\n return this.http.get('/v0/account/aws_config');\n }\n\n async deleteAWSConfig(): Promise<void> {\n return this.http.delete('/v0/account/aws_config');\n }\n\n // --------------- Invitations ---------------\n async createInvitation(invitation: CreateInvitationRequest): Promise<InvitationResponse> {\n return this.http.post<InvitationResponse>('/v0/account/email/invitations', invitation);\n }\n\n async getInvitations(params?: ListInvitationsParams): Promise<ListInvitationsResponse> {\n const queryParams = new URLSearchParams();\n if (params?.skip !== undefined) queryParams.append('skip', String(params.skip));\n if (params?.limit !== undefined) queryParams.append('limit', String(params.limit));\n return this.http.get<ListInvitationsResponse>(`/v0/account/email/invitations?${queryParams.toString()}`);\n }\n\n async getInvitation(token: string): Promise<InvitationResponse> {\n return this.http.get<InvitationResponse>(`/v0/account/email/invitations/${token}`);\n }\n\n async acceptInvitation(token: string, data: AcceptInvitationRequest): Promise<{ message: string }> {\n return this.http.post<{ message: string }>(`/v0/account/email/invitations/${token}/accept`, data);\n }\n\n // --------------- Payments & Subscriptions ---------------\n async getCustomerPortal(orgId: string): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${orgId}/payments/customer-portal`);\n }\n\n async getSubscription(orgId: string): Promise<SubscriptionResponse> {\n return this.http.get<SubscriptionResponse>(`/v0/orgs/${orgId}/payments/subscription`);\n }\n\n async activateSubscription(orgId: string): Promise<{ status: string; message: string }> {\n return this.http.put<{ status: string; message: string }>(`/v0/orgs/${orgId}/payments/subscription`);\n }\n\n async cancelSubscription(orgId: string): Promise<{ status: string; message: string }> {\n return this.http.delete<{ status: string; message: string }>(`/v0/orgs/${orgId}/payments/subscription`);\n }\n\n async getCurrentUsage(orgId: string): Promise<UsageResponse> {\n return this.http.get<UsageResponse>(`/v0/orgs/${orgId}/payments/usage`);\n }\n\n async addCredits(orgId: string, amount: number): Promise<CreditUpdateResponse> {\n return this.http.post<CreditUpdateResponse>(`/v0/orgs/${orgId}/payments/credits/add`, { amount });\n }\n\n async getCreditConfig(orgId: string): Promise<CreditConfig> {\n return this.http.get<CreditConfig>(`/v0/orgs/${orgId}/payments/credits/config`);\n }\n\n async purchaseCredits(orgId: string, request: { credits: number; success_url: string; cancel_url: string }): Promise<{ checkout_url: string; session_id: string }> {\n return this.http.post<{ checkout_url: string; session_id: string }>(`/v0/orgs/${orgId}/payments/credits/purchase`, request);\n }\n\n async getUsageRange(orgId: string, request: UsageRangeRequest): Promise<UsageRangeResponse> {\n const queryParams = new URLSearchParams();\n if (request.start_date) queryParams.append('start_date', request.start_date);\n if (request.end_date) queryParams.append('end_date', request.end_date);\n return this.http.get<UsageRangeResponse>(`/v0/orgs/${orgId}/payments/usage/range?${queryParams.toString()}`);\n }\n\n async createCheckoutSession(orgId: string, planId: string): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${orgId}/payments/checkout-session`, { plan_id: planId });\n }\n\n /**\n * Run LLM chat (account level)\n */\n async runLLMChat(request: LLMChatRequest): Promise<LLMChatResponse> {\n return this.http.post('/v0/account/llm/run', request);\n }\n\n /**\n * Run LLM chat with streaming (account level)\n */\n async runLLMChatStream(\n request: LLMChatRequest,\n onChunk: (chunk: LLMChatStreamChunk | LLMChatStreamError) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n const streamingRequest = { ...request, stream: true };\n return this.http.stream('/v0/account/llm/run', streamingRequest, onChunk, onError, abortSignal);\n }\n\n /**\n * Get the current HTTP client (for advanced usage)\n */\n getHttpClient(): HttpClient {\n return this.http;\n }\n}\n","import { HttpClient } from './http-client';\nimport {\n DocRouterOrgConfig,\n UploadDocumentsResponse,\n ListDocumentsResponse,\n GetDocumentResponse,\n GetOCRMetadataResponse,\n RunLLMResponse,\n GetLLMResultResponse,\n ListTagsResponse,\n JsonValue,\n Tag,\n OCRBlock,\n // Forms\n CreateFormParams,\n ListFormsParams,\n ListFormsResponse,\n GetFormParams,\n UpdateFormParams,\n DeleteFormParams,\n SubmitFormParams,\n GetFormSubmissionParams,\n DeleteFormSubmissionParams,\n Form,\n FormSubmission,\n // Prompts\n CreatePromptParams,\n ListPromptsParams,\n ListPromptsResponse,\n GetPromptParams,\n UpdatePromptParams,\n DeletePromptParams,\n Prompt,\n // Schemas\n CreateSchemaParams,\n ListSchemasParams,\n ListSchemasResponse,\n GetSchemaParams,\n UpdateSchemaParams,\n DeleteSchemaParams,\n Schema,\n // Payments\n PortalSessionResponse,\n SubscriptionResponse,\n UsageResponse,\n CreditConfig,\n CreditUpdateResponse,\n UsageRangeRequest,\n UsageRangeResponse,\n // LLM Chat\n LLMChatRequest,\n LLMChatResponse,\n LLMChatStreamChunk,\n LLMChatStreamError,\n} from './types';\n\n/**\n * DocRouterOrg - For organization-scoped operations with org tokens\n * Use this when you have an organization token and want to work within that org\n */\nexport class DocRouterOrg {\n public readonly organizationId: string;\n private http: HttpClient;\n\n constructor(config: DocRouterOrgConfig) {\n this.organizationId = config.organizationId;\n this.http = new HttpClient({\n baseURL: config.baseURL,\n token: config.orgToken,\n timeout: config.timeout,\n retries: config.retries,\n onAuthError: config.onAuthError,\n });\n }\n\n /**\n * Update the organization token\n */\n updateToken(token: string): void {\n this.http.updateToken(token);\n }\n\n // ---------------- Documents ----------------\n\n async uploadDocuments(params: { documents: Array<{ name: string; content: string; tag_ids?: string[]; metadata?: Record<string, string>; }>; }): Promise<UploadDocumentsResponse> {\n const documentsPayload = params.documents.map(doc => {\n // Handle both plain base64 and data URLs\n let base64Content: string;\n if (doc.content.startsWith('data:')) {\n // Extract base64 from data URL (e.g., \"data:application/pdf;base64,JVBERi0xLjQK...\")\n base64Content = doc.content.split(',')[1];\n } else {\n // Plain base64 string\n base64Content = doc.content;\n }\n\n const payload: {\n name: string;\n content: string;\n tag_ids?: string[];\n metadata?: Record<string, string>;\n } = {\n name: doc.name,\n content: base64Content,\n };\n if (doc.tag_ids && doc.tag_ids.length > 0) payload.tag_ids = doc.tag_ids;\n if (doc.metadata) payload.metadata = doc.metadata;\n return payload;\n });\n\n return this.http.post<UploadDocumentsResponse>(\n `/v0/orgs/${this.organizationId}/documents`,\n { documents: documentsPayload }\n );\n }\n\n async listDocuments(params?: { skip?: number; limit?: number; tagIds?: string; nameSearch?: string; metadataSearch?: string; }): Promise<ListDocumentsResponse> {\n const queryParams: Record<string, string | number | undefined> = {\n skip: params?.skip || 0,\n limit: params?.limit || 10,\n };\n if (params?.tagIds) queryParams.tag_ids = params.tagIds;\n if (params?.nameSearch) queryParams.name_search = params.nameSearch;\n if (params?.metadataSearch) queryParams.metadata_search = params.metadataSearch;\n\n return this.http.get<ListDocumentsResponse>(`/v0/orgs/${this.organizationId}/documents`, {\n params: queryParams\n });\n }\n\n async getDocument(params: { documentId: string; fileType: string; }): Promise<GetDocumentResponse> {\n const { documentId, fileType } = params;\n const response = await this.http.get<{\n id: string;\n pdf_id: string;\n document_name: string;\n upload_date: string;\n uploaded_by: string;\n state: string;\n tag_ids: string[];\n type: string;\n metadata: Record<string, string>;\n content: string;\n }>(`/v0/orgs/${this.organizationId}/documents/${documentId}?file_type=${fileType}`);\n\n const binaryContent = atob(response.content);\n const len = binaryContent.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryContent.charCodeAt(i);\n }\n\n return {\n id: response.id,\n pdf_id: response.pdf_id,\n document_name: response.document_name,\n upload_date: response.upload_date,\n uploaded_by: response.uploaded_by,\n state: response.state,\n tag_ids: response.tag_ids,\n type: response.type,\n metadata: response.metadata,\n content: bytes.buffer\n };\n }\n\n async updateDocument(params: { documentId: string; documentName?: string; tagIds?: string[]; metadata?: Record<string, string>; }) {\n const { documentId, documentName, tagIds, metadata } = params;\n const updateData: { tag_ids?: string[]; document_name?: string; metadata?: Record<string, string> } = {};\n if (documentName !== undefined) updateData.document_name = documentName;\n if (tagIds !== undefined) updateData.tag_ids = tagIds;\n if (metadata !== undefined) updateData.metadata = metadata;\n return this.http.put(`/v0/orgs/${this.organizationId}/documents/${documentId}`, updateData);\n }\n\n async deleteDocument(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.delete(`/v0/orgs/${this.organizationId}/documents/${documentId}`);\n }\n\n // ---------------- OCR ----------------\n\n async getOCRBlocks(params: { documentId: string; }): Promise<OCRBlock[]> {\n const { documentId } = params;\n return this.http.get<OCRBlock[]>(`/v0/orgs/${this.organizationId}/ocr/download/blocks/${documentId}`);\n }\n\n async getOCRText(params: { documentId: string; pageNum?: number; }): Promise<string> {\n const { documentId, pageNum } = params;\n const url = `/v0/orgs/${this.organizationId}/ocr/download/text/${documentId}${pageNum ? `?page_num=${pageNum}` : ''}`;\n return this.http.get<string>(url);\n }\n\n async getOCRMetadata(params: { documentId: string; }): Promise<GetOCRMetadataResponse> {\n const { documentId } = params;\n return this.http.get<GetOCRMetadataResponse>(`/v0/orgs/${this.organizationId}/ocr/download/metadata/${documentId}`);\n }\n\n // ---------------- LLM ----------------\n\n async runLLM(params: { documentId: string; promptRevId: string; force?: boolean; }): Promise<RunLLMResponse> {\n const { documentId, promptRevId, force } = params;\n return this.http.post<RunLLMResponse>(\n `/v0/orgs/${this.organizationId}/llm/run/${documentId}`,\n {},\n { params: { prompt_revid: promptRevId, force } }\n );\n }\n\n async getLLMResult(params: { documentId: string; promptRevId: string; fallback?: boolean; }): Promise<GetLLMResultResponse> {\n const { documentId, promptRevId, fallback } = params;\n return this.http.get<GetLLMResultResponse>(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { params: { prompt_revid: promptRevId, fallback } }\n );\n }\n\n async updateLLMResult({\n documentId,\n promptId,\n result,\n isVerified = false\n }: { documentId: string; promptId: string; result: Record<string, JsonValue>; isVerified?: boolean; }): Promise<GetLLMResultResponse> {\n const response = await this.http.put<GetLLMResultResponse>(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { updated_llm_result: result, is_verified: isVerified },\n { params: { prompt_revid: promptId } }\n );\n return response;\n }\n\n async deleteLLMResult(params: { documentId: string; promptId: string; }) {\n const { documentId, promptId } = params;\n return this.http.delete(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { params: { prompt_revid: promptId } }\n );\n }\n\n async downloadAllLLMResults(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.get(\n `/v0/orgs/${this.organizationId}/llm/results/${documentId}/download`,\n { responseType: 'blob' as const }\n );\n }\n\n // ---------------- Prompts ----------------\n\n async createPrompt(params: Omit<CreatePromptParams, 'organizationId'>): Promise<Prompt> {\n const { prompt } = params;\n return this.http.post<Prompt>(`/v0/orgs/${this.organizationId}/prompts`, prompt);\n }\n\n async listPrompts(params?: Omit<ListPromptsParams, 'organizationId'>): Promise<ListPromptsResponse> {\n const { skip, limit, document_id, tag_ids, nameSearch } = params || {};\n return this.http.get<ListPromptsResponse>(`/v0/orgs/${this.organizationId}/prompts`, {\n params: {\n skip: skip || 0,\n limit: limit || 10,\n document_id,\n tag_ids,\n name_search: nameSearch\n }\n });\n }\n\n async getPrompt(params: Omit<GetPromptParams, 'organizationId'>): Promise<Prompt> {\n const { promptRevId } = params;\n return this.http.get<Prompt>(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);\n }\n\n async updatePrompt(params: Omit<UpdatePromptParams, 'organizationId'>): Promise<Prompt> {\n const { promptId, prompt } = params;\n return this.http.put<Prompt>(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);\n }\n\n async deletePrompt(params: Omit<DeletePromptParams, 'organizationId'>): Promise<{ message: string }> {\n const { promptId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);\n }\n\n // ---------------- Tags ----------------\n\n async createTag(params: { tag: Omit<Tag, 'id' | 'created_at' | 'updated_at'>; }): Promise<Tag> {\n const { tag } = params;\n return this.http.post<Tag>(`/v0/orgs/${this.organizationId}/tags`, tag);\n }\n\n async getTag({ tagId }: { tagId: string; }): Promise<Tag> {\n return this.http.get<Tag>(`/v0/orgs/${this.organizationId}/tags/${tagId}`);\n }\n\n async listTags(params?: { skip?: number; limit?: number; nameSearch?: string; }): Promise<ListTagsResponse> {\n const { skip, limit, nameSearch } = params || {};\n return this.http.get<ListTagsResponse>(`/v0/orgs/${this.organizationId}/tags`, {\n params: { skip: skip || 0, limit: limit || 10, name_search: nameSearch }\n });\n }\n\n async updateTag(params: { tagId: string; tag: Partial<Omit<Tag, 'id' | 'created_at' | 'updated_at'>>; }): Promise<Tag> {\n const { tagId, tag } = params;\n return this.http.put<Tag>(`/v0/orgs/${this.organizationId}/tags/${tagId}`, tag);\n }\n\n async deleteTag(params: { tagId: string; }): Promise<{ message: string }> {\n const { tagId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/tags/${tagId}`);\n }\n\n // ---------------- Forms ----------------\n\n async createForm(form: Omit<CreateFormParams, 'organizationId'>): Promise<Form> {\n const { name, response_format } = form;\n return this.http.post<Form>(`/v0/orgs/${this.organizationId}/forms`, { name, response_format });\n }\n\n async listForms(params?: Omit<ListFormsParams, 'organizationId'>): Promise<ListFormsResponse> {\n const { skip, limit, tag_ids } = params || {};\n return this.http.get<ListFormsResponse>(`/v0/orgs/${this.organizationId}/forms`, {\n params: { skip: skip || 0, limit: limit || 10, tag_ids }\n });\n }\n\n async getForm(params: Omit<GetFormParams, 'organizationId'>): Promise<Form> {\n const { formRevId } = params;\n return this.http.get<Form>(`/v0/orgs/${this.organizationId}/forms/${formRevId}`);\n }\n\n async updateForm(params: Omit<UpdateFormParams, 'organizationId'>): Promise<Form> {\n const { formId, form } = params;\n return this.http.put<Form>(`/v0/orgs/${this.organizationId}/forms/${formId}`, form);\n }\n\n async deleteForm(params: Omit<DeleteFormParams, 'organizationId'>): Promise<{ message: string }> {\n const { formId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/forms/${formId}`);\n }\n\n async submitForm(params: Omit<SubmitFormParams, 'organizationId'>): Promise<FormSubmission> {\n const { documentId, formRevId, submission_data, submitted_by } = params;\n return this.http.post<FormSubmission>(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, {\n form_revid: formRevId,\n submission_data: submission_data,\n submitted_by: submitted_by\n });\n }\n\n async getFormSubmission(params: Omit<GetFormSubmissionParams, 'organizationId'>): Promise<FormSubmission | null> {\n const { documentId, formRevId } = params;\n return this.http.get<FormSubmission | null>(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}?form_revid=${formRevId}`);\n }\n\n async deleteFormSubmission(params: Omit<DeleteFormSubmissionParams, 'organizationId'>): Promise<void> {\n const { documentId, formRevId } = params;\n await this.http.delete(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, { params: { form_revid: formRevId } });\n }\n\n\n // ---------------- Schemas ----------------\n\n async createSchema(schema: Omit<CreateSchemaParams, 'organizationId'>): Promise<Schema> {\n return this.http.post<Schema>(`/v0/orgs/${this.organizationId}/schemas`, schema);\n }\n\n async listSchemas(params: Omit<ListSchemasParams, 'organizationId'>): Promise<ListSchemasResponse> {\n const { skip, limit, nameSearch } = params || {};\n return this.http.get<ListSchemasResponse>(`/v0/orgs/${this.organizationId}/schemas`, {\n params: { skip: skip || 0, limit: limit || 10, name_search: nameSearch }\n });\n }\n\n async getSchema(params: Omit<GetSchemaParams, 'organizationId'>): Promise<Schema> {\n const { schemaRevId } = params;\n return this.http.get<Schema>(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}`);\n }\n\n async updateSchema(params: Omit<UpdateSchemaParams, 'organizationId'>): Promise<Schema> {\n const { schemaId, schema } = params;\n return this.http.put<Schema>(`/v0/orgs/${this.organizationId}/schemas/${schemaId}`, schema);\n }\n\n async deleteSchema(params: Omit<DeleteSchemaParams, 'organizationId'>): Promise<{ message: string }> {\n const { schemaId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/schemas/${schemaId}`);\n }\n\n async validateAgainstSchema(params: { schemaRevId: string; data: Record<string, unknown> }): Promise<{ valid: boolean; errors?: string[] }> {\n const { schemaRevId, data } = params;\n return this.http.post<{ valid: boolean; errors?: string[] }>(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}/validate`, { data });\n }\n\n // ---------------- Payments ----------------\n\n async getCustomerPortal(): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${this.organizationId}/payments/customer-portal`, {});\n }\n\n async getSubscription(): Promise<SubscriptionResponse> {\n return this.http.get<SubscriptionResponse>(`/v0/orgs/${this.organizationId}/payments/subscription`);\n }\n\n async activateSubscription(): Promise<{ status: string; message: string }> {\n return this.http.put<{ status: string; message: string }>(`/v0/orgs/${this.organizationId}/payments/subscription`, {});\n }\n\n async cancelSubscription(): Promise<{ status: string; message: string }> {\n return this.http.delete<{ status: string; message: string }>(`/v0/orgs/${this.organizationId}/payments/subscription`);\n }\n\n\n async getCurrentUsage(): Promise<UsageResponse> {\n return this.http.get<UsageResponse>(`/v0/orgs/${this.organizationId}/payments/usage`);\n }\n\n async addCredits(amount: number): Promise<CreditUpdateResponse> {\n return this.http.post<CreditUpdateResponse>(`/v0/orgs/${this.organizationId}/payments/credits/add`, { amount });\n }\n\n async getCreditConfig(): Promise<CreditConfig> {\n return this.http.get<CreditConfig>(`/v0/orgs/${this.organizationId}/payments/credits/config`);\n }\n\n async purchaseCredits(request: { credits: number; success_url: string; cancel_url: string; }) {\n return this.http.post(`/v0/orgs/${this.organizationId}/payments/credits/purchase`, request);\n }\n\n async getUsageRange(request: UsageRangeRequest): Promise<UsageRangeResponse> {\n return this.http.get<UsageRangeResponse>(`/v0/orgs/${this.organizationId}/payments/usage/range`, { params: request });\n }\n\n async createCheckoutSession(planId: string): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${this.organizationId}/payments/checkout-session`, { plan_id: planId });\n }\n\n // ---------------- LLM Chat (Org) ----------------\n\n async runLLMChat(request: LLMChatRequest): Promise<LLMChatResponse> {\n return this.http.post(`/v0/orgs/${this.organizationId}/llm/run`, request);\n }\n\n async runLLMChatStream(\n request: LLMChatRequest,\n onChunk: (chunk: LLMChatStreamChunk | LLMChatStreamError) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n const streamingRequest = { ...request, stream: true };\n return this.http.stream(`/v0/orgs/${this.organizationId}/llm/run`, streamingRequest, onChunk, onError, abortSignal);\n }\n\n /**\n * Get the current HTTP client (for advanced usage)\n */\n getHttpClient(): HttpClient {\n return this.http;\n }\n}\n"]}
|