@xata.io/client 0.0.0-alpha.vf28813b → 0.0.0-alpha.vf2f26ae

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 = /* @__PURE__ */ 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 = (/* @__PURE__ */ 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.vf28813b";
493
+ const VERSION = "0.24.0";
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,316 +542,418 @@ 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,
575
+ pathParams,
576
+ queryParams,
577
+ fetch: fetch2,
578
+ apiKey,
579
+ endpoint,
580
+ apiUrl,
581
+ workspacesApiUrl,
582
+ trace,
583
+ signal,
584
+ clientID,
585
+ sessionID,
586
+ clientName,
587
+ xataAgentExtra,
588
+ fetchOptions = {}
589
+ }) {
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,
205
657
  pathParams,
206
658
  queryParams,
207
- fetchImpl,
659
+ fetch: fetch2,
208
660
  apiKey,
661
+ endpoint,
209
662
  apiUrl,
210
- workspacesApiUrl
663
+ workspacesApiUrl,
664
+ onMessage,
665
+ onError,
666
+ onClose,
667
+ signal,
668
+ clientID,
669
+ sessionID,
670
+ clientName,
671
+ xataAgentExtra
211
672
  }) {
212
- const baseUrl = buildBaseUrl({ path, workspacesApiUrl, pathParams, apiUrl });
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 getDatabaseMetadata = (variables) => fetch$1({
333
- url: "/dbs/{dbName}/metadata",
334
- method: "get",
335
- ...variables
336
- });
337
- const getGitBranchesMapping = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "get", ...variables });
338
- const addGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "post", ...variables });
339
- const removeGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "delete", ...variables });
340
- const resolveBranch = (variables) => fetch$1({
341
- url: "/dbs/{dbName}/resolveBranch",
342
718
  method: "get",
343
- ...variables
719
+ ...variables,
720
+ signal
344
721
  });
345
- const getBranchDetails = (variables) => fetch$1({
722
+ const getBranchDetails = (variables, signal) => dataPlaneFetch({
346
723
  url: "/db/{dbBranchName}",
347
724
  method: "get",
348
- ...variables
725
+ ...variables,
726
+ signal
349
727
  });
350
- const createBranch = (variables) => fetch$1({ url: "/db/{dbBranchName}", method: "put", ...variables });
351
- const deleteBranch = (variables) => fetch$1({
728
+ const createBranch = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}", method: "put", ...variables, signal });
729
+ const deleteBranch = (variables, signal) => dataPlaneFetch({
352
730
  url: "/db/{dbBranchName}",
353
731
  method: "delete",
354
- ...variables
732
+ ...variables,
733
+ signal
734
+ });
735
+ const copyBranch = (variables, signal) => dataPlaneFetch({
736
+ url: "/db/{dbBranchName}/copy",
737
+ method: "post",
738
+ ...variables,
739
+ signal
355
740
  });
356
- const updateBranchMetadata = (variables) => fetch$1({
741
+ const updateBranchMetadata = (variables, signal) => dataPlaneFetch({
357
742
  url: "/db/{dbBranchName}/metadata",
358
743
  method: "put",
359
- ...variables
744
+ ...variables,
745
+ signal
360
746
  });
361
- const getBranchMetadata = (variables) => fetch$1({
747
+ const getBranchMetadata = (variables, signal) => dataPlaneFetch({
362
748
  url: "/db/{dbBranchName}/metadata",
363
749
  method: "get",
364
- ...variables
750
+ ...variables,
751
+ signal
365
752
  });
366
- const getBranchMigrationHistory = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations", method: "get", ...variables });
367
- const executeBranchMigrationPlan = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations/execute", method: "post", ...variables });
368
- const getBranchMigrationPlan = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations/plan", method: "post", ...variables });
369
- const getBranchStats = (variables) => fetch$1({
753
+ const getBranchStats = (variables, signal) => dataPlaneFetch({
370
754
  url: "/db/{dbBranchName}/stats",
371
755
  method: "get",
372
- ...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
373
783
  });
374
- 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({
375
792
  url: "/db/{dbBranchName}/tables/{tableName}",
376
793
  method: "put",
377
- ...variables
794
+ ...variables,
795
+ signal
378
796
  });
379
- const deleteTable = (variables) => fetch$1({
797
+ const deleteTable = (variables, signal) => dataPlaneFetch({
380
798
  url: "/db/{dbBranchName}/tables/{tableName}",
381
799
  method: "delete",
382
- ...variables
383
- });
384
- const updateTable = (variables) => fetch$1({
385
- url: "/db/{dbBranchName}/tables/{tableName}",
386
- method: "patch",
387
- ...variables
800
+ ...variables,
801
+ signal
388
802
  });
389
- 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({
390
805
  url: "/db/{dbBranchName}/tables/{tableName}/schema",
391
806
  method: "get",
392
- ...variables
393
- });
394
- const setTableSchema = (variables) => fetch$1({
395
- url: "/db/{dbBranchName}/tables/{tableName}/schema",
396
- method: "put",
397
- ...variables
807
+ ...variables,
808
+ signal
398
809
  });
399
- 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({
400
812
  url: "/db/{dbBranchName}/tables/{tableName}/columns",
401
813
  method: "get",
402
- ...variables
814
+ ...variables,
815
+ signal
403
816
  });
404
- const addTableColumn = (variables) => fetch$1({
405
- url: "/db/{dbBranchName}/tables/{tableName}/columns",
406
- method: "post",
407
- ...variables
408
- });
409
- 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({
410
821
  url: "/db/{dbBranchName}/tables/{tableName}/columns/{columnName}",
411
822
  method: "get",
412
- ...variables
823
+ ...variables,
824
+ signal
413
825
  });
414
- 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({
415
828
  url: "/db/{dbBranchName}/tables/{tableName}/columns/{columnName}",
416
829
  method: "delete",
417
- ...variables
830
+ ...variables,
831
+ signal
418
832
  });
419
- const updateColumn = (variables) => fetch$1({
420
- url: "/db/{dbBranchName}/tables/{tableName}/columns/{columnName}",
421
- method: "patch",
422
- ...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
423
840
  });
424
- const insertRecord = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data", method: "post", ...variables });
425
- const insertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "put", ...variables });
426
- const updateRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "patch", ...variables });
427
- const upsertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "post", ...variables });
428
- const deleteRecord = (variables) => fetch$1({
429
- 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}",
849
+ method: "delete",
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
858
+ });
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 deleteFile = (variables, signal) => dataPlaneFetch({
866
+ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}/column/{columnName}/file",
430
867
  method: "delete",
431
- ...variables
868
+ ...variables,
869
+ signal
432
870
  });
433
- const getRecord = (variables) => fetch$1({
871
+ const getRecord = (variables, signal) => dataPlaneFetch({
434
872
  url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}",
435
873
  method: "get",
436
- ...variables
874
+ ...variables,
875
+ signal
437
876
  });
438
- const bulkInsertTableRecords = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/bulk", method: "post", ...variables });
439
- const queryTable = (variables) => fetch$1({
877
+ const insertRecordWithID = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "put", ...variables, signal });
878
+ const updateRecordWithID = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "patch", ...variables, signal });
879
+ const upsertRecordWithID = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "post", ...variables, signal });
880
+ const deleteRecord = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "delete", ...variables, signal });
881
+ const bulkInsertTableRecords = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/bulk", method: "post", ...variables, signal });
882
+ const queryTable = (variables, signal) => dataPlaneFetch({
440
883
  url: "/db/{dbBranchName}/tables/{tableName}/query",
441
884
  method: "post",
442
- ...variables
885
+ ...variables,
886
+ signal
887
+ });
888
+ const searchBranch = (variables, signal) => dataPlaneFetch({
889
+ url: "/db/{dbBranchName}/search",
890
+ method: "post",
891
+ ...variables,
892
+ signal
443
893
  });
444
- const searchTable = (variables) => fetch$1({
894
+ const searchTable = (variables, signal) => dataPlaneFetch({
445
895
  url: "/db/{dbBranchName}/tables/{tableName}/search",
446
896
  method: "post",
447
- ...variables
897
+ ...variables,
898
+ signal
448
899
  });
449
- const searchBranch = (variables) => fetch$1({
450
- url: "/db/{dbBranchName}/search",
900
+ const sqlQuery = (variables, signal) => dataPlaneFetch({
901
+ url: "/db/{dbBranchName}/sql",
451
902
  method: "post",
452
- ...variables
903
+ ...variables,
904
+ signal
453
905
  });
454
- const operationsByTag = {
455
- users: { getUser, updateUser, deleteUser, getUserAPIKeys, createUserAPIKey, deleteUserAPIKey },
456
- workspaces: {
457
- createWorkspace,
458
- getWorkspacesList,
459
- getWorkspace,
460
- updateWorkspace,
461
- deleteWorkspace,
462
- getWorkspaceMembersList,
463
- updateWorkspaceMemberRole,
464
- removeWorkspaceMember,
465
- inviteWorkspaceMember,
466
- updateWorkspaceMemberInvite,
467
- cancelWorkspaceMemberInvite,
468
- resendWorkspaceMemberInvite,
469
- acceptWorkspaceMemberInvite
470
- },
471
- database: {
472
- getDatabaseList,
473
- createDatabase,
474
- deleteDatabase,
475
- getGitBranchesMapping,
476
- addGitBranchesEntry,
477
- removeGitBranchesEntry,
478
- resolveBranch
479
- },
906
+ const vectorSearchTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/vectorSearch", method: "post", ...variables, signal });
907
+ const askTable = (variables, signal) => dataPlaneFetch({
908
+ url: "/db/{dbBranchName}/tables/{tableName}/ask",
909
+ method: "post",
910
+ ...variables,
911
+ signal
912
+ });
913
+ const summarizeTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/summarize", method: "post", ...variables, signal });
914
+ const aggregateTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/aggregate", method: "post", ...variables, signal });
915
+ const fileAccess = (variables, signal) => dataPlaneFetch({
916
+ url: "/file/{fileId}",
917
+ method: "get",
918
+ ...variables,
919
+ signal
920
+ });
921
+ const operationsByTag$2 = {
480
922
  branch: {
481
923
  getBranchList,
482
- getDatabaseMetadata,
483
924
  getBranchDetails,
484
925
  createBranch,
485
926
  deleteBranch,
927
+ copyBranch,
486
928
  updateBranchMetadata,
487
929
  getBranchMetadata,
930
+ getBranchStats,
931
+ getGitBranchesMapping,
932
+ addGitBranchesEntry,
933
+ removeGitBranchesEntry,
934
+ resolveBranch
935
+ },
936
+ migrations: {
488
937
  getBranchMigrationHistory,
489
- executeBranchMigrationPlan,
490
938
  getBranchMigrationPlan,
491
- getBranchStats
939
+ executeBranchMigrationPlan,
940
+ getBranchSchemaHistory,
941
+ compareBranchWithUserSchema,
942
+ compareBranchSchemas,
943
+ updateBranchSchema,
944
+ previewBranchSchemaEdit,
945
+ applyBranchSchemaEdit,
946
+ pushBranchMigrations
947
+ },
948
+ migrationRequests: {
949
+ queryMigrationRequests,
950
+ createMigrationRequest,
951
+ getMigrationRequest,
952
+ updateMigrationRequest,
953
+ listMigrationRequestsCommits,
954
+ compareMigrationRequest,
955
+ getMigrationRequestIsMerged,
956
+ mergeMigrationRequest
492
957
  },
493
958
  table: {
494
959
  createTable,
@@ -499,27 +964,178 @@ const operationsByTag = {
499
964
  getTableColumns,
500
965
  addTableColumn,
501
966
  getColumn,
502
- deleteColumn,
503
- updateColumn
967
+ updateColumn,
968
+ deleteColumn
504
969
  },
505
970
  records: {
971
+ branchTransaction,
506
972
  insertRecord,
973
+ getRecord,
507
974
  insertRecordWithID,
508
975
  updateRecordWithID,
509
976
  upsertRecordWithID,
510
977
  deleteRecord,
511
- getRecord,
512
- bulkInsertTableRecords,
978
+ bulkInsertTableRecords
979
+ },
980
+ files: { getFileItem, putFileItem, deleteFileItem, getFile, putFile, deleteFile, fileAccess },
981
+ searchAndFilter: {
513
982
  queryTable,
983
+ searchBranch,
514
984
  searchTable,
515
- searchBranch
985
+ sqlQuery,
986
+ vectorSearchTable,
987
+ askTable,
988
+ summarizeTable,
989
+ aggregateTable
516
990
  }
517
991
  };
518
992
 
993
+ const controlPlaneFetch = async (options) => fetch$1({ ...options, endpoint: "controlPlane" });
994
+
995
+ const getUser = (variables, signal) => controlPlaneFetch({
996
+ url: "/user",
997
+ method: "get",
998
+ ...variables,
999
+ signal
1000
+ });
1001
+ const updateUser = (variables, signal) => controlPlaneFetch({
1002
+ url: "/user",
1003
+ method: "put",
1004
+ ...variables,
1005
+ signal
1006
+ });
1007
+ const deleteUser = (variables, signal) => controlPlaneFetch({
1008
+ url: "/user",
1009
+ method: "delete",
1010
+ ...variables,
1011
+ signal
1012
+ });
1013
+ const getUserAPIKeys = (variables, signal) => controlPlaneFetch({
1014
+ url: "/user/keys",
1015
+ method: "get",
1016
+ ...variables,
1017
+ signal
1018
+ });
1019
+ const createUserAPIKey = (variables, signal) => controlPlaneFetch({
1020
+ url: "/user/keys/{keyName}",
1021
+ method: "post",
1022
+ ...variables,
1023
+ signal
1024
+ });
1025
+ const deleteUserAPIKey = (variables, signal) => controlPlaneFetch({
1026
+ url: "/user/keys/{keyName}",
1027
+ method: "delete",
1028
+ ...variables,
1029
+ signal
1030
+ });
1031
+ const getWorkspacesList = (variables, signal) => controlPlaneFetch({
1032
+ url: "/workspaces",
1033
+ method: "get",
1034
+ ...variables,
1035
+ signal
1036
+ });
1037
+ const createWorkspace = (variables, signal) => controlPlaneFetch({
1038
+ url: "/workspaces",
1039
+ method: "post",
1040
+ ...variables,
1041
+ signal
1042
+ });
1043
+ const getWorkspace = (variables, signal) => controlPlaneFetch({
1044
+ url: "/workspaces/{workspaceId}",
1045
+ method: "get",
1046
+ ...variables,
1047
+ signal
1048
+ });
1049
+ const updateWorkspace = (variables, signal) => controlPlaneFetch({
1050
+ url: "/workspaces/{workspaceId}",
1051
+ method: "put",
1052
+ ...variables,
1053
+ signal
1054
+ });
1055
+ const deleteWorkspace = (variables, signal) => controlPlaneFetch({
1056
+ url: "/workspaces/{workspaceId}",
1057
+ method: "delete",
1058
+ ...variables,
1059
+ signal
1060
+ });
1061
+ const getWorkspaceMembersList = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/members", method: "get", ...variables, signal });
1062
+ const updateWorkspaceMemberRole = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/members/{userId}", method: "put", ...variables, signal });
1063
+ const removeWorkspaceMember = (variables, signal) => controlPlaneFetch({
1064
+ url: "/workspaces/{workspaceId}/members/{userId}",
1065
+ method: "delete",
1066
+ ...variables,
1067
+ signal
1068
+ });
1069
+ const inviteWorkspaceMember = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites", method: "post", ...variables, signal });
1070
+ const updateWorkspaceMemberInvite = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites/{inviteId}", method: "patch", ...variables, signal });
1071
+ const cancelWorkspaceMemberInvite = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites/{inviteId}", method: "delete", ...variables, signal });
1072
+ const acceptWorkspaceMemberInvite = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites/{inviteKey}/accept", method: "post", ...variables, signal });
1073
+ const resendWorkspaceMemberInvite = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/invites/{inviteId}/resend", method: "post", ...variables, signal });
1074
+ const getDatabaseList = (variables, signal) => controlPlaneFetch({
1075
+ url: "/workspaces/{workspaceId}/dbs",
1076
+ method: "get",
1077
+ ...variables,
1078
+ signal
1079
+ });
1080
+ const createDatabase = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}", method: "put", ...variables, signal });
1081
+ const deleteDatabase = (variables, signal) => controlPlaneFetch({
1082
+ url: "/workspaces/{workspaceId}/dbs/{dbName}",
1083
+ method: "delete",
1084
+ ...variables,
1085
+ signal
1086
+ });
1087
+ const getDatabaseMetadata = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}", method: "get", ...variables, signal });
1088
+ const updateDatabaseMetadata = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}", method: "patch", ...variables, signal });
1089
+ const renameDatabase = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}/rename", method: "post", ...variables, signal });
1090
+ const getDatabaseGithubSettings = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}/github", method: "get", ...variables, signal });
1091
+ const updateDatabaseGithubSettings = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}/github", method: "put", ...variables, signal });
1092
+ const deleteDatabaseGithubSettings = (variables, signal) => controlPlaneFetch({ url: "/workspaces/{workspaceId}/dbs/{dbName}/github", method: "delete", ...variables, signal });
1093
+ const listRegions = (variables, signal) => controlPlaneFetch({
1094
+ url: "/workspaces/{workspaceId}/regions",
1095
+ method: "get",
1096
+ ...variables,
1097
+ signal
1098
+ });
1099
+ const operationsByTag$1 = {
1100
+ users: { getUser, updateUser, deleteUser },
1101
+ authentication: { getUserAPIKeys, createUserAPIKey, deleteUserAPIKey },
1102
+ workspaces: {
1103
+ getWorkspacesList,
1104
+ createWorkspace,
1105
+ getWorkspace,
1106
+ updateWorkspace,
1107
+ deleteWorkspace,
1108
+ getWorkspaceMembersList,
1109
+ updateWorkspaceMemberRole,
1110
+ removeWorkspaceMember
1111
+ },
1112
+ invites: {
1113
+ inviteWorkspaceMember,
1114
+ updateWorkspaceMemberInvite,
1115
+ cancelWorkspaceMemberInvite,
1116
+ acceptWorkspaceMemberInvite,
1117
+ resendWorkspaceMemberInvite
1118
+ },
1119
+ databases: {
1120
+ getDatabaseList,
1121
+ createDatabase,
1122
+ deleteDatabase,
1123
+ getDatabaseMetadata,
1124
+ updateDatabaseMetadata,
1125
+ renameDatabase,
1126
+ getDatabaseGithubSettings,
1127
+ updateDatabaseGithubSettings,
1128
+ deleteDatabaseGithubSettings,
1129
+ listRegions
1130
+ }
1131
+ };
1132
+
1133
+ const operationsByTag = deepMerge(operationsByTag$2, operationsByTag$1);
1134
+
519
1135
  function getHostUrl(provider, type) {
520
- if (isValidAlias(provider)) {
1136
+ if (isHostProviderAlias(provider)) {
521
1137
  return providers[provider][type];
522
- } else if (isValidBuilder(provider)) {
1138
+ } else if (isHostProviderBuilder(provider)) {
523
1139
  return provider[type];
524
1140
  }
525
1141
  throw new Error("Invalid API provider");
@@ -527,19 +1143,49 @@ function getHostUrl(provider, type) {
527
1143
  const providers = {
528
1144
  production: {
529
1145
  main: "https://api.xata.io",
530
- workspaces: "https://{workspaceId}.xata.sh"
1146
+ workspaces: "https://{workspaceId}.{region}.xata.sh"
531
1147
  },
532
1148
  staging: {
533
- main: "https://staging.xatabase.co",
534
- workspaces: "https://{workspaceId}.staging.xatabase.co"
1149
+ main: "https://api.staging-xata.dev",
1150
+ workspaces: "https://{workspaceId}.{region}.staging-xata.dev"
1151
+ },
1152
+ dev: {
1153
+ main: "https://api.dev-xata.dev",
1154
+ workspaces: "https://{workspaceId}.{region}.dev-xata.dev"
535
1155
  }
536
1156
  };
537
- function isValidAlias(alias) {
1157
+ function isHostProviderAlias(alias) {
538
1158
  return isString(alias) && Object.keys(providers).includes(alias);
539
1159
  }
540
- function isValidBuilder(builder) {
1160
+ function isHostProviderBuilder(builder) {
541
1161
  return isObject(builder) && isString(builder.main) && isString(builder.workspaces);
542
1162
  }
1163
+ function parseProviderString(provider = "production") {
1164
+ if (isHostProviderAlias(provider)) {
1165
+ return provider;
1166
+ }
1167
+ const [main, workspaces] = provider.split(",");
1168
+ if (!main || !workspaces)
1169
+ return null;
1170
+ return { main, workspaces };
1171
+ }
1172
+ function buildProviderString(provider) {
1173
+ if (isHostProviderAlias(provider))
1174
+ return provider;
1175
+ return `${provider.main},${provider.workspaces}`;
1176
+ }
1177
+ function parseWorkspacesUrlParts(url) {
1178
+ if (!isString(url))
1179
+ return null;
1180
+ const regex = /(?:https:\/\/)?([^.]+)(?:\.([^.]+))\.xata\.sh.*/;
1181
+ const regexDev = /(?:https:\/\/)?([^.]+)(?:\.([^.]+))\.dev-xata\.dev.*/;
1182
+ const regexStaging = /(?:https:\/\/)?([^.]+)(?:\.([^.]+))\.staging-xata\.dev.*/;
1183
+ const regexProdTesting = /(?:https:\/\/)?([^.]+)(?:\.([^.]+))\.xata\.tech.*/;
1184
+ const match = url.match(regex) || url.match(regexDev) || url.match(regexStaging) || url.match(regexProdTesting);
1185
+ if (!match)
1186
+ return null;
1187
+ return { workspace: match[1], region: match[2] };
1188
+ }
543
1189
 
544
1190
  var __accessCheck$7 = (obj, member, msg) => {
545
1191
  if (!member.has(obj))
@@ -565,15 +1211,21 @@ class XataApiClient {
565
1211
  __privateAdd$7(this, _extraProps, void 0);
566
1212
  __privateAdd$7(this, _namespaces, {});
567
1213
  const provider = options.host ?? "production";
568
- const apiKey = options?.apiKey ?? getAPIKey();
1214
+ const apiKey = options.apiKey ?? getAPIKey();
1215
+ const trace = options.trace ?? defaultTrace;
1216
+ const clientID = generateUUID();
569
1217
  if (!apiKey) {
570
1218
  throw new Error("Could not resolve a valid apiKey");
571
1219
  }
572
1220
  __privateSet$7(this, _extraProps, {
573
1221
  apiUrl: getHostUrl(provider, "main"),
574
1222
  workspacesApiUrl: getHostUrl(provider, "workspaces"),
575
- fetchImpl: getFetchImplementation(options.fetch),
576
- apiKey
1223
+ fetch: getFetchImplementation(options.fetch),
1224
+ apiKey,
1225
+ trace,
1226
+ clientName: options.clientName,
1227
+ xataAgentExtra: options.xataAgentExtra,
1228
+ clientID
577
1229
  });
578
1230
  }
579
1231
  get user() {
@@ -581,21 +1233,41 @@ class XataApiClient {
581
1233
  __privateGet$7(this, _namespaces).user = new UserApi(__privateGet$7(this, _extraProps));
582
1234
  return __privateGet$7(this, _namespaces).user;
583
1235
  }
1236
+ get authentication() {
1237
+ if (!__privateGet$7(this, _namespaces).authentication)
1238
+ __privateGet$7(this, _namespaces).authentication = new AuthenticationApi(__privateGet$7(this, _extraProps));
1239
+ return __privateGet$7(this, _namespaces).authentication;
1240
+ }
584
1241
  get workspaces() {
585
1242
  if (!__privateGet$7(this, _namespaces).workspaces)
586
1243
  __privateGet$7(this, _namespaces).workspaces = new WorkspaceApi(__privateGet$7(this, _extraProps));
587
1244
  return __privateGet$7(this, _namespaces).workspaces;
588
1245
  }
589
- get databases() {
590
- if (!__privateGet$7(this, _namespaces).databases)
591
- __privateGet$7(this, _namespaces).databases = new DatabaseApi(__privateGet$7(this, _extraProps));
592
- return __privateGet$7(this, _namespaces).databases;
1246
+ get invites() {
1247
+ if (!__privateGet$7(this, _namespaces).invites)
1248
+ __privateGet$7(this, _namespaces).invites = new InvitesApi(__privateGet$7(this, _extraProps));
1249
+ return __privateGet$7(this, _namespaces).invites;
1250
+ }
1251
+ get database() {
1252
+ if (!__privateGet$7(this, _namespaces).database)
1253
+ __privateGet$7(this, _namespaces).database = new DatabaseApi(__privateGet$7(this, _extraProps));
1254
+ return __privateGet$7(this, _namespaces).database;
593
1255
  }
594
1256
  get branches() {
595
1257
  if (!__privateGet$7(this, _namespaces).branches)
596
1258
  __privateGet$7(this, _namespaces).branches = new BranchApi(__privateGet$7(this, _extraProps));
597
1259
  return __privateGet$7(this, _namespaces).branches;
598
1260
  }
1261
+ get migrations() {
1262
+ if (!__privateGet$7(this, _namespaces).migrations)
1263
+ __privateGet$7(this, _namespaces).migrations = new MigrationsApi(__privateGet$7(this, _extraProps));
1264
+ return __privateGet$7(this, _namespaces).migrations;
1265
+ }
1266
+ get migrationRequests() {
1267
+ if (!__privateGet$7(this, _namespaces).migrationRequests)
1268
+ __privateGet$7(this, _namespaces).migrationRequests = new MigrationRequestsApi(__privateGet$7(this, _extraProps));
1269
+ return __privateGet$7(this, _namespaces).migrationRequests;
1270
+ }
599
1271
  get tables() {
600
1272
  if (!__privateGet$7(this, _namespaces).tables)
601
1273
  __privateGet$7(this, _namespaces).tables = new TableApi(__privateGet$7(this, _extraProps));
@@ -606,6 +1278,16 @@ class XataApiClient {
606
1278
  __privateGet$7(this, _namespaces).records = new RecordsApi(__privateGet$7(this, _extraProps));
607
1279
  return __privateGet$7(this, _namespaces).records;
608
1280
  }
1281
+ get files() {
1282
+ if (!__privateGet$7(this, _namespaces).files)
1283
+ __privateGet$7(this, _namespaces).files = new FilesApi(__privateGet$7(this, _extraProps));
1284
+ return __privateGet$7(this, _namespaces).files;
1285
+ }
1286
+ get searchAndFilter() {
1287
+ if (!__privateGet$7(this, _namespaces).searchAndFilter)
1288
+ __privateGet$7(this, _namespaces).searchAndFilter = new SearchAndFilterApi(__privateGet$7(this, _extraProps));
1289
+ return __privateGet$7(this, _namespaces).searchAndFilter;
1290
+ }
609
1291
  }
610
1292
  _extraProps = new WeakMap();
611
1293
  _namespaces = new WeakMap();
@@ -616,24 +1298,29 @@ class UserApi {
616
1298
  getUser() {
617
1299
  return operationsByTag.users.getUser({ ...this.extraProps });
618
1300
  }
619
- updateUser(user) {
1301
+ updateUser({ user }) {
620
1302
  return operationsByTag.users.updateUser({ body: user, ...this.extraProps });
621
1303
  }
622
1304
  deleteUser() {
623
1305
  return operationsByTag.users.deleteUser({ ...this.extraProps });
624
1306
  }
1307
+ }
1308
+ class AuthenticationApi {
1309
+ constructor(extraProps) {
1310
+ this.extraProps = extraProps;
1311
+ }
625
1312
  getUserAPIKeys() {
626
- return operationsByTag.users.getUserAPIKeys({ ...this.extraProps });
1313
+ return operationsByTag.authentication.getUserAPIKeys({ ...this.extraProps });
627
1314
  }
628
- createUserAPIKey(keyName) {
629
- return operationsByTag.users.createUserAPIKey({
630
- pathParams: { keyName },
1315
+ createUserAPIKey({ name }) {
1316
+ return operationsByTag.authentication.createUserAPIKey({
1317
+ pathParams: { keyName: name },
631
1318
  ...this.extraProps
632
1319
  });
633
1320
  }
634
- deleteUserAPIKey(keyName) {
635
- return operationsByTag.users.deleteUserAPIKey({
636
- pathParams: { keyName },
1321
+ deleteUserAPIKey({ name }) {
1322
+ return operationsByTag.authentication.deleteUserAPIKey({
1323
+ pathParams: { keyName: name },
637
1324
  ...this.extraProps
638
1325
  });
639
1326
  }
@@ -642,368 +1329,1178 @@ class WorkspaceApi {
642
1329
  constructor(extraProps) {
643
1330
  this.extraProps = extraProps;
644
1331
  }
645
- createWorkspace(workspaceMeta) {
1332
+ getWorkspacesList() {
1333
+ return operationsByTag.workspaces.getWorkspacesList({ ...this.extraProps });
1334
+ }
1335
+ createWorkspace({ data }) {
646
1336
  return operationsByTag.workspaces.createWorkspace({
647
- body: workspaceMeta,
1337
+ body: data,
648
1338
  ...this.extraProps
649
1339
  });
650
1340
  }
651
- getWorkspacesList() {
652
- return operationsByTag.workspaces.getWorkspacesList({ ...this.extraProps });
653
- }
654
- getWorkspace(workspaceId) {
1341
+ getWorkspace({ workspace }) {
655
1342
  return operationsByTag.workspaces.getWorkspace({
656
- pathParams: { workspaceId },
1343
+ pathParams: { workspaceId: workspace },
657
1344
  ...this.extraProps
658
1345
  });
659
1346
  }
660
- updateWorkspace(workspaceId, workspaceMeta) {
1347
+ updateWorkspace({
1348
+ workspace,
1349
+ update
1350
+ }) {
661
1351
  return operationsByTag.workspaces.updateWorkspace({
662
- pathParams: { workspaceId },
663
- body: workspaceMeta,
1352
+ pathParams: { workspaceId: workspace },
1353
+ body: update,
664
1354
  ...this.extraProps
665
1355
  });
666
1356
  }
667
- deleteWorkspace(workspaceId) {
1357
+ deleteWorkspace({ workspace }) {
668
1358
  return operationsByTag.workspaces.deleteWorkspace({
669
- pathParams: { workspaceId },
1359
+ pathParams: { workspaceId: workspace },
670
1360
  ...this.extraProps
671
1361
  });
672
1362
  }
673
- getWorkspaceMembersList(workspaceId) {
1363
+ getWorkspaceMembersList({ workspace }) {
674
1364
  return operationsByTag.workspaces.getWorkspaceMembersList({
675
- pathParams: { workspaceId },
1365
+ pathParams: { workspaceId: workspace },
676
1366
  ...this.extraProps
677
1367
  });
678
1368
  }
679
- updateWorkspaceMemberRole(workspaceId, userId, role) {
1369
+ updateWorkspaceMemberRole({
1370
+ workspace,
1371
+ user,
1372
+ role
1373
+ }) {
680
1374
  return operationsByTag.workspaces.updateWorkspaceMemberRole({
681
- pathParams: { workspaceId, userId },
1375
+ pathParams: { workspaceId: workspace, userId: user },
682
1376
  body: { role },
683
1377
  ...this.extraProps
684
1378
  });
685
1379
  }
686
- removeWorkspaceMember(workspaceId, userId) {
1380
+ removeWorkspaceMember({
1381
+ workspace,
1382
+ user
1383
+ }) {
687
1384
  return operationsByTag.workspaces.removeWorkspaceMember({
688
- pathParams: { workspaceId, userId },
1385
+ pathParams: { workspaceId: workspace, userId: user },
689
1386
  ...this.extraProps
690
1387
  });
691
1388
  }
692
- inviteWorkspaceMember(workspaceId, email, role) {
693
- return operationsByTag.workspaces.inviteWorkspaceMember({
694
- pathParams: { workspaceId },
1389
+ }
1390
+ class InvitesApi {
1391
+ constructor(extraProps) {
1392
+ this.extraProps = extraProps;
1393
+ }
1394
+ inviteWorkspaceMember({
1395
+ workspace,
1396
+ email,
1397
+ role
1398
+ }) {
1399
+ return operationsByTag.invites.inviteWorkspaceMember({
1400
+ pathParams: { workspaceId: workspace },
695
1401
  body: { email, role },
696
1402
  ...this.extraProps
697
1403
  });
698
1404
  }
699
- updateWorkspaceMemberInvite(workspaceId, inviteId, role) {
700
- return operationsByTag.workspaces.updateWorkspaceMemberInvite({
701
- pathParams: { workspaceId, inviteId },
1405
+ updateWorkspaceMemberInvite({
1406
+ workspace,
1407
+ invite,
1408
+ role
1409
+ }) {
1410
+ return operationsByTag.invites.updateWorkspaceMemberInvite({
1411
+ pathParams: { workspaceId: workspace, inviteId: invite },
702
1412
  body: { role },
703
1413
  ...this.extraProps
704
1414
  });
705
1415
  }
706
- cancelWorkspaceMemberInvite(workspaceId, inviteId) {
707
- return operationsByTag.workspaces.cancelWorkspaceMemberInvite({
708
- pathParams: { workspaceId, inviteId },
1416
+ cancelWorkspaceMemberInvite({
1417
+ workspace,
1418
+ invite
1419
+ }) {
1420
+ return operationsByTag.invites.cancelWorkspaceMemberInvite({
1421
+ pathParams: { workspaceId: workspace, inviteId: invite },
709
1422
  ...this.extraProps
710
1423
  });
711
1424
  }
712
- resendWorkspaceMemberInvite(workspaceId, inviteId) {
713
- return operationsByTag.workspaces.resendWorkspaceMemberInvite({
714
- pathParams: { workspaceId, inviteId },
1425
+ acceptWorkspaceMemberInvite({
1426
+ workspace,
1427
+ key
1428
+ }) {
1429
+ return operationsByTag.invites.acceptWorkspaceMemberInvite({
1430
+ pathParams: { workspaceId: workspace, inviteKey: key },
715
1431
  ...this.extraProps
716
1432
  });
717
1433
  }
718
- acceptWorkspaceMemberInvite(workspaceId, inviteKey) {
719
- return operationsByTag.workspaces.acceptWorkspaceMemberInvite({
720
- pathParams: { workspaceId, inviteKey },
1434
+ resendWorkspaceMemberInvite({
1435
+ workspace,
1436
+ invite
1437
+ }) {
1438
+ return operationsByTag.invites.resendWorkspaceMemberInvite({
1439
+ pathParams: { workspaceId: workspace, inviteId: invite },
721
1440
  ...this.extraProps
722
1441
  });
723
1442
  }
724
1443
  }
725
- class DatabaseApi {
1444
+ class BranchApi {
726
1445
  constructor(extraProps) {
727
1446
  this.extraProps = extraProps;
728
1447
  }
729
- getDatabaseList(workspace) {
730
- return operationsByTag.database.getDatabaseList({
731
- pathParams: { workspace },
1448
+ getBranchList({
1449
+ workspace,
1450
+ region,
1451
+ database
1452
+ }) {
1453
+ return operationsByTag.branch.getBranchList({
1454
+ pathParams: { workspace, region, dbName: database },
732
1455
  ...this.extraProps
733
1456
  });
734
1457
  }
735
- createDatabase(workspace, dbName, options = {}) {
736
- return operationsByTag.database.createDatabase({
737
- pathParams: { workspace, dbName },
738
- body: options,
1458
+ getBranchDetails({
1459
+ workspace,
1460
+ region,
1461
+ database,
1462
+ branch
1463
+ }) {
1464
+ return operationsByTag.branch.getBranchDetails({
1465
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
739
1466
  ...this.extraProps
740
1467
  });
741
1468
  }
742
- deleteDatabase(workspace, dbName) {
743
- return operationsByTag.database.deleteDatabase({
744
- pathParams: { workspace, dbName },
1469
+ createBranch({
1470
+ workspace,
1471
+ region,
1472
+ database,
1473
+ branch,
1474
+ from,
1475
+ metadata
1476
+ }) {
1477
+ return operationsByTag.branch.createBranch({
1478
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1479
+ body: { from, metadata },
745
1480
  ...this.extraProps
746
1481
  });
747
1482
  }
748
- getGitBranchesMapping(workspace, dbName) {
749
- return operationsByTag.database.getGitBranchesMapping({
750
- pathParams: { workspace, dbName },
1483
+ deleteBranch({
1484
+ workspace,
1485
+ region,
1486
+ database,
1487
+ branch
1488
+ }) {
1489
+ return operationsByTag.branch.deleteBranch({
1490
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
751
1491
  ...this.extraProps
752
1492
  });
753
1493
  }
754
- addGitBranchesEntry(workspace, dbName, body) {
755
- return operationsByTag.database.addGitBranchesEntry({
756
- pathParams: { workspace, dbName },
757
- body,
1494
+ copyBranch({
1495
+ workspace,
1496
+ region,
1497
+ database,
1498
+ branch,
1499
+ destinationBranch,
1500
+ limit
1501
+ }) {
1502
+ return operationsByTag.branch.copyBranch({
1503
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1504
+ body: { destinationBranch, limit },
1505
+ ...this.extraProps
1506
+ });
1507
+ }
1508
+ updateBranchMetadata({
1509
+ workspace,
1510
+ region,
1511
+ database,
1512
+ branch,
1513
+ metadata
1514
+ }) {
1515
+ return operationsByTag.branch.updateBranchMetadata({
1516
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1517
+ body: metadata,
1518
+ ...this.extraProps
1519
+ });
1520
+ }
1521
+ getBranchMetadata({
1522
+ workspace,
1523
+ region,
1524
+ database,
1525
+ branch
1526
+ }) {
1527
+ return operationsByTag.branch.getBranchMetadata({
1528
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
758
1529
  ...this.extraProps
759
1530
  });
760
1531
  }
761
- removeGitBranchesEntry(workspace, dbName, gitBranch) {
762
- return operationsByTag.database.removeGitBranchesEntry({
763
- pathParams: { workspace, dbName },
1532
+ getBranchStats({
1533
+ workspace,
1534
+ region,
1535
+ database,
1536
+ branch
1537
+ }) {
1538
+ return operationsByTag.branch.getBranchStats({
1539
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1540
+ ...this.extraProps
1541
+ });
1542
+ }
1543
+ getGitBranchesMapping({
1544
+ workspace,
1545
+ region,
1546
+ database
1547
+ }) {
1548
+ return operationsByTag.branch.getGitBranchesMapping({
1549
+ pathParams: { workspace, region, dbName: database },
1550
+ ...this.extraProps
1551
+ });
1552
+ }
1553
+ addGitBranchesEntry({
1554
+ workspace,
1555
+ region,
1556
+ database,
1557
+ gitBranch,
1558
+ xataBranch
1559
+ }) {
1560
+ return operationsByTag.branch.addGitBranchesEntry({
1561
+ pathParams: { workspace, region, dbName: database },
1562
+ body: { gitBranch, xataBranch },
1563
+ ...this.extraProps
1564
+ });
1565
+ }
1566
+ removeGitBranchesEntry({
1567
+ workspace,
1568
+ region,
1569
+ database,
1570
+ gitBranch
1571
+ }) {
1572
+ return operationsByTag.branch.removeGitBranchesEntry({
1573
+ pathParams: { workspace, region, dbName: database },
764
1574
  queryParams: { gitBranch },
765
1575
  ...this.extraProps
766
1576
  });
767
1577
  }
768
- resolveBranch(workspace, dbName, gitBranch, fallbackBranch) {
769
- return operationsByTag.database.resolveBranch({
770
- pathParams: { workspace, dbName },
1578
+ resolveBranch({
1579
+ workspace,
1580
+ region,
1581
+ database,
1582
+ gitBranch,
1583
+ fallbackBranch
1584
+ }) {
1585
+ return operationsByTag.branch.resolveBranch({
1586
+ pathParams: { workspace, region, dbName: database },
771
1587
  queryParams: { gitBranch, fallbackBranch },
772
1588
  ...this.extraProps
773
1589
  });
774
1590
  }
775
1591
  }
776
- class BranchApi {
1592
+ class TableApi {
777
1593
  constructor(extraProps) {
778
1594
  this.extraProps = extraProps;
779
1595
  }
780
- getBranchList(workspace, dbName) {
781
- return operationsByTag.branch.getBranchList({
782
- pathParams: { workspace, dbName },
1596
+ createTable({
1597
+ workspace,
1598
+ region,
1599
+ database,
1600
+ branch,
1601
+ table
1602
+ }) {
1603
+ return operationsByTag.table.createTable({
1604
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
783
1605
  ...this.extraProps
784
1606
  });
785
1607
  }
786
- getBranchDetails(workspace, database, branch) {
787
- return operationsByTag.branch.getBranchDetails({
788
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
1608
+ deleteTable({
1609
+ workspace,
1610
+ region,
1611
+ database,
1612
+ branch,
1613
+ table
1614
+ }) {
1615
+ return operationsByTag.table.deleteTable({
1616
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
789
1617
  ...this.extraProps
790
1618
  });
791
1619
  }
792
- createBranch(workspace, database, branch, from, options = {}) {
793
- return operationsByTag.branch.createBranch({
794
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
795
- queryParams: isString(from) ? { from } : void 0,
796
- body: options,
1620
+ updateTable({
1621
+ workspace,
1622
+ region,
1623
+ database,
1624
+ branch,
1625
+ table,
1626
+ update
1627
+ }) {
1628
+ return operationsByTag.table.updateTable({
1629
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1630
+ body: update,
797
1631
  ...this.extraProps
798
1632
  });
799
1633
  }
800
- deleteBranch(workspace, database, branch) {
801
- return operationsByTag.branch.deleteBranch({
802
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
1634
+ getTableSchema({
1635
+ workspace,
1636
+ region,
1637
+ database,
1638
+ branch,
1639
+ table
1640
+ }) {
1641
+ return operationsByTag.table.getTableSchema({
1642
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
803
1643
  ...this.extraProps
804
1644
  });
805
1645
  }
806
- updateBranchMetadata(workspace, database, branch, metadata = {}) {
807
- return operationsByTag.branch.updateBranchMetadata({
808
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
809
- body: metadata,
1646
+ setTableSchema({
1647
+ workspace,
1648
+ region,
1649
+ database,
1650
+ branch,
1651
+ table,
1652
+ schema
1653
+ }) {
1654
+ return operationsByTag.table.setTableSchema({
1655
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1656
+ body: schema,
810
1657
  ...this.extraProps
811
1658
  });
812
1659
  }
813
- getBranchMetadata(workspace, database, branch) {
814
- return operationsByTag.branch.getBranchMetadata({
815
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
1660
+ getTableColumns({
1661
+ workspace,
1662
+ region,
1663
+ database,
1664
+ branch,
1665
+ table
1666
+ }) {
1667
+ return operationsByTag.table.getTableColumns({
1668
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
816
1669
  ...this.extraProps
817
1670
  });
818
1671
  }
819
- getBranchMigrationHistory(workspace, database, branch, options = {}) {
820
- return operationsByTag.branch.getBranchMigrationHistory({
821
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
822
- body: options,
1672
+ addTableColumn({
1673
+ workspace,
1674
+ region,
1675
+ database,
1676
+ branch,
1677
+ table,
1678
+ column
1679
+ }) {
1680
+ return operationsByTag.table.addTableColumn({
1681
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1682
+ body: column,
823
1683
  ...this.extraProps
824
1684
  });
825
1685
  }
826
- executeBranchMigrationPlan(workspace, database, branch, migrationPlan) {
827
- return operationsByTag.branch.executeBranchMigrationPlan({
828
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
829
- body: migrationPlan,
1686
+ getColumn({
1687
+ workspace,
1688
+ region,
1689
+ database,
1690
+ branch,
1691
+ table,
1692
+ column
1693
+ }) {
1694
+ return operationsByTag.table.getColumn({
1695
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, columnName: column },
830
1696
  ...this.extraProps
831
1697
  });
832
1698
  }
833
- getBranchMigrationPlan(workspace, database, branch, schema) {
834
- return operationsByTag.branch.getBranchMigrationPlan({
835
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
836
- body: schema,
1699
+ updateColumn({
1700
+ workspace,
1701
+ region,
1702
+ database,
1703
+ branch,
1704
+ table,
1705
+ column,
1706
+ update
1707
+ }) {
1708
+ return operationsByTag.table.updateColumn({
1709
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, columnName: column },
1710
+ body: update,
837
1711
  ...this.extraProps
838
1712
  });
839
1713
  }
840
- getBranchStats(workspace, database, branch) {
841
- return operationsByTag.branch.getBranchStats({
842
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
1714
+ deleteColumn({
1715
+ workspace,
1716
+ region,
1717
+ database,
1718
+ branch,
1719
+ table,
1720
+ column
1721
+ }) {
1722
+ return operationsByTag.table.deleteColumn({
1723
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, columnName: column },
843
1724
  ...this.extraProps
844
1725
  });
845
1726
  }
846
1727
  }
847
- class TableApi {
1728
+ class RecordsApi {
848
1729
  constructor(extraProps) {
849
1730
  this.extraProps = extraProps;
850
1731
  }
851
- createTable(workspace, database, branch, tableName) {
852
- return operationsByTag.table.createTable({
853
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
1732
+ insertRecord({
1733
+ workspace,
1734
+ region,
1735
+ database,
1736
+ branch,
1737
+ table,
1738
+ record,
1739
+ columns
1740
+ }) {
1741
+ return operationsByTag.records.insertRecord({
1742
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1743
+ queryParams: { columns },
1744
+ body: record,
854
1745
  ...this.extraProps
855
1746
  });
856
1747
  }
857
- deleteTable(workspace, database, branch, tableName) {
858
- return operationsByTag.table.deleteTable({
859
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
1748
+ getRecord({
1749
+ workspace,
1750
+ region,
1751
+ database,
1752
+ branch,
1753
+ table,
1754
+ id,
1755
+ columns
1756
+ }) {
1757
+ return operationsByTag.records.getRecord({
1758
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1759
+ queryParams: { columns },
860
1760
  ...this.extraProps
861
1761
  });
862
1762
  }
863
- updateTable(workspace, database, branch, tableName, options) {
864
- return operationsByTag.table.updateTable({
865
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
866
- body: options,
1763
+ insertRecordWithID({
1764
+ workspace,
1765
+ region,
1766
+ database,
1767
+ branch,
1768
+ table,
1769
+ id,
1770
+ record,
1771
+ columns,
1772
+ createOnly,
1773
+ ifVersion
1774
+ }) {
1775
+ return operationsByTag.records.insertRecordWithID({
1776
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1777
+ queryParams: { columns, createOnly, ifVersion },
1778
+ body: record,
867
1779
  ...this.extraProps
868
1780
  });
869
1781
  }
870
- getTableSchema(workspace, database, branch, tableName) {
871
- return operationsByTag.table.getTableSchema({
872
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
1782
+ updateRecordWithID({
1783
+ workspace,
1784
+ region,
1785
+ database,
1786
+ branch,
1787
+ table,
1788
+ id,
1789
+ record,
1790
+ columns,
1791
+ ifVersion
1792
+ }) {
1793
+ return operationsByTag.records.updateRecordWithID({
1794
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1795
+ queryParams: { columns, ifVersion },
1796
+ body: record,
873
1797
  ...this.extraProps
874
1798
  });
875
1799
  }
876
- setTableSchema(workspace, database, branch, tableName, options) {
877
- return operationsByTag.table.setTableSchema({
878
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
879
- body: options,
1800
+ upsertRecordWithID({
1801
+ workspace,
1802
+ region,
1803
+ database,
1804
+ branch,
1805
+ table,
1806
+ id,
1807
+ record,
1808
+ columns,
1809
+ ifVersion
1810
+ }) {
1811
+ return operationsByTag.records.upsertRecordWithID({
1812
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1813
+ queryParams: { columns, ifVersion },
1814
+ body: record,
880
1815
  ...this.extraProps
881
1816
  });
882
1817
  }
883
- getTableColumns(workspace, database, branch, tableName) {
884
- return operationsByTag.table.getTableColumns({
885
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
1818
+ deleteRecord({
1819
+ workspace,
1820
+ region,
1821
+ database,
1822
+ branch,
1823
+ table,
1824
+ id,
1825
+ columns
1826
+ }) {
1827
+ return operationsByTag.records.deleteRecord({
1828
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table, recordId: id },
1829
+ queryParams: { columns },
886
1830
  ...this.extraProps
887
1831
  });
888
1832
  }
889
- addTableColumn(workspace, database, branch, tableName, column) {
890
- return operationsByTag.table.addTableColumn({
891
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
892
- body: column,
1833
+ bulkInsertTableRecords({
1834
+ workspace,
1835
+ region,
1836
+ database,
1837
+ branch,
1838
+ table,
1839
+ records,
1840
+ columns
1841
+ }) {
1842
+ return operationsByTag.records.bulkInsertTableRecords({
1843
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
1844
+ queryParams: { columns },
1845
+ body: { records },
893
1846
  ...this.extraProps
894
1847
  });
895
1848
  }
896
- getColumn(workspace, database, branch, tableName, columnName) {
897
- return operationsByTag.table.getColumn({
898
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, columnName },
1849
+ branchTransaction({
1850
+ workspace,
1851
+ region,
1852
+ database,
1853
+ branch,
1854
+ operations
1855
+ }) {
1856
+ return operationsByTag.records.branchTransaction({
1857
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
1858
+ body: { operations },
899
1859
  ...this.extraProps
900
1860
  });
901
1861
  }
902
- deleteColumn(workspace, database, branch, tableName, columnName) {
903
- return operationsByTag.table.deleteColumn({
904
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, columnName },
1862
+ }
1863
+ class FilesApi {
1864
+ constructor(extraProps) {
1865
+ this.extraProps = extraProps;
1866
+ }
1867
+ getFileItem({
1868
+ workspace,
1869
+ region,
1870
+ database,
1871
+ branch,
1872
+ table,
1873
+ record,
1874
+ column,
1875
+ fileId
1876
+ }) {
1877
+ return operationsByTag.files.getFileItem({
1878
+ pathParams: {
1879
+ workspace,
1880
+ region,
1881
+ dbBranchName: `${database}:${branch}`,
1882
+ tableName: table,
1883
+ recordId: record,
1884
+ columnName: column,
1885
+ fileId
1886
+ },
905
1887
  ...this.extraProps
906
1888
  });
907
1889
  }
908
- updateColumn(workspace, database, branch, tableName, columnName, options) {
909
- return operationsByTag.table.updateColumn({
910
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, columnName },
911
- body: options,
1890
+ putFileItem({
1891
+ workspace,
1892
+ region,
1893
+ database,
1894
+ branch,
1895
+ table,
1896
+ record,
1897
+ column,
1898
+ fileId,
1899
+ file
1900
+ }) {
1901
+ return operationsByTag.files.putFileItem({
1902
+ pathParams: {
1903
+ workspace,
1904
+ region,
1905
+ dbBranchName: `${database}:${branch}`,
1906
+ tableName: table,
1907
+ recordId: record,
1908
+ columnName: column,
1909
+ fileId
1910
+ },
1911
+ // @ts-ignore
1912
+ body: file,
1913
+ ...this.extraProps
1914
+ });
1915
+ }
1916
+ deleteFileItem({
1917
+ workspace,
1918
+ region,
1919
+ database,
1920
+ branch,
1921
+ table,
1922
+ record,
1923
+ column,
1924
+ fileId
1925
+ }) {
1926
+ return operationsByTag.files.deleteFileItem({
1927
+ pathParams: {
1928
+ workspace,
1929
+ region,
1930
+ dbBranchName: `${database}:${branch}`,
1931
+ tableName: table,
1932
+ recordId: record,
1933
+ columnName: column,
1934
+ fileId
1935
+ },
1936
+ ...this.extraProps
1937
+ });
1938
+ }
1939
+ getFile({
1940
+ workspace,
1941
+ region,
1942
+ database,
1943
+ branch,
1944
+ table,
1945
+ record,
1946
+ column
1947
+ }) {
1948
+ return operationsByTag.files.getFile({
1949
+ pathParams: {
1950
+ workspace,
1951
+ region,
1952
+ dbBranchName: `${database}:${branch}`,
1953
+ tableName: table,
1954
+ recordId: record,
1955
+ columnName: column
1956
+ },
1957
+ ...this.extraProps
1958
+ });
1959
+ }
1960
+ putFile({
1961
+ workspace,
1962
+ region,
1963
+ database,
1964
+ branch,
1965
+ table,
1966
+ record,
1967
+ column,
1968
+ file
1969
+ }) {
1970
+ return operationsByTag.files.putFile({
1971
+ pathParams: {
1972
+ workspace,
1973
+ region,
1974
+ dbBranchName: `${database}:${branch}`,
1975
+ tableName: table,
1976
+ recordId: record,
1977
+ columnName: column
1978
+ },
1979
+ body: file,
1980
+ ...this.extraProps
1981
+ });
1982
+ }
1983
+ deleteFile({
1984
+ workspace,
1985
+ region,
1986
+ database,
1987
+ branch,
1988
+ table,
1989
+ record,
1990
+ column
1991
+ }) {
1992
+ return operationsByTag.files.deleteFile({
1993
+ pathParams: {
1994
+ workspace,
1995
+ region,
1996
+ dbBranchName: `${database}:${branch}`,
1997
+ tableName: table,
1998
+ recordId: record,
1999
+ columnName: column
2000
+ },
2001
+ ...this.extraProps
2002
+ });
2003
+ }
2004
+ fileAccess({
2005
+ workspace,
2006
+ region,
2007
+ fileId,
2008
+ verify
2009
+ }) {
2010
+ return operationsByTag.files.fileAccess({
2011
+ pathParams: {
2012
+ workspace,
2013
+ region,
2014
+ fileId
2015
+ },
2016
+ queryParams: { verify },
912
2017
  ...this.extraProps
913
2018
  });
914
2019
  }
915
2020
  }
916
- class RecordsApi {
2021
+ class SearchAndFilterApi {
2022
+ constructor(extraProps) {
2023
+ this.extraProps = extraProps;
2024
+ }
2025
+ queryTable({
2026
+ workspace,
2027
+ region,
2028
+ database,
2029
+ branch,
2030
+ table,
2031
+ filter,
2032
+ sort,
2033
+ page,
2034
+ columns,
2035
+ consistency
2036
+ }) {
2037
+ return operationsByTag.searchAndFilter.queryTable({
2038
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2039
+ body: { filter, sort, page, columns, consistency },
2040
+ ...this.extraProps
2041
+ });
2042
+ }
2043
+ searchTable({
2044
+ workspace,
2045
+ region,
2046
+ database,
2047
+ branch,
2048
+ table,
2049
+ query,
2050
+ fuzziness,
2051
+ target,
2052
+ prefix,
2053
+ filter,
2054
+ highlight,
2055
+ boosters
2056
+ }) {
2057
+ return operationsByTag.searchAndFilter.searchTable({
2058
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2059
+ body: { query, fuzziness, target, prefix, filter, highlight, boosters },
2060
+ ...this.extraProps
2061
+ });
2062
+ }
2063
+ searchBranch({
2064
+ workspace,
2065
+ region,
2066
+ database,
2067
+ branch,
2068
+ tables,
2069
+ query,
2070
+ fuzziness,
2071
+ prefix,
2072
+ highlight
2073
+ }) {
2074
+ return operationsByTag.searchAndFilter.searchBranch({
2075
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2076
+ body: { tables, query, fuzziness, prefix, highlight },
2077
+ ...this.extraProps
2078
+ });
2079
+ }
2080
+ vectorSearchTable({
2081
+ workspace,
2082
+ region,
2083
+ database,
2084
+ branch,
2085
+ table,
2086
+ queryVector,
2087
+ column,
2088
+ similarityFunction,
2089
+ size,
2090
+ filter
2091
+ }) {
2092
+ return operationsByTag.searchAndFilter.vectorSearchTable({
2093
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2094
+ body: { queryVector, column, similarityFunction, size, filter },
2095
+ ...this.extraProps
2096
+ });
2097
+ }
2098
+ askTable({
2099
+ workspace,
2100
+ region,
2101
+ database,
2102
+ branch,
2103
+ table,
2104
+ options
2105
+ }) {
2106
+ return operationsByTag.searchAndFilter.askTable({
2107
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2108
+ body: { ...options },
2109
+ ...this.extraProps
2110
+ });
2111
+ }
2112
+ summarizeTable({
2113
+ workspace,
2114
+ region,
2115
+ database,
2116
+ branch,
2117
+ table,
2118
+ filter,
2119
+ columns,
2120
+ summaries,
2121
+ sort,
2122
+ summariesFilter,
2123
+ page,
2124
+ consistency
2125
+ }) {
2126
+ return operationsByTag.searchAndFilter.summarizeTable({
2127
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2128
+ body: { filter, columns, summaries, sort, summariesFilter, page, consistency },
2129
+ ...this.extraProps
2130
+ });
2131
+ }
2132
+ aggregateTable({
2133
+ workspace,
2134
+ region,
2135
+ database,
2136
+ branch,
2137
+ table,
2138
+ filter,
2139
+ aggs
2140
+ }) {
2141
+ return operationsByTag.searchAndFilter.aggregateTable({
2142
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, tableName: table },
2143
+ body: { filter, aggs },
2144
+ ...this.extraProps
2145
+ });
2146
+ }
2147
+ }
2148
+ class MigrationRequestsApi {
2149
+ constructor(extraProps) {
2150
+ this.extraProps = extraProps;
2151
+ }
2152
+ queryMigrationRequests({
2153
+ workspace,
2154
+ region,
2155
+ database,
2156
+ filter,
2157
+ sort,
2158
+ page,
2159
+ columns
2160
+ }) {
2161
+ return operationsByTag.migrationRequests.queryMigrationRequests({
2162
+ pathParams: { workspace, region, dbName: database },
2163
+ body: { filter, sort, page, columns },
2164
+ ...this.extraProps
2165
+ });
2166
+ }
2167
+ createMigrationRequest({
2168
+ workspace,
2169
+ region,
2170
+ database,
2171
+ migration
2172
+ }) {
2173
+ return operationsByTag.migrationRequests.createMigrationRequest({
2174
+ pathParams: { workspace, region, dbName: database },
2175
+ body: migration,
2176
+ ...this.extraProps
2177
+ });
2178
+ }
2179
+ getMigrationRequest({
2180
+ workspace,
2181
+ region,
2182
+ database,
2183
+ migrationRequest
2184
+ }) {
2185
+ return operationsByTag.migrationRequests.getMigrationRequest({
2186
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2187
+ ...this.extraProps
2188
+ });
2189
+ }
2190
+ updateMigrationRequest({
2191
+ workspace,
2192
+ region,
2193
+ database,
2194
+ migrationRequest,
2195
+ update
2196
+ }) {
2197
+ return operationsByTag.migrationRequests.updateMigrationRequest({
2198
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2199
+ body: update,
2200
+ ...this.extraProps
2201
+ });
2202
+ }
2203
+ listMigrationRequestsCommits({
2204
+ workspace,
2205
+ region,
2206
+ database,
2207
+ migrationRequest,
2208
+ page
2209
+ }) {
2210
+ return operationsByTag.migrationRequests.listMigrationRequestsCommits({
2211
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2212
+ body: { page },
2213
+ ...this.extraProps
2214
+ });
2215
+ }
2216
+ compareMigrationRequest({
2217
+ workspace,
2218
+ region,
2219
+ database,
2220
+ migrationRequest
2221
+ }) {
2222
+ return operationsByTag.migrationRequests.compareMigrationRequest({
2223
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2224
+ ...this.extraProps
2225
+ });
2226
+ }
2227
+ getMigrationRequestIsMerged({
2228
+ workspace,
2229
+ region,
2230
+ database,
2231
+ migrationRequest
2232
+ }) {
2233
+ return operationsByTag.migrationRequests.getMigrationRequestIsMerged({
2234
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2235
+ ...this.extraProps
2236
+ });
2237
+ }
2238
+ mergeMigrationRequest({
2239
+ workspace,
2240
+ region,
2241
+ database,
2242
+ migrationRequest
2243
+ }) {
2244
+ return operationsByTag.migrationRequests.mergeMigrationRequest({
2245
+ pathParams: { workspace, region, dbName: database, mrNumber: migrationRequest },
2246
+ ...this.extraProps
2247
+ });
2248
+ }
2249
+ }
2250
+ class MigrationsApi {
2251
+ constructor(extraProps) {
2252
+ this.extraProps = extraProps;
2253
+ }
2254
+ getBranchMigrationHistory({
2255
+ workspace,
2256
+ region,
2257
+ database,
2258
+ branch,
2259
+ limit,
2260
+ startFrom
2261
+ }) {
2262
+ return operationsByTag.migrations.getBranchMigrationHistory({
2263
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2264
+ body: { limit, startFrom },
2265
+ ...this.extraProps
2266
+ });
2267
+ }
2268
+ getBranchMigrationPlan({
2269
+ workspace,
2270
+ region,
2271
+ database,
2272
+ branch,
2273
+ schema
2274
+ }) {
2275
+ return operationsByTag.migrations.getBranchMigrationPlan({
2276
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2277
+ body: schema,
2278
+ ...this.extraProps
2279
+ });
2280
+ }
2281
+ executeBranchMigrationPlan({
2282
+ workspace,
2283
+ region,
2284
+ database,
2285
+ branch,
2286
+ plan
2287
+ }) {
2288
+ return operationsByTag.migrations.executeBranchMigrationPlan({
2289
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2290
+ body: plan,
2291
+ ...this.extraProps
2292
+ });
2293
+ }
2294
+ getBranchSchemaHistory({
2295
+ workspace,
2296
+ region,
2297
+ database,
2298
+ branch,
2299
+ page
2300
+ }) {
2301
+ return operationsByTag.migrations.getBranchSchemaHistory({
2302
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2303
+ body: { page },
2304
+ ...this.extraProps
2305
+ });
2306
+ }
2307
+ compareBranchWithUserSchema({
2308
+ workspace,
2309
+ region,
2310
+ database,
2311
+ branch,
2312
+ schema,
2313
+ schemaOperations,
2314
+ branchOperations
2315
+ }) {
2316
+ return operationsByTag.migrations.compareBranchWithUserSchema({
2317
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2318
+ body: { schema, schemaOperations, branchOperations },
2319
+ ...this.extraProps
2320
+ });
2321
+ }
2322
+ compareBranchSchemas({
2323
+ workspace,
2324
+ region,
2325
+ database,
2326
+ branch,
2327
+ compare,
2328
+ sourceBranchOperations,
2329
+ targetBranchOperations
2330
+ }) {
2331
+ return operationsByTag.migrations.compareBranchSchemas({
2332
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}`, branchName: compare },
2333
+ body: { sourceBranchOperations, targetBranchOperations },
2334
+ ...this.extraProps
2335
+ });
2336
+ }
2337
+ updateBranchSchema({
2338
+ workspace,
2339
+ region,
2340
+ database,
2341
+ branch,
2342
+ migration
2343
+ }) {
2344
+ return operationsByTag.migrations.updateBranchSchema({
2345
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2346
+ body: migration,
2347
+ ...this.extraProps
2348
+ });
2349
+ }
2350
+ previewBranchSchemaEdit({
2351
+ workspace,
2352
+ region,
2353
+ database,
2354
+ branch,
2355
+ data
2356
+ }) {
2357
+ return operationsByTag.migrations.previewBranchSchemaEdit({
2358
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2359
+ body: data,
2360
+ ...this.extraProps
2361
+ });
2362
+ }
2363
+ applyBranchSchemaEdit({
2364
+ workspace,
2365
+ region,
2366
+ database,
2367
+ branch,
2368
+ edits
2369
+ }) {
2370
+ return operationsByTag.migrations.applyBranchSchemaEdit({
2371
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2372
+ body: { edits },
2373
+ ...this.extraProps
2374
+ });
2375
+ }
2376
+ pushBranchMigrations({
2377
+ workspace,
2378
+ region,
2379
+ database,
2380
+ branch,
2381
+ migrations
2382
+ }) {
2383
+ return operationsByTag.migrations.pushBranchMigrations({
2384
+ pathParams: { workspace, region, dbBranchName: `${database}:${branch}` },
2385
+ body: { migrations },
2386
+ ...this.extraProps
2387
+ });
2388
+ }
2389
+ }
2390
+ class DatabaseApi {
917
2391
  constructor(extraProps) {
918
2392
  this.extraProps = extraProps;
919
2393
  }
920
- insertRecord(workspace, database, branch, tableName, record, options = {}) {
921
- return operationsByTag.records.insertRecord({
922
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
923
- queryParams: options,
924
- body: record,
2394
+ getDatabaseList({ workspace }) {
2395
+ return operationsByTag.databases.getDatabaseList({
2396
+ pathParams: { workspaceId: workspace },
925
2397
  ...this.extraProps
926
2398
  });
927
2399
  }
928
- insertRecordWithID(workspace, database, branch, tableName, recordId, record, options = {}) {
929
- return operationsByTag.records.insertRecordWithID({
930
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
931
- queryParams: options,
932
- body: record,
2400
+ createDatabase({
2401
+ workspace,
2402
+ database,
2403
+ data
2404
+ }) {
2405
+ return operationsByTag.databases.createDatabase({
2406
+ pathParams: { workspaceId: workspace, dbName: database },
2407
+ body: data,
933
2408
  ...this.extraProps
934
2409
  });
935
2410
  }
936
- updateRecordWithID(workspace, database, branch, tableName, recordId, record, options = {}) {
937
- return operationsByTag.records.updateRecordWithID({
938
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
939
- queryParams: options,
940
- body: record,
2411
+ deleteDatabase({
2412
+ workspace,
2413
+ database
2414
+ }) {
2415
+ return operationsByTag.databases.deleteDatabase({
2416
+ pathParams: { workspaceId: workspace, dbName: database },
941
2417
  ...this.extraProps
942
2418
  });
943
2419
  }
944
- upsertRecordWithID(workspace, database, branch, tableName, recordId, record, options = {}) {
945
- return operationsByTag.records.upsertRecordWithID({
946
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
947
- queryParams: options,
948
- body: record,
2420
+ getDatabaseMetadata({
2421
+ workspace,
2422
+ database
2423
+ }) {
2424
+ return operationsByTag.databases.getDatabaseMetadata({
2425
+ pathParams: { workspaceId: workspace, dbName: database },
949
2426
  ...this.extraProps
950
2427
  });
951
2428
  }
952
- deleteRecord(workspace, database, branch, tableName, recordId, options = {}) {
953
- return operationsByTag.records.deleteRecord({
954
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
955
- queryParams: options,
2429
+ updateDatabaseMetadata({
2430
+ workspace,
2431
+ database,
2432
+ metadata
2433
+ }) {
2434
+ return operationsByTag.databases.updateDatabaseMetadata({
2435
+ pathParams: { workspaceId: workspace, dbName: database },
2436
+ body: metadata,
956
2437
  ...this.extraProps
957
2438
  });
958
2439
  }
959
- getRecord(workspace, database, branch, tableName, recordId, options = {}) {
960
- return operationsByTag.records.getRecord({
961
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
962
- queryParams: options,
2440
+ renameDatabase({
2441
+ workspace,
2442
+ database,
2443
+ newName
2444
+ }) {
2445
+ return operationsByTag.databases.renameDatabase({
2446
+ pathParams: { workspaceId: workspace, dbName: database },
2447
+ body: { newName },
963
2448
  ...this.extraProps
964
2449
  });
965
2450
  }
966
- bulkInsertTableRecords(workspace, database, branch, tableName, records, options = {}) {
967
- return operationsByTag.records.bulkInsertTableRecords({
968
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
969
- queryParams: options,
970
- body: { records },
2451
+ getDatabaseGithubSettings({
2452
+ workspace,
2453
+ database
2454
+ }) {
2455
+ return operationsByTag.databases.getDatabaseGithubSettings({
2456
+ pathParams: { workspaceId: workspace, dbName: database },
971
2457
  ...this.extraProps
972
2458
  });
973
2459
  }
974
- queryTable(workspace, database, branch, tableName, query) {
975
- return operationsByTag.records.queryTable({
976
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
977
- body: query,
2460
+ updateDatabaseGithubSettings({
2461
+ workspace,
2462
+ database,
2463
+ settings
2464
+ }) {
2465
+ return operationsByTag.databases.updateDatabaseGithubSettings({
2466
+ pathParams: { workspaceId: workspace, dbName: database },
2467
+ body: settings,
978
2468
  ...this.extraProps
979
2469
  });
980
2470
  }
981
- searchTable(workspace, database, branch, tableName, query) {
982
- return operationsByTag.records.searchTable({
983
- pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
984
- body: query,
2471
+ deleteDatabaseGithubSettings({
2472
+ workspace,
2473
+ database
2474
+ }) {
2475
+ return operationsByTag.databases.deleteDatabaseGithubSettings({
2476
+ pathParams: { workspaceId: workspace, dbName: database },
985
2477
  ...this.extraProps
986
2478
  });
987
2479
  }
988
- searchBranch(workspace, database, branch, query) {
989
- return operationsByTag.records.searchBranch({
990
- pathParams: { workspace, dbBranchName: `${database}:${branch}` },
991
- body: query,
2480
+ listRegions({ workspace }) {
2481
+ return operationsByTag.databases.listRegions({
2482
+ pathParams: { workspaceId: workspace },
992
2483
  ...this.extraProps
993
2484
  });
994
2485
  }
995
2486
  }
996
2487
 
997
2488
  class XataApiPlugin {
998
- async build(options) {
999
- const { fetchImpl, apiKey } = await options.getFetchProps();
1000
- return new XataApiClient({ fetch: fetchImpl, apiKey });
2489
+ build(options) {
2490
+ return new XataApiClient(options);
1001
2491
  }
1002
2492
  }
1003
2493
 
1004
2494
  class XataPlugin {
1005
2495
  }
1006
2496
 
2497
+ function cleanFilter(filter) {
2498
+ if (!filter)
2499
+ return void 0;
2500
+ const values = Object.values(filter).filter(Boolean).filter((value) => Array.isArray(value) ? value.length > 0 : true);
2501
+ return values.length > 0 ? filter : void 0;
2502
+ }
2503
+
1007
2504
  var __accessCheck$6 = (obj, member, msg) => {
1008
2505
  if (!member.has(obj))
1009
2506
  throw TypeError("Cannot " + msg);
@@ -1030,18 +2527,46 @@ class Page {
1030
2527
  this.meta = meta;
1031
2528
  this.records = new RecordArray(this, records);
1032
2529
  }
2530
+ /**
2531
+ * Retrieves the next page of results.
2532
+ * @param size Maximum number of results to be retrieved.
2533
+ * @param offset Number of results to skip when retrieving the results.
2534
+ * @returns The next page or results.
2535
+ */
1033
2536
  async nextPage(size, offset) {
1034
2537
  return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, after: this.meta.page.cursor } });
1035
2538
  }
2539
+ /**
2540
+ * Retrieves the previous page of results.
2541
+ * @param size Maximum number of results to be retrieved.
2542
+ * @param offset Number of results to skip when retrieving the results.
2543
+ * @returns The previous page or results.
2544
+ */
1036
2545
  async previousPage(size, offset) {
1037
2546
  return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, before: this.meta.page.cursor } });
1038
2547
  }
1039
- async firstPage(size, offset) {
1040
- return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, first: this.meta.page.cursor } });
1041
- }
1042
- async lastPage(size, offset) {
1043
- return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, last: this.meta.page.cursor } });
1044
- }
2548
+ /**
2549
+ * Retrieves the start page of results.
2550
+ * @param size Maximum number of results to be retrieved.
2551
+ * @param offset Number of results to skip when retrieving the results.
2552
+ * @returns The start page or results.
2553
+ */
2554
+ async startPage(size, offset) {
2555
+ return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, start: this.meta.page.cursor } });
2556
+ }
2557
+ /**
2558
+ * Retrieves the end page of results.
2559
+ * @param size Maximum number of results to be retrieved.
2560
+ * @param offset Number of results to skip when retrieving the results.
2561
+ * @returns The end page or results.
2562
+ */
2563
+ async endPage(size, offset) {
2564
+ return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, end: this.meta.page.cursor } });
2565
+ }
2566
+ /**
2567
+ * Shortcut method to check if there will be additional results if the next page of results is retrieved.
2568
+ * @returns Whether or not there will be additional results in the next page of results.
2569
+ */
1045
2570
  hasNextPage() {
1046
2571
  return this.meta.page.more;
1047
2572
  }
@@ -1052,7 +2577,7 @@ const PAGINATION_DEFAULT_SIZE = 20;
1052
2577
  const PAGINATION_MAX_OFFSET = 800;
1053
2578
  const PAGINATION_DEFAULT_OFFSET = 0;
1054
2579
  function isCursorPaginationOptions(options) {
1055
- return isDefined(options) && (isDefined(options.first) || isDefined(options.last) || isDefined(options.after) || isDefined(options.before));
2580
+ return isDefined(options) && (isDefined(options.start) || isDefined(options.end) || isDefined(options.after) || isDefined(options.before));
1056
2581
  }
1057
2582
  const _RecordArray = class extends Array {
1058
2583
  constructor(...args) {
@@ -1073,25 +2598,54 @@ const _RecordArray = class extends Array {
1073
2598
  toArray() {
1074
2599
  return new Array(...this);
1075
2600
  }
2601
+ toSerializable() {
2602
+ return JSON.parse(this.toString());
2603
+ }
2604
+ toString() {
2605
+ return JSON.stringify(this.toArray());
2606
+ }
1076
2607
  map(callbackfn, thisArg) {
1077
2608
  return this.toArray().map(callbackfn, thisArg);
1078
2609
  }
2610
+ /**
2611
+ * Retrieve next page of records
2612
+ *
2613
+ * @returns A new array of objects
2614
+ */
1079
2615
  async nextPage(size, offset) {
1080
2616
  const newPage = await __privateGet$6(this, _page).nextPage(size, offset);
1081
2617
  return new _RecordArray(newPage);
1082
2618
  }
2619
+ /**
2620
+ * Retrieve previous page of records
2621
+ *
2622
+ * @returns A new array of objects
2623
+ */
1083
2624
  async previousPage(size, offset) {
1084
2625
  const newPage = await __privateGet$6(this, _page).previousPage(size, offset);
1085
2626
  return new _RecordArray(newPage);
1086
2627
  }
1087
- async firstPage(size, offset) {
1088
- const newPage = await __privateGet$6(this, _page).firstPage(size, offset);
2628
+ /**
2629
+ * Retrieve start page of records
2630
+ *
2631
+ * @returns A new array of objects
2632
+ */
2633
+ async startPage(size, offset) {
2634
+ const newPage = await __privateGet$6(this, _page).startPage(size, offset);
1089
2635
  return new _RecordArray(newPage);
1090
2636
  }
1091
- async lastPage(size, offset) {
1092
- const newPage = await __privateGet$6(this, _page).lastPage(size, offset);
2637
+ /**
2638
+ * Retrieve end page of records
2639
+ *
2640
+ * @returns A new array of objects
2641
+ */
2642
+ async endPage(size, offset) {
2643
+ const newPage = await __privateGet$6(this, _page).endPage(size, offset);
1093
2644
  return new _RecordArray(newPage);
1094
2645
  }
2646
+ /**
2647
+ * @returns Boolean indicating if there is a next page
2648
+ */
1095
2649
  hasNextPage() {
1096
2650
  return __privateGet$6(this, _page).meta.page.more;
1097
2651
  }
@@ -1117,13 +2671,19 @@ var __privateSet$5 = (obj, member, value, setter) => {
1117
2671
  setter ? setter.call(obj, value) : member.set(obj, value);
1118
2672
  return value;
1119
2673
  };
1120
- var _table$1, _repository, _data;
2674
+ var __privateMethod$3 = (obj, member, method) => {
2675
+ __accessCheck$5(obj, member, "access private method");
2676
+ return method;
2677
+ };
2678
+ var _table$1, _repository, _data, _cleanFilterConstraint, cleanFilterConstraint_fn;
1121
2679
  const _Query = class {
1122
2680
  constructor(repository, table, data, rawParent) {
2681
+ __privateAdd$5(this, _cleanFilterConstraint);
1123
2682
  __privateAdd$5(this, _table$1, void 0);
1124
2683
  __privateAdd$5(this, _repository, void 0);
1125
2684
  __privateAdd$5(this, _data, { filter: {} });
1126
- this.meta = { page: { cursor: "start", more: true } };
2685
+ // Implements pagination
2686
+ this.meta = { page: { cursor: "start", more: true, size: PAGINATION_DEFAULT_SIZE } };
1127
2687
  this.records = new RecordArray(this, []);
1128
2688
  __privateSet$5(this, _table$1, table);
1129
2689
  if (repository) {
@@ -1138,9 +2698,11 @@ const _Query = class {
1138
2698
  __privateGet$5(this, _data).filter.$not = data.filter?.$not ?? parent?.filter?.$not;
1139
2699
  __privateGet$5(this, _data).filter.$none = data.filter?.$none ?? parent?.filter?.$none;
1140
2700
  __privateGet$5(this, _data).sort = data.sort ?? parent?.sort;
1141
- __privateGet$5(this, _data).columns = data.columns ?? parent?.columns ?? ["*"];
2701
+ __privateGet$5(this, _data).columns = data.columns ?? parent?.columns;
2702
+ __privateGet$5(this, _data).consistency = data.consistency ?? parent?.consistency;
1142
2703
  __privateGet$5(this, _data).pagination = data.pagination ?? parent?.pagination;
1143
2704
  __privateGet$5(this, _data).cache = data.cache ?? parent?.cache;
2705
+ __privateGet$5(this, _data).fetchOptions = data.fetchOptions ?? parent?.fetchOptions;
1144
2706
  this.any = this.any.bind(this);
1145
2707
  this.all = this.all.bind(this);
1146
2708
  this.not = this.not.bind(this);
@@ -1158,37 +2720,65 @@ const _Query = class {
1158
2720
  const key = JSON.stringify({ columns, filter, sort, pagination });
1159
2721
  return toBase64(key);
1160
2722
  }
2723
+ /**
2724
+ * Builds a new query object representing a logical OR between the given subqueries.
2725
+ * @param queries An array of subqueries.
2726
+ * @returns A new Query object.
2727
+ */
1161
2728
  any(...queries) {
1162
2729
  const $any = queries.map((query) => query.getQueryOptions().filter ?? {});
1163
2730
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $any } }, __privateGet$5(this, _data));
1164
2731
  }
2732
+ /**
2733
+ * Builds a new query object representing a logical AND between the given subqueries.
2734
+ * @param queries An array of subqueries.
2735
+ * @returns A new Query object.
2736
+ */
1165
2737
  all(...queries) {
1166
2738
  const $all = queries.map((query) => query.getQueryOptions().filter ?? {});
1167
2739
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
1168
2740
  }
2741
+ /**
2742
+ * Builds a new query object representing a logical OR negating each subquery. In pseudo-code: !q1 OR !q2
2743
+ * @param queries An array of subqueries.
2744
+ * @returns A new Query object.
2745
+ */
1169
2746
  not(...queries) {
1170
2747
  const $not = queries.map((query) => query.getQueryOptions().filter ?? {});
1171
2748
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $not } }, __privateGet$5(this, _data));
1172
2749
  }
2750
+ /**
2751
+ * Builds a new query object representing a logical AND negating each subquery. In pseudo-code: !q1 AND !q2
2752
+ * @param queries An array of subqueries.
2753
+ * @returns A new Query object.
2754
+ */
1173
2755
  none(...queries) {
1174
2756
  const $none = queries.map((query) => query.getQueryOptions().filter ?? {});
1175
2757
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $none } }, __privateGet$5(this, _data));
1176
2758
  }
1177
2759
  filter(a, b) {
1178
2760
  if (arguments.length === 1) {
1179
- const constraints = Object.entries(a).map(([column, constraint]) => ({ [column]: constraint }));
2761
+ const constraints = Object.entries(a ?? {}).map(([column, constraint]) => ({
2762
+ [column]: __privateMethod$3(this, _cleanFilterConstraint, cleanFilterConstraint_fn).call(this, column, constraint)
2763
+ }));
1180
2764
  const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat(constraints));
1181
2765
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
1182
2766
  } else {
1183
- const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat([{ [a]: b }]));
2767
+ const constraints = isDefined(a) && isDefined(b) ? [{ [a]: __privateMethod$3(this, _cleanFilterConstraint, cleanFilterConstraint_fn).call(this, a, b) }] : void 0;
2768
+ const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat(constraints));
1184
2769
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
1185
2770
  }
1186
2771
  }
1187
- sort(column, direction) {
2772
+ sort(column, direction = "asc") {
1188
2773
  const originalSort = [__privateGet$5(this, _data).sort ?? []].flat();
1189
2774
  const sort = [...originalSort, { column, direction }];
1190
2775
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { sort }, __privateGet$5(this, _data));
1191
2776
  }
2777
+ /**
2778
+ * Builds a new query specifying the set of columns to be returned in the query response.
2779
+ * @param columns Array of column names to be returned by the query.
2780
+ * @returns A new Query object.
2781
+ */
1192
2782
  select(columns) {
1193
2783
  return new _Query(
1194
2784
  __privateGet$5(this, _repository),
@@ -1201,6 +2791,12 @@ const _Query = class {
1201
2791
  const query = new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), options, __privateGet$5(this, _data));
1202
2792
  return __privateGet$5(this, _repository).query(query);
1203
2793
  }
2794
+ /**
2795
+ * Get results in an iterator
2796
+ *
2797
+ * @async
2798
+ * @returns Async interable of results
2799
+ */
1204
2800
  async *[Symbol.asyncIterator]() {
1205
2801
  for await (const [record] of this.getIterator({ batchSize: 1 })) {
1206
2802
  yield record;
@@ -1218,11 +2814,20 @@ const _Query = class {
1218
2814
  }
1219
2815
  }
1220
2816
  async getMany(options = {}) {
1221
- const page = await this.getPaginated(options);
2817
+ const { pagination = {}, ...rest } = options;
2818
+ const { size = PAGINATION_DEFAULT_SIZE, offset } = pagination;
2819
+ const batchSize = size <= PAGINATION_MAX_SIZE ? size : PAGINATION_MAX_SIZE;
2820
+ let page = await this.getPaginated({ ...rest, pagination: { size: batchSize, offset } });
2821
+ const results = [...page.records];
2822
+ while (page.hasNextPage() && results.length < size) {
2823
+ page = await page.nextPage();
2824
+ results.push(...page.records);
2825
+ }
1222
2826
  if (page.hasNextPage() && options.pagination?.size === void 0) {
1223
2827
  console.trace("Calling getMany does not return all results. Paginate to get all results or call getAll.");
1224
2828
  }
1225
- return page.records;
2829
+ const array = new RecordArray(page, results.slice(0, size));
2830
+ return array;
1226
2831
  }
1227
2832
  async getAll(options = {}) {
1228
2833
  const { batchSize = PAGINATION_MAX_SIZE, ...rest } = options;
@@ -1236,21 +2841,65 @@ const _Query = class {
1236
2841
  const records = await this.getMany({ ...options, pagination: { size: 1 } });
1237
2842
  return records[0] ?? null;
1238
2843
  }
2844
+ async getFirstOrThrow(options = {}) {
2845
+ const records = await this.getMany({ ...options, pagination: { size: 1 } });
2846
+ if (records[0] === void 0)
2847
+ throw new Error("No results found.");
2848
+ return records[0];
2849
+ }
2850
+ async summarize(params = {}) {
2851
+ const { summaries, summariesFilter, ...options } = params;
2852
+ const query = new _Query(
2853
+ __privateGet$5(this, _repository),
2854
+ __privateGet$5(this, _table$1),
2855
+ options,
2856
+ __privateGet$5(this, _data)
2857
+ );
2858
+ return __privateGet$5(this, _repository).summarizeTable(query, summaries, summariesFilter);
2859
+ }
2860
+ /**
2861
+ * Builds a new query object adding a cache TTL in milliseconds.
2862
+ * @param ttl The cache TTL in milliseconds.
2863
+ * @returns A new Query object.
2864
+ */
1239
2865
  cache(ttl) {
1240
2866
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { cache: ttl }, __privateGet$5(this, _data));
1241
2867
  }
2868
+ /**
2869
+ * Retrieve next page of records
2870
+ *
2871
+ * @returns A new page object.
2872
+ */
1242
2873
  nextPage(size, offset) {
1243
- return this.firstPage(size, offset);
2874
+ return this.startPage(size, offset);
1244
2875
  }
2876
+ /**
2877
+ * Retrieve previous page of records
2878
+ *
2879
+ * @returns A new page object
2880
+ */
1245
2881
  previousPage(size, offset) {
1246
- return this.firstPage(size, offset);
1247
- }
1248
- firstPage(size, offset) {
2882
+ return this.startPage(size, offset);
2883
+ }
2884
+ /**
2885
+ * Retrieve start page of records
2886
+ *
2887
+ * @returns A new page object
2888
+ */
2889
+ startPage(size, offset) {
1249
2890
  return this.getPaginated({ pagination: { size, offset } });
1250
2891
  }
1251
- lastPage(size, offset) {
2892
+ /**
2893
+ * Retrieve last page of records
2894
+ *
2895
+ * @returns A new page object
2896
+ */
2897
+ endPage(size, offset) {
1252
2898
  return this.getPaginated({ pagination: { size, offset, before: "end" } });
1253
2899
  }
2900
+ /**
2901
+ * @returns Boolean indicating if there is a next page
2902
+ */
1254
2903
  hasNextPage() {
1255
2904
  return this.meta.page.more;
1256
2905
  }
@@ -1259,9 +2908,20 @@ let Query = _Query;
1259
2908
  _table$1 = new WeakMap();
1260
2909
  _repository = new WeakMap();
1261
2910
  _data = new WeakMap();
2911
+ _cleanFilterConstraint = new WeakSet();
2912
+ cleanFilterConstraint_fn = function(column, value) {
2913
+ const columnType = __privateGet$5(this, _table$1).schema?.columns.find(({ name }) => name === column)?.type;
2914
+ if (columnType === "multiple" && (isString(value) || isStringArray(value))) {
2915
+ return { $includes: value };
2916
+ }
2917
+ if (columnType === "link" && isObject(value) && isString(value.id)) {
2918
+ return value.id;
2919
+ }
2920
+ return value;
2921
+ };
1262
2922
  function cleanParent(data, parent) {
1263
2923
  if (isCursorPaginationOptions(data.pagination)) {
1264
- return { ...parent, sorting: void 0, filter: void 0 };
2924
+ return { ...parent, sort: void 0, filter: void 0 };
1265
2925
  }
1266
2926
  return parent;
1267
2927
  }
@@ -1279,7 +2939,11 @@ function isSortFilterString(value) {
1279
2939
  return isString(value);
1280
2940
  }
1281
2941
  function isSortFilterBase(filter) {
1282
- return isObject(filter) && Object.values(filter).every((value) => value === "asc" || value === "desc");
2942
+ return isObject(filter) && Object.entries(filter).every(([key, value]) => {
2943
+ if (key === "*")
2944
+ return value === "random";
2945
+ return value === "asc" || value === "desc";
2946
+ });
1283
2947
  }
1284
2948
  function isSortFilterObject(filter) {
1285
2949
  return isObject(filter) && !isSortFilterBase(filter) && filter.column !== void 0;
@@ -1320,288 +2984,621 @@ var __privateMethod$2 = (obj, member, method) => {
1320
2984
  __accessCheck$4(obj, member, "access private method");
1321
2985
  return method;
1322
2986
  };
1323
- var _table, _getFetchProps, _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;
2987
+ 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;
2988
+ const BULK_OPERATION_MAX_SIZE = 1e3;
1324
2989
  class Repository extends Query {
1325
2990
  }
1326
2991
  class RestRepository extends Query {
1327
2992
  constructor(options) {
1328
- super(null, options.table, {});
2993
+ super(
2994
+ null,
2995
+ { name: options.table, schema: options.schemaTables?.find((table) => table.name === options.table) },
2996
+ {}
2997
+ );
1329
2998
  __privateAdd$4(this, _insertRecordWithoutId);
1330
2999
  __privateAdd$4(this, _insertRecordWithId);
1331
- __privateAdd$4(this, _bulkInsertTableRecords);
3000
+ __privateAdd$4(this, _insertRecords);
1332
3001
  __privateAdd$4(this, _updateRecordWithID);
3002
+ __privateAdd$4(this, _updateRecords);
1333
3003
  __privateAdd$4(this, _upsertRecordWithID);
1334
3004
  __privateAdd$4(this, _deleteRecord);
3005
+ __privateAdd$4(this, _deleteRecords);
1335
3006
  __privateAdd$4(this, _setCacheQuery);
1336
3007
  __privateAdd$4(this, _getCacheQuery);
1337
3008
  __privateAdd$4(this, _getSchemaTables$1);
1338
3009
  __privateAdd$4(this, _table, void 0);
1339
3010
  __privateAdd$4(this, _getFetchProps, void 0);
3011
+ __privateAdd$4(this, _db, void 0);
1340
3012
  __privateAdd$4(this, _cache, void 0);
1341
3013
  __privateAdd$4(this, _schemaTables$2, void 0);
3014
+ __privateAdd$4(this, _trace, void 0);
1342
3015
  __privateSet$4(this, _table, options.table);
1343
- __privateSet$4(this, _getFetchProps, options.pluginOptions.getFetchProps);
1344
- this.db = options.db;
3016
+ __privateSet$4(this, _db, options.db);
1345
3017
  __privateSet$4(this, _cache, options.pluginOptions.cache);
1346
3018
  __privateSet$4(this, _schemaTables$2, options.schemaTables);
3019
+ __privateSet$4(this, _getFetchProps, () => ({ ...options.pluginOptions, sessionID: generateUUID() }));
3020
+ const trace = options.pluginOptions.trace ?? defaultTrace;
3021
+ __privateSet$4(this, _trace, async (name, fn, options2 = {}) => {
3022
+ return trace(name, fn, {
3023
+ ...options2,
3024
+ [TraceAttributes.TABLE]: __privateGet$4(this, _table),
3025
+ [TraceAttributes.KIND]: "sdk-operation",
3026
+ [TraceAttributes.VERSION]: VERSION
3027
+ });
3028
+ });
1347
3029
  }
1348
- async create(a, b, c) {
1349
- if (Array.isArray(a)) {
1350
- if (a.length === 0)
1351
- return [];
1352
- const columns = isStringArray(b) ? b : void 0;
1353
- return __privateMethod$2(this, _bulkInsertTableRecords, bulkInsertTableRecords_fn).call(this, a, columns);
1354
- }
1355
- if (isString(a) && isObject(b)) {
1356
- if (a === "")
1357
- throw new Error("The id can't be empty");
1358
- const columns = isStringArray(c) ? c : void 0;
1359
- return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b, columns);
1360
- }
1361
- if (isObject(a) && isString(a.id)) {
1362
- if (a.id === "")
1363
- throw new Error("The id can't be empty");
1364
- const columns = isStringArray(b) ? b : void 0;
1365
- return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 }, columns);
1366
- }
1367
- if (isObject(a)) {
1368
- const columns = isStringArray(b) ? b : void 0;
1369
- return __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a, columns);
1370
- }
1371
- throw new Error("Invalid arguments for create method");
3030
+ async create(a, b, c, d) {
3031
+ return __privateGet$4(this, _trace).call(this, "create", async () => {
3032
+ const ifVersion = parseIfVersion(b, c, d);
3033
+ if (Array.isArray(a)) {
3034
+ if (a.length === 0)
3035
+ return [];
3036
+ const ids = await __privateMethod$2(this, _insertRecords, insertRecords_fn).call(this, a, { ifVersion, createOnly: true });
3037
+ const columns = isStringArray(b) ? b : ["*"];
3038
+ const result = await this.read(ids, columns);
3039
+ return result;
3040
+ }
3041
+ if (isString(a) && isObject(b)) {
3042
+ if (a === "")
3043
+ throw new Error("The id can't be empty");
3044
+ const columns = isStringArray(c) ? c : void 0;
3045
+ return await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b, columns, { createOnly: true, ifVersion });
3046
+ }
3047
+ if (isObject(a) && isString(a.id)) {
3048
+ if (a.id === "")
3049
+ throw new Error("The id can't be empty");
3050
+ const columns = isStringArray(b) ? b : void 0;
3051
+ return await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 }, columns, { createOnly: true, ifVersion });
3052
+ }
3053
+ if (isObject(a)) {
3054
+ const columns = isStringArray(b) ? b : void 0;
3055
+ return __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a, columns);
3056
+ }
3057
+ throw new Error("Invalid arguments for create method");
3058
+ });
1372
3059
  }
1373
3060
  async read(a, b) {
1374
- const columns = isStringArray(b) ? b : ["*"];
1375
- if (Array.isArray(a)) {
1376
- if (a.length === 0)
1377
- return [];
1378
- const ids = a.map((item) => isString(item) ? item : item.id).filter((id2) => isString(id2));
1379
- const finalObjects = await this.getAll({ filter: { id: { $any: ids } }, columns });
1380
- const dictionary = finalObjects.reduce((acc, object) => {
1381
- acc[object.id] = object;
1382
- return acc;
1383
- }, {});
1384
- return ids.map((id2) => dictionary[id2] ?? null);
1385
- }
1386
- const id = isString(a) ? a : a.id;
1387
- if (isString(id)) {
1388
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1389
- try {
1390
- const response = await getRecord({
1391
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId: id },
1392
- queryParams: { columns },
1393
- ...fetchProps
3061
+ return __privateGet$4(this, _trace).call(this, "read", async () => {
3062
+ const columns = isStringArray(b) ? b : ["*"];
3063
+ if (Array.isArray(a)) {
3064
+ if (a.length === 0)
3065
+ return [];
3066
+ const ids = a.map((item) => extractId(item));
3067
+ const finalObjects = await this.getAll({ filter: { id: { $any: compact(ids) } }, columns });
3068
+ const dictionary = finalObjects.reduce((acc, object) => {
3069
+ acc[object.id] = object;
3070
+ return acc;
3071
+ }, {});
3072
+ return ids.map((id2) => dictionary[id2 ?? ""] ?? null);
3073
+ }
3074
+ const id = extractId(a);
3075
+ if (id) {
3076
+ try {
3077
+ const response = await getRecord({
3078
+ pathParams: {
3079
+ workspace: "{workspaceId}",
3080
+ dbBranchName: "{dbBranch}",
3081
+ region: "{region}",
3082
+ tableName: __privateGet$4(this, _table),
3083
+ recordId: id
3084
+ },
3085
+ queryParams: { columns },
3086
+ ...__privateGet$4(this, _getFetchProps).call(this)
3087
+ });
3088
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3089
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
3090
+ } catch (e) {
3091
+ if (isObject(e) && e.status === 404) {
3092
+ return null;
3093
+ }
3094
+ throw e;
3095
+ }
3096
+ }
3097
+ return null;
3098
+ });
3099
+ }
3100
+ async readOrThrow(a, b) {
3101
+ return __privateGet$4(this, _trace).call(this, "readOrThrow", async () => {
3102
+ const result = await this.read(a, b);
3103
+ if (Array.isArray(result)) {
3104
+ const missingIds = compact(
3105
+ a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
3106
+ );
3107
+ if (missingIds.length > 0) {
3108
+ throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
3109
+ }
3110
+ return result;
3111
+ }
3112
+ if (result === null) {
3113
+ const id = extractId(a) ?? "unknown";
3114
+ throw new Error(`Record with id ${id} not found`);
3115
+ }
3116
+ return result;
3117
+ });
3118
+ }
3119
+ async update(a, b, c, d) {
3120
+ return __privateGet$4(this, _trace).call(this, "update", async () => {
3121
+ const ifVersion = parseIfVersion(b, c, d);
3122
+ if (Array.isArray(a)) {
3123
+ if (a.length === 0)
3124
+ return [];
3125
+ const existing = await this.read(a, ["id"]);
3126
+ const updates = a.filter((_item, index) => existing[index] !== null);
3127
+ await __privateMethod$2(this, _updateRecords, updateRecords_fn).call(this, updates, {
3128
+ ifVersion,
3129
+ upsert: false
1394
3130
  });
1395
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1396
- return initObject(this.db, schemaTables, __privateGet$4(this, _table), response);
1397
- } catch (e) {
1398
- if (isObject(e) && e.status === 404) {
3131
+ const columns = isStringArray(b) ? b : ["*"];
3132
+ const result = await this.read(a, columns);
3133
+ return result;
3134
+ }
3135
+ try {
3136
+ if (isString(a) && isObject(b)) {
3137
+ const columns = isStringArray(c) ? c : void 0;
3138
+ return await __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a, b, columns, { ifVersion });
3139
+ }
3140
+ if (isObject(a) && isString(a.id)) {
3141
+ const columns = isStringArray(b) ? b : void 0;
3142
+ return await __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns, { ifVersion });
3143
+ }
3144
+ } catch (error) {
3145
+ if (error.status === 422)
1399
3146
  return null;
3147
+ throw error;
3148
+ }
3149
+ throw new Error("Invalid arguments for update method");
3150
+ });
3151
+ }
3152
+ async updateOrThrow(a, b, c, d) {
3153
+ return __privateGet$4(this, _trace).call(this, "updateOrThrow", async () => {
3154
+ const result = await this.update(a, b, c, d);
3155
+ if (Array.isArray(result)) {
3156
+ const missingIds = compact(
3157
+ a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
3158
+ );
3159
+ if (missingIds.length > 0) {
3160
+ throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
1400
3161
  }
1401
- throw e;
3162
+ return result;
1402
3163
  }
1403
- }
1404
- return null;
3164
+ if (result === null) {
3165
+ const id = extractId(a) ?? "unknown";
3166
+ throw new Error(`Record with id ${id} not found`);
3167
+ }
3168
+ return result;
3169
+ });
1405
3170
  }
1406
- async update(a, b, c) {
1407
- if (Array.isArray(a)) {
1408
- if (a.length === 0)
1409
- return [];
1410
- if (a.length > 100) {
1411
- console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
3171
+ async createOrUpdate(a, b, c, d) {
3172
+ return __privateGet$4(this, _trace).call(this, "createOrUpdate", async () => {
3173
+ const ifVersion = parseIfVersion(b, c, d);
3174
+ if (Array.isArray(a)) {
3175
+ if (a.length === 0)
3176
+ return [];
3177
+ await __privateMethod$2(this, _updateRecords, updateRecords_fn).call(this, a, {
3178
+ ifVersion,
3179
+ upsert: true
3180
+ });
3181
+ const columns = isStringArray(b) ? b : ["*"];
3182
+ const result = await this.read(a, columns);
3183
+ return result;
1412
3184
  }
1413
- const columns = isStringArray(b) ? b : ["*"];
1414
- return Promise.all(a.map((object) => this.update(object, columns)));
1415
- }
1416
- if (isString(a) && isObject(b)) {
1417
- const columns = isStringArray(c) ? c : void 0;
1418
- return __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a, b, columns);
1419
- }
1420
- if (isObject(a) && isString(a.id)) {
1421
- const columns = isStringArray(b) ? b : void 0;
1422
- return __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns);
1423
- }
1424
- throw new Error("Invalid arguments for update method");
1425
- }
1426
- async createOrUpdate(a, b, c) {
1427
- if (Array.isArray(a)) {
1428
- if (a.length === 0)
1429
- return [];
1430
- if (a.length > 100) {
1431
- console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
3185
+ if (isString(a) && isObject(b)) {
3186
+ const columns = isStringArray(c) ? c : void 0;
3187
+ return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a, b, columns, { ifVersion });
1432
3188
  }
1433
- const columns = isStringArray(b) ? b : ["*"];
1434
- return Promise.all(a.map((object) => this.createOrUpdate(object, columns)));
1435
- }
1436
- if (isString(a) && isObject(b)) {
1437
- const columns = isStringArray(c) ? c : void 0;
1438
- return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a, b, columns);
1439
- }
1440
- if (isObject(a) && isString(a.id)) {
1441
- const columns = isStringArray(c) ? c : void 0;
1442
- return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns);
1443
- }
1444
- throw new Error("Invalid arguments for createOrUpdate method");
1445
- }
1446
- async delete(a) {
1447
- if (Array.isArray(a)) {
1448
- if (a.length === 0)
1449
- return;
1450
- if (a.length > 100) {
1451
- console.warn("Bulk delete operation is not optimized in the Xata API yet, this request might be slow");
3189
+ if (isObject(a) && isString(a.id)) {
3190
+ const columns = isStringArray(c) ? c : void 0;
3191
+ return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns, { ifVersion });
1452
3192
  }
1453
- await Promise.all(a.map((id) => this.delete(id)));
1454
- return;
1455
- }
1456
- if (isString(a)) {
1457
- await __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a);
1458
- return;
1459
- }
1460
- if (isObject(a) && isString(a.id)) {
1461
- await __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a.id);
1462
- return;
1463
- }
1464
- throw new Error("Invalid arguments for delete method");
3193
+ throw new Error("Invalid arguments for createOrUpdate method");
3194
+ });
3195
+ }
3196
+ async createOrReplace(a, b, c, d) {
3197
+ return __privateGet$4(this, _trace).call(this, "createOrReplace", async () => {
3198
+ const ifVersion = parseIfVersion(b, c, d);
3199
+ if (Array.isArray(a)) {
3200
+ if (a.length === 0)
3201
+ return [];
3202
+ const ids = await __privateMethod$2(this, _insertRecords, insertRecords_fn).call(this, a, { ifVersion, createOnly: false });
3203
+ const columns = isStringArray(b) ? b : ["*"];
3204
+ const result = await this.read(ids, columns);
3205
+ return result;
3206
+ }
3207
+ if (isString(a) && isObject(b)) {
3208
+ const columns = isStringArray(c) ? c : void 0;
3209
+ return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b, columns, { createOnly: false, ifVersion });
3210
+ }
3211
+ if (isObject(a) && isString(a.id)) {
3212
+ const columns = isStringArray(c) ? c : void 0;
3213
+ return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 }, columns, { createOnly: false, ifVersion });
3214
+ }
3215
+ throw new Error("Invalid arguments for createOrReplace method");
3216
+ });
3217
+ }
3218
+ async delete(a, b) {
3219
+ return __privateGet$4(this, _trace).call(this, "delete", async () => {
3220
+ if (Array.isArray(a)) {
3221
+ if (a.length === 0)
3222
+ return [];
3223
+ const ids = a.map((o) => {
3224
+ if (isString(o))
3225
+ return o;
3226
+ if (isString(o.id))
3227
+ return o.id;
3228
+ throw new Error("Invalid arguments for delete method");
3229
+ });
3230
+ const columns = isStringArray(b) ? b : ["*"];
3231
+ const result = await this.read(a, columns);
3232
+ await __privateMethod$2(this, _deleteRecords, deleteRecords_fn).call(this, ids);
3233
+ return result;
3234
+ }
3235
+ if (isString(a)) {
3236
+ return __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a, b);
3237
+ }
3238
+ if (isObject(a) && isString(a.id)) {
3239
+ return __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a.id, b);
3240
+ }
3241
+ throw new Error("Invalid arguments for delete method");
3242
+ });
3243
+ }
3244
+ async deleteOrThrow(a, b) {
3245
+ return __privateGet$4(this, _trace).call(this, "deleteOrThrow", async () => {
3246
+ const result = await this.delete(a, b);
3247
+ if (Array.isArray(result)) {
3248
+ const missingIds = compact(
3249
+ a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
3250
+ );
3251
+ if (missingIds.length > 0) {
3252
+ throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
3253
+ }
3254
+ return result;
3255
+ } else if (result === null) {
3256
+ const id = extractId(a) ?? "unknown";
3257
+ throw new Error(`Record with id ${id} not found`);
3258
+ }
3259
+ return result;
3260
+ });
1465
3261
  }
1466
3262
  async search(query, options = {}) {
1467
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1468
- const { records } = await searchTable({
1469
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
1470
- body: {
1471
- query,
1472
- fuzziness: options.fuzziness,
1473
- prefix: options.prefix,
1474
- highlight: options.highlight,
1475
- filter: options.filter,
1476
- boosters: options.boosters
1477
- },
1478
- ...fetchProps
3263
+ return __privateGet$4(this, _trace).call(this, "search", async () => {
3264
+ const { records } = await searchTable({
3265
+ pathParams: {
3266
+ workspace: "{workspaceId}",
3267
+ dbBranchName: "{dbBranch}",
3268
+ region: "{region}",
3269
+ tableName: __privateGet$4(this, _table)
3270
+ },
3271
+ body: {
3272
+ query,
3273
+ fuzziness: options.fuzziness,
3274
+ prefix: options.prefix,
3275
+ highlight: options.highlight,
3276
+ filter: options.filter,
3277
+ boosters: options.boosters,
3278
+ page: options.page,
3279
+ target: options.target
3280
+ },
3281
+ ...__privateGet$4(this, _getFetchProps).call(this)
3282
+ });
3283
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3284
+ return records.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item, ["*"]));
3285
+ });
3286
+ }
3287
+ async vectorSearch(column, query, options) {
3288
+ return __privateGet$4(this, _trace).call(this, "vectorSearch", async () => {
3289
+ const { records } = await vectorSearchTable({
3290
+ pathParams: {
3291
+ workspace: "{workspaceId}",
3292
+ dbBranchName: "{dbBranch}",
3293
+ region: "{region}",
3294
+ tableName: __privateGet$4(this, _table)
3295
+ },
3296
+ body: {
3297
+ column,
3298
+ queryVector: query,
3299
+ similarityFunction: options?.similarityFunction,
3300
+ size: options?.size,
3301
+ filter: options?.filter
3302
+ },
3303
+ ...__privateGet$4(this, _getFetchProps).call(this)
3304
+ });
3305
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3306
+ return records.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item, ["*"]));
3307
+ });
3308
+ }
3309
+ async aggregate(aggs, filter) {
3310
+ return __privateGet$4(this, _trace).call(this, "aggregate", async () => {
3311
+ const result = await aggregateTable({
3312
+ pathParams: {
3313
+ workspace: "{workspaceId}",
3314
+ dbBranchName: "{dbBranch}",
3315
+ region: "{region}",
3316
+ tableName: __privateGet$4(this, _table)
3317
+ },
3318
+ body: { aggs, filter },
3319
+ ...__privateGet$4(this, _getFetchProps).call(this)
3320
+ });
3321
+ return result;
1479
3322
  });
1480
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1481
- return records.map((item) => initObject(this.db, schemaTables, __privateGet$4(this, _table), item));
1482
3323
  }
1483
3324
  async query(query) {
1484
- const cacheQuery = await __privateMethod$2(this, _getCacheQuery, getCacheQuery_fn).call(this, query);
1485
- if (cacheQuery)
1486
- return new Page(query, cacheQuery.meta, cacheQuery.records);
1487
- const data = query.getQueryOptions();
1488
- const body = {
1489
- filter: Object.values(data.filter ?? {}).some(Boolean) ? data.filter : void 0,
1490
- sort: data.sort !== void 0 ? buildSortFilter(data.sort) : void 0,
1491
- page: data.pagination,
1492
- columns: data.columns
1493
- };
1494
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1495
- const { meta, records: objects } = await queryTable({
1496
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
1497
- body,
1498
- ...fetchProps
3325
+ return __privateGet$4(this, _trace).call(this, "query", async () => {
3326
+ const cacheQuery = await __privateMethod$2(this, _getCacheQuery, getCacheQuery_fn).call(this, query);
3327
+ if (cacheQuery)
3328
+ return new Page(query, cacheQuery.meta, cacheQuery.records);
3329
+ const data = query.getQueryOptions();
3330
+ const { meta, records: objects } = await queryTable({
3331
+ pathParams: {
3332
+ workspace: "{workspaceId}",
3333
+ dbBranchName: "{dbBranch}",
3334
+ region: "{region}",
3335
+ tableName: __privateGet$4(this, _table)
3336
+ },
3337
+ body: {
3338
+ filter: cleanFilter(data.filter),
3339
+ sort: data.sort !== void 0 ? buildSortFilter(data.sort) : void 0,
3340
+ page: data.pagination,
3341
+ columns: data.columns ?? ["*"],
3342
+ consistency: data.consistency
3343
+ },
3344
+ fetchOptions: data.fetchOptions,
3345
+ ...__privateGet$4(this, _getFetchProps).call(this)
3346
+ });
3347
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3348
+ const records = objects.map(
3349
+ (record) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), record, data.columns ?? ["*"])
3350
+ );
3351
+ await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
3352
+ return new Page(query, meta, records);
3353
+ });
3354
+ }
3355
+ async summarizeTable(query, summaries, summariesFilter) {
3356
+ return __privateGet$4(this, _trace).call(this, "summarize", async () => {
3357
+ const data = query.getQueryOptions();
3358
+ const result = await summarizeTable({
3359
+ pathParams: {
3360
+ workspace: "{workspaceId}",
3361
+ dbBranchName: "{dbBranch}",
3362
+ region: "{region}",
3363
+ tableName: __privateGet$4(this, _table)
3364
+ },
3365
+ body: {
3366
+ filter: cleanFilter(data.filter),
3367
+ sort: data.sort !== void 0 ? buildSortFilter(data.sort) : void 0,
3368
+ columns: data.columns,
3369
+ consistency: data.consistency,
3370
+ page: data.pagination?.size !== void 0 ? { size: data.pagination?.size } : void 0,
3371
+ summaries,
3372
+ summariesFilter
3373
+ },
3374
+ ...__privateGet$4(this, _getFetchProps).call(this)
3375
+ });
3376
+ return result;
1499
3377
  });
1500
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1501
- const records = objects.map((record) => initObject(this.db, schemaTables, __privateGet$4(this, _table), record));
1502
- await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
1503
- return new Page(query, meta, records);
3378
+ }
3379
+ ask(question, options) {
3380
+ const params = {
3381
+ pathParams: {
3382
+ workspace: "{workspaceId}",
3383
+ dbBranchName: "{dbBranch}",
3384
+ region: "{region}",
3385
+ tableName: __privateGet$4(this, _table)
3386
+ },
3387
+ body: {
3388
+ question,
3389
+ ...options
3390
+ },
3391
+ ...__privateGet$4(this, _getFetchProps).call(this)
3392
+ };
3393
+ if (options?.onMessage) {
3394
+ fetchSSERequest({
3395
+ endpoint: "dataPlane",
3396
+ url: "/db/{dbBranchName}/tables/{tableName}/ask",
3397
+ method: "POST",
3398
+ onMessage: (message) => {
3399
+ options.onMessage?.({ answer: message.text, records: message.records });
3400
+ },
3401
+ ...params
3402
+ });
3403
+ } else {
3404
+ return askTable(params);
3405
+ }
1504
3406
  }
1505
3407
  }
1506
3408
  _table = new WeakMap();
1507
3409
  _getFetchProps = new WeakMap();
3410
+ _db = new WeakMap();
1508
3411
  _cache = new WeakMap();
1509
3412
  _schemaTables$2 = new WeakMap();
3413
+ _trace = new WeakMap();
1510
3414
  _insertRecordWithoutId = new WeakSet();
1511
3415
  insertRecordWithoutId_fn = async function(object, columns = ["*"]) {
1512
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1513
3416
  const record = transformObjectLinks(object);
1514
3417
  const response = await insertRecord({
1515
3418
  pathParams: {
1516
3419
  workspace: "{workspaceId}",
1517
3420
  dbBranchName: "{dbBranch}",
3421
+ region: "{region}",
1518
3422
  tableName: __privateGet$4(this, _table)
1519
3423
  },
1520
3424
  queryParams: { columns },
1521
3425
  body: record,
1522
- ...fetchProps
3426
+ ...__privateGet$4(this, _getFetchProps).call(this)
1523
3427
  });
1524
3428
  const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1525
- return initObject(this.db, schemaTables, __privateGet$4(this, _table), response);
3429
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
1526
3430
  };
1527
3431
  _insertRecordWithId = new WeakSet();
1528
- insertRecordWithId_fn = async function(recordId, object, columns = ["*"]) {
1529
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
3432
+ insertRecordWithId_fn = async function(recordId, object, columns = ["*"], { createOnly, ifVersion }) {
1530
3433
  const record = transformObjectLinks(object);
1531
3434
  const response = await insertRecordWithID({
1532
3435
  pathParams: {
1533
3436
  workspace: "{workspaceId}",
1534
3437
  dbBranchName: "{dbBranch}",
3438
+ region: "{region}",
1535
3439
  tableName: __privateGet$4(this, _table),
1536
3440
  recordId
1537
3441
  },
1538
3442
  body: record,
1539
- queryParams: { createOnly: true, columns },
1540
- ...fetchProps
3443
+ queryParams: { createOnly, columns, ifVersion },
3444
+ ...__privateGet$4(this, _getFetchProps).call(this)
1541
3445
  });
1542
3446
  const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1543
- return initObject(this.db, schemaTables, __privateGet$4(this, _table), response);
1544
- };
1545
- _bulkInsertTableRecords = new WeakSet();
1546
- bulkInsertTableRecords_fn = async function(objects, columns = ["*"]) {
1547
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1548
- const records = objects.map((object) => transformObjectLinks(object));
1549
- const response = await bulkInsertTableRecords({
1550
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
1551
- queryParams: { columns },
1552
- body: { records },
1553
- ...fetchProps
1554
- });
1555
- if (!isResponseWithRecords(response)) {
1556
- throw new Error("Request included columns but server didn't include them");
3447
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
3448
+ };
3449
+ _insertRecords = new WeakSet();
3450
+ insertRecords_fn = async function(objects, { createOnly, ifVersion }) {
3451
+ const chunkedOperations = chunk(
3452
+ objects.map((object) => ({
3453
+ insert: { table: __privateGet$4(this, _table), record: transformObjectLinks(object), createOnly, ifVersion }
3454
+ })),
3455
+ BULK_OPERATION_MAX_SIZE
3456
+ );
3457
+ const ids = [];
3458
+ for (const operations of chunkedOperations) {
3459
+ const { results } = await branchTransaction({
3460
+ pathParams: {
3461
+ workspace: "{workspaceId}",
3462
+ dbBranchName: "{dbBranch}",
3463
+ region: "{region}"
3464
+ },
3465
+ body: { operations },
3466
+ ...__privateGet$4(this, _getFetchProps).call(this)
3467
+ });
3468
+ for (const result of results) {
3469
+ if (result.operation === "insert") {
3470
+ ids.push(result.id);
3471
+ } else {
3472
+ ids.push(null);
3473
+ }
3474
+ }
1557
3475
  }
1558
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1559
- return response.records?.map((item) => initObject(this.db, schemaTables, __privateGet$4(this, _table), item));
3476
+ return ids;
1560
3477
  };
1561
3478
  _updateRecordWithID = new WeakSet();
1562
- updateRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
1563
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1564
- const record = transformObjectLinks(object);
1565
- const response = await updateRecordWithID({
1566
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
1567
- queryParams: { columns },
1568
- body: record,
1569
- ...fetchProps
1570
- });
1571
- const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1572
- return initObject(this.db, schemaTables, __privateGet$4(this, _table), response);
3479
+ updateRecordWithID_fn = async function(recordId, object, columns = ["*"], { ifVersion }) {
3480
+ const { id: _id, ...record } = transformObjectLinks(object);
3481
+ try {
3482
+ const response = await updateRecordWithID({
3483
+ pathParams: {
3484
+ workspace: "{workspaceId}",
3485
+ dbBranchName: "{dbBranch}",
3486
+ region: "{region}",
3487
+ tableName: __privateGet$4(this, _table),
3488
+ recordId
3489
+ },
3490
+ queryParams: { columns, ifVersion },
3491
+ body: record,
3492
+ ...__privateGet$4(this, _getFetchProps).call(this)
3493
+ });
3494
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3495
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
3496
+ } catch (e) {
3497
+ if (isObject(e) && e.status === 404) {
3498
+ return null;
3499
+ }
3500
+ throw e;
3501
+ }
3502
+ };
3503
+ _updateRecords = new WeakSet();
3504
+ updateRecords_fn = async function(objects, { ifVersion, upsert }) {
3505
+ const chunkedOperations = chunk(
3506
+ objects.map(({ id, ...object }) => ({
3507
+ update: { table: __privateGet$4(this, _table), id, ifVersion, upsert, fields: transformObjectLinks(object) }
3508
+ })),
3509
+ BULK_OPERATION_MAX_SIZE
3510
+ );
3511
+ const ids = [];
3512
+ for (const operations of chunkedOperations) {
3513
+ const { results } = await branchTransaction({
3514
+ pathParams: {
3515
+ workspace: "{workspaceId}",
3516
+ dbBranchName: "{dbBranch}",
3517
+ region: "{region}"
3518
+ },
3519
+ body: { operations },
3520
+ ...__privateGet$4(this, _getFetchProps).call(this)
3521
+ });
3522
+ for (const result of results) {
3523
+ if (result.operation === "update") {
3524
+ ids.push(result.id);
3525
+ } else {
3526
+ ids.push(null);
3527
+ }
3528
+ }
3529
+ }
3530
+ return ids;
1573
3531
  };
1574
3532
  _upsertRecordWithID = new WeakSet();
1575
- upsertRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
1576
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
3533
+ upsertRecordWithID_fn = async function(recordId, object, columns = ["*"], { ifVersion }) {
1577
3534
  const response = await upsertRecordWithID({
1578
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
1579
- queryParams: { columns },
3535
+ pathParams: {
3536
+ workspace: "{workspaceId}",
3537
+ dbBranchName: "{dbBranch}",
3538
+ region: "{region}",
3539
+ tableName: __privateGet$4(this, _table),
3540
+ recordId
3541
+ },
3542
+ queryParams: { columns, ifVersion },
1580
3543
  body: object,
1581
- ...fetchProps
3544
+ ...__privateGet$4(this, _getFetchProps).call(this)
1582
3545
  });
1583
3546
  const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1584
- return initObject(this.db, schemaTables, __privateGet$4(this, _table), response);
3547
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
1585
3548
  };
1586
3549
  _deleteRecord = new WeakSet();
1587
- deleteRecord_fn = async function(recordId) {
1588
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1589
- await deleteRecord({
1590
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
1591
- ...fetchProps
1592
- });
3550
+ deleteRecord_fn = async function(recordId, columns = ["*"]) {
3551
+ try {
3552
+ const response = await deleteRecord({
3553
+ pathParams: {
3554
+ workspace: "{workspaceId}",
3555
+ dbBranchName: "{dbBranch}",
3556
+ region: "{region}",
3557
+ tableName: __privateGet$4(this, _table),
3558
+ recordId
3559
+ },
3560
+ queryParams: { columns },
3561
+ ...__privateGet$4(this, _getFetchProps).call(this)
3562
+ });
3563
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
3564
+ return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response, columns);
3565
+ } catch (e) {
3566
+ if (isObject(e) && e.status === 404) {
3567
+ return null;
3568
+ }
3569
+ throw e;
3570
+ }
3571
+ };
3572
+ _deleteRecords = new WeakSet();
3573
+ deleteRecords_fn = async function(recordIds) {
3574
+ const chunkedOperations = chunk(
3575
+ recordIds.map((id) => ({ delete: { table: __privateGet$4(this, _table), id } })),
3576
+ BULK_OPERATION_MAX_SIZE
3577
+ );
3578
+ for (const operations of chunkedOperations) {
3579
+ await branchTransaction({
3580
+ pathParams: {
3581
+ workspace: "{workspaceId}",
3582
+ dbBranchName: "{dbBranch}",
3583
+ region: "{region}"
3584
+ },
3585
+ body: { operations },
3586
+ ...__privateGet$4(this, _getFetchProps).call(this)
3587
+ });
3588
+ }
1593
3589
  };
1594
3590
  _setCacheQuery = new WeakSet();
1595
3591
  setCacheQuery_fn = async function(query, meta, records) {
1596
- await __privateGet$4(this, _cache).set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: new Date(), meta, records });
3592
+ await __privateGet$4(this, _cache)?.set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: /* @__PURE__ */ new Date(), meta, records });
1597
3593
  };
1598
3594
  _getCacheQuery = new WeakSet();
1599
3595
  getCacheQuery_fn = async function(query) {
1600
3596
  const key = `query_${__privateGet$4(this, _table)}:${query.key()}`;
1601
- const result = await __privateGet$4(this, _cache).get(key);
3597
+ const result = await __privateGet$4(this, _cache)?.get(key);
1602
3598
  if (!result)
1603
3599
  return null;
1604
- const { cache: ttl = __privateGet$4(this, _cache).defaultQueryTTL } = query.getQueryOptions();
3600
+ const defaultTTL = __privateGet$4(this, _cache)?.defaultQueryTTL ?? -1;
3601
+ const { cache: ttl = defaultTTL } = query.getQueryOptions();
1605
3602
  if (ttl < 0)
1606
3603
  return null;
1607
3604
  const hasExpired = result.date.getTime() + ttl < Date.now();
@@ -1611,10 +3608,9 @@ _getSchemaTables$1 = new WeakSet();
1611
3608
  getSchemaTables_fn$1 = async function() {
1612
3609
  if (__privateGet$4(this, _schemaTables$2))
1613
3610
  return __privateGet$4(this, _schemaTables$2);
1614
- const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1615
3611
  const { schema } = await getBranchDetails({
1616
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
1617
- ...fetchProps
3612
+ pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3613
+ ...__privateGet$4(this, _getFetchProps).call(this)
1618
3614
  });
1619
3615
  __privateSet$4(this, _schemaTables$2, schema.tables);
1620
3616
  return schema.tables;
@@ -1626,22 +3622,24 @@ const transformObjectLinks = (object) => {
1626
3622
  return { ...acc, [key]: isIdentifiable(value) ? value.id : value };
1627
3623
  }, {});
1628
3624
  };
1629
- const initObject = (db, schemaTables, table, object) => {
1630
- const result = {};
3625
+ const initObject = (db, schemaTables, table, object, selectedColumns) => {
3626
+ const data = {};
1631
3627
  const { xata, ...rest } = object ?? {};
1632
- Object.assign(result, rest);
3628
+ Object.assign(data, rest);
1633
3629
  const { columns } = schemaTables.find(({ name }) => name === table) ?? {};
1634
3630
  if (!columns)
1635
3631
  console.error(`Table ${table} not found in schema`);
1636
3632
  for (const column of columns ?? []) {
1637
- const value = result[column.name];
3633
+ if (!isValidColumn(selectedColumns, column))
3634
+ continue;
3635
+ const value = data[column.name];
1638
3636
  switch (column.type) {
1639
3637
  case "datetime": {
1640
- const date = value !== void 0 ? new Date(value) : void 0;
1641
- if (date && isNaN(date.getTime())) {
3638
+ const date = value !== void 0 ? new Date(value) : null;
3639
+ if (date !== null && isNaN(date.getTime())) {
1642
3640
  console.error(`Failed to parse date ${value} for field ${column.name}`);
1643
- } else if (date) {
1644
- result[column.name] = date;
3641
+ } else {
3642
+ data[column.name] = date;
1645
3643
  }
1646
3644
  break;
1647
3645
  }
@@ -1650,32 +3648,88 @@ const initObject = (db, schemaTables, table, object) => {
1650
3648
  if (!linkTable) {
1651
3649
  console.error(`Failed to parse link for field ${column.name}`);
1652
3650
  } else if (isObject(value)) {
1653
- result[column.name] = initObject(db, schemaTables, linkTable, value);
3651
+ const selectedLinkColumns = selectedColumns.reduce((acc, item) => {
3652
+ if (item === column.name) {
3653
+ return [...acc, "*"];
3654
+ }
3655
+ if (item.startsWith(`${column.name}.`)) {
3656
+ const [, ...path] = item.split(".");
3657
+ return [...acc, path.join(".")];
3658
+ }
3659
+ return acc;
3660
+ }, []);
3661
+ data[column.name] = initObject(db, schemaTables, linkTable, value, selectedLinkColumns);
3662
+ } else {
3663
+ data[column.name] = null;
1654
3664
  }
1655
3665
  break;
1656
3666
  }
3667
+ default:
3668
+ data[column.name] = value ?? null;
3669
+ if (column.notNull === true && value === null) {
3670
+ console.error(`Parse error, column ${column.name} is non nullable and value resolves null`);
3671
+ }
3672
+ break;
1657
3673
  }
1658
3674
  }
1659
- result.read = function(columns2) {
1660
- return db[table].read(result["id"], columns2);
3675
+ const record = { ...data };
3676
+ const serializable = { xata, ...transformObjectLinks(data) };
3677
+ const metadata = xata !== void 0 ? { ...xata, createdAt: new Date(xata.createdAt), updatedAt: new Date(xata.updatedAt) } : void 0;
3678
+ record.read = function(columns2) {
3679
+ return db[table].read(record["id"], columns2);
3680
+ };
3681
+ record.update = function(data2, b, c) {
3682
+ const columns2 = isStringArray(b) ? b : ["*"];
3683
+ const ifVersion = parseIfVersion(b, c);
3684
+ return db[table].update(record["id"], data2, columns2, { ifVersion });
3685
+ };
3686
+ record.replace = function(data2, b, c) {
3687
+ const columns2 = isStringArray(b) ? b : ["*"];
3688
+ const ifVersion = parseIfVersion(b, c);
3689
+ return db[table].createOrReplace(record["id"], data2, columns2, { ifVersion });
3690
+ };
3691
+ record.delete = function() {
3692
+ return db[table].delete(record["id"]);
1661
3693
  };
1662
- result.update = function(data, columns2) {
1663
- return db[table].update(result["id"], data, columns2);
3694
+ record.xata = Object.freeze(metadata);
3695
+ record.getMetadata = function() {
3696
+ return record.xata;
1664
3697
  };
1665
- result.delete = function() {
1666
- return db[table].delete(result["id"]);
3698
+ record.toSerializable = function() {
3699
+ return JSON.parse(JSON.stringify(serializable));
1667
3700
  };
1668
- result.getMetadata = function() {
1669
- return xata;
3701
+ record.toString = function() {
3702
+ return JSON.stringify(transformObjectLinks(serializable));
1670
3703
  };
1671
- for (const prop of ["read", "update", "delete", "getMetadata"]) {
1672
- Object.defineProperty(result, prop, { enumerable: false });
3704
+ for (const prop of ["read", "update", "replace", "delete", "getMetadata", "toSerializable", "toString"]) {
3705
+ Object.defineProperty(record, prop, { enumerable: false });
1673
3706
  }
1674
- Object.freeze(result);
1675
- return result;
3707
+ Object.freeze(record);
3708
+ return record;
1676
3709
  };
1677
- function isResponseWithRecords(value) {
1678
- return isObject(value) && Array.isArray(value.records);
3710
+ function extractId(value) {
3711
+ if (isString(value))
3712
+ return value;
3713
+ if (isObject(value) && isString(value.id))
3714
+ return value.id;
3715
+ return void 0;
3716
+ }
3717
+ function isValidColumn(columns, column) {
3718
+ if (columns.includes("*"))
3719
+ return true;
3720
+ if (column.type === "link") {
3721
+ const linkColumns = columns.filter((item) => item.startsWith(column.name));
3722
+ return linkColumns.length > 0;
3723
+ }
3724
+ return columns.includes(column.name);
3725
+ }
3726
+ function parseIfVersion(...args) {
3727
+ for (const arg of args) {
3728
+ if (isObject(arg) && isNumber(arg.ifVersion)) {
3729
+ return arg.ifVersion;
3730
+ }
3731
+ }
3732
+ return void 0;
1679
3733
  }
1680
3734
 
1681
3735
  var __accessCheck$3 = (obj, member, msg) => {
@@ -1727,18 +3781,25 @@ class SimpleCache {
1727
3781
  }
1728
3782
  _map = new WeakMap();
1729
3783
 
1730
- const gt = (value) => ({ $gt: value });
1731
- const ge = (value) => ({ $ge: value });
1732
- const gte = (value) => ({ $ge: value });
1733
- const lt = (value) => ({ $lt: value });
1734
- const lte = (value) => ({ $le: value });
1735
- const le = (value) => ({ $le: value });
3784
+ const greaterThan = (value) => ({ $gt: value });
3785
+ const gt = greaterThan;
3786
+ const greaterThanEquals = (value) => ({ $ge: value });
3787
+ const greaterEquals = greaterThanEquals;
3788
+ const gte = greaterThanEquals;
3789
+ const ge = greaterThanEquals;
3790
+ const lessThan = (value) => ({ $lt: value });
3791
+ const lt = lessThan;
3792
+ const lessThanEquals = (value) => ({ $le: value });
3793
+ const lessEquals = lessThanEquals;
3794
+ const lte = lessThanEquals;
3795
+ const le = lessThanEquals;
1736
3796
  const exists = (column) => ({ $exists: column });
1737
3797
  const notExists = (column) => ({ $notExists: column });
1738
3798
  const startsWith = (value) => ({ $startsWith: value });
1739
3799
  const endsWith = (value) => ({ $endsWith: value });
1740
3800
  const pattern = (value) => ({ $pattern: value });
1741
3801
  const is = (value) => ({ $is: value });
3802
+ const equals = is;
1742
3803
  const isNot = (value) => ({ $isNot: value });
1743
3804
  const contains = (value) => ({ $contains: value });
1744
3805
  const includes = (value) => ({ $includes: value });
@@ -1828,23 +3889,23 @@ class SearchPlugin extends XataPlugin {
1828
3889
  __privateAdd$1(this, _schemaTables, void 0);
1829
3890
  __privateSet$1(this, _schemaTables, schemaTables);
1830
3891
  }
1831
- build({ getFetchProps }) {
3892
+ build(pluginOptions) {
1832
3893
  return {
1833
3894
  all: async (query, options = {}) => {
1834
- const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
1835
- const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
3895
+ const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, pluginOptions);
3896
+ const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, pluginOptions);
1836
3897
  return records.map((record) => {
1837
3898
  const { table = "orphan" } = record.xata;
1838
- return { table, record: initObject(this.db, schemaTables, table, record) };
3899
+ return { table, record: initObject(this.db, schemaTables, table, record, ["*"]) };
1839
3900
  });
1840
3901
  },
1841
3902
  byTable: async (query, options = {}) => {
1842
- const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
1843
- const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
3903
+ const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, pluginOptions);
3904
+ const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, pluginOptions);
1844
3905
  return records.reduce((acc, record) => {
1845
3906
  const { table = "orphan" } = record.xata;
1846
3907
  const items = acc[table] ?? [];
1847
- const item = initObject(this.db, schemaTables, table, record);
3908
+ const item = initObject(this.db, schemaTables, table, record, ["*"]);
1848
3909
  return { ...acc, [table]: [...items, item] };
1849
3910
  }, {});
1850
3911
  }
@@ -1853,106 +3914,40 @@ class SearchPlugin extends XataPlugin {
1853
3914
  }
1854
3915
  _schemaTables = new WeakMap();
1855
3916
  _search = new WeakSet();
1856
- search_fn = async function(query, options, getFetchProps) {
1857
- const fetchProps = await getFetchProps();
1858
- const { tables, fuzziness, highlight, prefix } = options ?? {};
3917
+ search_fn = async function(query, options, pluginOptions) {
3918
+ const { tables, fuzziness, highlight, prefix, page } = options ?? {};
1859
3919
  const { records } = await searchBranch({
1860
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
1861
- body: { tables, query, fuzziness, prefix, highlight },
1862
- ...fetchProps
3920
+ pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3921
+ // @ts-ignore https://github.com/xataio/client-ts/issues/313
3922
+ body: { tables, query, fuzziness, prefix, highlight, page },
3923
+ ...pluginOptions
1863
3924
  });
1864
3925
  return records;
1865
3926
  };
1866
3927
  _getSchemaTables = new WeakSet();
1867
- getSchemaTables_fn = async function(getFetchProps) {
3928
+ getSchemaTables_fn = async function(pluginOptions) {
1868
3929
  if (__privateGet$1(this, _schemaTables))
1869
3930
  return __privateGet$1(this, _schemaTables);
1870
- const fetchProps = await getFetchProps();
1871
3931
  const { schema } = await getBranchDetails({
1872
- pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
1873
- ...fetchProps
3932
+ pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3933
+ ...pluginOptions
1874
3934
  });
1875
3935
  __privateSet$1(this, _schemaTables, schema.tables);
1876
3936
  return schema.tables;
1877
3937
  };
1878
3938
 
1879
- const isBranchStrategyBuilder = (strategy) => {
1880
- return typeof strategy === "function";
1881
- };
1882
-
1883
- async function getCurrentBranchName(options) {
1884
- const { branch, envBranch } = getEnvironment();
1885
- if (branch) {
1886
- const details = await getDatabaseBranch(branch, options);
1887
- if (details)
1888
- return branch;
1889
- console.warn(`Branch ${branch} not found in Xata. Ignoring...`);
1890
- }
1891
- const gitBranch = envBranch || await getGitBranch();
1892
- return resolveXataBranch(gitBranch, options);
1893
- }
1894
- async function getCurrentBranchDetails(options) {
1895
- const branch = await getCurrentBranchName(options);
1896
- return getDatabaseBranch(branch, options);
1897
- }
1898
- async function resolveXataBranch(gitBranch, options) {
1899
- const databaseURL = options?.databaseURL || getDatabaseURL();
1900
- const apiKey = options?.apiKey || getAPIKey();
1901
- if (!databaseURL)
1902
- throw new Error(
1903
- "A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
1904
- );
1905
- if (!apiKey)
1906
- throw new Error(
1907
- "An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
1908
- );
1909
- const [protocol, , host, , dbName] = databaseURL.split("/");
1910
- const [workspace] = host.split(".");
1911
- const { fallbackBranch } = getEnvironment();
1912
- const { branch } = await resolveBranch({
1913
- apiKey,
1914
- apiUrl: databaseURL,
1915
- fetchImpl: getFetchImplementation(options?.fetchImpl),
1916
- workspacesApiUrl: `${protocol}//${host}`,
1917
- pathParams: { dbName, workspace },
1918
- queryParams: { gitBranch, fallbackBranch }
1919
- });
1920
- return branch;
1921
- }
1922
- async function getDatabaseBranch(branch, options) {
1923
- const databaseURL = options?.databaseURL || getDatabaseURL();
1924
- const apiKey = options?.apiKey || getAPIKey();
1925
- if (!databaseURL)
1926
- throw new Error(
1927
- "A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
1928
- );
1929
- if (!apiKey)
1930
- throw new Error(
1931
- "An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
1932
- );
1933
- const [protocol, , host, , database] = databaseURL.split("/");
1934
- const [workspace] = host.split(".");
1935
- const dbBranchName = `${database}:${branch}`;
1936
- try {
1937
- return await getBranchDetails({
1938
- apiKey,
1939
- apiUrl: databaseURL,
1940
- fetchImpl: getFetchImplementation(options?.fetchImpl),
1941
- workspacesApiUrl: `${protocol}//${host}`,
1942
- pathParams: { dbBranchName, workspace }
1943
- });
1944
- } catch (err) {
1945
- if (isObject(err) && err.status === 404)
1946
- return null;
1947
- throw err;
1948
- }
1949
- }
1950
- function getDatabaseURL() {
1951
- try {
1952
- const { databaseURL } = getEnvironment();
1953
- return databaseURL;
1954
- } catch (err) {
1955
- return void 0;
3939
+ class TransactionPlugin extends XataPlugin {
3940
+ build(pluginOptions) {
3941
+ return {
3942
+ run: async (operations) => {
3943
+ const response = await branchTransaction({
3944
+ pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3945
+ body: { operations },
3946
+ ...pluginOptions
3947
+ });
3948
+ return response;
3949
+ }
3950
+ };
1956
3951
  }
1957
3952
  }
1958
3953
 
@@ -1979,85 +3974,203 @@ var __privateMethod = (obj, member, method) => {
1979
3974
  return method;
1980
3975
  };
1981
3976
  const buildClient = (plugins) => {
1982
- var _branch, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
3977
+ var _options, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _a;
1983
3978
  return _a = class {
1984
3979
  constructor(options = {}, schemaTables) {
1985
3980
  __privateAdd(this, _parseOptions);
1986
3981
  __privateAdd(this, _getFetchProps);
1987
- __privateAdd(this, _evaluateBranch);
1988
- __privateAdd(this, _branch, void 0);
3982
+ __privateAdd(this, _options, void 0);
1989
3983
  const safeOptions = __privateMethod(this, _parseOptions, parseOptions_fn).call(this, options);
3984
+ __privateSet(this, _options, safeOptions);
1990
3985
  const pluginOptions = {
1991
- getFetchProps: () => __privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
1992
- cache: safeOptions.cache
3986
+ ...__privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
3987
+ cache: safeOptions.cache,
3988
+ host: safeOptions.host
1993
3989
  };
1994
3990
  const db = new SchemaPlugin(schemaTables).build(pluginOptions);
1995
3991
  const search = new SearchPlugin(db, schemaTables).build(pluginOptions);
3992
+ const transactions = new TransactionPlugin().build(pluginOptions);
1996
3993
  this.db = db;
1997
3994
  this.search = search;
3995
+ this.transactions = transactions;
1998
3996
  for (const [key, namespace] of Object.entries(plugins ?? {})) {
1999
3997
  if (namespace === void 0)
2000
3998
  continue;
2001
- const result = namespace.build(pluginOptions);
2002
- if (result instanceof Promise) {
2003
- void result.then((namespace2) => {
2004
- this[key] = namespace2;
2005
- });
2006
- } else {
2007
- this[key] = result;
2008
- }
3999
+ this[key] = namespace.build(pluginOptions);
2009
4000
  }
2010
4001
  }
2011
- }, _branch = new WeakMap(), _parseOptions = new WeakSet(), parseOptions_fn = function(options) {
4002
+ async getConfig() {
4003
+ const databaseURL = __privateGet(this, _options).databaseURL;
4004
+ const branch = __privateGet(this, _options).branch;
4005
+ return { databaseURL, branch };
4006
+ }
4007
+ }, _options = new WeakMap(), _parseOptions = new WeakSet(), parseOptions_fn = function(options) {
4008
+ const enableBrowser = options?.enableBrowser ?? getEnableBrowserVariable() ?? false;
4009
+ const isBrowser = typeof window !== "undefined" && typeof Deno === "undefined";
4010
+ if (isBrowser && !enableBrowser) {
4011
+ throw new Error(
4012
+ "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."
4013
+ );
4014
+ }
2012
4015
  const fetch = getFetchImplementation(options?.fetch);
2013
4016
  const databaseURL = options?.databaseURL || getDatabaseURL();
2014
4017
  const apiKey = options?.apiKey || getAPIKey();
2015
4018
  const cache = options?.cache ?? new SimpleCache({ defaultQueryTTL: 0 });
2016
- const branch = async () => options?.branch !== void 0 ? await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, options.branch) : await getCurrentBranchName({ apiKey, databaseURL, fetchImpl: options?.fetch });
2017
- if (!databaseURL || !apiKey) {
2018
- throw new Error("Options databaseURL and apiKey are required");
4019
+ const trace = options?.trace ?? defaultTrace;
4020
+ const clientName = options?.clientName;
4021
+ const host = options?.host ?? "production";
4022
+ const xataAgentExtra = options?.xataAgentExtra;
4023
+ if (!apiKey) {
4024
+ throw new Error("Option apiKey is required");
4025
+ }
4026
+ if (!databaseURL) {
4027
+ throw new Error("Option databaseURL is required");
2019
4028
  }
2020
- return { fetch, databaseURL, apiKey, branch, cache };
2021
- }, _getFetchProps = new WeakSet(), getFetchProps_fn = async function({
4029
+ const envBranch = getBranch();
4030
+ const previewBranch = getPreviewBranch();
4031
+ const branch = options?.branch || previewBranch || envBranch || "main";
4032
+ if (!!previewBranch && branch !== previewBranch) {
4033
+ console.warn(
4034
+ `Ignoring preview branch ${previewBranch} because branch option was passed to the client constructor with value ${branch}`
4035
+ );
4036
+ } else if (!!envBranch && branch !== envBranch) {
4037
+ console.warn(
4038
+ `Ignoring branch ${envBranch} because branch option was passed to the client constructor with value ${branch}`
4039
+ );
4040
+ } else if (!!previewBranch && !!envBranch && previewBranch !== envBranch) {
4041
+ console.warn(
4042
+ `Ignoring preview branch ${previewBranch} and branch ${envBranch} because branch option was passed to the client constructor with value ${branch}`
4043
+ );
4044
+ } else if (!previewBranch && !envBranch && options?.branch === void 0) {
4045
+ console.warn(
4046
+ `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.`
4047
+ );
4048
+ }
4049
+ return {
4050
+ fetch,
4051
+ databaseURL,
4052
+ apiKey,
4053
+ branch,
4054
+ cache,
4055
+ trace,
4056
+ host,
4057
+ clientID: generateUUID(),
4058
+ enableBrowser,
4059
+ clientName,
4060
+ xataAgentExtra
4061
+ };
4062
+ }, _getFetchProps = new WeakSet(), getFetchProps_fn = function({
2022
4063
  fetch,
2023
4064
  apiKey,
2024
4065
  databaseURL,
2025
- branch
4066
+ branch,
4067
+ trace,
4068
+ clientID,
4069
+ clientName,
4070
+ xataAgentExtra
2026
4071
  }) {
2027
- const branchValue = await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, branch);
2028
- if (!branchValue)
2029
- throw new Error("Unable to resolve branch value");
2030
4072
  return {
2031
- fetchImpl: fetch,
4073
+ fetch,
2032
4074
  apiKey,
2033
4075
  apiUrl: "",
4076
+ // Instead of using workspace and dbBranch, we inject a probably CNAME'd URL
2034
4077
  workspacesApiUrl: (path, params) => {
2035
4078
  const hasBranch = params.dbBranchName ?? params.branch;
2036
- const newPath = path.replace(/^\/db\/[^/]+/, hasBranch ? `:${branchValue}` : "");
4079
+ const newPath = path.replace(/^\/db\/[^/]+/, hasBranch !== void 0 ? `:${branch}` : "");
2037
4080
  return databaseURL + newPath;
2038
- }
2039
- };
2040
- }, _evaluateBranch = new WeakSet(), evaluateBranch_fn = async function(param) {
2041
- if (__privateGet(this, _branch))
2042
- return __privateGet(this, _branch);
2043
- if (param === void 0)
2044
- return void 0;
2045
- const strategies = Array.isArray(param) ? [...param] : [param];
2046
- const evaluateBranch = async (strategy) => {
2047
- return isBranchStrategyBuilder(strategy) ? await strategy() : strategy;
4081
+ },
4082
+ trace,
4083
+ clientID,
4084
+ clientName,
4085
+ xataAgentExtra
2048
4086
  };
2049
- for await (const strategy of strategies) {
2050
- const branch = await evaluateBranch(strategy);
2051
- if (branch) {
2052
- __privateSet(this, _branch, branch);
2053
- return branch;
2054
- }
2055
- }
2056
4087
  }, _a;
2057
4088
  };
2058
4089
  class BaseClient extends buildClient() {
2059
4090
  }
2060
4091
 
4092
+ const META = "__";
4093
+ const VALUE = "___";
4094
+ class Serializer {
4095
+ constructor() {
4096
+ this.classes = {};
4097
+ }
4098
+ add(clazz) {
4099
+ this.classes[clazz.name] = clazz;
4100
+ }
4101
+ toJSON(data) {
4102
+ function visit(obj) {
4103
+ if (Array.isArray(obj))
4104
+ return obj.map(visit);
4105
+ const type = typeof obj;
4106
+ if (type === "undefined")
4107
+ return { [META]: "undefined" };
4108
+ if (type === "bigint")
4109
+ return { [META]: "bigint", [VALUE]: obj.toString() };
4110
+ if (obj === null || type !== "object")
4111
+ return obj;
4112
+ const constructor = obj.constructor;
4113
+ const o = { [META]: constructor.name };
4114
+ for (const [key, value] of Object.entries(obj)) {
4115
+ o[key] = visit(value);
4116
+ }
4117
+ if (constructor === Date)
4118
+ o[VALUE] = obj.toISOString();
4119
+ if (constructor === Map)
4120
+ o[VALUE] = Object.fromEntries(obj);
4121
+ if (constructor === Set)
4122
+ o[VALUE] = [...obj];
4123
+ return o;
4124
+ }
4125
+ return JSON.stringify(visit(data));
4126
+ }
4127
+ fromJSON(json) {
4128
+ return JSON.parse(json, (key, value) => {
4129
+ if (value && typeof value === "object" && !Array.isArray(value)) {
4130
+ const { [META]: clazz, [VALUE]: val, ...rest } = value;
4131
+ const constructor = this.classes[clazz];
4132
+ if (constructor) {
4133
+ return Object.assign(Object.create(constructor.prototype), rest);
4134
+ }
4135
+ if (clazz === "Date")
4136
+ return new Date(val);
4137
+ if (clazz === "Set")
4138
+ return new Set(val);
4139
+ if (clazz === "Map")
4140
+ return new Map(Object.entries(val));
4141
+ if (clazz === "bigint")
4142
+ return BigInt(val);
4143
+ if (clazz === "undefined")
4144
+ return void 0;
4145
+ return rest;
4146
+ }
4147
+ return value;
4148
+ });
4149
+ }
4150
+ }
4151
+ const defaultSerializer = new Serializer();
4152
+ const serialize = (data) => {
4153
+ return defaultSerializer.toJSON(data);
4154
+ };
4155
+ const deserialize = (json) => {
4156
+ return defaultSerializer.fromJSON(json);
4157
+ };
4158
+
4159
+ function buildWorkerRunner(config) {
4160
+ return function xataWorker(name, worker) {
4161
+ return async (...args) => {
4162
+ const url = process.env.NODE_ENV === "development" ? `http://localhost:64749/${name}` : `https://dispatcher.xata.workers.dev/${config.workspace}/${config.worker}/${name}`;
4163
+ const result = await fetch(url, {
4164
+ method: "POST",
4165
+ headers: { "Content-Type": "application/json" },
4166
+ body: serialize({ args })
4167
+ });
4168
+ const text = await result.text();
4169
+ return deserialize(text);
4170
+ };
4171
+ };
4172
+ }
4173
+
2061
4174
  class XataError extends Error {
2062
4175
  constructor(message, status) {
2063
4176
  super(message);
@@ -2065,5 +4178,5 @@ class XataError extends Error {
2065
4178
  }
2066
4179
  }
2067
4180
 
2068
- 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, getDatabaseMetadata, 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 };
4181
+ 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, deleteFile, deleteFileItem, deleteRecord, deleteTable, deleteUser, deleteUserAPIKey, deleteWorkspace, deserialize, endsWith, equals, executeBranchMigrationPlan, exists, fileAccess, 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 };
2069
4182
  //# sourceMappingURL=index.mjs.map