quickbase-js 1.2.0 → 2.0.0-alpha.2

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.
Files changed (95) hide show
  1. package/README.md +351 -227
  2. package/dist/auth/index.d.ts +15 -0
  3. package/dist/auth/index.d.ts.map +1 -0
  4. package/dist/auth/index.js +29 -0
  5. package/dist/auth/index.js.map +1 -0
  6. package/dist/auth/sso-token.d.ts +28 -0
  7. package/dist/auth/sso-token.d.ts.map +1 -0
  8. package/dist/auth/sso-token.js +108 -0
  9. package/dist/auth/sso-token.js.map +1 -0
  10. package/dist/auth/temp-token.d.ts +31 -0
  11. package/dist/auth/temp-token.d.ts.map +1 -0
  12. package/dist/auth/temp-token.js +121 -0
  13. package/dist/auth/temp-token.js.map +1 -0
  14. package/dist/auth/token-cache.d.ts +44 -0
  15. package/dist/auth/token-cache.d.ts.map +1 -0
  16. package/dist/auth/token-cache.js +84 -0
  17. package/dist/auth/token-cache.js.map +1 -0
  18. package/dist/auth/types.d.ts +44 -0
  19. package/dist/auth/types.d.ts.map +1 -0
  20. package/dist/auth/types.js +5 -0
  21. package/dist/auth/types.js.map +1 -0
  22. package/dist/auth/user-token.d.ts +17 -0
  23. package/dist/auth/user-token.d.ts.map +1 -0
  24. package/dist/auth/user-token.js +30 -0
  25. package/dist/auth/user-token.js.map +1 -0
  26. package/dist/client/index.d.ts +12 -0
  27. package/dist/client/index.d.ts.map +1 -0
  28. package/dist/client/index.js +8 -0
  29. package/dist/client/index.js.map +1 -0
  30. package/dist/client/pagination.d.ts +131 -0
  31. package/dist/client/pagination.d.ts.map +1 -0
  32. package/dist/client/pagination.js +226 -0
  33. package/dist/client/pagination.js.map +1 -0
  34. package/dist/client/request.d.ts +40 -0
  35. package/dist/client/request.d.ts.map +1 -0
  36. package/dist/client/request.js +194 -0
  37. package/dist/client/request.js.map +1 -0
  38. package/dist/client/retry.d.ts +41 -0
  39. package/dist/client/retry.d.ts.map +1 -0
  40. package/dist/client/retry.js +122 -0
  41. package/dist/client/retry.js.map +1 -0
  42. package/dist/client/throttle.d.ts +46 -0
  43. package/dist/client/throttle.d.ts.map +1 -0
  44. package/dist/client/throttle.js +85 -0
  45. package/dist/client/throttle.js.map +1 -0
  46. package/dist/core/config.d.ts +13 -0
  47. package/dist/core/config.d.ts.map +1 -0
  48. package/dist/core/config.js +120 -0
  49. package/dist/core/config.js.map +1 -0
  50. package/dist/core/dates.d.ts +18 -0
  51. package/dist/core/dates.d.ts.map +1 -0
  52. package/dist/core/dates.js +58 -0
  53. package/dist/core/dates.js.map +1 -0
  54. package/dist/core/errors.d.ts +134 -0
  55. package/dist/core/errors.d.ts.map +1 -0
  56. package/dist/core/errors.js +185 -0
  57. package/dist/core/errors.js.map +1 -0
  58. package/dist/core/index.d.ts +10 -0
  59. package/dist/core/index.d.ts.map +1 -0
  60. package/dist/core/index.js +9 -0
  61. package/dist/core/index.js.map +1 -0
  62. package/dist/core/logger.d.ts +41 -0
  63. package/dist/core/logger.d.ts.map +1 -0
  64. package/dist/core/logger.js +96 -0
  65. package/dist/core/logger.js.map +1 -0
  66. package/dist/core/types.d.ts +154 -0
  67. package/dist/core/types.d.ts.map +1 -0
  68. package/dist/core/types.js +23 -0
  69. package/dist/core/types.js.map +1 -0
  70. package/dist/generated/client.d.ts +18 -0
  71. package/dist/generated/client.d.ts.map +1 -0
  72. package/dist/generated/client.js +1390 -0
  73. package/dist/generated/client.js.map +1 -0
  74. package/dist/generated/types.d.ts +3827 -0
  75. package/dist/generated/types.d.ts.map +1 -0
  76. package/dist/generated/types.js +8 -0
  77. package/dist/generated/types.js.map +1 -0
  78. package/dist/index.d.ts +89 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +99 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/quickbase.esm.js +7 -0
  83. package/dist/quickbase.esm.js.map +7 -0
  84. package/dist/quickbase.min.js +7 -0
  85. package/dist/quickbase.min.js.map +7 -0
  86. package/package.json +57 -86
  87. package/dist/esm/quickbase.d.ts +0 -8094
  88. package/dist/esm/quickbase.js +0 -8333
  89. package/dist/esm/quickbase.js.map +0 -1
  90. package/dist/esm/quickbase.min.js +0 -2
  91. package/dist/esm/quickbase.min.js.map +0 -1
  92. package/dist/umd/quickbase.umd.js +0 -8909
  93. package/dist/umd/quickbase.umd.js.map +0 -1
  94. package/dist/umd/quickbase.umd.min.js +0 -2
  95. package/dist/umd/quickbase.umd.min.js.map +0 -1
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Custom error types for the QuickBase SDK
3
+ */
4
+ /**
5
+ * Base error class for all QuickBase SDK errors
6
+ */
7
+ export class QuickbaseError extends Error {
8
+ statusCode;
9
+ description;
10
+ rayId;
11
+ constructor(message, statusCode, options) {
12
+ super(message, { cause: options?.cause });
13
+ this.name = 'QuickbaseError';
14
+ this.statusCode = statusCode;
15
+ this.description = options?.description;
16
+ this.rayId = options?.rayId;
17
+ // Maintains proper stack trace in V8 environments
18
+ if (Error.captureStackTrace) {
19
+ Error.captureStackTrace(this, QuickbaseError);
20
+ }
21
+ }
22
+ toJSON() {
23
+ return {
24
+ name: this.name,
25
+ message: this.message,
26
+ statusCode: this.statusCode,
27
+ description: this.description,
28
+ rayId: this.rayId,
29
+ };
30
+ }
31
+ }
32
+ /**
33
+ * Error thrown when rate limited (HTTP 429)
34
+ */
35
+ export class RateLimitError extends QuickbaseError {
36
+ retryAfter;
37
+ rateLimitInfo;
38
+ constructor(rateLimitInfo, message) {
39
+ super(message || `Rate limited. Retry after ${rateLimitInfo.retryAfter ?? 'unknown'} seconds`, 429, { rayId: rateLimitInfo.qbApiRay || rateLimitInfo.cfRay });
40
+ this.name = 'RateLimitError';
41
+ this.retryAfter = rateLimitInfo.retryAfter;
42
+ this.rateLimitInfo = rateLimitInfo;
43
+ }
44
+ toJSON() {
45
+ return {
46
+ ...super.toJSON(),
47
+ retryAfter: this.retryAfter,
48
+ rateLimitInfo: this.rateLimitInfo,
49
+ };
50
+ }
51
+ }
52
+ /**
53
+ * Error thrown when authentication fails (HTTP 401)
54
+ */
55
+ export class AuthenticationError extends QuickbaseError {
56
+ constructor(message, options) {
57
+ super(message, 401, options);
58
+ this.name = 'AuthenticationError';
59
+ }
60
+ }
61
+ /**
62
+ * Error thrown when authorization fails (HTTP 403)
63
+ */
64
+ export class AuthorizationError extends QuickbaseError {
65
+ constructor(message, options) {
66
+ super(message, 403, options);
67
+ this.name = 'AuthorizationError';
68
+ }
69
+ }
70
+ /**
71
+ * Error thrown when a resource is not found (HTTP 404)
72
+ */
73
+ export class NotFoundError extends QuickbaseError {
74
+ constructor(message, options) {
75
+ super(message, 404, options);
76
+ this.name = 'NotFoundError';
77
+ }
78
+ }
79
+ /**
80
+ * Error thrown for bad requests (HTTP 400)
81
+ */
82
+ export class ValidationError extends QuickbaseError {
83
+ errors;
84
+ constructor(message, options) {
85
+ super(message, 400, options);
86
+ this.name = 'ValidationError';
87
+ this.errors = options?.errors;
88
+ }
89
+ toJSON() {
90
+ return {
91
+ ...super.toJSON(),
92
+ errors: this.errors,
93
+ };
94
+ }
95
+ }
96
+ /**
97
+ * Error thrown when request times out
98
+ */
99
+ export class TimeoutError extends QuickbaseError {
100
+ timeoutMs;
101
+ constructor(timeoutMs, options) {
102
+ super(`Request timed out after ${timeoutMs}ms`, 0, options);
103
+ this.name = 'TimeoutError';
104
+ this.timeoutMs = timeoutMs;
105
+ }
106
+ toJSON() {
107
+ return {
108
+ ...super.toJSON(),
109
+ timeoutMs: this.timeoutMs,
110
+ };
111
+ }
112
+ }
113
+ /**
114
+ * Error thrown for server errors (HTTP 5xx)
115
+ */
116
+ export class ServerError extends QuickbaseError {
117
+ constructor(statusCode, message, options) {
118
+ super(message, statusCode, options);
119
+ this.name = 'ServerError';
120
+ }
121
+ }
122
+ /**
123
+ * Parse an error response from the QuickBase API
124
+ */
125
+ export async function parseErrorResponse(response, requestUrl) {
126
+ const rayId = response.headers.get('qb-api-ray') || response.headers.get('cf-ray') || undefined;
127
+ let body = null;
128
+ try {
129
+ body = await response.json();
130
+ }
131
+ catch {
132
+ // Response body is not JSON
133
+ }
134
+ const message = body?.message || response.statusText || 'Unknown error';
135
+ const description = body?.description;
136
+ switch (response.status) {
137
+ case 400:
138
+ return new ValidationError(message, {
139
+ description,
140
+ rayId,
141
+ errors: body?.errors,
142
+ });
143
+ case 401:
144
+ return new AuthenticationError(message, { rayId });
145
+ case 403:
146
+ return new AuthorizationError(message, { rayId });
147
+ case 404:
148
+ return new NotFoundError(message, { rayId });
149
+ case 429: {
150
+ const retryAfter = response.headers.get('Retry-After');
151
+ const rateLimitInfo = {
152
+ timestamp: new Date(),
153
+ requestUrl,
154
+ httpStatus: 429,
155
+ retryAfter: retryAfter ? parseInt(retryAfter, 10) : undefined,
156
+ cfRay: response.headers.get('cf-ray') || undefined,
157
+ tid: response.headers.get('tid') || undefined,
158
+ qbApiRay: response.headers.get('qb-api-ray') || undefined,
159
+ attempt: 1, // Will be updated by caller
160
+ };
161
+ return new RateLimitError(rateLimitInfo, message);
162
+ }
163
+ default:
164
+ if (response.status >= 500) {
165
+ return new ServerError(response.status, message, { description, rayId });
166
+ }
167
+ return new QuickbaseError(message, response.status, { description, rayId });
168
+ }
169
+ }
170
+ /**
171
+ * Check if an error is retryable
172
+ */
173
+ export function isRetryableError(error) {
174
+ if (error instanceof RateLimitError) {
175
+ return true;
176
+ }
177
+ if (error instanceof ServerError) {
178
+ return true;
179
+ }
180
+ if (error instanceof TimeoutError) {
181
+ return true;
182
+ }
183
+ return false;
184
+ }
185
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,UAAU,CAAS;IACnB,WAAW,CAAU;IACrB,KAAK,CAAU;IAExB,YACE,OAAe,EACf,UAAkB,EAClB,OAIC;QAED,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;QAE5B,kDAAkD;QAClD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,cAAc;IACvC,UAAU,CAAU;IACpB,aAAa,CAAgB;IAEtC,YAAY,aAA4B,EAAE,OAAgB;QACxD,KAAK,CACH,OAAO,IAAI,6BAA6B,aAAa,CAAC,UAAU,IAAI,SAAS,UAAU,EACvF,GAAG,EACH,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,KAAK,EAAE,CACzD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrD,YAAY,OAAe,EAAE,OAA2C;QACtE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IACpD,YAAY,OAAe,EAAE,OAA2C;QACtE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,cAAc;IAC/C,YAAY,OAAe,EAAE,OAA2C;QACtE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,cAAc;IACxC,MAAM,CAA8C;IAE7D,YACE,OAAe,EACf,OAKC;QAED,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,cAAc;IACrC,SAAS,CAAS;IAE3B,YAAY,SAAiB,EAAE,OAA2C;QACxE,KAAK,CAAC,2BAA2B,SAAS,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,cAAc;IAC7C,YACE,UAAkB,EAClB,OAAe,EACf,OAAiE;QAEjE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAkB,EAClB,UAAkB;IAElB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;IAEhG,IAAI,IAAI,GAA0E,IAAI,CAAC;IACvF,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAoE,CAAC;IACjG,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,UAAU,IAAI,eAAe,CAAC;IACxE,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,CAAC;IAEtC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,GAAG;YACN,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE;gBAClC,WAAW;gBACX,KAAK;gBACL,MAAM,EAAE,IAAI,EAAE,MAAoD;aACnE,CAAC,CAAC;QAEL,KAAK,GAAG;YACN,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAErD,KAAK,GAAG;YACN,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpD,KAAK,GAAG;YACN,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/C,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvD,MAAM,aAAa,GAAkB;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,UAAU;gBACV,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7D,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS;gBAClD,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS;gBAC7C,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,SAAS;gBACzD,OAAO,EAAE,CAAC,EAAE,4BAA4B;aACzC,CAAC;YACF,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;QAED;YACE,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC3B,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Core module exports
3
+ */
4
+ export type { QuickbaseConfig, AuthConfig, UserTokenAuthConfig, TempTokenAuthConfig, SsoTokenAuthConfig, RateLimitConfig, RetryConfig, RequestContext, RateLimitInfo, PaginationMetadata, PaginatedResponse, FieldInfo, ResolvedConfig, } from './types.js';
5
+ export { DEFAULT_CONFIG } from './types.js';
6
+ export { QuickbaseError, RateLimitError, AuthenticationError, AuthorizationError, NotFoundError, ValidationError, TimeoutError, ServerError, parseErrorResponse, isRetryableError, } from './errors.js';
7
+ export { Logger, createLogger } from './logger.js';
8
+ export { resolveConfig, getRealmHostname } from './config.js';
9
+ export { transformDates, isIsoDateString } from './dates.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Core module exports
3
+ */
4
+ export { DEFAULT_CONFIG } from './types.js';
5
+ export { QuickbaseError, RateLimitError, AuthenticationError, AuthorizationError, NotFoundError, ValidationError, TimeoutError, ServerError, parseErrorResponse, isRetryableError, } from './errors.js';
6
+ export { Logger, createLogger } from './logger.js';
7
+ export { resolveConfig, getRealmHostname } from './config.js';
8
+ export { transformDates, isIsoDateString } from './dates.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Logger utility that respects the debug configuration
3
+ */
4
+ export declare class Logger {
5
+ private readonly enabled;
6
+ private readonly prefix;
7
+ constructor(enabled?: boolean, prefix?: string);
8
+ private formatMessage;
9
+ debug(message: string, data?: unknown): void;
10
+ info(message: string, data?: unknown): void;
11
+ warn(message: string, data?: unknown): void;
12
+ error(message: string, error?: unknown): void;
13
+ /**
14
+ * Log rate limit information
15
+ */
16
+ rateLimit(info: {
17
+ url: string;
18
+ status: number;
19
+ retryAfter?: number;
20
+ attempt: number;
21
+ rayId?: string;
22
+ }): void;
23
+ /**
24
+ * Log request timing
25
+ */
26
+ timing(method: string, url: string, durationMs: number): void;
27
+ /**
28
+ * Log retry attempt
29
+ */
30
+ retry(attempt: number, maxAttempts: number, delayMs: number, reason: string): void;
31
+ /**
32
+ * Log token operations (without exposing the actual token)
33
+ */
34
+ token(operation: 'fetch' | 'cache-hit' | 'cache-miss' | 'refresh' | 'expire', dbid?: string): void;
35
+ }
36
+ /**
37
+ * Create a no-op logger for when logging is disabled
38
+ * This avoids conditional checks at every log call
39
+ */
40
+ export declare function createLogger(enabled: boolean): Logger;
41
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,GAAE,OAAe,EAAE,MAAM,GAAE,MAAuB;IAKrE,OAAO,CAAC,aAAa;IAKrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAU5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAU3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAS3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAS7C;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI;IAUR;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAM7D;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQlF;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;CAMnG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAErD"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Logger utility that respects the debug configuration
3
+ */
4
+ export class Logger {
5
+ enabled;
6
+ prefix;
7
+ constructor(enabled = false, prefix = 'quickbase-js') {
8
+ this.enabled = enabled;
9
+ this.prefix = prefix;
10
+ }
11
+ formatMessage(level, message) {
12
+ const timestamp = new Date().toISOString();
13
+ return `[${timestamp}] [${this.prefix}] [${level}] ${message}`;
14
+ }
15
+ debug(message, data) {
16
+ if (this.enabled) {
17
+ if (data !== undefined) {
18
+ console.log(this.formatMessage('DEBUG', message), data);
19
+ }
20
+ else {
21
+ console.log(this.formatMessage('DEBUG', message));
22
+ }
23
+ }
24
+ }
25
+ info(message, data) {
26
+ if (this.enabled) {
27
+ if (data !== undefined) {
28
+ console.info(this.formatMessage('INFO', message), data);
29
+ }
30
+ else {
31
+ console.info(this.formatMessage('INFO', message));
32
+ }
33
+ }
34
+ }
35
+ warn(message, data) {
36
+ // Warnings are always logged, regardless of debug setting
37
+ if (data !== undefined) {
38
+ console.warn(this.formatMessage('WARN', message), data);
39
+ }
40
+ else {
41
+ console.warn(this.formatMessage('WARN', message));
42
+ }
43
+ }
44
+ error(message, error) {
45
+ // Errors are always logged, regardless of debug setting
46
+ if (error !== undefined) {
47
+ console.error(this.formatMessage('ERROR', message), error);
48
+ }
49
+ else {
50
+ console.error(this.formatMessage('ERROR', message));
51
+ }
52
+ }
53
+ /**
54
+ * Log rate limit information
55
+ */
56
+ rateLimit(info) {
57
+ if (this.enabled) {
58
+ this.debug(`Rate limited (attempt ${info.attempt}): ${info.url} - ` +
59
+ `Status ${info.status}, Retry-After: ${info.retryAfter ?? 'not specified'}s` +
60
+ (info.rayId ? `, Ray: ${info.rayId}` : ''));
61
+ }
62
+ }
63
+ /**
64
+ * Log request timing
65
+ */
66
+ timing(method, url, durationMs) {
67
+ if (this.enabled) {
68
+ this.debug(`${method} ${url} completed in ${durationMs}ms`);
69
+ }
70
+ }
71
+ /**
72
+ * Log retry attempt
73
+ */
74
+ retry(attempt, maxAttempts, delayMs, reason) {
75
+ if (this.enabled) {
76
+ this.debug(`Retry ${attempt}/${maxAttempts} in ${delayMs}ms: ${reason}`);
77
+ }
78
+ }
79
+ /**
80
+ * Log token operations (without exposing the actual token)
81
+ */
82
+ token(operation, dbid) {
83
+ if (this.enabled) {
84
+ const target = dbid ? ` for dbid: ${dbid}` : '';
85
+ this.debug(`Token ${operation}${target}`);
86
+ }
87
+ }
88
+ }
89
+ /**
90
+ * Create a no-op logger for when logging is disabled
91
+ * This avoids conditional checks at every log call
92
+ */
93
+ export function createLogger(enabled) {
94
+ return new Logger(enabled);
95
+ }
96
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Core types for the QuickBase SDK v2
3
+ */
4
+ export interface QuickbaseConfig {
5
+ /** Your QuickBase realm (e.g., "mycompany" for mycompany.quickbase.com) */
6
+ realm: string;
7
+ /** Authentication configuration */
8
+ auth: AuthConfig;
9
+ /** Rate limiting and retry configuration */
10
+ rateLimit?: RateLimitConfig;
11
+ /** Request timeout in milliseconds (default: 30000) */
12
+ timeout?: number;
13
+ /** Enable debug logging (default: false) */
14
+ debug?: boolean;
15
+ /** Custom fetch implementation (default: global fetch) */
16
+ fetchApi?: typeof fetch;
17
+ /** Base URL override (default: https://api.quickbase.com/v1) */
18
+ baseUrl?: string;
19
+ /** Automatically paginate all paginated requests when awaited (default: false) */
20
+ autoPaginate?: boolean;
21
+ /** Convert ISO date strings in responses to JavaScript Date objects (default: true) */
22
+ convertDates?: boolean;
23
+ }
24
+ export type AuthConfig = UserTokenAuthConfig | TempTokenAuthConfig | SsoTokenAuthConfig;
25
+ export interface UserTokenAuthConfig {
26
+ type: 'user-token';
27
+ /** Your QuickBase user token */
28
+ userToken: string;
29
+ }
30
+ export interface TempTokenAuthConfig {
31
+ type: 'temp-token';
32
+ /**
33
+ * User token used to fetch temporary tokens (optional)
34
+ * Not required when running in QuickBase Code Pages - the browser session is used
35
+ */
36
+ userToken?: string;
37
+ /** App token (optional, for apps that require it) */
38
+ appToken?: string;
39
+ /** Token lifespan in milliseconds (default: 290000 = ~4m50s) */
40
+ tokenLifespanMs?: number;
41
+ }
42
+ export interface SsoTokenAuthConfig {
43
+ type: 'sso';
44
+ /** SAML token for SSO authentication */
45
+ samlToken: string;
46
+ }
47
+ export interface RateLimitConfig {
48
+ /**
49
+ * Client-side proactive throttling (optional)
50
+ * QuickBase allows 100 requests per 10 seconds per user token
51
+ */
52
+ proactiveThrottle?: {
53
+ enabled: boolean;
54
+ /** Requests allowed per 10 seconds (default: 100) */
55
+ requestsPer10Seconds?: number;
56
+ };
57
+ /** Retry configuration for rate limit and server errors */
58
+ retry?: RetryConfig;
59
+ /** Callback when rate limited */
60
+ onRateLimit?: (info: RateLimitInfo) => void;
61
+ }
62
+ export interface RetryConfig {
63
+ /** Maximum retry attempts (default: 3) */
64
+ maxAttempts?: number;
65
+ /** Initial delay in milliseconds (default: 1000) */
66
+ initialDelayMs?: number;
67
+ /** Maximum delay in milliseconds (default: 30000) */
68
+ maxDelayMs?: number;
69
+ /** Backoff multiplier (default: 2) */
70
+ multiplier?: number;
71
+ }
72
+ export interface RequestContext {
73
+ /** The API method being called */
74
+ methodName: string;
75
+ /** Current attempt number (1-based) */
76
+ attempt: number;
77
+ /** Maximum attempts allowed */
78
+ maxAttempts: number;
79
+ /** Database ID (for temp token auth) */
80
+ dbid?: string;
81
+ /** Request start timestamp */
82
+ startTime: number;
83
+ }
84
+ export interface RateLimitInfo {
85
+ /** When the rate limit occurred */
86
+ timestamp: Date;
87
+ /** The request URL */
88
+ requestUrl: string;
89
+ /** HTTP status code */
90
+ httpStatus: number;
91
+ /** Retry-After header value (seconds) */
92
+ retryAfter?: number;
93
+ /** Cloudflare ray ID */
94
+ cfRay?: string;
95
+ /** Transaction ID */
96
+ tid?: string;
97
+ /** QuickBase API ray ID */
98
+ qbApiRay?: string;
99
+ /** Which retry attempt this was */
100
+ attempt: number;
101
+ }
102
+ export interface PaginationMetadata {
103
+ totalRecords: number;
104
+ numRecords: number;
105
+ numFields: number;
106
+ skip?: number;
107
+ top?: number;
108
+ }
109
+ export interface PaginatedResponse<T> {
110
+ data: T[];
111
+ metadata: PaginationMetadata;
112
+ fields?: FieldInfo[];
113
+ }
114
+ export interface FieldInfo {
115
+ id: number;
116
+ label: string;
117
+ type: string;
118
+ }
119
+ export interface ResolvedConfig {
120
+ realm: string;
121
+ baseUrl: string;
122
+ timeout: number;
123
+ debug: boolean;
124
+ fetchApi: typeof fetch;
125
+ auth: AuthConfig;
126
+ retry: Required<RetryConfig>;
127
+ proactiveThrottle: {
128
+ enabled: boolean;
129
+ requestsPer10Seconds: number;
130
+ };
131
+ onRateLimit?: (info: RateLimitInfo) => void;
132
+ autoPaginate: boolean;
133
+ convertDates: boolean;
134
+ }
135
+ /** Default configuration values */
136
+ export declare const DEFAULT_CONFIG: {
137
+ readonly baseUrl: "https://api.quickbase.com/v1";
138
+ readonly timeout: 30000;
139
+ readonly debug: false;
140
+ readonly retry: {
141
+ readonly maxAttempts: 3;
142
+ readonly initialDelayMs: 1000;
143
+ readonly maxDelayMs: 30000;
144
+ readonly multiplier: 2;
145
+ };
146
+ readonly proactiveThrottle: {
147
+ readonly enabled: false;
148
+ readonly requestsPer10Seconds: 100;
149
+ };
150
+ readonly tempTokenLifespanMs: 290000;
151
+ readonly autoPaginate: false;
152
+ readonly convertDates: true;
153
+ };
154
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IAEd,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAC;IAEjB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAC;IAExB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,kFAAkF;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,uFAAuF;IACvF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,qDAAqD;QACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IAEF,2DAA2D;IAC3D,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,iCAAiC;IACjC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,SAAS,EAAE,IAAI,CAAC;IAChB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,KAAK,CAAC;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7B,iBAAiB,EAAE;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,mCAAmC;AACnC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;CAiBjB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Core types for the QuickBase SDK v2
3
+ */
4
+ /** Default configuration values */
5
+ export const DEFAULT_CONFIG = {
6
+ baseUrl: 'https://api.quickbase.com/v1',
7
+ timeout: 30000,
8
+ debug: false,
9
+ retry: {
10
+ maxAttempts: 3,
11
+ initialDelayMs: 1000,
12
+ maxDelayMs: 30000,
13
+ multiplier: 2,
14
+ },
15
+ proactiveThrottle: {
16
+ enabled: false,
17
+ requestsPer10Seconds: 100,
18
+ },
19
+ tempTokenLifespanMs: 290000, // ~4m50s (QuickBase tokens expire at 5m)
20
+ autoPaginate: false,
21
+ convertDates: true,
22
+ };
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Auto-generated QuickBase API client implementation
3
+ * DO NOT EDIT - Regenerate with: npm run spec:generate
4
+ */
5
+ import type { QuickbaseAPI } from './types.js';
6
+ export type RequestFn = <T>(options: {
7
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
8
+ path: string;
9
+ body?: unknown;
10
+ query?: Record<string, string | number | boolean | undefined>;
11
+ }) => Promise<T>;
12
+ /**
13
+ * Create typed API methods from a request function
14
+ * @param request - The request executor function
15
+ * @param autoPaginate - Default auto-pagination behavior (default: false)
16
+ */
17
+ export declare function createApiMethods(request: RequestFn, autoPaginate?: boolean): QuickbaseAPI;
18
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/generated/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,YAAY,EA6Ib,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE;IACnC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC/D,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,GAAE,OAAe,GAAG,YAAY,CA45ChG"}