quickbase-js 2.0.0-alpha.9 → 2.1.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/README.md CHANGED
@@ -14,9 +14,9 @@ A TypeScript/JavaScript client for the QuickBase JSON RESTful API.
14
14
 
15
15
  ## API Reference
16
16
 
17
- **[View all 59 API methods →](./interfaces/QuickbaseAPI.html)**
17
+ **[View Full API Documentation →](https://drewbradfordxyz.github.io/quickbase-js/)**
18
18
 
19
- The SDK provides typed methods for all QuickBase API endpoints including Apps, Tables, Fields, Records, Reports, Users, and more. Each method includes JSDoc documentation with links to the official QuickBase API docs.
19
+ The SDK provides typed methods for all 59 QuickBase API endpoints including Apps, Tables, Fields, Records, Reports, Users, and more. Each method includes JSDoc documentation with links to the official QuickBase API docs.
20
20
 
21
21
  ## Installation
22
22
 
@@ -149,6 +149,46 @@ const client = createClient({
149
149
  });
150
150
  ```
151
151
 
152
+ ### Ticket Auth (Username/Password)
153
+
154
+ Ticket authentication lets users log in with their QuickBase email and password. Unlike user tokens, tickets properly attribute record changes (`createdBy`/`modifiedBy`) to the authenticated user.
155
+
156
+ ```typescript
157
+ const client = createClient({
158
+ realm: 'mycompany',
159
+ auth: {
160
+ type: 'ticket',
161
+ username: 'user@example.com',
162
+ password: 'password',
163
+ },
164
+ });
165
+ ```
166
+
167
+ **Key behaviors:**
168
+ - Authentication happens lazily on the first API call
169
+ - Password is discarded from memory after authentication
170
+ - Tickets are valid for 12 hours by default (configurable up to ~6 months)
171
+ - When the ticket expires, an error is thrown — create a new client with fresh credentials
172
+
173
+ **With custom ticket validity:**
174
+
175
+ ```typescript
176
+ const client = createClient({
177
+ realm: 'mycompany',
178
+ auth: {
179
+ type: 'ticket',
180
+ username: 'user@example.com',
181
+ password: 'password',
182
+ hours: 24 * 7, // 1 week
183
+ },
184
+ });
185
+ ```
186
+
187
+ **When to use ticket auth:**
188
+ - Third-party services where users shouldn't share user tokens
189
+ - Proper audit trails with correct `createdBy`/`modifiedBy` attribution
190
+ - Session-based authentication flows
191
+
152
192
  ## Pagination
153
193
 
154
194
  Paginated endpoints (`runQuery`, `runReport`, `getUsers`, etc.) return a `PaginatedRequest` that supports fluent pagination methods.
@@ -374,6 +414,108 @@ try {
374
414
  }
375
415
  ```
376
416
 
417
+ ## Rate Limiting
418
+
419
+ QuickBase enforces a rate limit of **100 requests per 10 seconds** per user token. This SDK follows [QuickBase's official rate limiting guidance](https://developer.quickbase.com/rateLimit) — relying on server-side `Retry-After` headers by default, with optional client-side throttling.
420
+
421
+ ### How 429 Errors Are Handled
422
+
423
+ When the SDK receives a 429 (Too Many Requests) response, it automatically:
424
+
425
+ 1. **Extracts rate limit info** from response headers (`Retry-After`, `cf-ray`, `qb-api-ray`)
426
+ 2. **Calls the `onRateLimit` callback** if configured, allowing you to log or monitor
427
+ 3. **Waits before retrying** - uses the `Retry-After` header if present, otherwise exponential backoff with jitter
428
+ 4. **Retries the request** up to `maxAttempts` times (default: 3)
429
+ 5. **Throws a `RateLimitError`** if all retries are exhausted
430
+
431
+ ```
432
+ Request fails with 429
433
+ ↓
434
+ Extract Retry-After header
435
+ ↓
436
+ Call onRateLimit callback (if set)
437
+ ↓
438
+ Wait (Retry-After or exponential backoff)
439
+ ↓
440
+ Retry request (up to maxAttempts)
441
+ ↓
442
+ Throw RateLimitError if exhausted
443
+ ```
444
+
445
+ ### Retry Configuration
446
+
447
+ ```typescript
448
+ const client = createClient({
449
+ realm: 'mycompany',
450
+ auth: { type: 'user-token', userToken: 'token' },
451
+ rateLimit: {
452
+ retry: {
453
+ maxAttempts: 5, // Default: 3
454
+ initialDelayMs: 1000, // Default: 1000ms
455
+ maxDelayMs: 30000, // Default: 30000ms
456
+ multiplier: 2, // Default: 2
457
+ },
458
+ },
459
+ });
460
+ ```
461
+
462
+ The backoff formula with jitter: `delay = initialDelayMs * (multiplier ^ attempt) ± 10%`
463
+
464
+ ### Proactive Throttling
465
+
466
+ Prevent 429 errors entirely by throttling requests client-side using a sliding window algorithm:
467
+
468
+ ```typescript
469
+ const client = createClient({
470
+ realm: 'mycompany',
471
+ auth: { type: 'user-token', userToken: 'token' },
472
+ rateLimit: {
473
+ proactiveThrottle: {
474
+ enabled: true,
475
+ requestsPer10Seconds: 100,
476
+ },
477
+ },
478
+ });
479
+ ```
480
+
481
+ This tracks request timestamps and blocks new requests when the limit would be exceeded, waiting until the oldest request exits the 10-second window.
482
+
483
+ ### Rate Limit Callback
484
+
485
+ Get notified when rate limited (called before retry):
486
+
487
+ ```typescript
488
+ const client = createClient({
489
+ realm: 'mycompany',
490
+ auth: { type: 'user-token', userToken: 'token' },
491
+ rateLimit: {
492
+ onRateLimit: (info) => {
493
+ console.log(`Rate limited on ${info.requestUrl}`);
494
+ console.log(`Retry after: ${info.retryAfter} seconds`);
495
+ console.log(`Ray ID: ${info.qbApiRay}`);
496
+ console.log(`Attempt: ${info.attempt}`);
497
+ },
498
+ },
499
+ });
500
+ ```
501
+
502
+ ### Handling RateLimitError
503
+
504
+ If retries are exhausted, a `RateLimitError` is thrown:
505
+
506
+ ```typescript
507
+ import { RateLimitError } from 'quickbase-js';
508
+
509
+ try {
510
+ await client.getApp({ appId: 'bpqe82s1' });
511
+ } catch (error) {
512
+ if (error instanceof RateLimitError) {
513
+ console.log(`Rate limited after ${error.rateLimitInfo.attempt} attempts`);
514
+ console.log(`Retry after: ${error.retryAfter} seconds`);
515
+ }
516
+ }
517
+ ```
518
+
377
519
  ## Migration from v1
378
520
 
379
521
  ### Authentication
@@ -445,6 +587,22 @@ npm run typecheck
445
587
  npm run spec:generate
446
588
  ```
447
589
 
590
+ ### Updating the OpenAPI Spec
591
+
592
+ The `spec/` directory is a Git submodule pointing to [quickbase-spec](https://github.com/DrewBradfordXYZ/quickbase-spec). Each SDK pins to a specific commit, so spec updates are controlled:
593
+
594
+ ```bash
595
+ # Update to latest spec
596
+ cd spec
597
+ git pull origin main
598
+ cd ..
599
+ git add spec
600
+ git commit -m "Update quickbase-spec submodule"
601
+
602
+ # Regenerate types
603
+ npm run spec:generate
604
+ ```
605
+
448
606
  ### Spec Tools
449
607
 
450
608
  ```bash
@@ -461,14 +619,17 @@ npm run spec:generate # Generate TypeScript types
461
619
 
462
620
  ### Documentation
463
621
 
464
- Generate API documentation from source code:
622
+ API documentation is auto-generated from source code and hosted at:
623
+ **https://drewbradfordxyz.github.io/quickbase-js/**
624
+
625
+ To generate docs locally:
465
626
 
466
627
  ```bash
467
628
  npm run docs # Generate docs to ./docs
468
629
  npm run docs:watch # Watch mode for development
469
630
  ```
470
631
 
471
- The documentation is generated using [TypeDoc](https://typedoc.org/) and extracts JSDoc comments from the source code. Open `docs/index.html` to view locally.
632
+ Documentation is built with [TypeDoc](https://typedoc.org/) and auto-deployed to GitHub Pages on every push to main.
472
633
 
473
634
  ## License
474
635
 
@@ -5,6 +5,7 @@ export type { AuthStrategy, AuthContext, CachedToken } from './types.js';
5
5
  export { UserTokenStrategy } from './user-token.js';
6
6
  export { TempTokenStrategy } from './temp-token.js';
7
7
  export { SsoTokenStrategy } from './sso-token.js';
8
+ export { TicketStrategy } from './ticket.js';
8
9
  export { TokenCache } from './token-cache.js';
9
10
  import type { AuthConfig } from '../core/types.js';
10
11
  import type { AuthStrategy, AuthContext } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK5D;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,GACnB,YAAY,CAiBd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM5D;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,GACnB,YAAY,CA0Bd"}
@@ -4,10 +4,12 @@
4
4
  export { UserTokenStrategy } from './user-token.js';
5
5
  export { TempTokenStrategy } from './temp-token.js';
6
6
  export { SsoTokenStrategy } from './sso-token.js';
7
+ export { TicketStrategy } from './ticket.js'; // XML-API-TICKET: Remove if XML API discontinued
7
8
  export { TokenCache } from './token-cache.js';
8
9
  import { UserTokenStrategy } from './user-token.js';
9
10
  import { TempTokenStrategy } from './temp-token.js';
10
11
  import { SsoTokenStrategy } from './sso-token.js';
12
+ import { TicketStrategy } from './ticket.js'; // XML-API-TICKET: Remove if XML API discontinued
11
13
  /**
12
14
  * Factory function to create the appropriate auth strategy
13
15
  */
@@ -22,6 +24,9 @@ export function createAuthStrategy(authConfig, context) {
22
24
  });
23
25
  case 'sso':
24
26
  return new SsoTokenStrategy(authConfig.samlToken, context);
27
+ // XML-API-TICKET: Remove this case if XML API is discontinued
28
+ case 'ticket':
29
+ return new TicketStrategy(authConfig.username, authConfig.password, { hours: authConfig.hours }, context);
25
30
  default:
26
31
  throw new Error(`Unknown auth type: ${authConfig.type}`);
27
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAsB,EACtB,OAAoB;IAEpB,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9D,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE;gBAC1D,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,eAAe,EAAE,UAAU,CAAC,eAAe;aAC5C,CAAC,CAAC;QAEL,KAAK,KAAK;YACR,OAAO,IAAI,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7D;YACE,MAAM,IAAI,KAAK,CAAC,sBAAuB,UAA+B,CAAC,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC,CAAC,iDAAiD;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC,CAAC,iDAAiD;AAE/F;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAsB,EACtB,OAAoB;IAEpB,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9D,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE;gBAC1D,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,eAAe,EAAE,UAAU,CAAC,eAAe;aAC5C,CAAC,CAAC;QAEL,KAAK,KAAK;YACR,OAAO,IAAI,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7D,8DAA8D;QAC9D,KAAK,QAAQ;YACX,OAAO,IAAI,cAAc,CACvB,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,QAAQ,EACnB,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,EAC3B,OAAO,CACR,CAAC;QAEJ;YACE,MAAM,IAAI,KAAK,CAAC,sBAAuB,UAA+B,CAAC,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Ticket Authentication Strategy (XML API)
3
+ *
4
+ * Authenticates using username/password via the XML API_Authenticate endpoint.
5
+ * Unlike user tokens, tickets properly attribute record changes (createdBy/modifiedBy)
6
+ * to the authenticated user.
7
+ *
8
+ * NOTE: This uses the legacy QuickBase XML API (API_Authenticate).
9
+ * If QuickBase discontinues the XML API in the future, this file and related code
10
+ * can be safely removed.
11
+ *
12
+ * To find all related code, search for the marker: XML-API-TICKET
13
+ *
14
+ * Files to remove/update:
15
+ * - src/auth/ticket.ts (this file)
16
+ * - src/auth/index.ts (TicketStrategy export, createAuthStrategy case)
17
+ * - src/core/types.ts (TicketAuthConfig)
18
+ * - src/index.ts (exports)
19
+ * - tests/auth/ticket.test.ts
20
+ * - README.md: "Ticket Auth" section
21
+ */
22
+ import type { AuthStrategy, AuthContext } from './types.js';
23
+ /**
24
+ * Options for ticket authentication
25
+ */
26
+ export interface TicketAuthOptions {
27
+ /** Ticket validity in hours (default: 12, max: 4380 ~6 months) */
28
+ hours?: number;
29
+ }
30
+ /**
31
+ * Ticket authentication strategy using XML API_Authenticate.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const client = createClient({
36
+ * realm: 'mycompany',
37
+ * auth: {
38
+ * type: 'ticket',
39
+ * username: 'user@example.com',
40
+ * password: 'password',
41
+ * },
42
+ * });
43
+ * ```
44
+ *
45
+ * XML-API-TICKET: Remove this class if XML API is discontinued.
46
+ */
47
+ export declare class TicketStrategy implements AuthStrategy {
48
+ private readonly username;
49
+ private password;
50
+ private readonly hours;
51
+ private readonly realm;
52
+ private readonly fetchApi;
53
+ private readonly logger;
54
+ private ticket;
55
+ private userId;
56
+ private authenticated;
57
+ private pendingAuth;
58
+ constructor(username: string, password: string, options: TicketAuthOptions | undefined, context: AuthContext);
59
+ getToken(_dbid?: string): Promise<string>;
60
+ getAuthorizationHeader(token: string): string;
61
+ handleAuthError(_dbid?: string): Promise<boolean>;
62
+ invalidate(_dbid?: string): void;
63
+ /**
64
+ * Get the authenticated user's ID (available after first API call)
65
+ */
66
+ getUserId(): string | null;
67
+ private authenticate;
68
+ private parseXmlResponse;
69
+ private escapeXml;
70
+ }
71
+ //# sourceMappingURL=ticket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.d.ts","sourceRoot":"","sources":["../../src/auth/ticket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAW5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAe,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAgC;gBAGjD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,OAAO,EAAE,WAAW;IAUhB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB/C,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASvD,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;YAIZ,YAAY;IAkD1B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,SAAS;CAQlB"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Ticket Authentication Strategy (XML API)
3
+ *
4
+ * Authenticates using username/password via the XML API_Authenticate endpoint.
5
+ * Unlike user tokens, tickets properly attribute record changes (createdBy/modifiedBy)
6
+ * to the authenticated user.
7
+ *
8
+ * NOTE: This uses the legacy QuickBase XML API (API_Authenticate).
9
+ * If QuickBase discontinues the XML API in the future, this file and related code
10
+ * can be safely removed.
11
+ *
12
+ * To find all related code, search for the marker: XML-API-TICKET
13
+ *
14
+ * Files to remove/update:
15
+ * - src/auth/ticket.ts (this file)
16
+ * - src/auth/index.ts (TicketStrategy export, createAuthStrategy case)
17
+ * - src/core/types.ts (TicketAuthConfig)
18
+ * - src/index.ts (exports)
19
+ * - tests/auth/ticket.test.ts
20
+ * - README.md: "Ticket Auth" section
21
+ */
22
+ /**
23
+ * Ticket authentication strategy using XML API_Authenticate.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const client = createClient({
28
+ * realm: 'mycompany',
29
+ * auth: {
30
+ * type: 'ticket',
31
+ * username: 'user@example.com',
32
+ * password: 'password',
33
+ * },
34
+ * });
35
+ * ```
36
+ *
37
+ * XML-API-TICKET: Remove this class if XML API is discontinued.
38
+ */
39
+ export class TicketStrategy {
40
+ username;
41
+ password; // Cleared after first auth
42
+ hours;
43
+ realm;
44
+ fetchApi;
45
+ logger;
46
+ ticket = null;
47
+ userId = null;
48
+ authenticated = false;
49
+ pendingAuth = null;
50
+ constructor(username, password, options, context) {
51
+ this.username = username;
52
+ this.password = password;
53
+ this.hours = Math.min(Math.max(options?.hours ?? 12, 1), 4380);
54
+ this.realm = context.realm;
55
+ this.fetchApi = context.fetchApi;
56
+ this.logger = context.logger;
57
+ }
58
+ async getToken(_dbid) {
59
+ // Return cached ticket if available
60
+ if (this.ticket) {
61
+ return this.ticket;
62
+ }
63
+ // If already authenticated but no ticket, it expired
64
+ if (this.authenticated) {
65
+ throw new Error('Ticket expired; create a new client with fresh credentials');
66
+ }
67
+ // Dedupe concurrent auth requests
68
+ if (this.pendingAuth) {
69
+ return this.pendingAuth;
70
+ }
71
+ this.pendingAuth = this.authenticate();
72
+ try {
73
+ const ticket = await this.pendingAuth;
74
+ return ticket;
75
+ }
76
+ finally {
77
+ this.pendingAuth = null;
78
+ }
79
+ }
80
+ getAuthorizationHeader(token) {
81
+ return `QB-TICKET ${token}`;
82
+ }
83
+ async handleAuthError(_dbid) {
84
+ // Clear expired ticket
85
+ this.ticket = null;
86
+ // Can't refresh - password was cleared after initial auth
87
+ this.logger.debug('Ticket auth error - cannot refresh (password was cleared)');
88
+ return false;
89
+ }
90
+ invalidate(_dbid) {
91
+ this.ticket = null;
92
+ }
93
+ /**
94
+ * Get the authenticated user's ID (available after first API call)
95
+ */
96
+ getUserId() {
97
+ return this.userId;
98
+ }
99
+ async authenticate() {
100
+ if (!this.password) {
101
+ throw new Error('Ticket expired; create a new client with fresh credentials');
102
+ }
103
+ const url = `https://${this.realm}.quickbase.com/db/main`;
104
+ // Build XML request body
105
+ const xmlBody = `<qdbapi>
106
+ <username>${this.escapeXml(this.username)}</username>
107
+ <password>${this.escapeXml(this.password)}</password>
108
+ <hours>${this.hours}</hours>
109
+ </qdbapi>`;
110
+ this.logger.debug(`Authenticating via API_Authenticate for ${this.username}`);
111
+ const response = await this.fetchApi(url, {
112
+ method: 'POST',
113
+ headers: {
114
+ 'Content-Type': 'application/xml',
115
+ 'QUICKBASE-ACTION': 'API_Authenticate',
116
+ },
117
+ body: xmlBody,
118
+ });
119
+ const xmlText = await response.text();
120
+ const result = this.parseXmlResponse(xmlText);
121
+ if (result.errcode !== 0) {
122
+ const errMsg = result.errdetail || result.errtext || 'Unknown error';
123
+ throw new Error(`Authentication failed: ${errMsg} (code: ${result.errcode})`);
124
+ }
125
+ if (!result.ticket) {
126
+ throw new Error('No ticket returned from API_Authenticate');
127
+ }
128
+ // Store ticket and user ID
129
+ this.ticket = result.ticket;
130
+ this.userId = result.userid;
131
+ this.authenticated = true;
132
+ // Clear password from memory
133
+ this.password = null;
134
+ this.logger.debug(`Authenticated successfully, userId: ${this.userId}`);
135
+ return this.ticket;
136
+ }
137
+ parseXmlResponse(xml) {
138
+ // Simple XML parsing for the specific response format
139
+ const getTagContent = (tag) => {
140
+ const match = xml.match(new RegExp(`<${tag}>([^<]*)</${tag}>`));
141
+ return match?.[1] ?? '';
142
+ };
143
+ return {
144
+ ticket: getTagContent('ticket'),
145
+ userid: getTagContent('userid'),
146
+ errcode: parseInt(getTagContent('errcode'), 10) || 0,
147
+ errtext: getTagContent('errtext'),
148
+ errdetail: getTagContent('errdetail') || undefined,
149
+ };
150
+ }
151
+ escapeXml(str) {
152
+ return str
153
+ .replace(/&/g, '&amp;')
154
+ .replace(/</g, '&lt;')
155
+ .replace(/>/g, '&gt;')
156
+ .replace(/"/g, '&quot;')
157
+ .replace(/'/g, '&apos;');
158
+ }
159
+ }
160
+ //# sourceMappingURL=ticket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../src/auth/ticket.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAG/E;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CA8BrE;AAoGD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAG/E;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CA8BrE;AA8GD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD"}
@@ -78,6 +78,15 @@ function validateAuthConfig(auth) {
78
78
  throw new Error('SAML token is required for SSO auth');
79
79
  }
80
80
  break;
81
+ // XML-API-TICKET: Remove this case if XML API is discontinued
82
+ case 'ticket':
83
+ if (!auth.username) {
84
+ throw new Error('Username is required for ticket auth');
85
+ }
86
+ if (!auth.password) {
87
+ throw new Error('Password is required for ticket auth');
88
+ }
89
+ break;
81
90
  default:
82
91
  throw new Error(`Unknown auth type: ${auth.type}`);
83
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Core module exports
3
3
  */
4
- export type { QuickbaseConfig, AuthConfig, UserTokenAuthConfig, TempTokenAuthConfig, SsoTokenAuthConfig, RateLimitConfig, RetryConfig, RequestContext, RateLimitInfo, PaginationMetadata, PaginatedResponse, FieldInfo, ResolvedConfig, } from './types.js';
4
+ export type { QuickbaseConfig, AuthConfig, UserTokenAuthConfig, TempTokenAuthConfig, SsoTokenAuthConfig, TicketAuthConfig, // XML-API-TICKET: Remove if XML API discontinued
5
+ RateLimitConfig, RetryConfig, RequestContext, RateLimitInfo, PaginationMetadata, PaginatedResponse, FieldInfo, ResolvedConfig, } from './types.js';
5
6
  export { DEFAULT_CONFIG } from './types.js';
6
7
  export { QuickbaseError, RateLimitError, AuthenticationError, AuthorizationError, NotFoundError, ValidationError, TimeoutError, ServerError, parseErrorResponse, isRetryableError, } from './errors.js';
7
8
  export { Logger, createLogger } from './logger.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAAE,iDAAiD;AACnE,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -21,7 +21,7 @@ export interface QuickbaseConfig {
21
21
  /** Convert ISO date strings in responses to JavaScript Date objects (default: true) */
22
22
  convertDates?: boolean;
23
23
  }
24
- export type AuthConfig = UserTokenAuthConfig | TempTokenAuthConfig | SsoTokenAuthConfig;
24
+ export type AuthConfig = UserTokenAuthConfig | TempTokenAuthConfig | SsoTokenAuthConfig | TicketAuthConfig;
25
25
  export interface UserTokenAuthConfig {
26
26
  type: 'user-token';
27
27
  /** Your QuickBase user token */
@@ -44,6 +44,22 @@ export interface SsoTokenAuthConfig {
44
44
  /** SAML token for SSO authentication */
45
45
  samlToken: string;
46
46
  }
47
+ /**
48
+ * Ticket authentication using username/password via XML API_Authenticate.
49
+ * Unlike user tokens, tickets properly attribute record changes (createdBy/modifiedBy)
50
+ * to the authenticated user.
51
+ *
52
+ * XML-API-TICKET: Remove this interface if XML API is discontinued.
53
+ */
54
+ export interface TicketAuthConfig {
55
+ type: 'ticket';
56
+ /** QuickBase username (email address) */
57
+ username: string;
58
+ /** QuickBase password */
59
+ password: string;
60
+ /** Ticket validity in hours (default: 12, max: 4380 ~6 months) */
61
+ hours?: number;
62
+ }
47
63
  export interface RateLimitConfig {
48
64
  /**
49
65
  * Client-side proactive throttling (optional)
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+KH,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,8BAA8B;IACvC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE;QACL,WAAW,EAAE,CAAC;QACd,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,CAAC;KACd;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,KAAK;QACd,oBAAoB,EAAE,GAAG;KAC1B;IACD,mBAAmB,EAAE,MAAM,EAAE,yCAAyC;IACtE,YAAY,EAAE,KAAK;IACnB,YAAY,EAAE,IAAI;CACV,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiMH,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,8BAA8B;IACvC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE;QACL,WAAW,EAAE,CAAC;QACd,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,CAAC;KACd;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,KAAK;QACd,oBAAoB,EAAE,GAAG;KAC1B;IACD,mBAAmB,EAAE,MAAM,EAAE,yCAAyC;IACtE,YAAY,EAAE,KAAK;IACnB,YAAY,EAAE,IAAI;CACV,CAAC"}
package/dist/index.d.ts CHANGED
@@ -19,10 +19,12 @@
19
19
  * console.log(app.name);
20
20
  * ```
21
21
  */
22
- export type { QuickbaseConfig, AuthConfig, UserTokenAuthConfig, TempTokenAuthConfig, SsoTokenAuthConfig, RateLimitConfig, RetryConfig, RateLimitInfo, PaginationMetadata, PaginatedResponse, FieldInfo, } from './core/index.js';
22
+ export type { QuickbaseConfig, AuthConfig, UserTokenAuthConfig, TempTokenAuthConfig, SsoTokenAuthConfig, TicketAuthConfig, // XML-API-TICKET: Remove if XML API discontinued
23
+ RateLimitConfig, RetryConfig, RateLimitInfo, PaginationMetadata, PaginatedResponse, FieldInfo, } from './core/index.js';
23
24
  export { QuickbaseError, RateLimitError, AuthenticationError, AuthorizationError, NotFoundError, ValidationError, TimeoutError, ServerError, } from './core/index.js';
24
25
  export type { AuthStrategy } from './auth/index.js';
25
- export { UserTokenStrategy, TempTokenStrategy, SsoTokenStrategy, createAuthStrategy, } from './auth/index.js';
26
+ export { UserTokenStrategy, TempTokenStrategy, SsoTokenStrategy, TicketStrategy, // XML-API-TICKET: Remove if XML API discontinued
27
+ createAuthStrategy, } from './auth/index.js';
26
28
  export type { RequestOptions } from './client/index.js';
27
29
  export { SlidingWindowThrottle, NoOpThrottle } from './client/index.js';
28
30
  export type { QuickbaseAPI } from './generated/types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,YAAY,EACV,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGxE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,mDAAmD;IACnD,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;QAC9B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;QACpD,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAEjB,qCAAqC;IACrC,SAAS,EAAE,MAAM,cAAc,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CA6BrE;AAGD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,YAAY,EACV,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAAE,iDAAiD;AACnE,eAAe,EACf,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EAAE,iDAAiD;AACjE,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGxE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,mDAAmD;IACnD,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;QAC9B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;QACpD,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAEjB,qCAAqC;IACrC,SAAS,EAAE,MAAM,cAAc,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CA6BrE;AAGD,eAAe,YAAY,CAAC"}