@xata.io/client 0.0.0-alpha.vec0bff6 → 0.0.0-alpha.vec3a2b1

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.mjs CHANGED
@@ -1,3 +1,26 @@
1
+ const defaultTrace = async (name, fn, _options) => {
2
+ return await fn({
3
+ name,
4
+ setAttributes: () => {
5
+ return;
6
+ }
7
+ });
8
+ };
9
+ const TraceAttributes = {
10
+ KIND: "xata.trace.kind",
11
+ VERSION: "xata.sdk.version",
12
+ TABLE: "xata.table",
13
+ HTTP_REQUEST_ID: "http.request_id",
14
+ HTTP_STATUS_CODE: "http.status_code",
15
+ HTTP_HOST: "http.host",
16
+ HTTP_SCHEME: "http.scheme",
17
+ HTTP_USER_AGENT: "http.user_agent",
18
+ HTTP_METHOD: "http.method",
19
+ HTTP_URL: "http.url",
20
+ HTTP_ROUTE: "http.route",
21
+ HTTP_TARGET: "http.target"
22
+ };
23
+
1
24
  function notEmpty(value) {
2
25
  return value !== null && value !== void 0;
3
26
  }
@@ -16,6 +39,21 @@ function isString(value) {
16
39
  function isStringArray(value) {
17
40
  return isDefined(value) && Array.isArray(value) && value.every(isString);
18
41
  }
42
+ function isNumber(value) {
43
+ return isDefined(value) && typeof value === "number";
44
+ }
45
+ function parseNumber(value) {
46
+ if (isNumber(value)) {
47
+ return value;
48
+ }
49
+ if (isString(value)) {
50
+ const parsed = Number(value);
51
+ if (!Number.isNaN(parsed)) {
52
+ return parsed;
53
+ }
54
+ }
55
+ return void 0;
56
+ }
19
57
  function toBase64(value) {
20
58
  try {
21
59
  return btoa(value);
@@ -24,16 +62,39 @@ function toBase64(value) {
24
62
  return buf.from(value).toString("base64");
25
63
  }
26
64
  }
65
+ function deepMerge(a, b) {
66
+ const result = { ...a };
67
+ for (const [key, value] of Object.entries(b)) {
68
+ if (isObject(value) && isObject(result[key])) {
69
+ result[key] = deepMerge(result[key], value);
70
+ } else {
71
+ result[key] = value;
72
+ }
73
+ }
74
+ return result;
75
+ }
76
+ function chunk(array, chunkSize) {
77
+ const result = [];
78
+ for (let i = 0; i < array.length; i += chunkSize) {
79
+ result.push(array.slice(i, i + chunkSize));
80
+ }
81
+ return result;
82
+ }
83
+ async function timeout(ms) {
84
+ return new Promise((resolve) => setTimeout(resolve, ms));
85
+ }
27
86
 
28
87
  function getEnvironment() {
29
88
  try {
30
- if (isObject(process) && isObject(process.env)) {
89
+ if (isDefined(process) && isDefined(process.env)) {
31
90
  return {
32
91
  apiKey: process.env.XATA_API_KEY ?? getGlobalApiKey(),
33
92
  databaseURL: process.env.XATA_DATABASE_URL ?? getGlobalDatabaseURL(),
34
93
  branch: process.env.XATA_BRANCH ?? getGlobalBranch(),
35
- envBranch: process.env.VERCEL_GIT_COMMIT_REF ?? process.env.CF_PAGES_BRANCH ?? process.env.BRANCH,
36
- fallbackBranch: process.env.XATA_FALLBACK_BRANCH ?? getGlobalFallbackBranch()
94
+ deployPreview: process.env.XATA_PREVIEW,
95
+ deployPreviewBranch: process.env.XATA_PREVIEW_BRANCH,
96
+ vercelGitCommitRef: process.env.VERCEL_GIT_COMMIT_REF,
97
+ vercelGitRepoOwner: process.env.VERCEL_GIT_REPO_OWNER
37
98
  };
38
99
  }
39
100
  } catch (err) {
@@ -44,8 +105,10 @@ function getEnvironment() {
44
105
  apiKey: Deno.env.get("XATA_API_KEY") ?? getGlobalApiKey(),
45
106
  databaseURL: Deno.env.get("XATA_DATABASE_URL") ?? getGlobalDatabaseURL(),
46
107
  branch: Deno.env.get("XATA_BRANCH") ?? getGlobalBranch(),
47
- envBranch: Deno.env.get("VERCEL_GIT_COMMIT_REF") ?? Deno.env.get("CF_PAGES_BRANCH") ?? Deno.env.get("BRANCH"),
48
- fallbackBranch: Deno.env.get("XATA_FALLBACK_BRANCH") ?? getGlobalFallbackBranch()
108
+ deployPreview: Deno.env.get("XATA_PREVIEW"),
109
+ deployPreviewBranch: Deno.env.get("XATA_PREVIEW_BRANCH"),
110
+ vercelGitCommitRef: Deno.env.get("VERCEL_GIT_COMMIT_REF"),
111
+ vercelGitRepoOwner: Deno.env.get("VERCEL_GIT_REPO_OWNER")
49
112
  };
50
113
  }
51
114
  } catch (err) {
@@ -54,10 +117,31 @@ function getEnvironment() {
54
117
  apiKey: getGlobalApiKey(),
55
118
  databaseURL: getGlobalDatabaseURL(),
56
119
  branch: getGlobalBranch(),
57
- envBranch: void 0,
58
- fallbackBranch: getGlobalFallbackBranch()
120
+ deployPreview: void 0,
121
+ deployPreviewBranch: void 0,
122
+ vercelGitCommitRef: void 0,
123
+ vercelGitRepoOwner: void 0
59
124
  };
60
125
  }
126
+ function getEnableBrowserVariable() {
127
+ try {
128
+ if (isObject(process) && isObject(process.env) && process.env.XATA_ENABLE_BROWSER !== void 0) {
129
+ return process.env.XATA_ENABLE_BROWSER === "true";
130
+ }
131
+ } catch (err) {
132
+ }
133
+ try {
134
+ if (isObject(Deno) && isObject(Deno.env) && Deno.env.get("XATA_ENABLE_BROWSER") !== void 0) {
135
+ return Deno.env.get("XATA_ENABLE_BROWSER") === "true";
136
+ }
137
+ } catch (err) {
138
+ }
139
+ try {
140
+ return XATA_ENABLE_BROWSER === true || XATA_ENABLE_BROWSER === "true";
141
+ } catch (err) {
142
+ return void 0;
143
+ }
144
+ }
61
145
  function getGlobalApiKey() {
62
146
  try {
63
147
  return XATA_API_KEY;
@@ -79,56 +163,334 @@ function getGlobalBranch() {
79
163
  return void 0;
80
164
  }
81
165
  }
82
- function getGlobalFallbackBranch() {
166
+ function getDatabaseURL() {
83
167
  try {
84
- return XATA_FALLBACK_BRANCH;
168
+ const { databaseURL } = getEnvironment();
169
+ return databaseURL;
85
170
  } catch (err) {
86
171
  return void 0;
87
172
  }
88
173
  }
89
- async function getGitBranch() {
90
- const cmd = ["git", "branch", "--show-current"];
91
- const fullCmd = cmd.join(" ");
92
- const nodeModule = ["child", "process"].join("_");
93
- const execOptions = { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] };
174
+ function getAPIKey() {
94
175
  try {
95
- if (typeof require === "function") {
96
- return require(nodeModule).execSync(fullCmd, execOptions).trim();
97
- }
98
- const { execSync } = await import(nodeModule);
99
- return execSync(fullCmd, execOptions).toString().trim();
176
+ const { apiKey } = getEnvironment();
177
+ return apiKey;
100
178
  } catch (err) {
179
+ return void 0;
101
180
  }
181
+ }
182
+ function getBranch() {
102
183
  try {
103
- if (isObject(Deno)) {
104
- const process2 = Deno.run({ cmd, stdout: "piped", stderr: "null" });
105
- return new TextDecoder().decode(await process2.output()).trim();
106
- }
184
+ const { branch } = getEnvironment();
185
+ return branch ?? "main";
107
186
  } catch (err) {
187
+ return void 0;
108
188
  }
109
189
  }
110
-
111
- function getAPIKey() {
190
+ function buildPreviewBranchName({ org, branch }) {
191
+ return `preview-${org}-${branch}`;
192
+ }
193
+ function getPreviewBranch() {
112
194
  try {
113
- const { apiKey } = getEnvironment();
114
- return apiKey;
195
+ const { deployPreview, deployPreviewBranch, vercelGitCommitRef, vercelGitRepoOwner } = getEnvironment();
196
+ if (deployPreviewBranch)
197
+ return deployPreviewBranch;
198
+ switch (deployPreview) {
199
+ case "vercel": {
200
+ if (!vercelGitCommitRef || !vercelGitRepoOwner) {
201
+ console.warn("XATA_PREVIEW=vercel but VERCEL_GIT_COMMIT_REF or VERCEL_GIT_REPO_OWNER is not valid");
202
+ return void 0;
203
+ }
204
+ return buildPreviewBranchName({ org: vercelGitRepoOwner, branch: vercelGitCommitRef });
205
+ }
206
+ }
207
+ return void 0;
115
208
  } catch (err) {
116
209
  return void 0;
117
210
  }
118
211
  }
119
212
 
213
+ var __accessCheck$8 = (obj, member, msg) => {
214
+ if (!member.has(obj))
215
+ throw TypeError("Cannot " + msg);
216
+ };
217
+ var __privateGet$8 = (obj, member, getter) => {
218
+ __accessCheck$8(obj, member, "read from private field");
219
+ return getter ? getter.call(obj) : member.get(obj);
220
+ };
221
+ var __privateAdd$8 = (obj, member, value) => {
222
+ if (member.has(obj))
223
+ throw TypeError("Cannot add the same private member more than once");
224
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
225
+ };
226
+ var __privateSet$8 = (obj, member, value, setter) => {
227
+ __accessCheck$8(obj, member, "write to private field");
228
+ setter ? setter.call(obj, value) : member.set(obj, value);
229
+ return value;
230
+ };
231
+ var __privateMethod$4 = (obj, member, method) => {
232
+ __accessCheck$8(obj, member, "access private method");
233
+ return method;
234
+ };
235
+ var _fetch, _queue, _concurrency, _enqueue, enqueue_fn;
120
236
  function getFetchImplementation(userFetch) {
121
237
  const globalFetch = typeof fetch !== "undefined" ? fetch : void 0;
122
238
  const fetchImpl = userFetch ?? globalFetch;
123
239
  if (!fetchImpl) {
124
240
  throw new Error(
125
- `The \`fetch\` option passed to the Xata client is resolving to a falsy value and may not be correctly imported.`
241
+ `Couldn't find \`fetch\`. Install a fetch implementation such as \`node-fetch\` and pass it explicitly.`
126
242
  );
127
243
  }
128
244
  return fetchImpl;
129
245
  }
246
+ class ApiRequestPool {
247
+ constructor(concurrency = 10) {
248
+ __privateAdd$8(this, _enqueue);
249
+ __privateAdd$8(this, _fetch, void 0);
250
+ __privateAdd$8(this, _queue, void 0);
251
+ __privateAdd$8(this, _concurrency, void 0);
252
+ __privateSet$8(this, _queue, []);
253
+ __privateSet$8(this, _concurrency, concurrency);
254
+ this.running = 0;
255
+ this.started = 0;
256
+ }
257
+ setFetch(fetch2) {
258
+ __privateSet$8(this, _fetch, fetch2);
259
+ }
260
+ getFetch() {
261
+ if (!__privateGet$8(this, _fetch)) {
262
+ throw new Error("Fetch not set");
263
+ }
264
+ return __privateGet$8(this, _fetch);
265
+ }
266
+ request(url, options) {
267
+ const start = new Date();
268
+ const fetch2 = this.getFetch();
269
+ const runRequest = async (stalled = false) => {
270
+ const response = await fetch2(url, options);
271
+ if (response.status === 429) {
272
+ const rateLimitReset = parseNumber(response.headers?.get("x-ratelimit-reset")) ?? 1;
273
+ await timeout(rateLimitReset * 1e3);
274
+ return await runRequest(true);
275
+ }
276
+ if (stalled) {
277
+ const stalledTime = new Date().getTime() - start.getTime();
278
+ console.warn(`A request to Xata hit your workspace limits, was retried and stalled for ${stalledTime}ms`);
279
+ }
280
+ return response;
281
+ };
282
+ return __privateMethod$4(this, _enqueue, enqueue_fn).call(this, async () => {
283
+ return await runRequest();
284
+ });
285
+ }
286
+ }
287
+ _fetch = new WeakMap();
288
+ _queue = new WeakMap();
289
+ _concurrency = new WeakMap();
290
+ _enqueue = new WeakSet();
291
+ enqueue_fn = function(task) {
292
+ const promise = new Promise((resolve) => __privateGet$8(this, _queue).push(resolve)).finally(() => {
293
+ this.started--;
294
+ this.running++;
295
+ }).then(() => task()).finally(() => {
296
+ this.running--;
297
+ const next = __privateGet$8(this, _queue).shift();
298
+ if (next !== void 0) {
299
+ this.started++;
300
+ next();
301
+ }
302
+ });
303
+ if (this.running + this.started < __privateGet$8(this, _concurrency)) {
304
+ const next = __privateGet$8(this, _queue).shift();
305
+ if (next !== void 0) {
306
+ this.started++;
307
+ next();
308
+ }
309
+ }
310
+ return promise;
311
+ };
312
+
313
+ function generateUUID() {
314
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
315
+ const r = Math.random() * 16 | 0, v = c == "x" ? r : r & 3 | 8;
316
+ return v.toString(16);
317
+ });
318
+ }
319
+
320
+ async function getBytes(stream, onChunk) {
321
+ const reader = stream.getReader();
322
+ let result;
323
+ while (!(result = await reader.read()).done) {
324
+ onChunk(result.value);
325
+ }
326
+ }
327
+ function getLines(onLine) {
328
+ let buffer;
329
+ let position;
330
+ let fieldLength;
331
+ let discardTrailingNewline = false;
332
+ return function onChunk(arr) {
333
+ if (buffer === void 0) {
334
+ buffer = arr;
335
+ position = 0;
336
+ fieldLength = -1;
337
+ } else {
338
+ buffer = concat(buffer, arr);
339
+ }
340
+ const bufLength = buffer.length;
341
+ let lineStart = 0;
342
+ while (position < bufLength) {
343
+ if (discardTrailingNewline) {
344
+ if (buffer[position] === 10 /* NewLine */) {
345
+ lineStart = ++position;
346
+ }
347
+ discardTrailingNewline = false;
348
+ }
349
+ let lineEnd = -1;
350
+ for (; position < bufLength && lineEnd === -1; ++position) {
351
+ switch (buffer[position]) {
352
+ case 58 /* Colon */:
353
+ if (fieldLength === -1) {
354
+ fieldLength = position - lineStart;
355
+ }
356
+ break;
357
+ case 13 /* CarriageReturn */:
358
+ discardTrailingNewline = true;
359
+ case 10 /* NewLine */:
360
+ lineEnd = position;
361
+ break;
362
+ }
363
+ }
364
+ if (lineEnd === -1) {
365
+ break;
366
+ }
367
+ onLine(buffer.subarray(lineStart, lineEnd), fieldLength);
368
+ lineStart = position;
369
+ fieldLength = -1;
370
+ }
371
+ if (lineStart === bufLength) {
372
+ buffer = void 0;
373
+ } else if (lineStart !== 0) {
374
+ buffer = buffer.subarray(lineStart);
375
+ position -= lineStart;
376
+ }
377
+ };
378
+ }
379
+ function getMessages(onId, onRetry, onMessage) {
380
+ let message = newMessage();
381
+ const decoder = new TextDecoder();
382
+ return function onLine(line, fieldLength) {
383
+ if (line.length === 0) {
384
+ onMessage?.(message);
385
+ message = newMessage();
386
+ } else if (fieldLength > 0) {
387
+ const field = decoder.decode(line.subarray(0, fieldLength));
388
+ const valueOffset = fieldLength + (line[fieldLength + 1] === 32 /* Space */ ? 2 : 1);
389
+ const value = decoder.decode(line.subarray(valueOffset));
390
+ switch (field) {
391
+ case "data":
392
+ message.data = message.data ? message.data + "\n" + value : value;
393
+ break;
394
+ case "event":
395
+ message.event = value;
396
+ break;
397
+ case "id":
398
+ onId(message.id = value);
399
+ break;
400
+ case "retry":
401
+ const retry = parseInt(value, 10);
402
+ if (!isNaN(retry)) {
403
+ onRetry(message.retry = retry);
404
+ }
405
+ break;
406
+ }
407
+ }
408
+ };
409
+ }
410
+ function concat(a, b) {
411
+ const res = new Uint8Array(a.length + b.length);
412
+ res.set(a);
413
+ res.set(b, a.length);
414
+ return res;
415
+ }
416
+ function newMessage() {
417
+ return {
418
+ data: "",
419
+ event: "",
420
+ id: "",
421
+ retry: void 0
422
+ };
423
+ }
424
+ const EventStreamContentType = "text/event-stream";
425
+ const LastEventId = "last-event-id";
426
+ function fetchEventSource(input, {
427
+ signal: inputSignal,
428
+ headers: inputHeaders,
429
+ onopen: inputOnOpen,
430
+ onmessage,
431
+ onclose,
432
+ onerror,
433
+ fetch: inputFetch,
434
+ ...rest
435
+ }) {
436
+ return new Promise((resolve, reject) => {
437
+ const headers = { ...inputHeaders };
438
+ if (!headers.accept) {
439
+ headers.accept = EventStreamContentType;
440
+ }
441
+ let curRequestController;
442
+ function dispose() {
443
+ curRequestController.abort();
444
+ }
445
+ inputSignal?.addEventListener("abort", () => {
446
+ dispose();
447
+ resolve();
448
+ });
449
+ const fetchImpl = inputFetch ?? fetch;
450
+ const onopen = inputOnOpen ?? defaultOnOpen;
451
+ async function create() {
452
+ curRequestController = new AbortController();
453
+ try {
454
+ const response = await fetchImpl(input, {
455
+ ...rest,
456
+ headers,
457
+ signal: curRequestController.signal
458
+ });
459
+ await onopen(response);
460
+ await getBytes(
461
+ response.body,
462
+ getLines(
463
+ getMessages(
464
+ (id) => {
465
+ if (id) {
466
+ headers[LastEventId] = id;
467
+ } else {
468
+ delete headers[LastEventId];
469
+ }
470
+ },
471
+ (_retry) => {
472
+ },
473
+ onmessage
474
+ )
475
+ )
476
+ );
477
+ onclose?.();
478
+ dispose();
479
+ resolve();
480
+ } catch (err) {
481
+ }
482
+ }
483
+ create();
484
+ });
485
+ }
486
+ function defaultOnOpen(response) {
487
+ const contentType = response.headers?.get("content-type");
488
+ if (!contentType?.startsWith(EventStreamContentType)) {
489
+ throw new Error(`Expected content-type to be ${EventStreamContentType}, Actual: ${contentType}`);
490
+ }
491
+ }
130
492
 
131
- const VERSION = "0.0.0-alpha.vec0bff6";
493
+ const VERSION = "0.23.4";
132
494
 
133
495
  class ErrorWithCause extends Error {
134
496
  constructor(message, options) {
@@ -139,7 +501,7 @@ class FetcherError extends ErrorWithCause {
139
501
  constructor(status, data, requestId) {
140
502
  super(getMessage(data));
141
503
  this.status = status;
142
- this.errors = isBulkError(data) ? data.errors : void 0;
504
+ this.errors = isBulkError(data) ? data.errors : [{ message: getMessage(data), status }];
143
505
  this.requestId = requestId;
144
506
  if (data instanceof Error) {
145
507
  this.stack = data.stack;
@@ -171,6 +533,7 @@ function getMessage(data) {
171
533
  }
172
534
  }
173
535
 
536
+ const pool = new ApiRequestPool();
174
537
  const resolveUrl = (url, queryParams = {}, pathParams = {}) => {
175
538
  const cleanQueryParams = Object.entries(queryParams).reduce((acc, [key, value]) => {
176
539
  if (value === void 0 || value === null)
@@ -179,310 +542,406 @@ const resolveUrl = (url, queryParams = {}, pathParams = {}) => {
179
542
  }, {});
180
543
  const query = new URLSearchParams(cleanQueryParams).toString();
181
544
  const queryString = query.length > 0 ? `?${query}` : "";
182
- return url.replace(/\{\w*\}/g, (key) => pathParams[key.slice(1, -1)]) + queryString;
545
+ const cleanPathParams = Object.entries(pathParams).reduce((acc, [key, value]) => {
546
+ return { ...acc, [key]: encodeURIComponent(String(value ?? "")).replace("%3A", ":") };
547
+ }, {});
548
+ return url.replace(/\{\w*\}/g, (key) => cleanPathParams[key.slice(1, -1)]) + queryString;
183
549
  };
184
550
  function buildBaseUrl({
551
+ endpoint,
185
552
  path,
186
553
  workspacesApiUrl,
187
554
  apiUrl,
188
- pathParams
555
+ pathParams = {}
189
556
  }) {
190
- if (!pathParams?.workspace)
191
- return `${apiUrl}${path}`;
192
- const url = typeof workspacesApiUrl === "string" ? `${workspacesApiUrl}${path}` : workspacesApiUrl(path, pathParams);
193
- return url.replace("{workspaceId}", pathParams.workspace);
557
+ if (endpoint === "dataPlane") {
558
+ const url = isString(workspacesApiUrl) ? `${workspacesApiUrl}${path}` : workspacesApiUrl(path, pathParams);
559
+ const urlWithWorkspace = isString(pathParams.workspace) ? url.replace("{workspaceId}", String(pathParams.workspace)) : url;
560
+ return isString(pathParams.region) ? urlWithWorkspace.replace("{region}", String(pathParams.region)) : urlWithWorkspace;
561
+ }
562
+ return `${apiUrl}${path}`;
194
563
  }
195
564
  function hostHeader(url) {
196
565
  const pattern = /.*:\/\/(?<host>[^/]+).*/;
197
566
  const { groups } = pattern.exec(url) ?? {};
198
567
  return groups?.host ? { Host: groups.host } : {};
199
568
  }
569
+ const defaultClientID = generateUUID();
200
570
  async function fetch$1({
201
571
  url: path,
202
572
  method,
203
573
  body,
204
- headers,
574
+ headers: customHeaders,
205
575
  pathParams,
206
576
  queryParams,
207
- fetchImpl,
577
+ fetch: fetch2,
208
578
  apiKey,
579
+ endpoint,
209
580
  apiUrl,
210
- workspacesApiUrl
581
+ workspacesApiUrl,
582
+ trace,
583
+ signal,
584
+ clientID,
585
+ sessionID,
586
+ clientName,
587
+ xataAgentExtra,
588
+ fetchOptions = {}
211
589
  }) {
212
- const baseUrl = buildBaseUrl({ path, workspacesApiUrl, pathParams, apiUrl });
590
+ pool.setFetch(fetch2);
591
+ return await trace(
592
+ `${method.toUpperCase()} ${path}`,
593
+ async ({ setAttributes }) => {
594
+ const baseUrl = buildBaseUrl({ endpoint, path, workspacesApiUrl, pathParams, apiUrl });
595
+ const fullUrl = resolveUrl(baseUrl, queryParams, pathParams);
596
+ const url = fullUrl.includes("localhost") ? fullUrl.replace(/^[^.]+\./, "http://") : fullUrl;
597
+ setAttributes({
598
+ [TraceAttributes.HTTP_URL]: url,
599
+ [TraceAttributes.HTTP_TARGET]: resolveUrl(path, queryParams, pathParams)
600
+ });
601
+ const xataAgent = compact([
602
+ ["client", "TS_SDK"],
603
+ ["version", VERSION],
604
+ isDefined(clientName) ? ["service", clientName] : void 0,
605
+ ...Object.entries(xataAgentExtra ?? {})
606
+ ]).map(([key, value]) => `${key}=${value}`).join("; ");
607
+ const headers = {
608
+ "Accept-Encoding": "identity",
609
+ "Content-Type": "application/json",
610
+ "X-Xata-Client-ID": clientID ?? defaultClientID,
611
+ "X-Xata-Session-ID": sessionID ?? generateUUID(),
612
+ "X-Xata-Agent": xataAgent,
613
+ ...customHeaders,
614
+ ...hostHeader(fullUrl),
615
+ Authorization: `Bearer ${apiKey}`
616
+ };
617
+ const response = await pool.request(url, {
618
+ ...fetchOptions,
619
+ method: method.toUpperCase(),
620
+ body: body ? JSON.stringify(body) : void 0,
621
+ headers,
622
+ signal
623
+ });
624
+ const { host, protocol } = parseUrl(response.url);
625
+ const requestId = response.headers?.get("x-request-id") ?? void 0;
626
+ setAttributes({
627
+ [TraceAttributes.KIND]: "http",
628
+ [TraceAttributes.HTTP_REQUEST_ID]: requestId,
629
+ [TraceAttributes.HTTP_STATUS_CODE]: response.status,
630
+ [TraceAttributes.HTTP_HOST]: host,
631
+ [TraceAttributes.HTTP_SCHEME]: protocol?.replace(":", "")
632
+ });
633
+ if (response.status === 204) {
634
+ return {};
635
+ }
636
+ if (response.status === 429) {
637
+ throw new FetcherError(response.status, "Rate limit exceeded", requestId);
638
+ }
639
+ try {
640
+ const jsonResponse = await response.json();
641
+ if (response.ok) {
642
+ return jsonResponse;
643
+ }
644
+ throw new FetcherError(response.status, jsonResponse, requestId);
645
+ } catch (error) {
646
+ throw new FetcherError(response.status, error, requestId);
647
+ }
648
+ },
649
+ { [TraceAttributes.HTTP_METHOD]: method.toUpperCase(), [TraceAttributes.HTTP_ROUTE]: path }
650
+ );
651
+ }
652
+ function fetchSSERequest({
653
+ url: path,
654
+ method,
655
+ body,
656
+ headers: customHeaders,
657
+ pathParams,
658
+ queryParams,
659
+ fetch: fetch2,
660
+ apiKey,
661
+ endpoint,
662
+ apiUrl,
663
+ workspacesApiUrl,
664
+ onMessage,
665
+ onError,
666
+ onClose,
667
+ signal,
668
+ clientID,
669
+ sessionID,
670
+ clientName,
671
+ xataAgentExtra
672
+ }) {
673
+ const baseUrl = buildBaseUrl({ endpoint, path, workspacesApiUrl, pathParams, apiUrl });
213
674
  const fullUrl = resolveUrl(baseUrl, queryParams, pathParams);
214
675
  const url = fullUrl.includes("localhost") ? fullUrl.replace(/^[^.]+\./, "http://") : fullUrl;
215
- const response = await fetchImpl(url, {
216
- method: method.toUpperCase(),
217
- body: body ? JSON.stringify(body) : void 0,
676
+ void fetchEventSource(url, {
677
+ method,
678
+ body: JSON.stringify(body),
679
+ fetch: fetch2,
680
+ signal,
218
681
  headers: {
219
- "Content-Type": "application/json",
220
- "User-Agent": `Xata client-ts/${VERSION}`,
221
- ...headers,
222
- ...hostHeader(fullUrl),
223
- Authorization: `Bearer ${apiKey}`
682
+ "X-Xata-Client-ID": clientID ?? defaultClientID,
683
+ "X-Xata-Session-ID": sessionID ?? generateUUID(),
684
+ "X-Xata-Agent": compact([
685
+ ["client", "TS_SDK"],
686
+ ["version", VERSION],
687
+ isDefined(clientName) ? ["service", clientName] : void 0,
688
+ ...Object.entries(xataAgentExtra ?? {})
689
+ ]).map(([key, value]) => `${key}=${value}`).join("; "),
690
+ ...customHeaders,
691
+ Authorization: `Bearer ${apiKey}`,
692
+ "Content-Type": "application/json"
693
+ },
694
+ onmessage(ev) {
695
+ onMessage?.(JSON.parse(ev.data));
696
+ },
697
+ onerror(ev) {
698
+ onError?.(JSON.parse(ev.data));
699
+ },
700
+ onclose() {
701
+ onClose?.();
224
702
  }
225
703
  });
226
- if (response.status === 204) {
227
- return {};
228
- }
229
- const requestId = response.headers?.get("x-request-id") ?? void 0;
704
+ }
705
+ function parseUrl(url) {
230
706
  try {
231
- const jsonResponse = await response.json();
232
- if (response.ok) {
233
- return jsonResponse;
234
- }
235
- throw new FetcherError(response.status, jsonResponse, requestId);
707
+ const { host, protocol } = new URL(url);
708
+ return { host, protocol };
236
709
  } catch (error) {
237
- throw new FetcherError(response.status, error, requestId);
710
+ return {};
238
711
  }
239
712
  }
240
713
 
241
- const getUser = (variables) => fetch$1({ url: "/user", method: "get", ...variables });
242
- const updateUser = (variables) => fetch$1({ url: "/user", method: "put", ...variables });
243
- const deleteUser = (variables) => fetch$1({ url: "/user", method: "delete", ...variables });
244
- const getUserAPIKeys = (variables) => fetch$1({
245
- url: "/user/keys",
246
- method: "get",
247
- ...variables
248
- });
249
- const createUserAPIKey = (variables) => fetch$1({
250
- url: "/user/keys/{keyName}",
251
- method: "post",
252
- ...variables
253
- });
254
- const deleteUserAPIKey = (variables) => fetch$1({
255
- url: "/user/keys/{keyName}",
256
- method: "delete",
257
- ...variables
258
- });
259
- const createWorkspace = (variables) => fetch$1({
260
- url: "/workspaces",
261
- method: "post",
262
- ...variables
263
- });
264
- const getWorkspacesList = (variables) => fetch$1({
265
- url: "/workspaces",
266
- method: "get",
267
- ...variables
268
- });
269
- const getWorkspace = (variables) => fetch$1({
270
- url: "/workspaces/{workspaceId}",
271
- method: "get",
272
- ...variables
273
- });
274
- const updateWorkspace = (variables) => fetch$1({
275
- url: "/workspaces/{workspaceId}",
276
- method: "put",
277
- ...variables
278
- });
279
- const deleteWorkspace = (variables) => fetch$1({
280
- url: "/workspaces/{workspaceId}",
281
- method: "delete",
282
- ...variables
283
- });
284
- const getWorkspaceMembersList = (variables) => fetch$1({
285
- url: "/workspaces/{workspaceId}/members",
286
- method: "get",
287
- ...variables
288
- });
289
- const updateWorkspaceMemberRole = (variables) => fetch$1({ url: "/workspaces/{workspaceId}/members/{userId}", method: "put", ...variables });
290
- const removeWorkspaceMember = (variables) => fetch$1({
291
- url: "/workspaces/{workspaceId}/members/{userId}",
292
- method: "delete",
293
- ...variables
294
- });
295
- const inviteWorkspaceMember = (variables) => fetch$1({ url: "/workspaces/{workspaceId}/invites", method: "post", ...variables });
296
- const updateWorkspaceMemberInvite = (variables) => fetch$1({ url: "/workspaces/{workspaceId}/invites/{inviteId}", method: "patch", ...variables });
297
- const cancelWorkspaceMemberInvite = (variables) => fetch$1({
298
- url: "/workspaces/{workspaceId}/invites/{inviteId}",
299
- method: "delete",
300
- ...variables
301
- });
302
- const resendWorkspaceMemberInvite = (variables) => fetch$1({
303
- url: "/workspaces/{workspaceId}/invites/{inviteId}/resend",
304
- method: "post",
305
- ...variables
306
- });
307
- const acceptWorkspaceMemberInvite = (variables) => fetch$1({
308
- url: "/workspaces/{workspaceId}/invites/{inviteKey}/accept",
309
- method: "post",
310
- ...variables
311
- });
312
- const getDatabaseList = (variables) => fetch$1({
313
- url: "/dbs",
314
- method: "get",
315
- ...variables
316
- });
317
- const getBranchList = (variables) => fetch$1({
318
- url: "/dbs/{dbName}",
319
- method: "get",
320
- ...variables
321
- });
322
- const createDatabase = (variables) => fetch$1({
323
- url: "/dbs/{dbName}",
324
- method: "put",
325
- ...variables
326
- });
327
- const deleteDatabase = (variables) => fetch$1({
714
+ const dataPlaneFetch = async (options) => fetch$1({ ...options, endpoint: "dataPlane" });
715
+
716
+ const getBranchList = (variables, signal) => dataPlaneFetch({
328
717
  url: "/dbs/{dbName}",
329
- method: "delete",
330
- ...variables
331
- });
332
- const getGitBranchesMapping = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "get", ...variables });
333
- const addGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "post", ...variables });
334
- const removeGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "delete", ...variables });
335
- const resolveBranch = (variables) => fetch$1({
336
- url: "/dbs/{dbName}/resolveBranch",
337
718
  method: "get",
338
- ...variables
719
+ ...variables,
720
+ signal
339
721
  });
340
- const getBranchDetails = (variables) => fetch$1({
722
+ const getBranchDetails = (variables, signal) => dataPlaneFetch({
341
723
  url: "/db/{dbBranchName}",
342
724
  method: "get",
343
- ...variables
725
+ ...variables,
726
+ signal
344
727
  });
345
- const createBranch = (variables) => fetch$1({ url: "/db/{dbBranchName}", method: "put", ...variables });
346
- const deleteBranch = (variables) => fetch$1({
728
+ const createBranch = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}", method: "put", ...variables, signal });
729
+ const deleteBranch = (variables, signal) => dataPlaneFetch({
347
730
  url: "/db/{dbBranchName}",
348
731
  method: "delete",
349
- ...variables
732
+ ...variables,
733
+ signal
350
734
  });
351
- const updateBranchMetadata = (variables) => fetch$1({
735
+ const copyBranch = (variables, signal) => dataPlaneFetch({
736
+ url: "/db/{dbBranchName}/copy",
737
+ method: "post",
738
+ ...variables,
739
+ signal
740
+ });
741
+ const updateBranchMetadata = (variables, signal) => dataPlaneFetch({
352
742
  url: "/db/{dbBranchName}/metadata",
353
743
  method: "put",
354
- ...variables
744
+ ...variables,
745
+ signal
355
746
  });
356
- const getBranchMetadata = (variables) => fetch$1({
747
+ const getBranchMetadata = (variables, signal) => dataPlaneFetch({
357
748
  url: "/db/{dbBranchName}/metadata",
358
749
  method: "get",
359
- ...variables
750
+ ...variables,
751
+ signal
360
752
  });
361
- const getBranchMigrationHistory = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations", method: "get", ...variables });
362
- const executeBranchMigrationPlan = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations/execute", method: "post", ...variables });
363
- const getBranchMigrationPlan = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations/plan", method: "post", ...variables });
364
- const getBranchStats = (variables) => fetch$1({
753
+ const getBranchStats = (variables, signal) => dataPlaneFetch({
365
754
  url: "/db/{dbBranchName}/stats",
366
755
  method: "get",
367
- ...variables
756
+ ...variables,
757
+ signal
758
+ });
759
+ const getGitBranchesMapping = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/gitBranches", method: "get", ...variables, signal });
760
+ const addGitBranchesEntry = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/gitBranches", method: "post", ...variables, signal });
761
+ const removeGitBranchesEntry = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/gitBranches", method: "delete", ...variables, signal });
762
+ const resolveBranch = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/resolveBranch", method: "get", ...variables, signal });
763
+ const getBranchMigrationHistory = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/migrations", method: "get", ...variables, signal });
764
+ const getBranchMigrationPlan = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/migrations/plan", method: "post", ...variables, signal });
765
+ const executeBranchMigrationPlan = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/migrations/execute", method: "post", ...variables, signal });
766
+ const queryMigrationRequests = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/migrations/query", method: "post", ...variables, signal });
767
+ const createMigrationRequest = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/migrations", method: "post", ...variables, signal });
768
+ const getMigrationRequest = (variables, signal) => dataPlaneFetch({
769
+ url: "/dbs/{dbName}/migrations/{mrNumber}",
770
+ method: "get",
771
+ ...variables,
772
+ signal
773
+ });
774
+ const updateMigrationRequest = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/migrations/{mrNumber}", method: "patch", ...variables, signal });
775
+ const listMigrationRequestsCommits = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/migrations/{mrNumber}/commits", method: "post", ...variables, signal });
776
+ const compareMigrationRequest = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/migrations/{mrNumber}/compare", method: "post", ...variables, signal });
777
+ const getMigrationRequestIsMerged = (variables, signal) => dataPlaneFetch({ url: "/dbs/{dbName}/migrations/{mrNumber}/merge", method: "get", ...variables, signal });
778
+ const mergeMigrationRequest = (variables, signal) => dataPlaneFetch({
779
+ url: "/dbs/{dbName}/migrations/{mrNumber}/merge",
780
+ method: "post",
781
+ ...variables,
782
+ signal
368
783
  });
369
- const createTable = (variables) => fetch$1({
784
+ const getBranchSchemaHistory = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/schema/history", method: "post", ...variables, signal });
785
+ const compareBranchWithUserSchema = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/schema/compare", method: "post", ...variables, signal });
786
+ const compareBranchSchemas = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/schema/compare/{branchName}", method: "post", ...variables, signal });
787
+ const updateBranchSchema = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/schema/update", method: "post", ...variables, signal });
788
+ const previewBranchSchemaEdit = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/schema/preview", method: "post", ...variables, signal });
789
+ const applyBranchSchemaEdit = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/schema/apply", method: "post", ...variables, signal });
790
+ const pushBranchMigrations = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/schema/push", method: "post", ...variables, signal });
791
+ const createTable = (variables, signal) => dataPlaneFetch({
370
792
  url: "/db/{dbBranchName}/tables/{tableName}",
371
793
  method: "put",
372
- ...variables
794
+ ...variables,
795
+ signal
373
796
  });
374
- const deleteTable = (variables) => fetch$1({
797
+ const deleteTable = (variables, signal) => dataPlaneFetch({
375
798
  url: "/db/{dbBranchName}/tables/{tableName}",
376
799
  method: "delete",
377
- ...variables
378
- });
379
- const updateTable = (variables) => fetch$1({
380
- url: "/db/{dbBranchName}/tables/{tableName}",
381
- method: "patch",
382
- ...variables
800
+ ...variables,
801
+ signal
383
802
  });
384
- const getTableSchema = (variables) => fetch$1({
803
+ const updateTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}", method: "patch", ...variables, signal });
804
+ const getTableSchema = (variables, signal) => dataPlaneFetch({
385
805
  url: "/db/{dbBranchName}/tables/{tableName}/schema",
386
806
  method: "get",
387
- ...variables
388
- });
389
- const setTableSchema = (variables) => fetch$1({
390
- url: "/db/{dbBranchName}/tables/{tableName}/schema",
391
- method: "put",
392
- ...variables
807
+ ...variables,
808
+ signal
393
809
  });
394
- const getTableColumns = (variables) => fetch$1({
810
+ const setTableSchema = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/schema", method: "put", ...variables, signal });
811
+ const getTableColumns = (variables, signal) => dataPlaneFetch({
395
812
  url: "/db/{dbBranchName}/tables/{tableName}/columns",
396
813
  method: "get",
397
- ...variables
398
- });
399
- const addTableColumn = (variables) => fetch$1({
400
- url: "/db/{dbBranchName}/tables/{tableName}/columns",
401
- method: "post",
402
- ...variables
814
+ ...variables,
815
+ signal
403
816
  });
404
- const getColumn = (variables) => fetch$1({
817
+ const addTableColumn = (variables, signal) => dataPlaneFetch(
818
+ { url: "/db/{dbBranchName}/tables/{tableName}/columns", method: "post", ...variables, signal }
819
+ );
820
+ const getColumn = (variables, signal) => dataPlaneFetch({
405
821
  url: "/db/{dbBranchName}/tables/{tableName}/columns/{columnName}",
406
822
  method: "get",
407
- ...variables
823
+ ...variables,
824
+ signal
408
825
  });
409
- const deleteColumn = (variables) => fetch$1({
826
+ const updateColumn = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/columns/{columnName}", method: "patch", ...variables, signal });
827
+ const deleteColumn = (variables, signal) => dataPlaneFetch({
410
828
  url: "/db/{dbBranchName}/tables/{tableName}/columns/{columnName}",
411
829
  method: "delete",
412
- ...variables
830
+ ...variables,
831
+ signal
413
832
  });
414
- const updateColumn = (variables) => fetch$1({
415
- url: "/db/{dbBranchName}/tables/{tableName}/columns/{columnName}",
416
- method: "patch",
417
- ...variables
833
+ const branchTransaction = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/transaction", method: "post", ...variables, signal });
834
+ const insertRecord = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data", method: "post", ...variables, signal });
835
+ const getFileItem = (variables, signal) => dataPlaneFetch({
836
+ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}/column/{columnName}/file/{fileId}",
837
+ method: "get",
838
+ ...variables,
839
+ signal
418
840
  });
419
- const insertRecord = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data", method: "post", ...variables });
420
- const insertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "put", ...variables });
421
- const updateRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "patch", ...variables });
422
- const upsertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "post", ...variables });
423
- const deleteRecord = (variables) => fetch$1({
424
- url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}",
841
+ const putFileItem = (variables, signal) => dataPlaneFetch({
842
+ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}/column/{columnName}/file/{fileId}",
843
+ method: "put",
844
+ ...variables,
845
+ signal
846
+ });
847
+ const deleteFileItem = (variables, signal) => dataPlaneFetch({
848
+ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}/column/{columnName}/file/{fileId}",
425
849
  method: "delete",
426
- ...variables
850
+ ...variables,
851
+ signal
852
+ });
853
+ const getFile = (variables, signal) => dataPlaneFetch({
854
+ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}/column/{columnName}/file",
855
+ method: "get",
856
+ ...variables,
857
+ signal
427
858
  });
428
- const getRecord = (variables) => fetch$1({
859
+ const putFile = (variables, signal) => dataPlaneFetch({
860
+ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}/column/{columnName}/file",
861
+ method: "put",
862
+ ...variables,
863
+ signal
864
+ });
865
+ const getRecord = (variables, signal) => dataPlaneFetch({
429
866
  url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}",
430
867
  method: "get",
431
- ...variables
868
+ ...variables,
869
+ signal
432
870
  });
433
- const bulkInsertTableRecords = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/bulk", method: "post", ...variables });
434
- const queryTable = (variables) => fetch$1({
871
+ const insertRecordWithID = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "put", ...variables, signal });
872
+ const updateRecordWithID = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "patch", ...variables, signal });
873
+ const upsertRecordWithID = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "post", ...variables, signal });
874
+ const deleteRecord = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "delete", ...variables, signal });
875
+ const bulkInsertTableRecords = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/bulk", method: "post", ...variables, signal });
876
+ const queryTable = (variables, signal) => dataPlaneFetch({
435
877
  url: "/db/{dbBranchName}/tables/{tableName}/query",
436
878
  method: "post",
437
- ...variables
879
+ ...variables,
880
+ signal
881
+ });
882
+ const searchBranch = (variables, signal) => dataPlaneFetch({
883
+ url: "/db/{dbBranchName}/search",
884
+ method: "post",
885
+ ...variables,
886
+ signal
438
887
  });
439
- const searchTable = (variables) => fetch$1({
888
+ const searchTable = (variables, signal) => dataPlaneFetch({
440
889
  url: "/db/{dbBranchName}/tables/{tableName}/search",
441
890
  method: "post",
442
- ...variables
891
+ ...variables,
892
+ signal
443
893
  });
444
- const searchBranch = (variables) => fetch$1({
445
- url: "/db/{dbBranchName}/search",
894
+ const sqlQuery = (variables, signal) => dataPlaneFetch({
895
+ url: "/db/{dbBranchName}/sql",
446
896
  method: "post",
447
- ...variables
897
+ ...variables,
898
+ signal
448
899
  });
449
- const operationsByTag = {
450
- users: { getUser, updateUser, deleteUser, getUserAPIKeys, createUserAPIKey, deleteUserAPIKey },
451
- workspaces: {
452
- createWorkspace,
453
- getWorkspacesList,
454
- getWorkspace,
455
- updateWorkspace,
456
- deleteWorkspace,
457
- getWorkspaceMembersList,
458
- updateWorkspaceMemberRole,
459
- removeWorkspaceMember,
460
- inviteWorkspaceMember,
461
- updateWorkspaceMemberInvite,
462
- cancelWorkspaceMemberInvite,
463
- resendWorkspaceMemberInvite,
464
- acceptWorkspaceMemberInvite
465
- },
466
- database: {
467
- getDatabaseList,
468
- createDatabase,
469
- deleteDatabase,
470
- getGitBranchesMapping,
471
- addGitBranchesEntry,
472
- removeGitBranchesEntry,
473
- resolveBranch
474
- },
900
+ const vectorSearchTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/vectorSearch", method: "post", ...variables, signal });
901
+ const askTable = (variables, signal) => dataPlaneFetch({
902
+ url: "/db/{dbBranchName}/tables/{tableName}/ask",
903
+ method: "post",
904
+ ...variables,
905
+ signal
906
+ });
907
+ const summarizeTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/summarize", method: "post", ...variables, signal });
908
+ const aggregateTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/aggregate", method: "post", ...variables, signal });
909
+ const operationsByTag$2 = {
475
910
  branch: {
476
911
  getBranchList,
477
912
  getBranchDetails,
478
913
  createBranch,
479
914
  deleteBranch,
915
+ copyBranch,
480
916
  updateBranchMetadata,
481
917
  getBranchMetadata,
918
+ getBranchStats,
919
+ getGitBranchesMapping,
920
+ addGitBranchesEntry,
921
+ removeGitBranchesEntry,
922
+ resolveBranch
923
+ },
924
+ migrations: {
482
925
  getBranchMigrationHistory,
483
- executeBranchMigrationPlan,
484
926
  getBranchMigrationPlan,
485
- getBranchStats
927
+ executeBranchMigrationPlan,
928
+ getBranchSchemaHistory,
929
+ compareBranchWithUserSchema,
930
+ compareBranchSchemas,
931
+ updateBranchSchema,
932
+ previewBranchSchemaEdit,
933
+ applyBranchSchemaEdit,
934
+ pushBranchMigrations
935
+ },
936
+ migrationRequests: {
937
+ queryMigrationRequests,
938
+ createMigrationRequest,
939
+ getMigrationRequest,
940
+ updateMigrationRequest,
941
+ listMigrationRequestsCommits,
942
+ compareMigrationRequest,
943
+ getMigrationRequestIsMerged,
944
+ mergeMigrationRequest
486
945
  },
487
946
  table: {
488
947
  createTable,
@@ -493,27 +952,178 @@ const operationsByTag = {
493
952
  getTableColumns,
494
953
  addTableColumn,
495
954
  getColumn,
496
- deleteColumn,
497
- updateColumn
955
+ updateColumn,
956
+ deleteColumn
498
957
  },
499
958
  records: {
959
+ branchTransaction,
500
960
  insertRecord,
961
+ getRecord,
501
962
  insertRecordWithID,
502
963
  updateRecordWithID,
503
964
  upsertRecordWithID,
504
965
  deleteRecord,
505
- getRecord,
506
- bulkInsertTableRecords,
966
+ bulkInsertTableRecords
967
+ },
968
+ files: { getFileItem, putFileItem, deleteFileItem, getFile, putFile },
969
+ searchAndFilter: {
507
970
  queryTable,
971
+ searchBranch,
508
972
  searchTable,
509
- searchBranch
973
+ sqlQuery,
974
+ vectorSearchTable,
975
+ askTable,
976
+ summarizeTable,
977
+ aggregateTable
510
978
  }
511
979
  };
512
980
 
981
+ const controlPlaneFetch = async (options) => fetch$1({ ...options, endpoint: "controlPlane" });
982
+
983
+ const getUser = (variables, signal) => controlPlaneFetch({
984
+ url: "/user",
985
+ method: "get",
986
+ ...variables,
987
+ signal
988
+ });
989
+ const updateUser = (variables, signal) => controlPlaneFetch({
990
+ url: "/user",
991
+ method: "put",
992
+ ...variables,
993
+ signal
994
+ });
995
+ const deleteUser = (variables, signal) => controlPlaneFetch({
996
+ url: "/user",
997
+ method: "delete",
998
+ ...variables,
999
+ signal
1000
+ });
1001
+ const getUserAPIKeys = (variables, signal) => controlPlaneFetch({
1002
+ url: "/user/keys",
1003
+ method: "get",
1004
+ ...variables,
1005
+ signal
1006
+ });
1007
+ const createUserAPIKey = (variables, signal) => controlPlaneFetch({
1008
+ url: "/user/keys/{keyName}",
1009
+ method: "post",
1010
+ ...variables,
1011
+ signal
1012
+ });
1013
+ const deleteUserAPIKey = (variables, signal) => controlPlaneFetch({
1014
+ url: "/user/keys/{keyName}",
1015
+ method: "delete",
1016
+ ...variables,
1017
+ signal
1018
+ });
1019
+ const getWorkspacesList = (variables, signal) => controlPlaneFetch({
1020
+ url: "/workspaces",
1021
+ method: "get",
1022
+ ...variables,
1023
+ signal
1024
+ });
1025
+ const createWorkspace = (variables, signal) => controlPlaneFetch({
1026
+ url: "/workspaces",
1027
+ method: "post",
1028
+ ...variables,
1029
+ signal
1030
+ });
1031
+ const getWorkspace = (variables, signal) => controlPlaneFetch({
1032
+ url: "/workspaces/{workspaceId}",
1033
+ method: "get",
1034
+ ...variables,
1035
+ signal
1036
+ });
1037
+ const updateWorkspace = (variables, signal) => controlPlaneFetch({
1038
+ url: "/workspaces/{workspaceId}",
1039
+ method: "put",
1040
+ ...variables,
1041
+ signal
1042
+ });
1043
+ const deleteWorkspace = (variables, signal) => controlPlaneFetch({
1044
+ url: "/workspaces/{workspaceId}",
1045
+ method: "delete",
1046
+ ...variables,
1047
+ signal
1048
+ });
1049
+ const getWorkspaceMembersList = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/members", method: "get", ...variables, signal });
1050
+ const updateWorkspaceMemberRole = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/members/{userId}", method: "put", ...variables, signal });
1051
+ const removeWorkspaceMember = (variables, signal) => controlPlaneFetch({
1052
+ url: "/workspaces/{workspaceId}/members/{userId}",
1053
+ method: "delete",
1054
+ ...variables,
1055
+ signal
1056
+ });
1057
+ const inviteWorkspaceMember = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites", method: "post", ...variables, signal });
1058
+ const updateWorkspaceMemberInvite = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites/{inviteId}", method: "patch", ...variables, signal });
1059
+ const cancelWorkspaceMemberInvite = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites/{inviteId}", method: "delete", ...variables, signal });
1060
+ const acceptWorkspaceMemberInvite = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites/{inviteKey}/accept", method: "post", ...variables, signal });
1061
+ const resendWorkspaceMemberInvite = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites/{inviteId}/resend", method: "post", ...variables, signal });
1062
+ const getDatabaseList = (variables, signal) => controlPlaneFetch({
1063
+ url: "/workspaces/{workspaceId}/dbs",
1064
+ method: "get",
1065
+ ...variables,
1066
+ signal
1067
+ });
1068
+ const createDatabase = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}", method: "put", ...variables, signal });
1069
+ const deleteDatabase = (variables, signal) => controlPlaneFetch({
1070
+ url: "/workspaces/{workspaceId}/dbs/{dbName}",
1071
+ method: "delete",
1072
+ ...variables,
1073
+ signal
1074
+ });
1075
+ const getDatabaseMetadata = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}", method: "get", ...variables, signal });
1076
+ const updateDatabaseMetadata = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}", method: "patch", ...variables, signal });
1077
+ const renameDatabase = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}/rename", method: "post", ...variables, signal });
1078
+ const getDatabaseGithubSettings = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}/github", method: "get", ...variables, signal });
1079
+ const updateDatabaseGithubSettings = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}/github", method: "put", ...variables, signal });
1080
+ const deleteDatabaseGithubSettings = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}/github", method: "delete", ...variables, signal });
1081
+ const listRegions = (variables, signal) => controlPlaneFetch({
1082
+ url: "/workspaces/{workspaceId}/regions",
1083
+ method: "get",
1084
+ ...variables,
1085
+ signal
1086
+ });
1087
+ const operationsByTag$1 = {
1088
+ users: { getUser, updateUser, deleteUser },
1089
+ authentication: { getUserAPIKeys, createUserAPIKey, deleteUserAPIKey },
1090
+ workspaces: {
1091
+ getWorkspacesList,
1092
+ createWorkspace,
1093
+ getWorkspace,
1094
+ updateWorkspace,
1095
+ deleteWorkspace,
1096
+ getWorkspaceMembersList,
1097
+ updateWorkspaceMemberRole,
1098
+ removeWorkspaceMember
1099
+ },
1100
+ invites: {
1101
+ inviteWorkspaceMember,
1102
+ updateWorkspaceMemberInvite,
1103
+ cancelWorkspaceMemberInvite,
1104
+ acceptWorkspaceMemberInvite,
1105
+ resendWorkspaceMemberInvite
1106
+ },
1107
+ databases: {
1108
+ getDatabaseList,
1109
+ createDatabase,
1110
+ deleteDatabase,
1111
+ getDatabaseMetadata,
1112
+ updateDatabaseMetadata,
1113
+ renameDatabase,
1114
+ getDatabaseGithubSettings,
1115
+ updateDatabaseGithubSettings,
1116
+ deleteDatabaseGithubSettings,
1117
+ listRegions
1118
+ }
1119
+ };
1120
+
1121
+ const operationsByTag = deepMerge(operationsByTag$2, operationsByTag$1);
1122
+
513
1123
  function getHostUrl(provider, type) {
514
- if (isValidAlias(provider)) {
1124
+ if (isHostProviderAlias(provider)) {
515
1125
  return providers[provider][type];
516
- } else if (isValidBuilder(provider)) {
1126
+ } else if (isHostProviderBuilder(provider)) {
517
1127
  return provider[type];
518
1128
  }
519
1129
  throw new Error("Invalid API provider");
@@ -521,19 +1131,49 @@ function getHostUrl(provider, type) {
521
1131
  const providers = {
522
1132
  production: {
523
1133
  main: "https://api.xata.io",
524
- workspaces: "https://{workspaceId}.xata.sh"
1134
+ workspaces: "https://{workspaceId}.{region}.xata.sh"
525
1135
  },
526
1136
  staging: {
527
- main: "https://staging.xatabase.co",
528
- workspaces: "https://{workspaceId}.staging.xatabase.co"
1137
+ main: "https://api.staging-xata.dev",
1138
+ workspaces: "https://{workspaceId}.{region}.staging-xata.dev"
1139
+ },
1140
+ dev: {
1141
+ main: "https://api.dev-xata.dev",
1142
+ workspaces: "https://{workspaceId}.{region}.dev-xata.dev"
529
1143
  }
530
1144
  };
531
- function isValidAlias(alias) {
1145
+ function isHostProviderAlias(alias) {
532
1146
  return isString(alias) && Object.keys(providers).includes(alias);
533
1147
  }
534
- function isValidBuilder(builder) {
1148
+ function isHostProviderBuilder(builder) {
535
1149
  return isObject(builder) && isString(builder.main) && isString(builder.workspaces);
536
1150
  }
1151
+ function parseProviderString(provider = "production") {
1152
+ if (isHostProviderAlias(provider)) {
1153
+ return provider;
1154
+ }
1155
+ const [main, workspaces] = provider.split(",");
1156
+ if (!main || !workspaces)
1157
+ return null;
1158
+ return { main, workspaces };
1159
+ }
1160
+ function buildProviderString(provider) {
1161
+ if (isHostProviderAlias(provider))
1162
+ return provider;
1163
+ return `${provider.main},${provider.workspaces}`;
1164
+ }
1165
+ function parseWorkspacesUrlParts(url) {
1166
+ if (!isString(url))
1167
+ return null;
1168
+ const regex = /(?:https:\/\/)?([^.]+)(?:\.([^.]+))\.xata\.sh.*/;
1169
+ const regexDev = /(?:https:\/\/)?([^.]+)(?:\.([^.]+))\.dev-xata\.dev.*/;
1170
+ const regexStaging = /(?:https:\/\/)?([^.]+)(?:\.([^.]+))\.staging-xata\.dev.*/;
1171
+ const regexProdTesting = /(?:https:\/\/)?([^.]+)(?:\.([^.]+))\.xata\.tech.*/;
1172
+ const match = url.match(regex) || url.match(regexDev) || url.match(regexStaging) || url.match(regexProdTesting);
1173
+ if (!match)
1174
+ return null;
1175
+ return { workspace: match[1], region: match[2] };
1176
+ }
537
1177
 
538
1178
  var __accessCheck$7 = (obj, member, msg) => {
539
1179
  if (!member.has(obj))
@@ -559,15 +1199,21 @@ class XataApiClient {
559
1199
  __privateAdd$7(this, _extraProps, void 0);
560
1200
  __privateAdd$7(this, _namespaces, {});
561
1201
  const provider = options.host ?? "production";
562
- const apiKey = options?.apiKey ?? getAPIKey();
1202
+ const apiKey = options.apiKey ?? getAPIKey();
1203
+ const trace = options.trace ?? defaultTrace;
1204
+ const clientID = generateUUID();
563
1205
  if (!apiKey) {
564
1206
  throw new Error("Could not resolve a valid apiKey");
565
1207
  }
566
1208
  __privateSet$7(this, _extraProps, {
567
1209
  apiUrl: getHostUrl(provider, "main"),
568
1210
  workspacesApiUrl: getHostUrl(provider, "workspaces"),
569
- fetchImpl: getFetchImplementation(options.fetch),
570
- apiKey
1211
+ fetch: getFetchImplementation(options.fetch),
1212
+ apiKey,
1213
+ trace,
1214
+ clientName: options.clientName,
1215
+ xataAgentExtra: options.xataAgentExtra,
1216
+ clientID
571
1217
  });
572
1218
  }
573
1219
  get user() {
@@ -575,21 +1221,41 @@ class XataApiClient {
575
1221
  __privateGet$7(this, _namespaces).user = new UserApi(__privateGet$7(this, _extraProps));
576
1222
  return __privateGet$7(this, _namespaces).user;
577
1223
  }
1224
+ get authentication() {
1225
+ if (!__privateGet$7(this, _namespaces).authentication)
1226
+ __privateGet$7(this, _namespaces).authentication = new AuthenticationApi(__privateGet$7(this, _extraProps));
1227
+ return __privateGet$7(this, _namespaces).authentication;
1228
+ }
578
1229
  get workspaces() {
579
1230
  if (!__privateGet$7(this, _namespaces).workspaces)
580
1231
  __privateGet$7(this, _namespaces).workspaces = new WorkspaceApi(__privateGet$7(this, _extraProps));
581
1232
  return __privateGet$7(this, _namespaces).workspaces;
582
1233
  }
583
- get databases() {
584
- if (!__privateGet$7(this, _namespaces).databases)
585
- __privateGet$7(this, _namespaces).databases = new DatabaseApi(__privateGet$7(this, _extraProps));
586
- return __privateGet$7(this, _namespaces).databases;
1234
+ get invites() {
1235
+ if (!__privateGet$7(this, _namespaces).invites)
1236
+ __privateGet$7(this, _namespaces).invites = new InvitesApi(__privateGet$7(this, _extraProps));
1237
+ return __privateGet$7(this, _namespaces).invites;
1238
+ }
1239
+ get database() {
1240
+ if (!__privateGet$7(this, _namespaces).database)
1241
+ __privateGet$7(this, _namespaces).database = new DatabaseApi(__privateGet$7(this, _extraProps));
1242
+ return __privateGet$7(this, _namespaces).database;
587
1243
  }
588
1244
  get branches() {
589
1245
  if (!__privateGet$7(this, _namespaces).branches)
590
1246
  __privateGet$7(this, _namespaces).branches = new BranchApi(__privateGet$7(this, _extraProps));
591
1247
  return __privateGet$7(this, _namespaces).branches;
592
1248
  }
1249
+ get migrations() {
1250
+ if (!__privateGet$7(this, _namespaces).migrations)
1251
+ __privateGet$7(this, _namespaces).migrations = new MigrationsApi(__privateGet$7(this, _extraProps));
1252
+ return __privateGet$7(this, _namespaces).migrations;
1253
+ }
1254
+ get migrationRequests() {
1255
+ if (!__privateGet$7(this, _namespaces).migrationRequests)
1256
+ __privateGet$7(this, _namespaces).migrationRequests = new MigrationRequestsApi(__privateGet$7(this, _extraProps));
1257
+ return __privateGet$7(this, _namespaces).migrationRequests;
1258
+ }
593
1259
  get tables() {
594
1260
  if (!__privateGet$7(this, _namespaces).tables)
595
1261
  __privateGet$7(this, _namespaces).tables = new TableApi(__privateGet$7(this, _extraProps));
@@ -600,6 +1266,16 @@ class XataApiClient {
600
1266
  __privateGet$7(this, _namespaces).records = new RecordsApi(__privateGet$7(this, _extraProps));
601
1267
  return __privateGet$7(this, _namespaces).records;
602
1268
  }
1269
+ get files() {
1270
+ if (!__privateGet$7(this, _namespaces).files)
1271
+ __privateGet$7(this, _namespaces).files = new FilesApi(__privateGet$7(this, _extraProps));
1272
+ return __privateGet$7(this, _namespaces).files;
1273
+ }
1274
+ get searchAndFilter() {
1275
+ if (!__privateGet$7(this, _namespaces).searchAndFilter)
1276
+ __privateGet$7(this, _namespaces).searchAndFilter = new SearchAndFilterApi(__privateGet$7(this, _extraProps));
1277
+ return __privateGet$7(this, _namespaces).searchAndFilter;
1278
+ }
603
1279
  }
604
1280
  _extraProps = new WeakMap();
605
1281
  _namespaces = new WeakMap();
@@ -610,24 +1286,29 @@ class UserApi {
610
1286
  getUser() {
611
1287
  return operationsByTag.users.getUser({ ...this.extraProps });
612
1288
  }
613
- updateUser(user) {
1289
+ updateUser({ user }) {
614
1290
  return operationsByTag.users.updateUser({ body: user, ...this.extraProps });
615
1291
  }
616
1292
  deleteUser() {
617
1293
  return operationsByTag.users.deleteUser({ ...this.extraProps });
618
1294
  }
1295
+ }
1296
+ class AuthenticationApi {
1297
+ constructor(extraProps) {
1298
+ this.extraProps = extraProps;
1299
+ }
619
1300
  getUserAPIKeys() {
620
- return operationsByTag.users.getUserAPIKeys({ ...this.extraProps });
1301
+ return operationsByTag.authentication.getUserAPIKeys({ ...this.extraProps });
621
1302
  }
622
- createUserAPIKey(keyName) {
623
- return operationsByTag.users.createUserAPIKey({
624
- pathParams: { keyName },
1303
+ createUserAPIKey({ name }) {
1304
+ return operationsByTag.authentication.createUserAPIKey({
1305
+ pathParams: { keyName: name },
625
1306
  ...this.extraProps
626
1307
  });
627
1308
  }
628
- deleteUserAPIKey(keyName) {
629
- return operationsByTag.users.deleteUserAPIKey({
630
- pathParams: { keyName },
1309
+ deleteUserAPIKey({ name }) {
1310
+ return operationsByTag.authentication.deleteUserAPIKey({
1311
+ pathParams: { keyName: name },
631
1312
  ...this.extraProps
632
1313
  });
633
1314
  }
@@ -636,368 +1317,1140 @@ class WorkspaceApi {
636
1317
  constructor(extraProps) {
637
1318
  this.extraProps = extraProps;
638
1319
  }
639
- createWorkspace(workspaceMeta) {
1320
+ getWorkspacesList() {
1321
+ return operationsByTag.workspaces.getWorkspacesList({ ...this.extraProps });
1322
+ }
1323
+ createWorkspace({ data }) {
640
1324
  return operationsByTag.workspaces.createWorkspace({
641
- body: workspaceMeta,
1325
+ body: data,
642
1326
  ...this.extraProps
643
1327
  });
644
1328
  }
645
- getWorkspacesList() {
646
- return operationsByTag.workspaces.getWorkspacesList({ ...this.extraProps });
647
- }
648
- getWorkspace(workspaceId) {
1329
+ getWorkspace({ workspace }) {
649
1330
  return operationsByTag.workspaces.getWorkspace({
650
- pathParams: { workspaceId },
1331
+ pathParams: { workspaceId: workspace },
651
1332
  ...this.extraProps
652
1333
  });
653
1334
  }
654
- updateWorkspace(workspaceId, workspaceMeta) {
1335
+ updateWorkspace({
1336
+ workspace,
1337
+ update
1338
+ }) {
655
1339
  return operationsByTag.workspaces.updateWorkspace({
656
- pathParams: { workspaceId },
657
- body: workspaceMeta,
1340
+ pathParams: { workspaceId: workspace },
1341
+ body: update,
658
1342
  ...this.extraProps
659
1343
  });
660
1344
  }
661
- deleteWorkspace(workspaceId) {
1345
+ deleteWorkspace({ workspace }) {
662
1346
  return operationsByTag.workspaces.deleteWorkspace({
663
- pathParams: { workspaceId },
1347
+ pathParams: { workspaceId: workspace },
664
1348
  ...this.extraProps
665
1349
  });
666
1350
  }
667
- getWorkspaceMembersList(workspaceId) {
1351
+ getWorkspaceMembersList({ workspace }) {
668
1352
  return operationsByTag.workspaces.getWorkspaceMembersList({
669
- pathParams: { workspaceId },
1353
+ pathParams: { workspaceId: workspace },
670
1354
  ...this.extraProps
671
1355
  });
672
1356
  }
673
- updateWorkspaceMemberRole(workspaceId, userId, role) {
1357
+ updateWorkspaceMemberRole({
1358
+ workspace,
1359
+ user,
1360
+ role
1361
+ }) {
674
1362
  return operationsByTag.workspaces.updateWorkspaceMemberRole({
675
- pathParams: { workspaceId, userId },
1363
+ pathParams: { workspaceId: workspace, userId: user },
676
1364
  body: { role },
677
1365
  ...this.extraProps
678
1366
  });
679
1367
  }
680
- removeWorkspaceMember(workspaceId, userId) {
1368
+ removeWorkspaceMember({
1369
+ workspace,
1370
+ user
1371
+ }) {
681
1372
  return operationsByTag.workspaces.removeWorkspaceMember({
682
- pathParams: { workspaceId, userId },
1373
+ pathParams: { workspaceId: workspace, userId: user },
683
1374
  ...this.extraProps
684
1375
  });
685
1376
  }
686
- inviteWorkspaceMember(workspaceId, email, role) {
687
- return operationsByTag.workspaces.inviteWorkspaceMember({
688
- pathParams: { workspaceId },
1377
+ }
1378
+ class InvitesApi {
1379
+ constructor(extraProps) {
1380
+ this.extraProps = extraProps;
1381
+ }
1382
+ inviteWorkspaceMember({
1383
+ workspace,
1384
+ email,
1385
+ role
1386
+ }) {
1387
+ return operationsByTag.invites.inviteWorkspaceMember({
1388
+ pathParams: { workspaceId: workspace },
689
1389
  body: { email, role },
690
1390
  ...this.extraProps
691
1391
  });
692
1392
  }
693
- updateWorkspaceMemberInvite(workspaceId, inviteId, role) {
694
- return operationsByTag.workspaces.updateWorkspaceMemberInvite({
695
- pathParams: { workspaceId, inviteId },
1393
+ updateWorkspaceMemberInvite({
1394
+ workspace,
1395
+ invite,
1396
+ role
1397
+ }) {
1398
+ return operationsByTag.invites.updateWorkspaceMemberInvite({
1399
+ pathParams: { workspaceId: workspace, inviteId: invite },
696
1400
  body: { role },
697
1401
  ...this.extraProps
698
1402
  });
699
1403
  }
700
- cancelWorkspaceMemberInvite(workspaceId, inviteId) {
701
- return operationsByTag.workspaces.cancelWorkspaceMemberInvite({
702
- pathParams: { workspaceId, inviteId },
1404
+ cancelWorkspaceMemberInvite({
1405
+ workspace,
1406
+ invite
1407
+ }) {
1408
+ return operationsByTag.invites.cancelWorkspaceMemberInvite({
1409
+ pathParams: { workspaceId: workspace, inviteId: invite },
703
1410
  ...this.extraProps
704
1411
  });
705
1412
  }
706
- resendWorkspaceMemberInvite(workspaceId, inviteId) {
707
- return operationsByTag.workspaces.resendWorkspaceMemberInvite({
708
- pathParams: { workspaceId, inviteId },
1413
+ acceptWorkspaceMemberInvite({
1414
+ workspace,
1415
+ key
1416
+ }) {
1417
+ return operationsByTag.invites.acceptWorkspaceMemberInvite({
1418
+ pathParams: { workspaceId: workspace, inviteKey: key },
709
1419
  ...this.extraProps
710
1420
  });
711
1421
  }
712
- acceptWorkspaceMemberInvite(workspaceId, inviteKey) {
713
- return operationsByTag.workspaces.acceptWorkspaceMemberInvite({
714
- pathParams: { workspaceId, inviteKey },
1422
+ resendWorkspaceMemberInvite({
1423
+ workspace,
1424
+ invite
1425
+ }) {
1426
+ return operationsByTag.invites.resendWorkspaceMemberInvite({
1427
+ pathParams: { workspaceId: workspace, inviteId: invite },
715
1428
  ...this.extraProps
716
1429
  });
717
1430
  }
718
1431
  }
719
- class DatabaseApi {
1432
+ class BranchApi {
720
1433
  constructor(extraProps) {
721
1434
  this.extraProps = extraProps;
722
1435
  }
723
- getDatabaseList(workspace) {
724
- return operationsByTag.database.getDatabaseList({
725
- pathParams: { workspace },
1436
+ getBranchList({
1437
+ workspace,
1438
+ region,
1439
+ database
1440
+ }) {
1441
+ return operationsByTag.branch.getBranchList({
1442
+ pathParams: { workspace, region, dbName: database },
1443
+ ...this.extraProps
1444
+ });
1445
+ }
1446
+ getBranchDetails({
1447
+ workspace,
1448
+ region,
1449
+ database,
1450
+ branch
1451
+ }) {
1452
+ return operationsByTag.branch.getBranchDetails({
1453
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
726
1454
  ...this.extraProps
727
1455
  });
728
1456
  }
729
- createDatabase(workspace, dbName, options = {}) {
730
- return operationsByTag.database.createDatabase({
731
- pathParams: { workspace, dbName },
732
- body: options,
1457
+ createBranch({
1458
+ workspace,
1459
+ region,
1460
+ database,
1461
+ branch,
1462
+ from,
1463
+ metadata
1464
+ }) {
1465
+ return operationsByTag.branch.createBranch({
1466
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1467
+ body: { from, metadata },
733
1468
  ...this.extraProps
734
1469
  });
735
1470
  }
736
- deleteDatabase(workspace, dbName) {
737
- return operationsByTag.database.deleteDatabase({
738
- pathParams: { workspace, dbName },
1471
+ deleteBranch({
1472
+ workspace,
1473
+ region,
1474
+ database,
1475
+ branch
1476
+ }) {
1477
+ return operationsByTag.branch.deleteBranch({
1478
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
739
1479
  ...this.extraProps
740
1480
  });
741
1481
  }
742
- getGitBranchesMapping(workspace, dbName) {
743
- return operationsByTag.database.getGitBranchesMapping({
744
- pathParams: { workspace, dbName },
1482
+ copyBranch({
1483
+ workspace,
1484
+ region,
1485
+ database,
1486
+ branch,
1487
+ destinationBranch,
1488
+ limit
1489
+ }) {
1490
+ return operationsByTag.branch.copyBranch({
1491
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1492
+ body: { destinationBranch, limit },
745
1493
  ...this.extraProps
746
1494
  });
747
1495
  }
748
- addGitBranchesEntry(workspace, dbName, body) {
749
- return operationsByTag.database.addGitBranchesEntry({
750
- pathParams: { workspace, dbName },
751
- body,
1496
+ updateBranchMetadata({
1497
+ workspace,
1498
+ region,
1499
+ database,
1500
+ branch,
1501
+ metadata
1502
+ }) {
1503
+ return operationsByTag.branch.updateBranchMetadata({
1504
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1505
+ body: metadata,
752
1506
  ...this.extraProps
753
1507
  });
754
1508
  }
755
- removeGitBranchesEntry(workspace, dbName, gitBranch) {
756
- return operationsByTag.database.removeGitBranchesEntry({
757
- pathParams: { workspace, dbName },
1509
+ getBranchMetadata({
1510
+ workspace,
1511
+ region,
1512
+ database,
1513
+ branch
1514
+ }) {
1515
+ return operationsByTag.branch.getBranchMetadata({
1516
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1517
+ ...this.extraProps
1518
+ });
1519
+ }
1520
+ getBranchStats({
1521
+ workspace,
1522
+ region,
1523
+ database,
1524
+ branch
1525
+ }) {
1526
+ return operationsByTag.branch.getBranchStats({
1527
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1528
+ ...this.extraProps
1529
+ });
1530
+ }
1531
+ getGitBranchesMapping({
1532
+ workspace,
1533
+ region,
1534
+ database
1535
+ }) {
1536
+ return operationsByTag.branch.getGitBranchesMapping({
1537
+ pathParams: { workspace, region, dbName: database },
1538
+ ...this.extraProps
1539
+ });
1540
+ }
1541
+ addGitBranchesEntry({
1542
+ workspace,
1543
+ region,
1544
+ database,
1545
+ gitBranch,
1546
+ xataBranch
1547
+ }) {
1548
+ return operationsByTag.branch.addGitBranchesEntry({
1549
+ pathParams: { workspace, region, dbName: database },
1550
+ body: { gitBranch, xataBranch },
1551
+ ...this.extraProps
1552
+ });
1553
+ }
1554
+ removeGitBranchesEntry({
1555
+ workspace,
1556
+ region,
1557
+ database,
1558
+ gitBranch
1559
+ }) {
1560
+ return operationsByTag.branch.removeGitBranchesEntry({
1561
+ pathParams: { workspace, region, dbName: database },
758
1562
  queryParams: { gitBranch },
759
1563
  ...this.extraProps
760
1564
  });
761
1565
  }
762
- resolveBranch(workspace, dbName, gitBranch, fallbackBranch) {
763
- return operationsByTag.database.resolveBranch({
764
- pathParams: { workspace, dbName },
1566
+ resolveBranch({
1567
+ workspace,
1568
+ region,
1569
+ database,
1570
+ gitBranch,
1571
+ fallbackBranch
1572
+ }) {
1573
+ return operationsByTag.branch.resolveBranch({
1574
+ pathParams: { workspace, region, dbName: database },
765
1575
  queryParams: { gitBranch, fallbackBranch },
766
1576
  ...this.extraProps
767
1577
  });
768
1578
  }
769
1579
  }
770
- class BranchApi {
1580
+ class TableApi {
771
1581
  constructor(extraProps) {
772
1582
  this.extraProps = extraProps;
773
1583
  }
774
- getBranchList(workspace, dbName) {
775
- return operationsByTag.branch.getBranchList({
776
- pathParams: { workspace, dbName },
1584
+ createTable({
1585
+ workspace,
1586
+ region,
1587
+ database,
1588
+ branch,
1589
+ table
1590
+ }) {
1591
+ return operationsByTag.table.createTable({
1592
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
777
1593
  ...this.extraProps
778
1594
  });
779
1595
  }
780
- getBranchDetails(workspace, database, branch) {
781
- return operationsByTag.branch.getBranchDetails({
782
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
1596
+ deleteTable({
1597
+ workspace,
1598
+ region,
1599
+ database,
1600
+ branch,
1601
+ table
1602
+ }) {
1603
+ return operationsByTag.table.deleteTable({
1604
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
783
1605
  ...this.extraProps
784
1606
  });
785
1607
  }
786
- createBranch(workspace, database, branch, from, options = {}) {
787
- return operationsByTag.branch.createBranch({
788
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
789
- queryParams: isString(from) ? { from } : void 0,
790
- body: options,
1608
+ updateTable({
1609
+ workspace,
1610
+ region,
1611
+ database,
1612
+ branch,
1613
+ table,
1614
+ update
1615
+ }) {
1616
+ return operationsByTag.table.updateTable({
1617
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1618
+ body: update,
791
1619
  ...this.extraProps
792
1620
  });
793
1621
  }
794
- deleteBranch(workspace, database, branch) {
795
- return operationsByTag.branch.deleteBranch({
796
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
1622
+ getTableSchema({
1623
+ workspace,
1624
+ region,
1625
+ database,
1626
+ branch,
1627
+ table
1628
+ }) {
1629
+ return operationsByTag.table.getTableSchema({
1630
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
797
1631
  ...this.extraProps
798
1632
  });
799
1633
  }
800
- updateBranchMetadata(workspace, database, branch, metadata = {}) {
801
- return operationsByTag.branch.updateBranchMetadata({
802
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
803
- body: metadata,
1634
+ setTableSchema({
1635
+ workspace,
1636
+ region,
1637
+ database,
1638
+ branch,
1639
+ table,
1640
+ schema
1641
+ }) {
1642
+ return operationsByTag.table.setTableSchema({
1643
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1644
+ body: schema,
804
1645
  ...this.extraProps
805
1646
  });
806
1647
  }
807
- getBranchMetadata(workspace, database, branch) {
808
- return operationsByTag.branch.getBranchMetadata({
809
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
1648
+ getTableColumns({
1649
+ workspace,
1650
+ region,
1651
+ database,
1652
+ branch,
1653
+ table
1654
+ }) {
1655
+ return operationsByTag.table.getTableColumns({
1656
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1657
+ ...this.extraProps
1658
+ });
1659
+ }
1660
+ addTableColumn({
1661
+ workspace,
1662
+ region,
1663
+ database,
1664
+ branch,
1665
+ table,
1666
+ column
1667
+ }) {
1668
+ return operationsByTag.table.addTableColumn({
1669
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1670
+ body: column,
810
1671
  ...this.extraProps
811
1672
  });
812
1673
  }
813
- getBranchMigrationHistory(workspace, database, branch, options = {}) {
814
- return operationsByTag.branch.getBranchMigrationHistory({
815
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
816
- body: options,
1674
+ getColumn({
1675
+ workspace,
1676
+ region,
1677
+ database,
1678
+ branch,
1679
+ table,
1680
+ column
1681
+ }) {
1682
+ return operationsByTag.table.getColumn({
1683
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, columnName: column },
817
1684
  ...this.extraProps
818
1685
  });
819
1686
  }
820
- executeBranchMigrationPlan(workspace, database, branch, migrationPlan) {
821
- return operationsByTag.branch.executeBranchMigrationPlan({
822
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
823
- body: migrationPlan,
1687
+ updateColumn({
1688
+ workspace,
1689
+ region,
1690
+ database,
1691
+ branch,
1692
+ table,
1693
+ column,
1694
+ update
1695
+ }) {
1696
+ return operationsByTag.table.updateColumn({
1697
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, columnName: column },
1698
+ body: update,
824
1699
  ...this.extraProps
825
1700
  });
826
1701
  }
827
- getBranchMigrationPlan(workspace, database, branch, schema) {
828
- return operationsByTag.branch.getBranchMigrationPlan({
829
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
830
- body: schema,
1702
+ deleteColumn({
1703
+ workspace,
1704
+ region,
1705
+ database,
1706
+ branch,
1707
+ table,
1708
+ column
1709
+ }) {
1710
+ return operationsByTag.table.deleteColumn({
1711
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, columnName: column },
831
1712
  ...this.extraProps
832
1713
  });
833
1714
  }
834
- getBranchStats(workspace, database, branch) {
835
- return operationsByTag.branch.getBranchStats({
836
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
1715
+ }
1716
+ class RecordsApi {
1717
+ constructor(extraProps) {
1718
+ this.extraProps = extraProps;
1719
+ }
1720
+ insertRecord({
1721
+ workspace,
1722
+ region,
1723
+ database,
1724
+ branch,
1725
+ table,
1726
+ record,
1727
+ columns
1728
+ }) {
1729
+ return operationsByTag.records.insertRecord({
1730
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1731
+ queryParams: { columns },
1732
+ body: record,
1733
+ ...this.extraProps
1734
+ });
1735
+ }
1736
+ getRecord({
1737
+ workspace,
1738
+ region,
1739
+ database,
1740
+ branch,
1741
+ table,
1742
+ id,
1743
+ columns
1744
+ }) {
1745
+ return operationsByTag.records.getRecord({
1746
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1747
+ queryParams: { columns },
1748
+ ...this.extraProps
1749
+ });
1750
+ }
1751
+ insertRecordWithID({
1752
+ workspace,
1753
+ region,
1754
+ database,
1755
+ branch,
1756
+ table,
1757
+ id,
1758
+ record,
1759
+ columns,
1760
+ createOnly,
1761
+ ifVersion
1762
+ }) {
1763
+ return operationsByTag.records.insertRecordWithID({
1764
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1765
+ queryParams: { columns, createOnly, ifVersion },
1766
+ body: record,
1767
+ ...this.extraProps
1768
+ });
1769
+ }
1770
+ updateRecordWithID({
1771
+ workspace,
1772
+ region,
1773
+ database,
1774
+ branch,
1775
+ table,
1776
+ id,
1777
+ record,
1778
+ columns,
1779
+ ifVersion
1780
+ }) {
1781
+ return operationsByTag.records.updateRecordWithID({
1782
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1783
+ queryParams: { columns, ifVersion },
1784
+ body: record,
1785
+ ...this.extraProps
1786
+ });
1787
+ }
1788
+ upsertRecordWithID({
1789
+ workspace,
1790
+ region,
1791
+ database,
1792
+ branch,
1793
+ table,
1794
+ id,
1795
+ record,
1796
+ columns,
1797
+ ifVersion
1798
+ }) {
1799
+ return operationsByTag.records.upsertRecordWithID({
1800
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1801
+ queryParams: { columns, ifVersion },
1802
+ body: record,
1803
+ ...this.extraProps
1804
+ });
1805
+ }
1806
+ deleteRecord({
1807
+ workspace,
1808
+ region,
1809
+ database,
1810
+ branch,
1811
+ table,
1812
+ id,
1813
+ columns
1814
+ }) {
1815
+ return operationsByTag.records.deleteRecord({
1816
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1817
+ queryParams: { columns },
1818
+ ...this.extraProps
1819
+ });
1820
+ }
1821
+ bulkInsertTableRecords({
1822
+ workspace,
1823
+ region,
1824
+ database,
1825
+ branch,
1826
+ table,
1827
+ records,
1828
+ columns
1829
+ }) {
1830
+ return operationsByTag.records.bulkInsertTableRecords({
1831
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1832
+ queryParams: { columns },
1833
+ body: { records },
1834
+ ...this.extraProps
1835
+ });
1836
+ }
1837
+ branchTransaction({
1838
+ workspace,
1839
+ region,
1840
+ database,
1841
+ branch,
1842
+ operations
1843
+ }) {
1844
+ return operationsByTag.records.branchTransaction({
1845
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1846
+ body: { operations },
837
1847
  ...this.extraProps
838
1848
  });
839
1849
  }
840
1850
  }
841
- class TableApi {
1851
+ class FilesApi {
842
1852
  constructor(extraProps) {
843
1853
  this.extraProps = extraProps;
844
1854
  }
845
- createTable(workspace, database, branch, tableName) {
846
- return operationsByTag.table.createTable({
847
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
1855
+ getFileItem({
1856
+ workspace,
1857
+ region,
1858
+ database,
1859
+ branch,
1860
+ table,
1861
+ record,
1862
+ column,
1863
+ fileId
1864
+ }) {
1865
+ return operationsByTag.files.getFileItem({
1866
+ pathParams: {
1867
+ workspace,
1868
+ region,
1869
+ dbBranchName: `${database}:${branch}`,
1870
+ tableName: table,
1871
+ recordId: record,
1872
+ columnName: column,
1873
+ fileId
1874
+ },
848
1875
  ...this.extraProps
849
1876
  });
850
1877
  }
851
- deleteTable(workspace, database, branch, tableName) {
852
- return operationsByTag.table.deleteTable({
853
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
1878
+ putFileItem({
1879
+ workspace,
1880
+ region,
1881
+ database,
1882
+ branch,
1883
+ table,
1884
+ record,
1885
+ column,
1886
+ fileId,
1887
+ file
1888
+ }) {
1889
+ return operationsByTag.files.putFileItem({
1890
+ pathParams: {
1891
+ workspace,
1892
+ region,
1893
+ dbBranchName: `${database}:${branch}`,
1894
+ tableName: table,
1895
+ recordId: record,
1896
+ columnName: column,
1897
+ fileId
1898
+ },
1899
+ body: file,
1900
+ ...this.extraProps
1901
+ });
1902
+ }
1903
+ deleteFileItem({
1904
+ workspace,
1905
+ region,
1906
+ database,
1907
+ branch,
1908
+ table,
1909
+ record,
1910
+ column,
1911
+ fileId
1912
+ }) {
1913
+ return operationsByTag.files.deleteFileItem({
1914
+ pathParams: {
1915
+ workspace,
1916
+ region,
1917
+ dbBranchName: `${database}:${branch}`,
1918
+ tableName: table,
1919
+ recordId: record,
1920
+ columnName: column,
1921
+ fileId
1922
+ },
1923
+ ...this.extraProps
1924
+ });
1925
+ }
1926
+ getFile({
1927
+ workspace,
1928
+ region,
1929
+ database,
1930
+ branch,
1931
+ table,
1932
+ record,
1933
+ column
1934
+ }) {
1935
+ return operationsByTag.files.getFile({
1936
+ pathParams: {
1937
+ workspace,
1938
+ region,
1939
+ dbBranchName: `${database}:${branch}`,
1940
+ tableName: table,
1941
+ recordId: record,
1942
+ columnName: column
1943
+ },
1944
+ ...this.extraProps
1945
+ });
1946
+ }
1947
+ putFile({
1948
+ workspace,
1949
+ region,
1950
+ database,
1951
+ branch,
1952
+ table,
1953
+ record,
1954
+ column,
1955
+ file
1956
+ }) {
1957
+ return operationsByTag.files.putFile({
1958
+ pathParams: {
1959
+ workspace,
1960
+ region,
1961
+ dbBranchName: `${database}:${branch}`,
1962
+ tableName: table,
1963
+ recordId: record,
1964
+ columnName: column
1965
+ },
1966
+ body: file,
1967
+ ...this.extraProps
1968
+ });
1969
+ }
1970
+ }
1971
+ class SearchAndFilterApi {
1972
+ constructor(extraProps) {
1973
+ this.extraProps = extraProps;
1974
+ }
1975
+ queryTable({
1976
+ workspace,
1977
+ region,
1978
+ database,
1979
+ branch,
1980
+ table,
1981
+ filter,
1982
+ sort,
1983
+ page,
1984
+ columns,
1985
+ consistency
1986
+ }) {
1987
+ return operationsByTag.searchAndFilter.queryTable({
1988
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1989
+ body: { filter, sort, page, columns, consistency },
1990
+ ...this.extraProps
1991
+ });
1992
+ }
1993
+ searchTable({
1994
+ workspace,
1995
+ region,
1996
+ database,
1997
+ branch,
1998
+ table,
1999
+ query,
2000
+ fuzziness,
2001
+ target,
2002
+ prefix,
2003
+ filter,
2004
+ highlight,
2005
+ boosters
2006
+ }) {
2007
+ return operationsByTag.searchAndFilter.searchTable({
2008
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2009
+ body: { query, fuzziness, target, prefix, filter, highlight, boosters },
2010
+ ...this.extraProps
2011
+ });
2012
+ }
2013
+ searchBranch({
2014
+ workspace,
2015
+ region,
2016
+ database,
2017
+ branch,
2018
+ tables,
2019
+ query,
2020
+ fuzziness,
2021
+ prefix,
2022
+ highlight
2023
+ }) {
2024
+ return operationsByTag.searchAndFilter.searchBranch({
2025
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2026
+ body: { tables, query, fuzziness, prefix, highlight },
2027
+ ...this.extraProps
2028
+ });
2029
+ }
2030
+ vectorSearchTable({
2031
+ workspace,
2032
+ region,
2033
+ database,
2034
+ branch,
2035
+ table,
2036
+ queryVector,
2037
+ column,
2038
+ similarityFunction,
2039
+ size,
2040
+ filter
2041
+ }) {
2042
+ return operationsByTag.searchAndFilter.vectorSearchTable({
2043
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2044
+ body: { queryVector, column, similarityFunction, size, filter },
2045
+ ...this.extraProps
2046
+ });
2047
+ }
2048
+ askTable({
2049
+ workspace,
2050
+ region,
2051
+ database,
2052
+ branch,
2053
+ table,
2054
+ options
2055
+ }) {
2056
+ return operationsByTag.searchAndFilter.askTable({
2057
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2058
+ body: { ...options },
2059
+ ...this.extraProps
2060
+ });
2061
+ }
2062
+ summarizeTable({
2063
+ workspace,
2064
+ region,
2065
+ database,
2066
+ branch,
2067
+ table,
2068
+ filter,
2069
+ columns,
2070
+ summaries,
2071
+ sort,
2072
+ summariesFilter,
2073
+ page,
2074
+ consistency
2075
+ }) {
2076
+ return operationsByTag.searchAndFilter.summarizeTable({
2077
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2078
+ body: { filter, columns, summaries, sort, summariesFilter, page, consistency },
2079
+ ...this.extraProps
2080
+ });
2081
+ }
2082
+ aggregateTable({
2083
+ workspace,
2084
+ region,
2085
+ database,
2086
+ branch,
2087
+ table,
2088
+ filter,
2089
+ aggs
2090
+ }) {
2091
+ return operationsByTag.searchAndFilter.aggregateTable({
2092
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2093
+ body: { filter, aggs },
2094
+ ...this.extraProps
2095
+ });
2096
+ }
2097
+ }
2098
+ class MigrationRequestsApi {
2099
+ constructor(extraProps) {
2100
+ this.extraProps = extraProps;
2101
+ }
2102
+ queryMigrationRequests({
2103
+ workspace,
2104
+ region,
2105
+ database,
2106
+ filter,
2107
+ sort,
2108
+ page,
2109
+ columns
2110
+ }) {
2111
+ return operationsByTag.migrationRequests.queryMigrationRequests({
2112
+ pathParams: { workspace, region, dbName: database },
2113
+ body: { filter, sort, page, columns },
2114
+ ...this.extraProps
2115
+ });
2116
+ }
2117
+ createMigrationRequest({
2118
+ workspace,
2119
+ region,
2120
+ database,
2121
+ migration
2122
+ }) {
2123
+ return operationsByTag.migrationRequests.createMigrationRequest({
2124
+ pathParams: { workspace, region, dbName: database },
2125
+ body: migration,
2126
+ ...this.extraProps
2127
+ });
2128
+ }
2129
+ getMigrationRequest({
2130
+ workspace,
2131
+ region,
2132
+ database,
2133
+ migrationRequest
2134
+ }) {
2135
+ return operationsByTag.migrationRequests.getMigrationRequest({
2136
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2137
+ ...this.extraProps
2138
+ });
2139
+ }
2140
+ updateMigrationRequest({
2141
+ workspace,
2142
+ region,
2143
+ database,
2144
+ migrationRequest,
2145
+ update
2146
+ }) {
2147
+ return operationsByTag.migrationRequests.updateMigrationRequest({
2148
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2149
+ body: update,
2150
+ ...this.extraProps
2151
+ });
2152
+ }
2153
+ listMigrationRequestsCommits({
2154
+ workspace,
2155
+ region,
2156
+ database,
2157
+ migrationRequest,
2158
+ page
2159
+ }) {
2160
+ return operationsByTag.migrationRequests.listMigrationRequestsCommits({
2161
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2162
+ body: { page },
2163
+ ...this.extraProps
2164
+ });
2165
+ }
2166
+ compareMigrationRequest({
2167
+ workspace,
2168
+ region,
2169
+ database,
2170
+ migrationRequest
2171
+ }) {
2172
+ return operationsByTag.migrationRequests.compareMigrationRequest({
2173
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2174
+ ...this.extraProps
2175
+ });
2176
+ }
2177
+ getMigrationRequestIsMerged({
2178
+ workspace,
2179
+ region,
2180
+ database,
2181
+ migrationRequest
2182
+ }) {
2183
+ return operationsByTag.migrationRequests.getMigrationRequestIsMerged({
2184
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2185
+ ...this.extraProps
2186
+ });
2187
+ }
2188
+ mergeMigrationRequest({
2189
+ workspace,
2190
+ region,
2191
+ database,
2192
+ migrationRequest
2193
+ }) {
2194
+ return operationsByTag.migrationRequests.mergeMigrationRequest({
2195
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2196
+ ...this.extraProps
2197
+ });
2198
+ }
2199
+ }
2200
+ class MigrationsApi {
2201
+ constructor(extraProps) {
2202
+ this.extraProps = extraProps;
2203
+ }
2204
+ getBranchMigrationHistory({
2205
+ workspace,
2206
+ region,
2207
+ database,
2208
+ branch,
2209
+ limit,
2210
+ startFrom
2211
+ }) {
2212
+ return operationsByTag.migrations.getBranchMigrationHistory({
2213
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2214
+ body: { limit, startFrom },
2215
+ ...this.extraProps
2216
+ });
2217
+ }
2218
+ getBranchMigrationPlan({
2219
+ workspace,
2220
+ region,
2221
+ database,
2222
+ branch,
2223
+ schema
2224
+ }) {
2225
+ return operationsByTag.migrations.getBranchMigrationPlan({
2226
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2227
+ body: schema,
854
2228
  ...this.extraProps
855
2229
  });
856
2230
  }
857
- updateTable(workspace, database, branch, tableName, options) {
858
- return operationsByTag.table.updateTable({
859
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
860
- body: options,
2231
+ executeBranchMigrationPlan({
2232
+ workspace,
2233
+ region,
2234
+ database,
2235
+ branch,
2236
+ plan
2237
+ }) {
2238
+ return operationsByTag.migrations.executeBranchMigrationPlan({
2239
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2240
+ body: plan,
861
2241
  ...this.extraProps
862
2242
  });
863
2243
  }
864
- getTableSchema(workspace, database, branch, tableName) {
865
- return operationsByTag.table.getTableSchema({
866
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
2244
+ getBranchSchemaHistory({
2245
+ workspace,
2246
+ region,
2247
+ database,
2248
+ branch,
2249
+ page
2250
+ }) {
2251
+ return operationsByTag.migrations.getBranchSchemaHistory({
2252
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2253
+ body: { page },
867
2254
  ...this.extraProps
868
2255
  });
869
2256
  }
870
- setTableSchema(workspace, database, branch, tableName, options) {
871
- return operationsByTag.table.setTableSchema({
872
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
873
- body: options,
2257
+ compareBranchWithUserSchema({
2258
+ workspace,
2259
+ region,
2260
+ database,
2261
+ branch,
2262
+ schema,
2263
+ schemaOperations,
2264
+ branchOperations
2265
+ }) {
2266
+ return operationsByTag.migrations.compareBranchWithUserSchema({
2267
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2268
+ body: { schema, schemaOperations, branchOperations },
874
2269
  ...this.extraProps
875
2270
  });
876
2271
  }
877
- getTableColumns(workspace, database, branch, tableName) {
878
- return operationsByTag.table.getTableColumns({
879
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
2272
+ compareBranchSchemas({
2273
+ workspace,
2274
+ region,
2275
+ database,
2276
+ branch,
2277
+ compare,
2278
+ sourceBranchOperations,
2279
+ targetBranchOperations
2280
+ }) {
2281
+ return operationsByTag.migrations.compareBranchSchemas({
2282
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, branchName: compare },
2283
+ body: { sourceBranchOperations, targetBranchOperations },
880
2284
  ...this.extraProps
881
2285
  });
882
2286
  }
883
- addTableColumn(workspace, database, branch, tableName, column) {
884
- return operationsByTag.table.addTableColumn({
885
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
886
- body: column,
2287
+ updateBranchSchema({
2288
+ workspace,
2289
+ region,
2290
+ database,
2291
+ branch,
2292
+ migration
2293
+ }) {
2294
+ return operationsByTag.migrations.updateBranchSchema({
2295
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2296
+ body: migration,
887
2297
  ...this.extraProps
888
2298
  });
889
2299
  }
890
- getColumn(workspace, database, branch, tableName, columnName) {
891
- return operationsByTag.table.getColumn({
892
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, columnName },
2300
+ previewBranchSchemaEdit({
2301
+ workspace,
2302
+ region,
2303
+ database,
2304
+ branch,
2305
+ data
2306
+ }) {
2307
+ return operationsByTag.migrations.previewBranchSchemaEdit({
2308
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2309
+ body: data,
893
2310
  ...this.extraProps
894
2311
  });
895
2312
  }
896
- deleteColumn(workspace, database, branch, tableName, columnName) {
897
- return operationsByTag.table.deleteColumn({
898
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, columnName },
2313
+ applyBranchSchemaEdit({
2314
+ workspace,
2315
+ region,
2316
+ database,
2317
+ branch,
2318
+ edits
2319
+ }) {
2320
+ return operationsByTag.migrations.applyBranchSchemaEdit({
2321
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2322
+ body: { edits },
899
2323
  ...this.extraProps
900
2324
  });
901
2325
  }
902
- updateColumn(workspace, database, branch, tableName, columnName, options) {
903
- return operationsByTag.table.updateColumn({
904
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, columnName },
905
- body: options,
2326
+ pushBranchMigrations({
2327
+ workspace,
2328
+ region,
2329
+ database,
2330
+ branch,
2331
+ migrations
2332
+ }) {
2333
+ return operationsByTag.migrations.pushBranchMigrations({
2334
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2335
+ body: { migrations },
906
2336
  ...this.extraProps
907
2337
  });
908
2338
  }
909
2339
  }
910
- class RecordsApi {
2340
+ class DatabaseApi {
911
2341
  constructor(extraProps) {
912
2342
  this.extraProps = extraProps;
913
2343
  }
914
- insertRecord(workspace, database, branch, tableName, record, options = {}) {
915
- return operationsByTag.records.insertRecord({
916
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
917
- queryParams: options,
918
- body: record,
2344
+ getDatabaseList({ workspace }) {
2345
+ return operationsByTag.databases.getDatabaseList({
2346
+ pathParams: { workspaceId: workspace },
919
2347
  ...this.extraProps
920
2348
  });
921
2349
  }
922
- insertRecordWithID(workspace, database, branch, tableName, recordId, record, options = {}) {
923
- return operationsByTag.records.insertRecordWithID({
924
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
925
- queryParams: options,
926
- body: record,
2350
+ createDatabase({
2351
+ workspace,
2352
+ database,
2353
+ data
2354
+ }) {
2355
+ return operationsByTag.databases.createDatabase({
2356
+ pathParams: { workspaceId: workspace, dbName: database },
2357
+ body: data,
927
2358
  ...this.extraProps
928
2359
  });
929
2360
  }
930
- updateRecordWithID(workspace, database, branch, tableName, recordId, record, options = {}) {
931
- return operationsByTag.records.updateRecordWithID({
932
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
933
- queryParams: options,
934
- body: record,
2361
+ deleteDatabase({
2362
+ workspace,
2363
+ database
2364
+ }) {
2365
+ return operationsByTag.databases.deleteDatabase({
2366
+ pathParams: { workspaceId: workspace, dbName: database },
935
2367
  ...this.extraProps
936
2368
  });
937
2369
  }
938
- upsertRecordWithID(workspace, database, branch, tableName, recordId, record, options = {}) {
939
- return operationsByTag.records.upsertRecordWithID({
940
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
941
- queryParams: options,
942
- body: record,
2370
+ getDatabaseMetadata({
2371
+ workspace,
2372
+ database
2373
+ }) {
2374
+ return operationsByTag.databases.getDatabaseMetadata({
2375
+ pathParams: { workspaceId: workspace, dbName: database },
943
2376
  ...this.extraProps
944
2377
  });
945
2378
  }
946
- deleteRecord(workspace, database, branch, tableName, recordId, options = {}) {
947
- return operationsByTag.records.deleteRecord({
948
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
949
- queryParams: options,
2379
+ updateDatabaseMetadata({
2380
+ workspace,
2381
+ database,
2382
+ metadata
2383
+ }) {
2384
+ return operationsByTag.databases.updateDatabaseMetadata({
2385
+ pathParams: { workspaceId: workspace, dbName: database },
2386
+ body: metadata,
950
2387
  ...this.extraProps
951
2388
  });
952
2389
  }
953
- getRecord(workspace, database, branch, tableName, recordId, options = {}) {
954
- return operationsByTag.records.getRecord({
955
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
956
- queryParams: options,
2390
+ renameDatabase({
2391
+ workspace,
2392
+ database,
2393
+ newName
2394
+ }) {
2395
+ return operationsByTag.databases.renameDatabase({
2396
+ pathParams: { workspaceId: workspace, dbName: database },
2397
+ body: { newName },
957
2398
  ...this.extraProps
958
2399
  });
959
2400
  }
960
- bulkInsertTableRecords(workspace, database, branch, tableName, records, options = {}) {
961
- return operationsByTag.records.bulkInsertTableRecords({
962
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
963
- queryParams: options,
964
- body: { records },
2401
+ getDatabaseGithubSettings({
2402
+ workspace,
2403
+ database
2404
+ }) {
2405
+ return operationsByTag.databases.getDatabaseGithubSettings({
2406
+ pathParams: { workspaceId: workspace, dbName: database },
965
2407
  ...this.extraProps
966
2408
  });
967
2409
  }
968
- queryTable(workspace, database, branch, tableName, query) {
969
- return operationsByTag.records.queryTable({
970
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
971
- body: query,
2410
+ updateDatabaseGithubSettings({
2411
+ workspace,
2412
+ database,
2413
+ settings
2414
+ }) {
2415
+ return operationsByTag.databases.updateDatabaseGithubSettings({
2416
+ pathParams: { workspaceId: workspace, dbName: database },
2417
+ body: settings,
972
2418
  ...this.extraProps
973
2419
  });
974
2420
  }
975
- searchTable(workspace, database, branch, tableName, query) {
976
- return operationsByTag.records.searchTable({
977
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
978
- body: query,
2421
+ deleteDatabaseGithubSettings({
2422
+ workspace,
2423
+ database
2424
+ }) {
2425
+ return operationsByTag.databases.deleteDatabaseGithubSettings({
2426
+ pathParams: { workspaceId: workspace, dbName: database },
979
2427
  ...this.extraProps
980
2428
  });
981
2429
  }
982
- searchBranch(workspace, database, branch, query) {
983
- return operationsByTag.records.searchBranch({
984
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
985
- body: query,
2430
+ listRegions({ workspace }) {
2431
+ return operationsByTag.databases.listRegions({
2432
+ pathParams: { workspaceId: workspace },
986
2433
  ...this.extraProps
987
2434
  });
988
2435
  }
989
2436
  }
990
2437
 
991
2438
  class XataApiPlugin {
992
- async build(options) {
993
- const { fetchImpl, apiKey } = await options.getFetchProps();
994
- return new XataApiClient({ fetch: fetchImpl, apiKey });
2439
+ build(options) {
2440
+ return new XataApiClient(options);
995
2441
  }
996
2442
  }
997
2443
 
998
2444
  class XataPlugin {
999
2445
  }
1000
2446
 
2447
+ function cleanFilter(filter) {
2448
+ if (!filter)
2449
+ return void 0;
2450
+ const values = Object.values(filter).filter(Boolean).filter((value) => Array.isArray(value) ? value.length > 0 : true);
2451
+ return values.length > 0 ? filter : void 0;
2452
+ }
2453
+
1001
2454
  var __accessCheck$6 = (obj, member, msg) => {
1002
2455
  if (!member.has(obj))
1003
2456
  throw TypeError("Cannot " + msg);
@@ -1030,11 +2483,11 @@ class Page {
1030
2483
  async previousPage(size, offset) {
1031
2484
  return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, before: this.meta.page.cursor } });
1032
2485
  }
1033
- async firstPage(size, offset) {
1034
- return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, first: this.meta.page.cursor } });
2486
+ async startPage(size, offset) {
2487
+ return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, start: this.meta.page.cursor } });
1035
2488
  }
1036
- async lastPage(size, offset) {
1037
- return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, last: this.meta.page.cursor } });
2489
+ async endPage(size, offset) {
2490
+ return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, end: this.meta.page.cursor } });
1038
2491
  }
1039
2492
  hasNextPage() {
1040
2493
  return this.meta.page.more;
@@ -1046,7 +2499,7 @@ const PAGINATION_DEFAULT_SIZE = 20;
1046
2499
  const PAGINATION_MAX_OFFSET = 800;
1047
2500
  const PAGINATION_DEFAULT_OFFSET = 0;
1048
2501
  function isCursorPaginationOptions(options) {
1049
- return isDefined(options) && (isDefined(options.first) || isDefined(options.last) || isDefined(options.after) || isDefined(options.before));
2502
+ return isDefined(options) && (isDefined(options.start) || isDefined(options.end) || isDefined(options.after) || isDefined(options.before));
1050
2503
  }
1051
2504
  const _RecordArray = class extends Array {
1052
2505
  constructor(...args) {
@@ -1067,6 +2520,12 @@ const _RecordArray = class extends Array {
1067
2520
  toArray() {
1068
2521
  return new Array(...this);
1069
2522
  }
2523
+ toSerializable() {
2524
+ return JSON.parse(this.toString());
2525
+ }
2526
+ toString() {
2527
+ return JSON.stringify(this.toArray());
2528
+ }
1070
2529
  map(callbackfn, thisArg) {
1071
2530
  return this.toArray().map(callbackfn, thisArg);
1072
2531
  }
@@ -1078,12 +2537,12 @@ const _RecordArray = class extends Array {
1078
2537
  const newPage = await __privateGet$6(this, _page).previousPage(size, offset);
1079
2538
  return new _RecordArray(newPage);
1080
2539
  }
1081
- async firstPage(size, offset) {
1082
- const newPage = await __privateGet$6(this, _page).firstPage(size, offset);
2540
+ async startPage(size, offset) {
2541
+ const newPage = await __privateGet$6(this, _page).startPage(size, offset);
1083
2542
  return new _RecordArray(newPage);
1084
2543
  }
1085
- async lastPage(size, offset) {
1086
- const newPage = await __privateGet$6(this, _page).lastPage(size, offset);
2544
+ async endPage(size, offset) {
2545
+ const newPage = await __privateGet$6(this, _page).endPage(size, offset);
1087
2546
  return new _RecordArray(newPage);
1088
2547
  }
1089
2548
  hasNextPage() {
@@ -1111,9 +2570,14 @@ var __privateSet$5 = (obj, member, value, setter) => {
1111
2570
  setter ? setter.call(obj, value) : member.set(obj, value);
1112
2571
  return value;
1113
2572
  };
1114
- var _table$1, _repository, _data;
2573
+ var __privateMethod$3 = (obj, member, method) => {
2574
+ __accessCheck$5(obj, member, "access private method");
2575
+ return method;
2576
+ };
2577
+ var _table$1, _repository, _data, _cleanFilterConstraint, cleanFilterConstraint_fn;
1115
2578
  const _Query = class {
1116
2579
  constructor(repository, table, data, rawParent) {
2580
+ __privateAdd$5(this, _cleanFilterConstraint);
1117
2581
  __privateAdd$5(this, _table$1, void 0);
1118
2582
  __privateAdd$5(this, _repository, void 0);
1119
2583
  __privateAdd$5(this, _data, { filter: {} });
@@ -1132,9 +2596,11 @@ const _Query = class {
1132
2596
  __privateGet$5(this, _data).filter.$not = data.filter?.$not ?? parent?.filter?.$not;
1133
2597
  __privateGet$5(this, _data).filter.$none = data.filter?.$none ?? parent?.filter?.$none;
1134
2598
  __privateGet$5(this, _data).sort = data.sort ?? parent?.sort;
1135
- __privateGet$5(this, _data).columns = data.columns ?? parent?.columns ?? ["*"];
2599
+ __privateGet$5(this, _data).columns = data.columns ?? parent?.columns;
2600
+ __privateGet$5(this, _data).consistency = data.consistency ?? parent?.consistency;
1136
2601
  __privateGet$5(this, _data).pagination = data.pagination ?? parent?.pagination;
1137
2602
  __privateGet$5(this, _data).cache = data.cache ?? parent?.cache;
2603
+ __privateGet$5(this, _data).fetchOptions = data.fetchOptions ?? parent?.fetchOptions;
1138
2604
  this.any = this.any.bind(this);
1139
2605
  this.all = this.all.bind(this);
1140
2606
  this.not = this.not.bind(this);
@@ -1170,15 +2636,18 @@ const _Query = class {
1170
2636
  }
1171
2637
  filter(a, b) {
1172
2638
  if (arguments.length === 1) {
1173
- const constraints = Object.entries(a).map(([column, constraint]) => ({ [column]: constraint }));
2639
+ const constraints = Object.entries(a ?? {}).map(([column, constraint]) => ({
2640
+ [column]: __privateMethod$3(this, _cleanFilterConstraint, cleanFilterConstraint_fn).call(this, column, constraint)
2641
+ }));
1174
2642
  const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat(constraints));
1175
2643
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
1176
2644
  } else {
1177
- const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat([{ [a]: b }]));
2645
+ const constraints = isDefined(a) && isDefined(b) ? [{ [a]: __privateMethod$3(this, _cleanFilterConstraint, cleanFilterConstraint_fn).call(this, a, b) }] : void 0;
2646
+ const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat(constraints));
1178
2647
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
1179
2648
  }
1180
2649
  }
1181
- sort(column, direction) {
2650
+ sort(column, direction = "asc") {
1182
2651
  const originalSort = [__privateGet$5(this, _data).sort ?? []].flat();
1183
2652
  const sort = [...originalSort, { column, direction }];
1184
2653
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { sort }, __privateGet$5(this, _data));
@@ -1212,11 +2681,20 @@ const _Query = class {
1212
2681
  }
1213
2682
  }
1214
2683
  async getMany(options = {}) {
1215
- const page = await this.getPaginated(options);
2684
+ const { pagination = {}, ...rest } = options;
2685
+ const { size = PAGINATION_DEFAULT_SIZE, offset } = pagination;
2686
+ const batchSize = size <= PAGINATION_MAX_SIZE ? size : PAGINATION_MAX_SIZE;
2687
+ let page = await this.getPaginated({ ...rest, pagination: { size: batchSize, offset } });
2688
+ const results = [...page.records];
2689
+ while (page.hasNextPage() && results.length < size) {
2690
+ page = await page.nextPage();
2691
+ results.push(...page.records);
2692
+ }
1216
2693
  if (page.hasNextPage() && options.pagination?.size === void 0) {
1217
2694
  console.trace("Calling getMany does not return all results. Paginate to get all results or call getAll.");
1218
2695
  }
1219
- return page.records;
2696
+ const array = new RecordArray(page, results.slice(0, size));
2697
+ return array;
1220
2698
  }
1221
2699
  async getAll(options = {}) {
1222
2700
  const { batchSize = PAGINATION_MAX_SIZE, ...rest } = options;
@@ -1230,19 +2708,35 @@ const _Query = class {
1230
2708
  const records = await this.getMany({ ...options, pagination: { size: 1 } });
1231
2709
  return records[0] ?? null;
1232
2710
  }
2711
+ async getFirstOrThrow(options = {}) {
2712
+ const records = await this.getMany({ ...options, pagination: { size: 1 } });
2713
+ if (records[0] === void 0)
2714
+ throw new Error("No results found.");
2715
+ return records[0];
2716
+ }
2717
+ async summarize(params = {}) {
2718
+ const { summaries, summariesFilter, ...options } = params;
2719
+ const query = new _Query(
2720
+ __privateGet$5(this, _repository),
2721
+ __privateGet$5(this, _table$1),
2722
+ options,
2723
+ __privateGet$5(this, _data)
2724
+ );
2725
+ return __privateGet$5(this, _repository).summarizeTable(query, summaries, summariesFilter);
2726
+ }
1233
2727
  cache(ttl) {
1234
2728
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { cache: ttl }, __privateGet$5(this, _data));
1235
2729
  }
1236
2730
  nextPage(size, offset) {
1237
- return this.firstPage(size, offset);
2731
+ return this.startPage(size, offset);
1238
2732
  }
1239
2733
  previousPage(size, offset) {
1240
- return this.firstPage(size, offset);
2734
+ return this.startPage(size, offset);
1241
2735
  }
1242
- firstPage(size, offset) {
2736
+ startPage(size, offset) {
1243
2737
  return this.getPaginated({ pagination: { size, offset } });
1244
2738
  }
1245
- lastPage(size, offset) {
2739
+ endPage(size, offset) {
1246
2740
  return this.getPaginated({ pagination: { size, offset, before: "end" } });
1247
2741
  }
1248
2742
  hasNextPage() {
@@ -1253,9 +2747,20 @@ let Query = _Query;
1253
2747
  _table$1 = new WeakMap();
1254
2748
  _repository = new WeakMap();
1255
2749
  _data = new WeakMap();
2750
+ _cleanFilterConstraint = new WeakSet();
2751
+ cleanFilterConstraint_fn = function(column, value) {
2752
+ const columnType = __privateGet$5(this, _table$1).schema?.columns.find(({ name }) => name === column)?.type;
2753
+ if (columnType === "multiple" && (isString(value) || isStringArray(value))) {
2754
+ return { $includes: value };
2755
+ }
2756
+ if (columnType === "link" && isObject(value) && isString(value.id)) {
2757
+ return value.id;
2758
+ }
2759
+ return value;
2760
+ };
1256
2761
  function cleanParent(data, parent) {
1257
2762
  if (isCursorPaginationOptions(data.pagination)) {
1258
- return { ...parent, sorting: void 0, filter: void 0 };
2763
+ return { ...parent, sort: void 0, filter: void 0 };
1259
2764
  }
1260
2765
  return parent;
1261
2766
  }
@@ -1273,7 +2778,11 @@ function isSortFilterString(value) {
1273
2778
  return isString(value);
1274
2779
  }
1275
2780
  function isSortFilterBase(filter) {
1276
- return isObject(filter) && Object.values(filter).every((value) => value === "asc" || value === "desc");
2781
+ return isObject(filter) && Object.entries(filter).every(([key, value]) => {
2782
+ if (key === "*")
2783
+ return value === "random";
2784
+ return value === "asc" || value === "desc";
2785
+ });
1277
2786
  }
1278
2787
  function isSortFilterObject(filter) {
1279
2788
  return isObject(filter) && !isSortFilterBase(filter) && filter.column !== void 0;
@@ -1314,18 +2823,25 @@ var __privateMethod$2 = (obj, member, method) => {
1314
2823
  __accessCheck$4(obj, member, "access private method");
1315
2824
  return method;
1316
2825
  };
1317
- var _table, _getFetchProps, _db, _cache, _schemaTables$2, _insertRecordWithoutId, insertRecordWithoutId_fn, _insertRecordWithId, insertRecordWithId_fn, _bulkInsertTableRecords, bulkInsertTableRecords_fn, _updateRecordWithID, updateRecordWithID_fn, _upsertRecordWithID, upsertRecordWithID_fn, _deleteRecord, deleteRecord_fn, _setCacheQuery, setCacheQuery_fn, _getCacheQuery, getCacheQuery_fn, _getSchemaTables$1, getSchemaTables_fn$1;
2826
+ var _table, _getFetchProps, _db, _cache, _schemaTables$2, _trace, _insertRecordWithoutId, insertRecordWithoutId_fn, _insertRecordWithId, insertRecordWithId_fn, _insertRecords, insertRecords_fn, _updateRecordWithID, updateRecordWithID_fn, _updateRecords, updateRecords_fn, _upsertRecordWithID, upsertRecordWithID_fn, _deleteRecord, deleteRecord_fn, _deleteRecords, deleteRecords_fn, _setCacheQuery, setCacheQuery_fn, _getCacheQuery, getCacheQuery_fn, _getSchemaTables$1, getSchemaTables_fn$1;
2827
+ const BULK_OPERATION_MAX_SIZE = 1e3;
1318
2828
  class Repository extends Query {
1319
2829
  }
1320
2830
  class RestRepository extends Query {
1321
2831
  constructor(options) {
1322
- super(null, options.table, {});
2832
+ super(
2833
+ null,
2834
+ { name: options.table, schema: options.schemaTables?.find((table) => table.name === options.table) },
2835
+ {}
2836
+ );
1323
2837
  __privateAdd$4(this, _insertRecordWithoutId);
1324
2838
  __privateAdd$4(this, _insertRecordWithId);
1325
- __privateAdd$4(this, _bulkInsertTableRecords);
2839
+ __privateAdd$4(this, _insertRecords);
1326
2840
  __privateAdd$4(this, _updateRecordWithID);
2841
+ __privateAdd$4(this, _updateRecords);
1327
2842
  __privateAdd$4(this, _upsertRecordWithID);
1328
2843
  __privateAdd$4(this, _deleteRecord);
2844
+ __privateAdd$4(this, _deleteRecords);
1329
2845
  __privateAdd$4(this, _setCacheQuery);
1330
2846
  __privateAdd$4(this, _getCacheQuery);
1331
2847
  __privateAdd$4(this, _getSchemaTables$1);
@@ -1334,168 +2850,398 @@ class RestRepository extends Query {
1334
2850
  __privateAdd$4(this, _db, void 0);
1335
2851
  __privateAdd$4(this, _cache, void 0);
1336
2852
  __privateAdd$4(this, _schemaTables$2, void 0);
2853
+ __privateAdd$4(this, _trace, void 0);
1337
2854
  __privateSet$4(this, _table, options.table);
1338
- __privateSet$4(this, _getFetchProps, options.pluginOptions.getFetchProps);
1339
2855
  __privateSet$4(this, _db, options.db);
1340
2856
  __privateSet$4(this, _cache, options.pluginOptions.cache);
1341
2857
  __privateSet$4(this, _schemaTables$2, options.schemaTables);
2858
+ __privateSet$4(this, _getFetchProps, () => ({ ...options.pluginOptions, sessionID: generateUUID() }));
2859
+ const trace = options.pluginOptions.trace ?? defaultTrace;
2860
+ __privateSet$4(this, _trace, async (name, fn, options2 = {}) => {
2861
+ return trace(name, fn, {
2862
+ ...options2,
2863
+ [TraceAttributes.TABLE]: __privateGet$4(this, _table),
2864
+ [TraceAttributes.KIND]: "sdk-operation",
2865
+ [TraceAttributes.VERSION]: VERSION
2866
+ });
2867
+ });
1342
2868
  }
1343
- async create(a, b, c) {
1344
- if (Array.isArray(a)) {
1345
- if (a.length === 0)
1346
- return [];
1347
- const columns = isStringArray(b) ? b : void 0;
1348
- return __privateMethod$2(this, _bulkInsertTableRecords, bulkInsertTableRecords_fn).call(this, a, columns);
1349
- }
1350
- if (isString(a) && isObject(b)) {
1351
- if (a === "")
1352
- throw new Error("The id can't be empty");
1353
- const columns = isStringArray(c) ? c : void 0;
1354
- return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b, columns);
1355
- }
1356
- if (isObject(a) && isString(a.id)) {
1357
- if (a.id === "")
1358
- throw new Error("The id can't be empty");
1359
- const columns = isStringArray(b) ? b : void 0;
1360
- return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 }, columns);
1361
- }
1362
- if (isObject(a)) {
1363
- const columns = isStringArray(b) ? b : void 0;
1364
- return __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a, columns);
1365
- }
1366
- throw new Error("Invalid arguments for create method");
2869
+ async create(a, b, c, d) {
2870
+ return __privateGet$4(this, _trace).call(this, "create", async () => {
2871
+ const ifVersion = parseIfVersion(b, c, d);
2872
+ if (Array.isArray(a)) {
2873
+ if (a.length === 0)
2874
+ return [];
2875
+ const ids = await __privateMethod$2(this, _insertRecords, insertRecords_fn).call(this, a, { ifVersion, createOnly: true });
2876
+ const columns = isStringArray(b) ? b : ["*"];
2877
+ const result = await this.read(ids, columns);
2878
+ return result;
2879
+ }
2880
+ if (isString(a) && isObject(b)) {
2881
+ if (a === "")
2882
+ throw new Error("The id can't be empty");
2883
+ const columns = isStringArray(c) ? c : void 0;
2884
+ return await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b, columns, { createOnly: true, ifVersion });
2885
+ }
2886
+ if (isObject(a) && isString(a.id)) {
2887
+ if (a.id === "")
2888
+ throw new Error("The id can't be empty");
2889
+ const columns = isStringArray(b) ? b : void 0;
2890
+ return await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 }, columns, { createOnly: true, ifVersion });
2891
+ }
2892
+ if (isObject(a)) {
2893
+ const columns = isStringArray(b) ? b : void 0;
2894
+ return __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a, columns);
2895
+ }
2896
+ throw new Error("Invalid arguments for create method");
2897
+ });
1367
2898
  }
1368
2899
  async read(a, b) {
1369
- const columns = isStringArray(b) ? b : ["*"];
1370
- if (Array.isArray(a)) {
1371
- if (a.length === 0)
1372
- return [];
1373
- const ids = a.map((item) => isString(item) ? item : item.id).filter((id2) => isString(id2));
1374
- const finalObjects = await this.getAll({ filter: { id: { $any: ids } }, columns });
1375
- const dictionary = finalObjects.reduce((acc, object) => {
1376
- acc[object.id] = object;
1377
- return acc;
1378
- }, {});
1379
- return ids.map((id2) => dictionary[id2] ?? null);
1380
- }
1381
- const id = isString(a) ? a : a.id;
1382
- if (isString(id)) {
1383
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1384
- try {
1385
- const response = await getRecord({
1386
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId: id },
1387
- queryParams: { columns },
1388
- ...fetchProps
2900
+ return __privateGet$4(this, _trace).call(this, "read", async () => {
2901
+ const columns = isStringArray(b) ? b : ["*"];
2902
+ if (Array.isArray(a)) {
2903
+ if (a.length === 0)
2904
+ return [];
2905
+ const ids = a.map((item) => extractId(item));
2906
+ const finalObjects = await this.getAll({ filter: { id: { $any: compact(ids) } }, columns });
2907
+ const dictionary = finalObjects.reduce((acc, object) => {
2908
+ acc[object.id] = object;
2909
+ return acc;
2910
+ }, {});
2911
+ return ids.map((id2) => dictionary[id2 ?? ""] ?? null);
2912
+ }
2913
+ const id = extractId(a);
2914
+ if (id) {
2915
+ try {
2916
+ const response = await getRecord({
2917
+ pathParams: {
2918
+ workspace: "{workspaceId}",
2919
+ dbBranchName: "{dbBranch}",
2920
+ region: "{region}",
2921
+ tableName: __privateGet$4(this, _table),
2922
+ recordId: id
2923
+ },
2924
+ queryParams: { columns },
2925
+ ...__privateGet$4(this, _getFetchProps).call(this)
2926
+ });
2927
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
2928
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
2929
+ } catch (e) {
2930
+ if (isObject(e) && e.status === 404) {
2931
+ return null;
2932
+ }
2933
+ throw e;
2934
+ }
2935
+ }
2936
+ return null;
2937
+ });
2938
+ }
2939
+ async readOrThrow(a, b) {
2940
+ return __privateGet$4(this, _trace).call(this, "readOrThrow", async () => {
2941
+ const result = await this.read(a, b);
2942
+ if (Array.isArray(result)) {
2943
+ const missingIds = compact(
2944
+ a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
2945
+ );
2946
+ if (missingIds.length > 0) {
2947
+ throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
2948
+ }
2949
+ return result;
2950
+ }
2951
+ if (result === null) {
2952
+ const id = extractId(a) ?? "unknown";
2953
+ throw new Error(`Record with id ${id} not found`);
2954
+ }
2955
+ return result;
2956
+ });
2957
+ }
2958
+ async update(a, b, c, d) {
2959
+ return __privateGet$4(this, _trace).call(this, "update", async () => {
2960
+ const ifVersion = parseIfVersion(b, c, d);
2961
+ if (Array.isArray(a)) {
2962
+ if (a.length === 0)
2963
+ return [];
2964
+ const existing = await this.read(a, ["id"]);
2965
+ const updates = a.filter((_item, index) => existing[index] !== null);
2966
+ await __privateMethod$2(this, _updateRecords, updateRecords_fn).call(this, updates, {
2967
+ ifVersion,
2968
+ upsert: false
1389
2969
  });
1390
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1391
- return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
1392
- } catch (e) {
1393
- if (isObject(e) && e.status === 404) {
2970
+ const columns = isStringArray(b) ? b : ["*"];
2971
+ const result = await this.read(a, columns);
2972
+ return result;
2973
+ }
2974
+ try {
2975
+ if (isString(a) && isObject(b)) {
2976
+ const columns = isStringArray(c) ? c : void 0;
2977
+ return await __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a, b, columns, { ifVersion });
2978
+ }
2979
+ if (isObject(a) && isString(a.id)) {
2980
+ const columns = isStringArray(b) ? b : void 0;
2981
+ return await __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns, { ifVersion });
2982
+ }
2983
+ } catch (error) {
2984
+ if (error.status === 422)
1394
2985
  return null;
2986
+ throw error;
2987
+ }
2988
+ throw new Error("Invalid arguments for update method");
2989
+ });
2990
+ }
2991
+ async updateOrThrow(a, b, c, d) {
2992
+ return __privateGet$4(this, _trace).call(this, "updateOrThrow", async () => {
2993
+ const result = await this.update(a, b, c, d);
2994
+ if (Array.isArray(result)) {
2995
+ const missingIds = compact(
2996
+ a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
2997
+ );
2998
+ if (missingIds.length > 0) {
2999
+ throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
1395
3000
  }
1396
- throw e;
3001
+ return result;
1397
3002
  }
1398
- }
1399
- return null;
3003
+ if (result === null) {
3004
+ const id = extractId(a) ?? "unknown";
3005
+ throw new Error(`Record with id ${id} not found`);
3006
+ }
3007
+ return result;
3008
+ });
1400
3009
  }
1401
- async update(a, b, c) {
1402
- if (Array.isArray(a)) {
1403
- if (a.length === 0)
1404
- return [];
1405
- if (a.length > 100) {
1406
- console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
3010
+ async createOrUpdate(a, b, c, d) {
3011
+ return __privateGet$4(this, _trace).call(this, "createOrUpdate", async () => {
3012
+ const ifVersion = parseIfVersion(b, c, d);
3013
+ if (Array.isArray(a)) {
3014
+ if (a.length === 0)
3015
+ return [];
3016
+ await __privateMethod$2(this, _updateRecords, updateRecords_fn).call(this, a, {
3017
+ ifVersion,
3018
+ upsert: true
3019
+ });
3020
+ const columns = isStringArray(b) ? b : ["*"];
3021
+ const result = await this.read(a, columns);
3022
+ return result;
1407
3023
  }
1408
- const columns = isStringArray(b) ? b : ["*"];
1409
- return Promise.all(a.map((object) => this.update(object, columns)));
1410
- }
1411
- if (isString(a) && isObject(b)) {
1412
- const columns = isStringArray(c) ? c : void 0;
1413
- return __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a, b, columns);
1414
- }
1415
- if (isObject(a) && isString(a.id)) {
1416
- const columns = isStringArray(b) ? b : void 0;
1417
- return __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns);
1418
- }
1419
- throw new Error("Invalid arguments for update method");
1420
- }
1421
- async createOrUpdate(a, b, c) {
1422
- if (Array.isArray(a)) {
1423
- if (a.length === 0)
1424
- return [];
1425
- if (a.length > 100) {
1426
- console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
3024
+ if (isString(a) && isObject(b)) {
3025
+ const columns = isStringArray(c) ? c : void 0;
3026
+ return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a, b, columns, { ifVersion });
1427
3027
  }
1428
- const columns = isStringArray(b) ? b : ["*"];
1429
- return Promise.all(a.map((object) => this.createOrUpdate(object, columns)));
1430
- }
1431
- if (isString(a) && isObject(b)) {
1432
- const columns = isStringArray(c) ? c : void 0;
1433
- return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a, b, columns);
1434
- }
1435
- if (isObject(a) && isString(a.id)) {
1436
- const columns = isStringArray(c) ? c : void 0;
1437
- return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns);
1438
- }
1439
- throw new Error("Invalid arguments for createOrUpdate method");
1440
- }
1441
- async delete(a) {
1442
- if (Array.isArray(a)) {
1443
- if (a.length === 0)
1444
- return;
1445
- if (a.length > 100) {
1446
- console.warn("Bulk delete operation is not optimized in the Xata API yet, this request might be slow");
3028
+ if (isObject(a) && isString(a.id)) {
3029
+ const columns = isStringArray(c) ? c : void 0;
3030
+ return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns, { ifVersion });
1447
3031
  }
1448
- await Promise.all(a.map((id) => this.delete(id)));
1449
- return;
1450
- }
1451
- if (isString(a)) {
1452
- await __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a);
1453
- return;
1454
- }
1455
- if (isObject(a) && isString(a.id)) {
1456
- await __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a.id);
1457
- return;
1458
- }
1459
- throw new Error("Invalid arguments for delete method");
3032
+ throw new Error("Invalid arguments for createOrUpdate method");
3033
+ });
3034
+ }
3035
+ async createOrReplace(a, b, c, d) {
3036
+ return __privateGet$4(this, _trace).call(this, "createOrReplace", async () => {
3037
+ const ifVersion = parseIfVersion(b, c, d);
3038
+ if (Array.isArray(a)) {
3039
+ if (a.length === 0)
3040
+ return [];
3041
+ const ids = await __privateMethod$2(this, _insertRecords, insertRecords_fn).call(this, a, { ifVersion, createOnly: false });
3042
+ const columns = isStringArray(b) ? b : ["*"];
3043
+ const result = await this.read(ids, columns);
3044
+ return result;
3045
+ }
3046
+ if (isString(a) && isObject(b)) {
3047
+ const columns = isStringArray(c) ? c : void 0;
3048
+ return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b, columns, { createOnly: false, ifVersion });
3049
+ }
3050
+ if (isObject(a) && isString(a.id)) {
3051
+ const columns = isStringArray(c) ? c : void 0;
3052
+ return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 }, columns, { createOnly: false, ifVersion });
3053
+ }
3054
+ throw new Error("Invalid arguments for createOrReplace method");
3055
+ });
3056
+ }
3057
+ async delete(a, b) {
3058
+ return __privateGet$4(this, _trace).call(this, "delete", async () => {
3059
+ if (Array.isArray(a)) {
3060
+ if (a.length === 0)
3061
+ return [];
3062
+ const ids = a.map((o) => {
3063
+ if (isString(o))
3064
+ return o;
3065
+ if (isString(o.id))
3066
+ return o.id;
3067
+ throw new Error("Invalid arguments for delete method");
3068
+ });
3069
+ const columns = isStringArray(b) ? b : ["*"];
3070
+ const result = await this.read(a, columns);
3071
+ await __privateMethod$2(this, _deleteRecords, deleteRecords_fn).call(this, ids);
3072
+ return result;
3073
+ }
3074
+ if (isString(a)) {
3075
+ return __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a, b);
3076
+ }
3077
+ if (isObject(a) && isString(a.id)) {
3078
+ return __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a.id, b);
3079
+ }
3080
+ throw new Error("Invalid arguments for delete method");
3081
+ });
3082
+ }
3083
+ async deleteOrThrow(a, b) {
3084
+ return __privateGet$4(this, _trace).call(this, "deleteOrThrow", async () => {
3085
+ const result = await this.delete(a, b);
3086
+ if (Array.isArray(result)) {
3087
+ const missingIds = compact(
3088
+ a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
3089
+ );
3090
+ if (missingIds.length > 0) {
3091
+ throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
3092
+ }
3093
+ return result;
3094
+ } else if (result === null) {
3095
+ const id = extractId(a) ?? "unknown";
3096
+ throw new Error(`Record with id ${id} not found`);
3097
+ }
3098
+ return result;
3099
+ });
1460
3100
  }
1461
3101
  async search(query, options = {}) {
1462
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1463
- const { records } = await searchTable({
1464
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
1465
- body: {
1466
- query,
1467
- fuzziness: options.fuzziness,
1468
- prefix: options.prefix,
1469
- highlight: options.highlight,
1470
- filter: options.filter,
1471
- boosters: options.boosters
1472
- },
1473
- ...fetchProps
3102
+ return __privateGet$4(this, _trace).call(this, "search", async () => {
3103
+ const { records } = await searchTable({
3104
+ pathParams: {
3105
+ workspace: "{workspaceId}",
3106
+ dbBranchName: "{dbBranch}",
3107
+ region: "{region}",
3108
+ tableName: __privateGet$4(this, _table)
3109
+ },
3110
+ body: {
3111
+ query,
3112
+ fuzziness: options.fuzziness,
3113
+ prefix: options.prefix,
3114
+ highlight: options.highlight,
3115
+ filter: options.filter,
3116
+ boosters: options.boosters,
3117
+ page: options.page,
3118
+ target: options.target
3119
+ },
3120
+ ...__privateGet$4(this, _getFetchProps).call(this)
3121
+ });
3122
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3123
+ return records.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item, ["*"]));
3124
+ });
3125
+ }
3126
+ async vectorSearch(column, query, options) {
3127
+ return __privateGet$4(this, _trace).call(this, "vectorSearch", async () => {
3128
+ const { records } = await vectorSearchTable({
3129
+ pathParams: {
3130
+ workspace: "{workspaceId}",
3131
+ dbBranchName: "{dbBranch}",
3132
+ region: "{region}",
3133
+ tableName: __privateGet$4(this, _table)
3134
+ },
3135
+ body: {
3136
+ column,
3137
+ queryVector: query,
3138
+ similarityFunction: options?.similarityFunction,
3139
+ size: options?.size,
3140
+ filter: options?.filter
3141
+ },
3142
+ ...__privateGet$4(this, _getFetchProps).call(this)
3143
+ });
3144
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3145
+ return records.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item, ["*"]));
3146
+ });
3147
+ }
3148
+ async aggregate(aggs, filter) {
3149
+ return __privateGet$4(this, _trace).call(this, "aggregate", async () => {
3150
+ const result = await aggregateTable({
3151
+ pathParams: {
3152
+ workspace: "{workspaceId}",
3153
+ dbBranchName: "{dbBranch}",
3154
+ region: "{region}",
3155
+ tableName: __privateGet$4(this, _table)
3156
+ },
3157
+ body: { aggs, filter },
3158
+ ...__privateGet$4(this, _getFetchProps).call(this)
3159
+ });
3160
+ return result;
1474
3161
  });
1475
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1476
- return records.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item));
1477
3162
  }
1478
3163
  async query(query) {
1479
- const cacheQuery = await __privateMethod$2(this, _getCacheQuery, getCacheQuery_fn).call(this, query);
1480
- if (cacheQuery)
1481
- return new Page(query, cacheQuery.meta, cacheQuery.records);
1482
- const data = query.getQueryOptions();
1483
- const body = {
1484
- filter: Object.values(data.filter ?? {}).some(Boolean) ? data.filter : void 0,
1485
- sort: data.sort !== void 0 ? buildSortFilter(data.sort) : void 0,
1486
- page: data.pagination,
1487
- columns: data.columns
1488
- };
1489
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1490
- const { meta, records: objects } = await queryTable({
1491
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
1492
- body,
1493
- ...fetchProps
3164
+ return __privateGet$4(this, _trace).call(this, "query", async () => {
3165
+ const cacheQuery = await __privateMethod$2(this, _getCacheQuery, getCacheQuery_fn).call(this, query);
3166
+ if (cacheQuery)
3167
+ return new Page(query, cacheQuery.meta, cacheQuery.records);
3168
+ const data = query.getQueryOptions();
3169
+ const { meta, records: objects } = await queryTable({
3170
+ pathParams: {
3171
+ workspace: "{workspaceId}",
3172
+ dbBranchName: "{dbBranch}",
3173
+ region: "{region}",
3174
+ tableName: __privateGet$4(this, _table)
3175
+ },
3176
+ body: {
3177
+ filter: cleanFilter(data.filter),
3178
+ sort: data.sort !== void 0 ? buildSortFilter(data.sort) : void 0,
3179
+ page: data.pagination,
3180
+ columns: data.columns ?? ["*"],
3181
+ consistency: data.consistency
3182
+ },
3183
+ fetchOptions: data.fetchOptions,
3184
+ ...__privateGet$4(this, _getFetchProps).call(this)
3185
+ });
3186
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3187
+ const records = objects.map(
3188
+ (record) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), record, data.columns ?? ["*"])
3189
+ );
3190
+ await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
3191
+ return new Page(query, meta, records);
1494
3192
  });
1495
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1496
- const records = objects.map((record) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), record));
1497
- await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
1498
- return new Page(query, meta, records);
3193
+ }
3194
+ async summarizeTable(query, summaries, summariesFilter) {
3195
+ return __privateGet$4(this, _trace).call(this, "summarize", async () => {
3196
+ const data = query.getQueryOptions();
3197
+ const result = await summarizeTable({
3198
+ pathParams: {
3199
+ workspace: "{workspaceId}",
3200
+ dbBranchName: "{dbBranch}",
3201
+ region: "{region}",
3202
+ tableName: __privateGet$4(this, _table)
3203
+ },
3204
+ body: {
3205
+ filter: cleanFilter(data.filter),
3206
+ sort: data.sort !== void 0 ? buildSortFilter(data.sort) : void 0,
3207
+ columns: data.columns,
3208
+ consistency: data.consistency,
3209
+ page: data.pagination?.size !== void 0 ? { size: data.pagination?.size } : void 0,
3210
+ summaries,
3211
+ summariesFilter
3212
+ },
3213
+ ...__privateGet$4(this, _getFetchProps).call(this)
3214
+ });
3215
+ return result;
3216
+ });
3217
+ }
3218
+ ask(question, options) {
3219
+ const params = {
3220
+ pathParams: {
3221
+ workspace: "{workspaceId}",
3222
+ dbBranchName: "{dbBranch}",
3223
+ region: "{region}",
3224
+ tableName: __privateGet$4(this, _table)
3225
+ },
3226
+ body: {
3227
+ question,
3228
+ ...options
3229
+ },
3230
+ ...__privateGet$4(this, _getFetchProps).call(this)
3231
+ };
3232
+ if (options?.onMessage) {
3233
+ fetchSSERequest({
3234
+ endpoint: "dataPlane",
3235
+ url: "/db/{dbBranchName}/tables/{tableName}/ask",
3236
+ method: "POST",
3237
+ onMessage: (message) => {
3238
+ options.onMessage?.({ answer: message.text, records: message.records });
3239
+ },
3240
+ ...params
3241
+ });
3242
+ } else {
3243
+ return askTable(params);
3244
+ }
1499
3245
  }
1500
3246
  }
1501
3247
  _table = new WeakMap();
@@ -1503,101 +3249,195 @@ _getFetchProps = new WeakMap();
1503
3249
  _db = new WeakMap();
1504
3250
  _cache = new WeakMap();
1505
3251
  _schemaTables$2 = new WeakMap();
3252
+ _trace = new WeakMap();
1506
3253
  _insertRecordWithoutId = new WeakSet();
1507
3254
  insertRecordWithoutId_fn = async function(object, columns = ["*"]) {
1508
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1509
3255
  const record = transformObjectLinks(object);
1510
3256
  const response = await insertRecord({
1511
3257
  pathParams: {
1512
3258
  workspace: "{workspaceId}",
1513
3259
  dbBranchName: "{dbBranch}",
3260
+ region: "{region}",
1514
3261
  tableName: __privateGet$4(this, _table)
1515
3262
  },
1516
3263
  queryParams: { columns },
1517
3264
  body: record,
1518
- ...fetchProps
3265
+ ...__privateGet$4(this, _getFetchProps).call(this)
1519
3266
  });
1520
3267
  const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1521
- return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
3268
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
1522
3269
  };
1523
3270
  _insertRecordWithId = new WeakSet();
1524
- insertRecordWithId_fn = async function(recordId, object, columns = ["*"]) {
1525
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
3271
+ insertRecordWithId_fn = async function(recordId, object, columns = ["*"], { createOnly, ifVersion }) {
1526
3272
  const record = transformObjectLinks(object);
1527
3273
  const response = await insertRecordWithID({
1528
3274
  pathParams: {
1529
3275
  workspace: "{workspaceId}",
1530
3276
  dbBranchName: "{dbBranch}",
3277
+ region: "{region}",
1531
3278
  tableName: __privateGet$4(this, _table),
1532
3279
  recordId
1533
3280
  },
1534
3281
  body: record,
1535
- queryParams: { createOnly: true, columns },
1536
- ...fetchProps
3282
+ queryParams: { createOnly, columns, ifVersion },
3283
+ ...__privateGet$4(this, _getFetchProps).call(this)
1537
3284
  });
1538
3285
  const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1539
- return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
1540
- };
1541
- _bulkInsertTableRecords = new WeakSet();
1542
- bulkInsertTableRecords_fn = async function(objects, columns = ["*"]) {
1543
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1544
- const records = objects.map((object) => transformObjectLinks(object));
1545
- const response = await bulkInsertTableRecords({
1546
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
1547
- queryParams: { columns },
1548
- body: { records },
1549
- ...fetchProps
1550
- });
1551
- if (!isResponseWithRecords(response)) {
1552
- throw new Error("Request included columns but server didn't include them");
3286
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
3287
+ };
3288
+ _insertRecords = new WeakSet();
3289
+ insertRecords_fn = async function(objects, { createOnly, ifVersion }) {
3290
+ const chunkedOperations = chunk(
3291
+ objects.map((object) => ({
3292
+ insert: { table: __privateGet$4(this, _table), record: transformObjectLinks(object), createOnly, ifVersion }
3293
+ })),
3294
+ BULK_OPERATION_MAX_SIZE
3295
+ );
3296
+ const ids = [];
3297
+ for (const operations of chunkedOperations) {
3298
+ const { results } = await branchTransaction({
3299
+ pathParams: {
3300
+ workspace: "{workspaceId}",
3301
+ dbBranchName: "{dbBranch}",
3302
+ region: "{region}"
3303
+ },
3304
+ body: { operations },
3305
+ ...__privateGet$4(this, _getFetchProps).call(this)
3306
+ });
3307
+ for (const result of results) {
3308
+ if (result.operation === "insert") {
3309
+ ids.push(result.id);
3310
+ } else {
3311
+ ids.push(null);
3312
+ }
3313
+ }
1553
3314
  }
1554
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1555
- return response.records?.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item));
3315
+ return ids;
1556
3316
  };
1557
3317
  _updateRecordWithID = new WeakSet();
1558
- updateRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
1559
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1560
- const record = transformObjectLinks(object);
1561
- const response = await updateRecordWithID({
1562
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
1563
- queryParams: { columns },
1564
- body: record,
1565
- ...fetchProps
1566
- });
1567
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1568
- return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
3318
+ updateRecordWithID_fn = async function(recordId, object, columns = ["*"], { ifVersion }) {
3319
+ const { id: _id, ...record } = transformObjectLinks(object);
3320
+ try {
3321
+ const response = await updateRecordWithID({
3322
+ pathParams: {
3323
+ workspace: "{workspaceId}",
3324
+ dbBranchName: "{dbBranch}",
3325
+ region: "{region}",
3326
+ tableName: __privateGet$4(this, _table),
3327
+ recordId
3328
+ },
3329
+ queryParams: { columns, ifVersion },
3330
+ body: record,
3331
+ ...__privateGet$4(this, _getFetchProps).call(this)
3332
+ });
3333
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3334
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
3335
+ } catch (e) {
3336
+ if (isObject(e) && e.status === 404) {
3337
+ return null;
3338
+ }
3339
+ throw e;
3340
+ }
3341
+ };
3342
+ _updateRecords = new WeakSet();
3343
+ updateRecords_fn = async function(objects, { ifVersion, upsert }) {
3344
+ const chunkedOperations = chunk(
3345
+ objects.map(({ id, ...object }) => ({
3346
+ update: { table: __privateGet$4(this, _table), id, ifVersion, upsert, fields: transformObjectLinks(object) }
3347
+ })),
3348
+ BULK_OPERATION_MAX_SIZE
3349
+ );
3350
+ const ids = [];
3351
+ for (const operations of chunkedOperations) {
3352
+ const { results } = await branchTransaction({
3353
+ pathParams: {
3354
+ workspace: "{workspaceId}",
3355
+ dbBranchName: "{dbBranch}",
3356
+ region: "{region}"
3357
+ },
3358
+ body: { operations },
3359
+ ...__privateGet$4(this, _getFetchProps).call(this)
3360
+ });
3361
+ for (const result of results) {
3362
+ if (result.operation === "update") {
3363
+ ids.push(result.id);
3364
+ } else {
3365
+ ids.push(null);
3366
+ }
3367
+ }
3368
+ }
3369
+ return ids;
1569
3370
  };
1570
3371
  _upsertRecordWithID = new WeakSet();
1571
- upsertRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
1572
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
3372
+ upsertRecordWithID_fn = async function(recordId, object, columns = ["*"], { ifVersion }) {
1573
3373
  const response = await upsertRecordWithID({
1574
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
1575
- queryParams: { columns },
3374
+ pathParams: {
3375
+ workspace: "{workspaceId}",
3376
+ dbBranchName: "{dbBranch}",
3377
+ region: "{region}",
3378
+ tableName: __privateGet$4(this, _table),
3379
+ recordId
3380
+ },
3381
+ queryParams: { columns, ifVersion },
1576
3382
  body: object,
1577
- ...fetchProps
3383
+ ...__privateGet$4(this, _getFetchProps).call(this)
1578
3384
  });
1579
3385
  const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1580
- return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
3386
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
1581
3387
  };
1582
3388
  _deleteRecord = new WeakSet();
1583
- deleteRecord_fn = async function(recordId) {
1584
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1585
- await deleteRecord({
1586
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
1587
- ...fetchProps
1588
- });
3389
+ deleteRecord_fn = async function(recordId, columns = ["*"]) {
3390
+ try {
3391
+ const response = await deleteRecord({
3392
+ pathParams: {
3393
+ workspace: "{workspaceId}",
3394
+ dbBranchName: "{dbBranch}",
3395
+ region: "{region}",
3396
+ tableName: __privateGet$4(this, _table),
3397
+ recordId
3398
+ },
3399
+ queryParams: { columns },
3400
+ ...__privateGet$4(this, _getFetchProps).call(this)
3401
+ });
3402
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3403
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
3404
+ } catch (e) {
3405
+ if (isObject(e) && e.status === 404) {
3406
+ return null;
3407
+ }
3408
+ throw e;
3409
+ }
3410
+ };
3411
+ _deleteRecords = new WeakSet();
3412
+ deleteRecords_fn = async function(recordIds) {
3413
+ const chunkedOperations = chunk(
3414
+ recordIds.map((id) => ({ delete: { table: __privateGet$4(this, _table), id } })),
3415
+ BULK_OPERATION_MAX_SIZE
3416
+ );
3417
+ for (const operations of chunkedOperations) {
3418
+ await branchTransaction({
3419
+ pathParams: {
3420
+ workspace: "{workspaceId}",
3421
+ dbBranchName: "{dbBranch}",
3422
+ region: "{region}"
3423
+ },
3424
+ body: { operations },
3425
+ ...__privateGet$4(this, _getFetchProps).call(this)
3426
+ });
3427
+ }
1589
3428
  };
1590
3429
  _setCacheQuery = new WeakSet();
1591
3430
  setCacheQuery_fn = async function(query, meta, records) {
1592
- await __privateGet$4(this, _cache).set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: new Date(), meta, records });
3431
+ await __privateGet$4(this, _cache)?.set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: new Date(), meta, records });
1593
3432
  };
1594
3433
  _getCacheQuery = new WeakSet();
1595
3434
  getCacheQuery_fn = async function(query) {
1596
3435
  const key = `query_${__privateGet$4(this, _table)}:${query.key()}`;
1597
- const result = await __privateGet$4(this, _cache).get(key);
3436
+ const result = await __privateGet$4(this, _cache)?.get(key);
1598
3437
  if (!result)
1599
3438
  return null;
1600
- const { cache: ttl = __privateGet$4(this, _cache).defaultQueryTTL } = query.getQueryOptions();
3439
+ const defaultTTL = __privateGet$4(this, _cache)?.defaultQueryTTL ?? -1;
3440
+ const { cache: ttl = defaultTTL } = query.getQueryOptions();
1601
3441
  if (ttl < 0)
1602
3442
  return null;
1603
3443
  const hasExpired = result.date.getTime() + ttl < Date.now();
@@ -1607,10 +3447,9 @@ _getSchemaTables$1 = new WeakSet();
1607
3447
  getSchemaTables_fn$1 = async function() {
1608
3448
  if (__privateGet$4(this, _schemaTables$2))
1609
3449
  return __privateGet$4(this, _schemaTables$2);
1610
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1611
3450
  const { schema } = await getBranchDetails({
1612
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
1613
- ...fetchProps
3451
+ pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3452
+ ...__privateGet$4(this, _getFetchProps).call(this)
1614
3453
  });
1615
3454
  __privateSet$4(this, _schemaTables$2, schema.tables);
1616
3455
  return schema.tables;
@@ -1622,22 +3461,24 @@ const transformObjectLinks = (object) => {
1622
3461
  return { ...acc, [key]: isIdentifiable(value) ? value.id : value };
1623
3462
  }, {});
1624
3463
  };
1625
- const initObject = (db, schemaTables, table, object) => {
1626
- const result = {};
3464
+ const initObject = (db, schemaTables, table, object, selectedColumns) => {
3465
+ const data = {};
1627
3466
  const { xata, ...rest } = object ?? {};
1628
- Object.assign(result, rest);
3467
+ Object.assign(data, rest);
1629
3468
  const { columns } = schemaTables.find(({ name }) => name === table) ?? {};
1630
3469
  if (!columns)
1631
3470
  console.error(`Table ${table} not found in schema`);
1632
3471
  for (const column of columns ?? []) {
1633
- const value = result[column.name];
3472
+ if (!isValidColumn(selectedColumns, column))
3473
+ continue;
3474
+ const value = data[column.name];
1634
3475
  switch (column.type) {
1635
3476
  case "datetime": {
1636
- const date = value !== void 0 ? new Date(value) : void 0;
1637
- if (date && isNaN(date.getTime())) {
3477
+ const date = value !== void 0 ? new Date(value) : null;
3478
+ if (date !== null && isNaN(date.getTime())) {
1638
3479
  console.error(`Failed to parse date ${value} for field ${column.name}`);
1639
- } else if (date) {
1640
- result[column.name] = date;
3480
+ } else {
3481
+ data[column.name] = date;
1641
3482
  }
1642
3483
  break;
1643
3484
  }
@@ -1646,32 +3487,85 @@ const initObject = (db, schemaTables, table, object) => {
1646
3487
  if (!linkTable) {
1647
3488
  console.error(`Failed to parse link for field ${column.name}`);
1648
3489
  } else if (isObject(value)) {
1649
- result[column.name] = initObject(db, schemaTables, linkTable, value);
3490
+ const selectedLinkColumns = selectedColumns.reduce((acc, item) => {
3491
+ if (item === column.name) {
3492
+ return [...acc, "*"];
3493
+ }
3494
+ if (item.startsWith(`${column.name}.`)) {
3495
+ const [, ...path] = item.split(".");
3496
+ return [...acc, path.join(".")];
3497
+ }
3498
+ return acc;
3499
+ }, []);
3500
+ data[column.name] = initObject(db, schemaTables, linkTable, value, selectedLinkColumns);
3501
+ } else {
3502
+ data[column.name] = null;
1650
3503
  }
1651
3504
  break;
1652
3505
  }
3506
+ default:
3507
+ data[column.name] = value ?? null;
3508
+ if (column.notNull === true && value === null) {
3509
+ console.error(`Parse error, column ${column.name} is non nullable and value resolves null`);
3510
+ }
3511
+ break;
1653
3512
  }
1654
3513
  }
1655
- result.read = function(columns2) {
1656
- return db[table].read(result["id"], columns2);
3514
+ const record = { ...data };
3515
+ record.read = function(columns2) {
3516
+ return db[table].read(record["id"], columns2);
1657
3517
  };
1658
- result.update = function(data, columns2) {
1659
- return db[table].update(result["id"], data, columns2);
3518
+ record.update = function(data2, b, c) {
3519
+ const columns2 = isStringArray(b) ? b : ["*"];
3520
+ const ifVersion = parseIfVersion(b, c);
3521
+ return db[table].update(record["id"], data2, columns2, { ifVersion });
1660
3522
  };
1661
- result.delete = function() {
1662
- return db[table].delete(result["id"]);
3523
+ record.replace = function(data2, b, c) {
3524
+ const columns2 = isStringArray(b) ? b : ["*"];
3525
+ const ifVersion = parseIfVersion(b, c);
3526
+ return db[table].createOrReplace(record["id"], data2, columns2, { ifVersion });
1663
3527
  };
1664
- result.getMetadata = function() {
3528
+ record.delete = function() {
3529
+ return db[table].delete(record["id"]);
3530
+ };
3531
+ record.getMetadata = function() {
1665
3532
  return xata;
1666
3533
  };
1667
- for (const prop of ["read", "update", "delete", "getMetadata"]) {
1668
- Object.defineProperty(result, prop, { enumerable: false });
3534
+ record.toSerializable = function() {
3535
+ return JSON.parse(JSON.stringify(transformObjectLinks(data)));
3536
+ };
3537
+ record.toString = function() {
3538
+ return JSON.stringify(transformObjectLinks(data));
3539
+ };
3540
+ for (const prop of ["read", "update", "replace", "delete", "getMetadata", "toSerializable", "toString"]) {
3541
+ Object.defineProperty(record, prop, { enumerable: false });
1669
3542
  }
1670
- Object.freeze(result);
1671
- return result;
3543
+ Object.freeze(record);
3544
+ return record;
1672
3545
  };
1673
- function isResponseWithRecords(value) {
1674
- return isObject(value) && Array.isArray(value.records);
3546
+ function extractId(value) {
3547
+ if (isString(value))
3548
+ return value;
3549
+ if (isObject(value) && isString(value.id))
3550
+ return value.id;
3551
+ return void 0;
3552
+ }
3553
+ function isValidColumn(columns, column) {
3554
+ if (columns.includes("*"))
3555
+ return true;
3556
+ if (column.type === "link") {
3557
+ const linkColumns = columns.filter((item) => item.startsWith(column.name));
3558
+ return linkColumns.length > 0;
3559
+ }
3560
+ return columns.includes(column.name);
3561
+ }
3562
+ function parseIfVersion(...args) {
3563
+ for (const arg of args) {
3564
+ if (isObject(arg) && isNumber(arg.ifVersion)) {
3565
+ return arg.ifVersion;
3566
+ }
3567
+ }
3568
+ return void 0;
1675
3569
  }
1676
3570
 
1677
3571
  var __accessCheck$3 = (obj, member, msg) => {
@@ -1723,18 +3617,25 @@ class SimpleCache {
1723
3617
  }
1724
3618
  _map = new WeakMap();
1725
3619
 
1726
- const gt = (value) => ({ $gt: value });
1727
- const ge = (value) => ({ $ge: value });
1728
- const gte = (value) => ({ $ge: value });
1729
- const lt = (value) => ({ $lt: value });
1730
- const lte = (value) => ({ $le: value });
1731
- const le = (value) => ({ $le: value });
3620
+ const greaterThan = (value) => ({ $gt: value });
3621
+ const gt = greaterThan;
3622
+ const greaterThanEquals = (value) => ({ $ge: value });
3623
+ const greaterEquals = greaterThanEquals;
3624
+ const gte = greaterThanEquals;
3625
+ const ge = greaterThanEquals;
3626
+ const lessThan = (value) => ({ $lt: value });
3627
+ const lt = lessThan;
3628
+ const lessThanEquals = (value) => ({ $le: value });
3629
+ const lessEquals = lessThanEquals;
3630
+ const lte = lessThanEquals;
3631
+ const le = lessThanEquals;
1732
3632
  const exists = (column) => ({ $exists: column });
1733
3633
  const notExists = (column) => ({ $notExists: column });
1734
3634
  const startsWith = (value) => ({ $startsWith: value });
1735
3635
  const endsWith = (value) => ({ $endsWith: value });
1736
3636
  const pattern = (value) => ({ $pattern: value });
1737
3637
  const is = (value) => ({ $is: value });
3638
+ const equals = is;
1738
3639
  const isNot = (value) => ({ $isNot: value });
1739
3640
  const contains = (value) => ({ $contains: value });
1740
3641
  const includes = (value) => ({ $includes: value });
@@ -1824,23 +3725,23 @@ class SearchPlugin extends XataPlugin {
1824
3725
  __privateAdd$1(this, _schemaTables, void 0);
1825
3726
  __privateSet$1(this, _schemaTables, schemaTables);
1826
3727
  }
1827
- build({ getFetchProps }) {
3728
+ build(pluginOptions) {
1828
3729
  return {
1829
3730
  all: async (query, options = {}) => {
1830
- const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
1831
- const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
3731
+ const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, pluginOptions);
3732
+ const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, pluginOptions);
1832
3733
  return records.map((record) => {
1833
3734
  const { table = "orphan" } = record.xata;
1834
- return { table, record: initObject(this.db, schemaTables, table, record) };
3735
+ return { table, record: initObject(this.db, schemaTables, table, record, ["*"]) };
1835
3736
  });
1836
3737
  },
1837
3738
  byTable: async (query, options = {}) => {
1838
- const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
1839
- const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
3739
+ const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, pluginOptions);
3740
+ const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, pluginOptions);
1840
3741
  return records.reduce((acc, record) => {
1841
3742
  const { table = "orphan" } = record.xata;
1842
3743
  const items = acc[table] ?? [];
1843
- const item = initObject(this.db, schemaTables, table, record);
3744
+ const item = initObject(this.db, schemaTables, table, record, ["*"]);
1844
3745
  return { ...acc, [table]: [...items, item] };
1845
3746
  }, {});
1846
3747
  }
@@ -1849,106 +3750,39 @@ class SearchPlugin extends XataPlugin {
1849
3750
  }
1850
3751
  _schemaTables = new WeakMap();
1851
3752
  _search = new WeakSet();
1852
- search_fn = async function(query, options, getFetchProps) {
1853
- const fetchProps = await getFetchProps();
1854
- const { tables, fuzziness, highlight, prefix } = options ?? {};
3753
+ search_fn = async function(query, options, pluginOptions) {
3754
+ const { tables, fuzziness, highlight, prefix, page } = options ?? {};
1855
3755
  const { records } = await searchBranch({
1856
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
1857
- body: { tables, query, fuzziness, prefix, highlight },
1858
- ...fetchProps
3756
+ pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3757
+ body: { tables, query, fuzziness, prefix, highlight, page },
3758
+ ...pluginOptions
1859
3759
  });
1860
3760
  return records;
1861
3761
  };
1862
3762
  _getSchemaTables = new WeakSet();
1863
- getSchemaTables_fn = async function(getFetchProps) {
3763
+ getSchemaTables_fn = async function(pluginOptions) {
1864
3764
  if (__privateGet$1(this, _schemaTables))
1865
3765
  return __privateGet$1(this, _schemaTables);
1866
- const fetchProps = await getFetchProps();
1867
3766
  const { schema } = await getBranchDetails({
1868
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
1869
- ...fetchProps
3767
+ pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3768
+ ...pluginOptions
1870
3769
  });
1871
3770
  __privateSet$1(this, _schemaTables, schema.tables);
1872
3771
  return schema.tables;
1873
3772
  };
1874
3773
 
1875
- const isBranchStrategyBuilder = (strategy) => {
1876
- return typeof strategy === "function";
1877
- };
1878
-
1879
- async function getCurrentBranchName(options) {
1880
- const { branch, envBranch } = getEnvironment();
1881
- if (branch) {
1882
- const details = await getDatabaseBranch(branch, options);
1883
- if (details)
1884
- return branch;
1885
- console.warn(`Branch ${branch} not found in Xata. Ignoring...`);
1886
- }
1887
- const gitBranch = envBranch || await getGitBranch();
1888
- return resolveXataBranch(gitBranch, options);
1889
- }
1890
- async function getCurrentBranchDetails(options) {
1891
- const branch = await getCurrentBranchName(options);
1892
- return getDatabaseBranch(branch, options);
1893
- }
1894
- async function resolveXataBranch(gitBranch, options) {
1895
- const databaseURL = options?.databaseURL || getDatabaseURL();
1896
- const apiKey = options?.apiKey || getAPIKey();
1897
- if (!databaseURL)
1898
- throw new Error(
1899
- "A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
1900
- );
1901
- if (!apiKey)
1902
- throw new Error(
1903
- "An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
1904
- );
1905
- const [protocol, , host, , dbName] = databaseURL.split("/");
1906
- const [workspace] = host.split(".");
1907
- const { fallbackBranch } = getEnvironment();
1908
- const { branch } = await resolveBranch({
1909
- apiKey,
1910
- apiUrl: databaseURL,
1911
- fetchImpl: getFetchImplementation(options?.fetchImpl),
1912
- workspacesApiUrl: `${protocol}//${host}`,
1913
- pathParams: { dbName, workspace },
1914
- queryParams: { gitBranch, fallbackBranch }
1915
- });
1916
- return branch;
1917
- }
1918
- async function getDatabaseBranch(branch, options) {
1919
- const databaseURL = options?.databaseURL || getDatabaseURL();
1920
- const apiKey = options?.apiKey || getAPIKey();
1921
- if (!databaseURL)
1922
- throw new Error(
1923
- "A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
1924
- );
1925
- if (!apiKey)
1926
- throw new Error(
1927
- "An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
1928
- );
1929
- const [protocol, , host, , database] = databaseURL.split("/");
1930
- const [workspace] = host.split(".");
1931
- const dbBranchName = `${database}:${branch}`;
1932
- try {
1933
- return await getBranchDetails({
1934
- apiKey,
1935
- apiUrl: databaseURL,
1936
- fetchImpl: getFetchImplementation(options?.fetchImpl),
1937
- workspacesApiUrl: `${protocol}//${host}`,
1938
- pathParams: { dbBranchName, workspace }
1939
- });
1940
- } catch (err) {
1941
- if (isObject(err) && err.status === 404)
1942
- return null;
1943
- throw err;
1944
- }
1945
- }
1946
- function getDatabaseURL() {
1947
- try {
1948
- const { databaseURL } = getEnvironment();
1949
- return databaseURL;
1950
- } catch (err) {
1951
- return void 0;
3774
+ class TransactionPlugin extends XataPlugin {
3775
+ build(pluginOptions) {
3776
+ return {
3777
+ run: async (operations) => {
3778
+ const response = await branchTransaction({
3779
+ pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3780
+ body: { operations },
3781
+ ...pluginOptions
3782
+ });
3783
+ return response;
3784
+ }
3785
+ };
1952
3786
  }
1953
3787
  }
1954
3788
 
@@ -1975,87 +3809,202 @@ var __privateMethod = (obj, member, method) => {
1975
3809
  return method;
1976
3810
  };
1977
3811
  const buildClient = (plugins) => {
1978
- var _branch, _options, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
3812
+ var _options, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _a;
1979
3813
  return _a = class {
1980
3814
  constructor(options = {}, schemaTables) {
1981
3815
  __privateAdd(this, _parseOptions);
1982
3816
  __privateAdd(this, _getFetchProps);
1983
- __privateAdd(this, _evaluateBranch);
1984
- __privateAdd(this, _branch, void 0);
1985
3817
  __privateAdd(this, _options, void 0);
1986
3818
  const safeOptions = __privateMethod(this, _parseOptions, parseOptions_fn).call(this, options);
1987
3819
  __privateSet(this, _options, safeOptions);
1988
3820
  const pluginOptions = {
1989
- getFetchProps: () => __privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
1990
- cache: safeOptions.cache
3821
+ ...__privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
3822
+ cache: safeOptions.cache,
3823
+ host: safeOptions.host
1991
3824
  };
1992
3825
  const db = new SchemaPlugin(schemaTables).build(pluginOptions);
1993
3826
  const search = new SearchPlugin(db, schemaTables).build(pluginOptions);
3827
+ const transactions = new TransactionPlugin().build(pluginOptions);
1994
3828
  this.db = db;
1995
3829
  this.search = search;
3830
+ this.transactions = transactions;
1996
3831
  for (const [key, namespace] of Object.entries(plugins ?? {})) {
1997
3832
  if (namespace === void 0)
1998
3833
  continue;
1999
- const result = namespace.build(pluginOptions);
2000
- if (result instanceof Promise) {
2001
- void result.then((namespace2) => {
2002
- this[key] = namespace2;
2003
- });
2004
- } else {
2005
- this[key] = result;
2006
- }
3834
+ this[key] = namespace.build(pluginOptions);
2007
3835
  }
2008
3836
  }
2009
3837
  async getConfig() {
2010
3838
  const databaseURL = __privateGet(this, _options).databaseURL;
2011
- const branch = await __privateGet(this, _options).branch();
3839
+ const branch = __privateGet(this, _options).branch;
2012
3840
  return { databaseURL, branch };
2013
3841
  }
2014
- }, _branch = new WeakMap(), _options = new WeakMap(), _parseOptions = new WeakSet(), parseOptions_fn = function(options) {
3842
+ }, _options = new WeakMap(), _parseOptions = new WeakSet(), parseOptions_fn = function(options) {
3843
+ const enableBrowser = options?.enableBrowser ?? getEnableBrowserVariable() ?? false;
3844
+ const isBrowser = typeof window !== "undefined" && typeof Deno === "undefined";
3845
+ if (isBrowser && !enableBrowser) {
3846
+ throw new Error(
3847
+ "You are trying to use Xata from the browser, which is potentially a non-secure environment. If you understand the security concerns, such as leaking your credentials, pass `enableBrowser: true` to the client options to remove this error."
3848
+ );
3849
+ }
2015
3850
  const fetch = getFetchImplementation(options?.fetch);
2016
3851
  const databaseURL = options?.databaseURL || getDatabaseURL();
2017
3852
  const apiKey = options?.apiKey || getAPIKey();
2018
3853
  const cache = options?.cache ?? new SimpleCache({ defaultQueryTTL: 0 });
2019
- const branch = async () => options?.branch !== void 0 ? await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, options.branch) : await getCurrentBranchName({ apiKey, databaseURL, fetchImpl: options?.fetch });
2020
- if (!databaseURL || !apiKey) {
2021
- throw new Error("Options databaseURL and apiKey are required");
3854
+ const trace = options?.trace ?? defaultTrace;
3855
+ const clientName = options?.clientName;
3856
+ const host = options?.host ?? "production";
3857
+ const xataAgentExtra = options?.xataAgentExtra;
3858
+ if (!apiKey) {
3859
+ throw new Error("Option apiKey is required");
3860
+ }
3861
+ if (!databaseURL) {
3862
+ throw new Error("Option databaseURL is required");
2022
3863
  }
2023
- return { fetch, databaseURL, apiKey, branch, cache };
2024
- }, _getFetchProps = new WeakSet(), getFetchProps_fn = async function({ fetch, apiKey, databaseURL, branch }) {
2025
- const branchValue = await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, branch);
2026
- if (!branchValue)
2027
- throw new Error("Unable to resolve branch value");
3864
+ const envBranch = getBranch();
3865
+ const previewBranch = getPreviewBranch();
3866
+ const branch = options?.branch || previewBranch || envBranch || "main";
3867
+ if (!!previewBranch && branch !== previewBranch) {
3868
+ console.warn(
3869
+ `Ignoring preview branch ${previewBranch} because branch option was passed to the client constructor with value ${branch}`
3870
+ );
3871
+ } else if (!!envBranch && branch !== envBranch) {
3872
+ console.warn(
3873
+ `Ignoring branch ${envBranch} because branch option was passed to the client constructor with value ${branch}`
3874
+ );
3875
+ } else if (!!previewBranch && !!envBranch && previewBranch !== envBranch) {
3876
+ console.warn(
3877
+ `Ignoring preview branch ${previewBranch} and branch ${envBranch} because branch option was passed to the client constructor with value ${branch}`
3878
+ );
3879
+ } else if (!previewBranch && !envBranch && options?.branch === void 0) {
3880
+ console.warn(
3881
+ `No branch was passed to the client constructor. Using default branch ${branch}. You can set the branch with the environment variable XATA_BRANCH or by passing the branch option to the client constructor.`
3882
+ );
3883
+ }
3884
+ return {
3885
+ fetch,
3886
+ databaseURL,
3887
+ apiKey,
3888
+ branch,
3889
+ cache,
3890
+ trace,
3891
+ host,
3892
+ clientID: generateUUID(),
3893
+ enableBrowser,
3894
+ clientName,
3895
+ xataAgentExtra
3896
+ };
3897
+ }, _getFetchProps = new WeakSet(), getFetchProps_fn = function({
3898
+ fetch,
3899
+ apiKey,
3900
+ databaseURL,
3901
+ branch,
3902
+ trace,
3903
+ clientID,
3904
+ clientName,
3905
+ xataAgentExtra
3906
+ }) {
2028
3907
  return {
2029
- fetchImpl: fetch,
3908
+ fetch,
2030
3909
  apiKey,
2031
3910
  apiUrl: "",
2032
3911
  workspacesApiUrl: (path, params) => {
2033
3912
  const hasBranch = params.dbBranchName ?? params.branch;
2034
- const newPath = path.replace(/^\/db\/[^/]+/, hasBranch ? `:${branchValue}` : "");
3913
+ const newPath = path.replace(/^\/db\/[^/]+/, hasBranch !== void 0 ? `:${branch}` : "");
2035
3914
  return databaseURL + newPath;
2036
- }
2037
- };
2038
- }, _evaluateBranch = new WeakSet(), evaluateBranch_fn = async function(param) {
2039
- if (__privateGet(this, _branch))
2040
- return __privateGet(this, _branch);
2041
- if (param === void 0)
2042
- return void 0;
2043
- const strategies = Array.isArray(param) ? [...param] : [param];
2044
- const evaluateBranch = async (strategy) => {
2045
- return isBranchStrategyBuilder(strategy) ? await strategy() : strategy;
3915
+ },
3916
+ trace,
3917
+ clientID,
3918
+ clientName,
3919
+ xataAgentExtra
2046
3920
  };
2047
- for await (const strategy of strategies) {
2048
- const branch = await evaluateBranch(strategy);
2049
- if (branch) {
2050
- __privateSet(this, _branch, branch);
2051
- return branch;
2052
- }
2053
- }
2054
3921
  }, _a;
2055
3922
  };
2056
3923
  class BaseClient extends buildClient() {
2057
3924
  }
2058
3925
 
3926
+ const META = "__";
3927
+ const VALUE = "___";
3928
+ class Serializer {
3929
+ constructor() {
3930
+ this.classes = {};
3931
+ }
3932
+ add(clazz) {
3933
+ this.classes[clazz.name] = clazz;
3934
+ }
3935
+ toJSON(data) {
3936
+ function visit(obj) {
3937
+ if (Array.isArray(obj))
3938
+ return obj.map(visit);
3939
+ const type = typeof obj;
3940
+ if (type === "undefined")
3941
+ return { [META]: "undefined" };
3942
+ if (type === "bigint")
3943
+ return { [META]: "bigint", [VALUE]: obj.toString() };
3944
+ if (obj === null || type !== "object")
3945
+ return obj;
3946
+ const constructor = obj.constructor;
3947
+ const o = { [META]: constructor.name };
3948
+ for (const [key, value] of Object.entries(obj)) {
3949
+ o[key] = visit(value);
3950
+ }
3951
+ if (constructor === Date)
3952
+ o[VALUE] = obj.toISOString();
3953
+ if (constructor === Map)
3954
+ o[VALUE] = Object.fromEntries(obj);
3955
+ if (constructor === Set)
3956
+ o[VALUE] = [...obj];
3957
+ return o;
3958
+ }
3959
+ return JSON.stringify(visit(data));
3960
+ }
3961
+ fromJSON(json) {
3962
+ return JSON.parse(json, (key, value) => {
3963
+ if (value && typeof value === "object" && !Array.isArray(value)) {
3964
+ const { [META]: clazz, [VALUE]: val, ...rest } = value;
3965
+ const constructor = this.classes[clazz];
3966
+ if (constructor) {
3967
+ return Object.assign(Object.create(constructor.prototype), rest);
3968
+ }
3969
+ if (clazz === "Date")
3970
+ return new Date(val);
3971
+ if (clazz === "Set")
3972
+ return new Set(val);
3973
+ if (clazz === "Map")
3974
+ return new Map(Object.entries(val));
3975
+ if (clazz === "bigint")
3976
+ return BigInt(val);
3977
+ if (clazz === "undefined")
3978
+ return void 0;
3979
+ return rest;
3980
+ }
3981
+ return value;
3982
+ });
3983
+ }
3984
+ }
3985
+ const defaultSerializer = new Serializer();
3986
+ const serialize = (data) => {
3987
+ return defaultSerializer.toJSON(data);
3988
+ };
3989
+ const deserialize = (json) => {
3990
+ return defaultSerializer.fromJSON(json);
3991
+ };
3992
+
3993
+ function buildWorkerRunner(config) {
3994
+ return function xataWorker(name, worker) {
3995
+ return async (...args) => {
3996
+ const url = process.env.NODE_ENV === "development" ? `http://localhost:64749/${name}` : `https://dispatcher.xata.workers.dev/${config.workspace}/${config.worker}/${name}`;
3997
+ const result = await fetch(url, {
3998
+ method: "POST",
3999
+ headers: { "Content-Type": "application/json" },
4000
+ body: serialize({ args })
4001
+ });
4002
+ const text = await result.text();
4003
+ return deserialize(text);
4004
+ };
4005
+ };
4006
+ }
4007
+
2059
4008
  class XataError extends Error {
2060
4009
  constructor(message, status) {
2061
4010
  super(message);
@@ -2063,5 +4012,5 @@ class XataError extends Error {
2063
4012
  }
2064
4013
  }
2065
4014
 
2066
- export { BaseClient, operationsByTag as Operations, PAGINATION_DEFAULT_OFFSET, PAGINATION_DEFAULT_SIZE, PAGINATION_MAX_OFFSET, PAGINATION_MAX_SIZE, Page, Query, RecordArray, Repository, RestRepository, SchemaPlugin, SearchPlugin, SimpleCache, XataApiClient, XataApiPlugin, XataError, XataPlugin, acceptWorkspaceMemberInvite, addGitBranchesEntry, addTableColumn, buildClient, bulkInsertTableRecords, cancelWorkspaceMemberInvite, contains, createBranch, createDatabase, createTable, createUserAPIKey, createWorkspace, deleteBranch, deleteColumn, deleteDatabase, deleteRecord, deleteTable, deleteUser, deleteUserAPIKey, deleteWorkspace, endsWith, executeBranchMigrationPlan, exists, ge, getAPIKey, getBranchDetails, getBranchList, getBranchMetadata, getBranchMigrationHistory, getBranchMigrationPlan, getBranchStats, getColumn, getCurrentBranchDetails, getCurrentBranchName, getDatabaseList, getDatabaseURL, getGitBranchesMapping, getRecord, getTableColumns, getTableSchema, getUser, getUserAPIKeys, getWorkspace, getWorkspaceMembersList, getWorkspacesList, gt, gte, includes, includesAll, includesAny, includesNone, insertRecord, insertRecordWithID, inviteWorkspaceMember, is, isCursorPaginationOptions, isIdentifiable, isNot, isXataRecord, le, lt, lte, notExists, operationsByTag, pattern, queryTable, removeGitBranchesEntry, removeWorkspaceMember, resendWorkspaceMemberInvite, resolveBranch, searchBranch, searchTable, setTableSchema, startsWith, updateBranchMetadata, updateColumn, updateRecordWithID, updateTable, updateUser, updateWorkspace, updateWorkspaceMemberInvite, updateWorkspaceMemberRole, upsertRecordWithID };
4015
+ export { BaseClient, FetcherError, operationsByTag as Operations, PAGINATION_DEFAULT_OFFSET, PAGINATION_DEFAULT_SIZE, PAGINATION_MAX_OFFSET, PAGINATION_MAX_SIZE, Page, Query, RecordArray, Repository, RestRepository, SchemaPlugin, SearchPlugin, Serializer, SimpleCache, XataApiClient, XataApiPlugin, XataError, XataPlugin, acceptWorkspaceMemberInvite, addGitBranchesEntry, addTableColumn, aggregateTable, applyBranchSchemaEdit, askTable, branchTransaction, buildClient, buildPreviewBranchName, buildProviderString, buildWorkerRunner, bulkInsertTableRecords, cancelWorkspaceMemberInvite, compareBranchSchemas, compareBranchWithUserSchema, compareMigrationRequest, contains, copyBranch, createBranch, createDatabase, createMigrationRequest, createTable, createUserAPIKey, createWorkspace, deleteBranch, deleteColumn, deleteDatabase, deleteDatabaseGithubSettings, deleteFileItem, deleteRecord, deleteTable, deleteUser, deleteUserAPIKey, deleteWorkspace, deserialize, endsWith, equals, executeBranchMigrationPlan, exists, ge, getAPIKey, getBranch, getBranchDetails, getBranchList, getBranchMetadata, getBranchMigrationHistory, getBranchMigrationPlan, getBranchSchemaHistory, getBranchStats, getColumn, getDatabaseGithubSettings, getDatabaseList, getDatabaseMetadata, getDatabaseURL, getFile, getFileItem, getGitBranchesMapping, getHostUrl, getMigrationRequest, getMigrationRequestIsMerged, getPreviewBranch, getRecord, getTableColumns, getTableSchema, getUser, getUserAPIKeys, getWorkspace, getWorkspaceMembersList, getWorkspacesList, greaterEquals, greaterThan, greaterThanEquals, gt, gte, includes, includesAll, includesAny, includesNone, insertRecord, insertRecordWithID, inviteWorkspaceMember, is, isCursorPaginationOptions, isHostProviderAlias, isHostProviderBuilder, isIdentifiable, isNot, isXataRecord, le, lessEquals, lessThan, lessThanEquals, listMigrationRequestsCommits, listRegions, lt, lte, mergeMigrationRequest, notExists, operationsByTag, parseProviderString, parseWorkspacesUrlParts, pattern, previewBranchSchemaEdit, pushBranchMigrations, putFile, putFileItem, queryMigrationRequests, queryTable, removeGitBranchesEntry, removeWorkspaceMember, renameDatabase, resendWorkspaceMemberInvite, resolveBranch, searchBranch, searchTable, serialize, setTableSchema, sqlQuery, startsWith, summarizeTable, updateBranchMetadata, updateBranchSchema, updateColumn, updateDatabaseGithubSettings, updateDatabaseMetadata, updateMigrationRequest, updateRecordWithID, updateTable, updateUser, updateWorkspace, updateWorkspaceMemberInvite, updateWorkspaceMemberRole, upsertRecordWithID, vectorSearchTable };
2067
4016
  //# sourceMappingURL=index.mjs.map