@docrouter/sdk 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -269,7 +269,8 @@ var DocRouterAccount = class {
269
269
  return this.http.post(`/v0/orgs/${organizationId}/access_tokens`, request);
270
270
  }
271
271
  async getOrganizationTokens(organizationId) {
272
- return this.http.get(`/v0/orgs/${organizationId}/access_tokens`);
272
+ const resp = await this.http.get(`/v0/orgs/${organizationId}/access_tokens`);
273
+ return Array.isArray(resp) ? resp : resp.access_tokens;
273
274
  }
274
275
  async deleteOrganizationToken(tokenId, organizationId) {
275
276
  return this.http.delete(`/v0/orgs/${organizationId}/access_tokens/${tokenId}`);
@@ -302,22 +303,13 @@ var DocRouterAccount = class {
302
303
  }
303
304
  async getUser(userId) {
304
305
  const response = await this.listUsers({ user_id: userId });
305
- const user = response.users[0];
306
- return { user };
306
+ return response.users[0];
307
307
  }
308
308
  async createUser(user) {
309
- const created = await this.http.post(
310
- "/v0/account/users",
311
- user
312
- );
313
- return created.user ? created : { user: created };
309
+ return this.http.post("/v0/account/users", user);
314
310
  }
315
311
  async updateUser(userId, update) {
316
- const updated = await this.http.put(
317
- `/v0/account/users/${userId}`,
318
- update
319
- );
320
- return updated.user ? updated : { user: updated };
312
+ return this.http.put(`/v0/account/users/${userId}`, update);
321
313
  }
322
314
  async deleteUser(userId) {
323
315
  await this.http.delete(`/v0/account/users/${userId}`);
@@ -342,6 +334,69 @@ var DocRouterAccount = class {
342
334
  async deleteAWSConfig() {
343
335
  return this.http.delete("/v0/account/aws_config");
344
336
  }
337
+ // --------------- Invitations ---------------
338
+ async createInvitation(invitation) {
339
+ return this.http.post("/v0/account/email/invitations", invitation);
340
+ }
341
+ async getInvitations(params) {
342
+ const queryParams = new URLSearchParams();
343
+ if (params?.skip !== void 0) queryParams.append("skip", String(params.skip));
344
+ if (params?.limit !== void 0) queryParams.append("limit", String(params.limit));
345
+ return this.http.get(`/v0/account/email/invitations?${queryParams.toString()}`);
346
+ }
347
+ async getInvitation(token) {
348
+ return this.http.get(`/v0/account/email/invitations/${token}`);
349
+ }
350
+ async acceptInvitation(token, data) {
351
+ return this.http.post(`/v0/account/email/invitations/${token}/accept`, data);
352
+ }
353
+ // --------------- Payments & Subscriptions ---------------
354
+ async getCustomerPortal(orgId) {
355
+ return this.http.post(`/v0/orgs/${orgId}/payments/customer-portal`);
356
+ }
357
+ async getSubscription(orgId) {
358
+ return this.http.get(`/v0/orgs/${orgId}/payments/subscription`);
359
+ }
360
+ async activateSubscription(orgId) {
361
+ return this.http.put(`/v0/orgs/${orgId}/payments/subscription`);
362
+ }
363
+ async cancelSubscription(orgId) {
364
+ return this.http.delete(`/v0/orgs/${orgId}/payments/subscription`);
365
+ }
366
+ async getCurrentUsage(orgId) {
367
+ return this.http.get(`/v0/orgs/${orgId}/payments/usage`);
368
+ }
369
+ async addCredits(orgId, amount) {
370
+ return this.http.post(`/v0/orgs/${orgId}/payments/credits/add`, { amount });
371
+ }
372
+ async getCreditConfig(orgId) {
373
+ return this.http.get(`/v0/orgs/${orgId}/payments/credits/config`);
374
+ }
375
+ async purchaseCredits(orgId, request) {
376
+ return this.http.post(`/v0/orgs/${orgId}/payments/credits/purchase`, request);
377
+ }
378
+ async getUsageRange(orgId, request) {
379
+ const queryParams = new URLSearchParams();
380
+ if (request.start_date) queryParams.append("start_date", request.start_date);
381
+ if (request.end_date) queryParams.append("end_date", request.end_date);
382
+ return this.http.get(`/v0/orgs/${orgId}/payments/usage/range?${queryParams.toString()}`);
383
+ }
384
+ async createCheckoutSession(orgId, planId) {
385
+ return this.http.post(`/v0/orgs/${orgId}/payments/checkout-session`, { plan_id: planId });
386
+ }
387
+ /**
388
+ * Run LLM chat (account level)
389
+ */
390
+ async runLLMChat(request) {
391
+ return this.http.post("/v0/account/llm/run", request);
392
+ }
393
+ /**
394
+ * Run LLM chat with streaming (account level)
395
+ */
396
+ async runLLMChatStream(request, onChunk, onError, abortSignal) {
397
+ const streamingRequest = { ...request, stream: true };
398
+ return this.http.stream("/v0/account/llm/run", streamingRequest, onChunk, onError, abortSignal);
399
+ }
345
400
  /**
346
401
  * Get the current HTTP client (for advanced usage)
347
402
  */
@@ -372,24 +427,16 @@ var DocRouterOrg = class {
372
427
  async uploadDocuments(params) {
373
428
  const documentsPayload = params.documents.map((doc) => {
374
429
  let base64Content;
375
- if (doc.content instanceof ArrayBuffer) {
376
- const buffer = Buffer.from(doc.content);
377
- base64Content = buffer.toString("base64");
378
- } else if (doc.content instanceof Buffer) {
379
- base64Content = doc.content.toString("base64");
380
- } else if (doc.content instanceof Uint8Array) {
381
- const buffer = Buffer.from(doc.content);
382
- base64Content = buffer.toString("base64");
430
+ if (doc.content.startsWith("data:")) {
431
+ base64Content = doc.content.split(",")[1];
383
432
  } else {
384
- const uint8Array = new Uint8Array(doc.content);
385
- const buffer = Buffer.from(uint8Array);
386
- base64Content = buffer.toString("base64");
433
+ base64Content = doc.content;
387
434
  }
388
435
  const payload = {
389
436
  name: doc.name,
390
- content: base64Content,
391
- type: doc.type
437
+ content: base64Content
392
438
  };
439
+ if (doc.tag_ids && doc.tag_ids.length > 0) payload.tag_ids = doc.tag_ids;
393
440
  if (doc.metadata) payload.metadata = doc.metadata;
394
441
  return payload;
395
442
  });
@@ -485,10 +532,7 @@ var DocRouterOrg = class {
485
532
  { updated_llm_result: result, is_verified: isVerified },
486
533
  { params: { prompt_revid: promptId } }
487
534
  );
488
- if (response.status !== 200) {
489
- throw new Error(`Failed to update LLM result for document ${documentId} and prompt ${promptId}: ${response.data}`);
490
- }
491
- return response.data;
535
+ return response;
492
536
  }
493
537
  async deleteLLMResult(params) {
494
538
  const { documentId, promptId } = params;
@@ -504,6 +548,35 @@ var DocRouterOrg = class {
504
548
  { responseType: "blob" }
505
549
  );
506
550
  }
551
+ // ---------------- Prompts ----------------
552
+ async createPrompt(params) {
553
+ const { prompt } = params;
554
+ return this.http.post(`/v0/orgs/${this.organizationId}/prompts`, prompt);
555
+ }
556
+ async listPrompts(params) {
557
+ const { skip, limit, document_id, tag_ids, nameSearch } = params || {};
558
+ return this.http.get(`/v0/orgs/${this.organizationId}/prompts`, {
559
+ params: {
560
+ skip: skip || 0,
561
+ limit: limit || 10,
562
+ document_id,
563
+ tag_ids,
564
+ name_search: nameSearch
565
+ }
566
+ });
567
+ }
568
+ async getPrompt(params) {
569
+ const { promptRevId } = params;
570
+ return this.http.get(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);
571
+ }
572
+ async updatePrompt(params) {
573
+ const { promptId, prompt } = params;
574
+ return this.http.put(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);
575
+ }
576
+ async deletePrompt(params) {
577
+ const { promptId } = params;
578
+ return this.http.delete(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);
579
+ }
507
580
  // ---------------- Tags ----------------
508
581
  async createTag(params) {
509
582
  const { tag } = params;
@@ -565,35 +638,6 @@ var DocRouterOrg = class {
565
638
  const { documentId, formRevId } = params;
566
639
  await this.http.delete(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, { params: { form_revid: formRevId } });
567
640
  }
568
- // ---------------- Prompts ----------------
569
- async createPrompt(params) {
570
- const { prompt } = params;
571
- return this.http.post(`/v0/orgs/${this.organizationId}/prompts`, prompt);
572
- }
573
- async listPrompts(params) {
574
- const { skip, limit, document_id, tag_ids, nameSearch } = params || {};
575
- return this.http.get(`/v0/orgs/${this.organizationId}/prompts`, {
576
- params: {
577
- skip: skip || 0,
578
- limit: limit || 10,
579
- document_id,
580
- tag_ids,
581
- name_search: nameSearch
582
- }
583
- });
584
- }
585
- async getPrompt(params) {
586
- const { promptRevId } = params;
587
- return this.http.get(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);
588
- }
589
- async updatePrompt(params) {
590
- const { promptId, prompt } = params;
591
- return this.http.put(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);
592
- }
593
- async deletePrompt(params) {
594
- const { promptId } = params;
595
- return this.http.delete(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);
596
- }
597
641
  // ---------------- Schemas ----------------
598
642
  async createSchema(schema) {
599
643
  return this.http.post(`/v0/orgs/${this.organizationId}/schemas`, schema);
@@ -620,29 +664,6 @@ var DocRouterOrg = class {
620
664
  const { schemaRevId, data } = params;
621
665
  return this.http.post(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}/validate`, { data });
622
666
  }
623
- // ---------------- Flows ----------------
624
- async createFlow(params) {
625
- const { flow } = params;
626
- return this.http.post(`/v0/orgs/${this.organizationId}/flows`, flow);
627
- }
628
- async updateFlow(params) {
629
- const { flowId, flow } = params;
630
- return this.http.put(`/v0/orgs/${this.organizationId}/flows/${flowId}`, flow);
631
- }
632
- async listFlows(params) {
633
- const { skip, limit } = params || {};
634
- return this.http.get(`/v0/orgs/${this.organizationId}/flows`, {
635
- params: { skip: skip || 0, limit: limit || 10 }
636
- });
637
- }
638
- async getFlow(params) {
639
- const { flowId } = params;
640
- return this.http.get(`/v0/orgs/${this.organizationId}/flows/${flowId}`);
641
- }
642
- async deleteFlow(params) {
643
- const { flowId } = params;
644
- await this.http.delete(`/v0/orgs/${this.organizationId}/flows/${flowId}`);
645
- }
646
667
  // ---------------- Payments ----------------
647
668
  async getCustomerPortal() {
648
669
  return this.http.post(`/v0/orgs/${this.organizationId}/payments/customer-portal`, {});
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/http-client.ts","../src/docrouter-account.ts","../src/docrouter-org.ts"],"names":["axios","isAxiosError"],"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,GAAQA,uBAAM,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,IAAIC,kBAAA,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.js","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":["axios","isAxiosError"],"mappings":"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","file":"index.js","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 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 // --------------- 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"]}