@xata.io/client 0.13.4 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -22,35 +22,81 @@ function toBase64(value) {
22
22
  }
23
23
  }
24
24
 
25
- function getEnvVariable(name) {
25
+ function getEnvironment() {
26
26
  try {
27
- if (isObject(process) && isString(process?.env?.[name])) {
28
- return process.env[name];
27
+ if (isObject(process) && isObject(process.env)) {
28
+ return {
29
+ apiKey: process.env.XATA_API_KEY ?? getGlobalApiKey(),
30
+ databaseURL: process.env.XATA_DATABASE_URL ?? getGlobalDatabaseURL(),
31
+ branch: process.env.XATA_BRANCH ?? getGlobalBranch(),
32
+ envBranch: process.env.VERCEL_GIT_COMMIT_REF ?? process.env.CF_PAGES_BRANCH ?? process.env.BRANCH,
33
+ fallbackBranch: process.env.XATA_FALLBACK_BRANCH ?? getGlobalFallbackBranch()
34
+ };
29
35
  }
30
36
  } catch (err) {
31
37
  }
32
38
  try {
33
- if (isObject(Deno) && isString(Deno?.env?.get(name))) {
34
- return Deno.env.get(name);
39
+ if (isObject(Deno) && isObject(Deno.env)) {
40
+ return {
41
+ apiKey: Deno.env.get("XATA_API_KEY") ?? getGlobalApiKey(),
42
+ databaseURL: Deno.env.get("XATA_DATABASE_URL") ?? getGlobalDatabaseURL(),
43
+ branch: Deno.env.get("XATA_BRANCH") ?? getGlobalBranch(),
44
+ envBranch: Deno.env.get("VERCEL_GIT_COMMIT_REF") ?? Deno.env.get("CF_PAGES_BRANCH") ?? Deno.env.get("BRANCH"),
45
+ fallbackBranch: Deno.env.get("XATA_FALLBACK_BRANCH") ?? getGlobalFallbackBranch()
46
+ };
35
47
  }
36
48
  } catch (err) {
37
49
  }
50
+ return {
51
+ apiKey: getGlobalApiKey(),
52
+ databaseURL: getGlobalDatabaseURL(),
53
+ branch: getGlobalBranch(),
54
+ envBranch: void 0,
55
+ fallbackBranch: getGlobalFallbackBranch()
56
+ };
57
+ }
58
+ function getGlobalApiKey() {
59
+ try {
60
+ return XATA_API_KEY;
61
+ } catch (err) {
62
+ return void 0;
63
+ }
64
+ }
65
+ function getGlobalDatabaseURL() {
66
+ try {
67
+ return XATA_DATABASE_URL;
68
+ } catch (err) {
69
+ return void 0;
70
+ }
71
+ }
72
+ function getGlobalBranch() {
73
+ try {
74
+ return XATA_BRANCH;
75
+ } catch (err) {
76
+ return void 0;
77
+ }
78
+ }
79
+ function getGlobalFallbackBranch() {
80
+ try {
81
+ return XATA_FALLBACK_BRANCH;
82
+ } catch (err) {
83
+ return void 0;
84
+ }
38
85
  }
39
86
  async function getGitBranch() {
87
+ const cmd = ["git", "branch", "--show-current"];
88
+ const nodeModule = ["child", "process"].join("_");
40
89
  try {
41
90
  if (typeof require === "function") {
42
- const req = require;
43
- return req("child_process").execSync("git branch --show-current", { encoding: "utf-8" }).trim();
91
+ return require(nodeModule).execSync(cmd.join(" "), { encoding: "utf-8" }).trim();
44
92
  }
93
+ const { execSync } = await import(nodeModule);
94
+ return execSync(cmd.join(" "), { encoding: "utf-8" }).toString().trim();
45
95
  } catch (err) {
46
96
  }
47
97
  try {
48
98
  if (isObject(Deno)) {
49
- const process2 = Deno.run({
50
- cmd: ["git", "branch", "--show-current"],
51
- stdout: "piped",
52
- stderr: "piped"
53
- });
99
+ const process2 = Deno.run({ cmd, stdout: "piped", stderr: "piped" });
54
100
  return new TextDecoder().decode(await process2.output()).trim();
55
101
  }
56
102
  } catch (err) {
@@ -59,7 +105,8 @@ async function getGitBranch() {
59
105
 
60
106
  function getAPIKey() {
61
107
  try {
62
- return getEnvVariable("XATA_API_KEY") ?? XATA_API_KEY;
108
+ const { apiKey } = getEnvironment();
109
+ return apiKey;
63
110
  } catch (err) {
64
111
  return void 0;
65
112
  }
@@ -74,7 +121,7 @@ function getFetchImplementation(userFetch) {
74
121
  return fetchImpl;
75
122
  }
76
123
 
77
- const VERSION = "0.13.4";
124
+ const VERSION = "0.14.0";
78
125
 
79
126
  class ErrorWithCause extends Error {
80
127
  constructor(message, options) {
@@ -500,7 +547,7 @@ var __privateAdd$7 = (obj, member, value) => {
500
547
  throw TypeError("Cannot add the same private member more than once");
501
548
  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
502
549
  };
503
- var __privateSet$6 = (obj, member, value, setter) => {
550
+ var __privateSet$7 = (obj, member, value, setter) => {
504
551
  __accessCheck$7(obj, member, "write to private field");
505
552
  setter ? setter.call(obj, value) : member.set(obj, value);
506
553
  return value;
@@ -515,7 +562,7 @@ class XataApiClient {
515
562
  if (!apiKey) {
516
563
  throw new Error("Could not resolve a valid apiKey");
517
564
  }
518
- __privateSet$6(this, _extraProps, {
565
+ __privateSet$7(this, _extraProps, {
519
566
  apiUrl: getHostUrl(provider, "main"),
520
567
  workspacesApiUrl: getHostUrl(provider, "workspaces"),
521
568
  fetchImpl: getFetchImplementation(options.fetch),
@@ -952,7 +999,7 @@ var __privateAdd$6 = (obj, member, value) => {
952
999
  throw TypeError("Cannot add the same private member more than once");
953
1000
  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
954
1001
  };
955
- var __privateSet$5 = (obj, member, value, setter) => {
1002
+ var __privateSet$6 = (obj, member, value, setter) => {
956
1003
  __accessCheck$6(obj, member, "write to private field");
957
1004
  setter ? setter.call(obj, value) : member.set(obj, value);
958
1005
  return value;
@@ -961,7 +1008,7 @@ var _query, _page;
961
1008
  class Page {
962
1009
  constructor(query, meta, records = []) {
963
1010
  __privateAdd$6(this, _query, void 0);
964
- __privateSet$5(this, _query, query);
1011
+ __privateSet$6(this, _query, query);
965
1012
  this.meta = meta;
966
1013
  this.records = new RecordArray(this, records);
967
1014
  }
@@ -990,10 +1037,10 @@ function isCursorPaginationOptions(options) {
990
1037
  return isDefined(options) && (isDefined(options.first) || isDefined(options.last) || isDefined(options.after) || isDefined(options.before));
991
1038
  }
992
1039
  const _RecordArray = class extends Array {
993
- constructor(page, overrideRecords) {
994
- super(..._RecordArray.parseConstructorParams(page, overrideRecords));
1040
+ constructor(...args) {
1041
+ super(..._RecordArray.parseConstructorParams(...args));
995
1042
  __privateAdd$6(this, _page, void 0);
996
- __privateSet$5(this, _page, page);
1043
+ __privateSet$6(this, _page, isObject(args[0]?.meta) ? args[0] : { meta: { page: { cursor: "", more: false } }, records: [] });
997
1044
  }
998
1045
  static parseConstructorParams(...args) {
999
1046
  if (args.length === 1 && typeof args[0] === "number") {
@@ -1005,6 +1052,12 @@ const _RecordArray = class extends Array {
1005
1052
  }
1006
1053
  return new Array(...args);
1007
1054
  }
1055
+ toArray() {
1056
+ return new Array(...this);
1057
+ }
1058
+ map(callbackfn, thisArg) {
1059
+ return this.toArray().map(callbackfn, thisArg);
1060
+ }
1008
1061
  async nextPage(size, offset) {
1009
1062
  const newPage = await __privateGet$6(this, _page).nextPage(size, offset);
1010
1063
  return new _RecordArray(newPage);
@@ -1041,7 +1094,7 @@ var __privateAdd$5 = (obj, member, value) => {
1041
1094
  throw TypeError("Cannot add the same private member more than once");
1042
1095
  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1043
1096
  };
1044
- var __privateSet$4 = (obj, member, value, setter) => {
1097
+ var __privateSet$5 = (obj, member, value, setter) => {
1045
1098
  __accessCheck$5(obj, member, "write to private field");
1046
1099
  setter ? setter.call(obj, value) : member.set(obj, value);
1047
1100
  return value;
@@ -1054,11 +1107,11 @@ const _Query = class {
1054
1107
  __privateAdd$5(this, _data, { filter: {} });
1055
1108
  this.meta = { page: { cursor: "start", more: true } };
1056
1109
  this.records = new RecordArray(this, []);
1057
- __privateSet$4(this, _table$1, table);
1110
+ __privateSet$5(this, _table$1, table);
1058
1111
  if (repository) {
1059
- __privateSet$4(this, _repository, repository);
1112
+ __privateSet$5(this, _repository, repository);
1060
1113
  } else {
1061
- __privateSet$4(this, _repository, this);
1114
+ __privateSet$5(this, _repository, this);
1062
1115
  }
1063
1116
  const parent = cleanParent(data, rawParent);
1064
1117
  __privateGet$5(this, _data).filter = data.filter ?? parent?.filter ?? {};
@@ -1235,7 +1288,7 @@ var __privateAdd$4 = (obj, member, value) => {
1235
1288
  throw TypeError("Cannot add the same private member more than once");
1236
1289
  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1237
1290
  };
1238
- var __privateSet$3 = (obj, member, value, setter) => {
1291
+ var __privateSet$4 = (obj, member, value, setter) => {
1239
1292
  __accessCheck$4(obj, member, "write to private field");
1240
1293
  setter ? setter.call(obj, value) : member.set(obj, value);
1241
1294
  return value;
@@ -1244,7 +1297,7 @@ var __privateMethod$2 = (obj, member, method) => {
1244
1297
  __accessCheck$4(obj, member, "access private method");
1245
1298
  return method;
1246
1299
  };
1247
- var _table, _getFetchProps, _cache, _schema$1, _insertRecordWithoutId, insertRecordWithoutId_fn, _insertRecordWithId, insertRecordWithId_fn, _bulkInsertTableRecords, bulkInsertTableRecords_fn, _updateRecordWithID, updateRecordWithID_fn, _upsertRecordWithID, upsertRecordWithID_fn, _deleteRecord, deleteRecord_fn, _invalidateCache, invalidateCache_fn, _setCacheRecord, setCacheRecord_fn, _getCacheRecord, getCacheRecord_fn, _setCacheQuery, setCacheQuery_fn, _getCacheQuery, getCacheQuery_fn, _getSchema$1, getSchema_fn$1;
1300
+ var _table, _getFetchProps, _cache, _schemaTables$2, _insertRecordWithoutId, insertRecordWithoutId_fn, _insertRecordWithId, insertRecordWithId_fn, _bulkInsertTableRecords, bulkInsertTableRecords_fn, _updateRecordWithID, updateRecordWithID_fn, _upsertRecordWithID, upsertRecordWithID_fn, _deleteRecord, deleteRecord_fn, _invalidateCache, invalidateCache_fn, _setCacheRecord, setCacheRecord_fn, _getCacheRecord, getCacheRecord_fn, _setCacheQuery, setCacheQuery_fn, _getCacheQuery, getCacheQuery_fn, _getSchemaTables$1, getSchemaTables_fn$1;
1248
1301
  class Repository extends Query {
1249
1302
  }
1250
1303
  class RestRepository extends Query {
@@ -1261,43 +1314,24 @@ class RestRepository extends Query {
1261
1314
  __privateAdd$4(this, _getCacheRecord);
1262
1315
  __privateAdd$4(this, _setCacheQuery);
1263
1316
  __privateAdd$4(this, _getCacheQuery);
1264
- __privateAdd$4(this, _getSchema$1);
1317
+ __privateAdd$4(this, _getSchemaTables$1);
1265
1318
  __privateAdd$4(this, _table, void 0);
1266
1319
  __privateAdd$4(this, _getFetchProps, void 0);
1267
1320
  __privateAdd$4(this, _cache, void 0);
1268
- __privateAdd$4(this, _schema$1, void 0);
1269
- __privateSet$3(this, _table, options.table);
1270
- __privateSet$3(this, _getFetchProps, options.pluginOptions.getFetchProps);
1321
+ __privateAdd$4(this, _schemaTables$2, void 0);
1322
+ __privateSet$4(this, _table, options.table);
1323
+ __privateSet$4(this, _getFetchProps, options.pluginOptions.getFetchProps);
1271
1324
  this.db = options.db;
1272
- __privateSet$3(this, _cache, options.pluginOptions.cache);
1325
+ __privateSet$4(this, _cache, options.pluginOptions.cache);
1326
+ __privateSet$4(this, _schemaTables$2, options.schemaTables);
1273
1327
  }
1274
1328
  async create(a, b) {
1275
1329
  if (Array.isArray(a)) {
1276
1330
  if (a.length === 0)
1277
1331
  return [];
1278
- const [itemsWithoutIds, itemsWithIds, order] = a.reduce(([accWithoutIds, accWithIds, accOrder], item) => {
1279
- const condition = isString(item.id);
1280
- accOrder.push(condition);
1281
- if (condition) {
1282
- accWithIds.push(item);
1283
- } else {
1284
- accWithoutIds.push(item);
1285
- }
1286
- return [accWithoutIds, accWithIds, accOrder];
1287
- }, [[], [], []]);
1288
- const recordsWithoutId = await __privateMethod$2(this, _bulkInsertTableRecords, bulkInsertTableRecords_fn).call(this, itemsWithoutIds);
1289
- await Promise.all(recordsWithoutId.map((record) => __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record)));
1290
- if (itemsWithIds.length > 100) {
1291
- console.warn("Bulk create operation with id is not optimized in the Xata API yet, this request might be slow");
1292
- }
1293
- const recordsWithId = await Promise.all(itemsWithIds.map((object) => this.create(object)));
1294
- return order.map((condition) => {
1295
- if (condition) {
1296
- return recordsWithId.shift();
1297
- } else {
1298
- return recordsWithoutId.shift();
1299
- }
1300
- }).filter((record) => !!record);
1332
+ const records = await __privateMethod$2(this, _bulkInsertTableRecords, bulkInsertTableRecords_fn).call(this, a);
1333
+ await Promise.all(records.map((record) => __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record)));
1334
+ return records;
1301
1335
  }
1302
1336
  if (isString(a) && isObject(b)) {
1303
1337
  if (a === "")
@@ -1338,8 +1372,8 @@ class RestRepository extends Query {
1338
1372
  pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId: id },
1339
1373
  ...fetchProps
1340
1374
  });
1341
- const schema = await __privateMethod$2(this, _getSchema$1, getSchema_fn$1).call(this);
1342
- return initObject(this.db, schema, __privateGet$4(this, _table), response);
1375
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1376
+ return initObject(this.db, schemaTables, __privateGet$4(this, _table), response);
1343
1377
  } catch (e) {
1344
1378
  if (isObject(e) && e.status === 404) {
1345
1379
  return null;
@@ -1428,8 +1462,8 @@ class RestRepository extends Query {
1428
1462
  },
1429
1463
  ...fetchProps
1430
1464
  });
1431
- const schema = await __privateMethod$2(this, _getSchema$1, getSchema_fn$1).call(this);
1432
- return records.map((item) => initObject(this.db, schema, __privateGet$4(this, _table), item));
1465
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1466
+ return records.map((item) => initObject(this.db, schemaTables, __privateGet$4(this, _table), item));
1433
1467
  }
1434
1468
  async query(query) {
1435
1469
  const cacheQuery = await __privateMethod$2(this, _getCacheQuery, getCacheQuery_fn).call(this, query);
@@ -1448,8 +1482,8 @@ class RestRepository extends Query {
1448
1482
  body,
1449
1483
  ...fetchProps
1450
1484
  });
1451
- const schema = await __privateMethod$2(this, _getSchema$1, getSchema_fn$1).call(this);
1452
- const records = objects.map((record) => initObject(this.db, schema, __privateGet$4(this, _table), record));
1485
+ const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
1486
+ const records = objects.map((record) => initObject(this.db, schemaTables, __privateGet$4(this, _table), record));
1453
1487
  await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
1454
1488
  return new Page(query, meta, records);
1455
1489
  }
@@ -1457,7 +1491,7 @@ class RestRepository extends Query {
1457
1491
  _table = new WeakMap();
1458
1492
  _getFetchProps = new WeakMap();
1459
1493
  _cache = new WeakMap();
1460
- _schema$1 = new WeakMap();
1494
+ _schemaTables$2 = new WeakMap();
1461
1495
  _insertRecordWithoutId = new WeakSet();
1462
1496
  insertRecordWithoutId_fn = async function(object) {
1463
1497
  const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
@@ -1502,16 +1536,20 @@ _bulkInsertTableRecords = new WeakSet();
1502
1536
  bulkInsertTableRecords_fn = async function(objects) {
1503
1537
  const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1504
1538
  const records = objects.map((object) => transformObjectLinks(object));
1505
- const response = await bulkInsertTableRecords({
1539
+ const { recordIDs } = await bulkInsertTableRecords({
1506
1540
  pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
1507
1541
  body: { records },
1508
1542
  ...fetchProps
1509
1543
  });
1510
- const finalObjects = await this.read(response.recordIDs);
1544
+ const finalObjects = await this.read(recordIDs);
1511
1545
  if (finalObjects.length !== objects.length) {
1512
1546
  throw new Error("The server failed to save some records");
1513
1547
  }
1514
- return finalObjects;
1548
+ const dictionary = finalObjects.reduce((acc, object) => {
1549
+ acc[object.id] = object;
1550
+ return acc;
1551
+ }, {});
1552
+ return recordIDs.map((id) => dictionary[id]);
1515
1553
  };
1516
1554
  _updateRecordWithID = new WeakSet();
1517
1555
  updateRecordWithID_fn = async function(recordId, object) {
@@ -1587,17 +1625,17 @@ getCacheQuery_fn = async function(query) {
1587
1625
  const hasExpired = result.date.getTime() + ttl < Date.now();
1588
1626
  return hasExpired ? null : result;
1589
1627
  };
1590
- _getSchema$1 = new WeakSet();
1591
- getSchema_fn$1 = async function() {
1592
- if (__privateGet$4(this, _schema$1))
1593
- return __privateGet$4(this, _schema$1);
1628
+ _getSchemaTables$1 = new WeakSet();
1629
+ getSchemaTables_fn$1 = async function() {
1630
+ if (__privateGet$4(this, _schemaTables$2))
1631
+ return __privateGet$4(this, _schemaTables$2);
1594
1632
  const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
1595
1633
  const { schema } = await getBranchDetails({
1596
1634
  pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
1597
1635
  ...fetchProps
1598
1636
  });
1599
- __privateSet$3(this, _schema$1, schema);
1600
- return schema;
1637
+ __privateSet$4(this, _schemaTables$2, schema.tables);
1638
+ return schema.tables;
1601
1639
  };
1602
1640
  const transformObjectLinks = (object) => {
1603
1641
  return Object.entries(object).reduce((acc, [key, value]) => {
@@ -1606,11 +1644,11 @@ const transformObjectLinks = (object) => {
1606
1644
  return { ...acc, [key]: isIdentifiable(value) ? value.id : value };
1607
1645
  }, {});
1608
1646
  };
1609
- const initObject = (db, schema, table, object) => {
1647
+ const initObject = (db, schemaTables, table, object) => {
1610
1648
  const result = {};
1611
1649
  const { xata, ...rest } = object ?? {};
1612
1650
  Object.assign(result, rest);
1613
- const { columns } = schema.tables.find(({ name }) => name === table) ?? {};
1651
+ const { columns } = schemaTables.find(({ name }) => name === table) ?? {};
1614
1652
  if (!columns)
1615
1653
  console.error(`Table ${table} not found in schema`);
1616
1654
  for (const column of columns ?? []) {
@@ -1630,7 +1668,7 @@ const initObject = (db, schema, table, object) => {
1630
1668
  if (!linkTable) {
1631
1669
  console.error(`Failed to parse link for field ${column.name}`);
1632
1670
  } else if (isObject(value)) {
1633
- result[column.name] = initObject(db, schema, linkTable, value);
1671
+ result[column.name] = initObject(db, schemaTables, linkTable, value);
1634
1672
  }
1635
1673
  break;
1636
1674
  }
@@ -1677,7 +1715,7 @@ var __privateAdd$3 = (obj, member, value) => {
1677
1715
  throw TypeError("Cannot add the same private member more than once");
1678
1716
  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1679
1717
  };
1680
- var __privateSet$2 = (obj, member, value, setter) => {
1718
+ var __privateSet$3 = (obj, member, value, setter) => {
1681
1719
  __accessCheck$3(obj, member, "write to private field");
1682
1720
  setter ? setter.call(obj, value) : member.set(obj, value);
1683
1721
  return value;
@@ -1686,7 +1724,7 @@ var _map;
1686
1724
  class SimpleCache {
1687
1725
  constructor(options = {}) {
1688
1726
  __privateAdd$3(this, _map, void 0);
1689
- __privateSet$2(this, _map, /* @__PURE__ */ new Map());
1727
+ __privateSet$3(this, _map, /* @__PURE__ */ new Map());
1690
1728
  this.capacity = options.max ?? 500;
1691
1729
  this.cacheRecords = options.cacheRecords ?? true;
1692
1730
  this.defaultQueryTTL = options.defaultQueryTTL ?? 60 * 1e3;
@@ -1746,12 +1784,18 @@ var __privateAdd$2 = (obj, member, value) => {
1746
1784
  throw TypeError("Cannot add the same private member more than once");
1747
1785
  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1748
1786
  };
1749
- var _tables;
1787
+ var __privateSet$2 = (obj, member, value, setter) => {
1788
+ __accessCheck$2(obj, member, "write to private field");
1789
+ setter ? setter.call(obj, value) : member.set(obj, value);
1790
+ return value;
1791
+ };
1792
+ var _tables, _schemaTables$1;
1750
1793
  class SchemaPlugin extends XataPlugin {
1751
- constructor(tableNames) {
1794
+ constructor(schemaTables) {
1752
1795
  super();
1753
- this.tableNames = tableNames;
1754
1796
  __privateAdd$2(this, _tables, {});
1797
+ __privateAdd$2(this, _schemaTables$1, void 0);
1798
+ __privateSet$2(this, _schemaTables$1, schemaTables);
1755
1799
  }
1756
1800
  build(pluginOptions) {
1757
1801
  const db = new Proxy({}, {
@@ -1759,18 +1803,20 @@ class SchemaPlugin extends XataPlugin {
1759
1803
  if (!isString(table))
1760
1804
  throw new Error("Invalid table name");
1761
1805
  if (__privateGet$2(this, _tables)[table] === void 0) {
1762
- __privateGet$2(this, _tables)[table] = new RestRepository({ db, pluginOptions, table });
1806
+ __privateGet$2(this, _tables)[table] = new RestRepository({ db, pluginOptions, table, schemaTables: __privateGet$2(this, _schemaTables$1) });
1763
1807
  }
1764
1808
  return __privateGet$2(this, _tables)[table];
1765
1809
  }
1766
1810
  });
1767
- for (const table of this.tableNames ?? []) {
1768
- db[table] = new RestRepository({ db, pluginOptions, table });
1811
+ const tableNames = __privateGet$2(this, _schemaTables$1)?.map(({ name }) => name) ?? [];
1812
+ for (const table of tableNames) {
1813
+ db[table] = new RestRepository({ db, pluginOptions, table, schemaTables: __privateGet$2(this, _schemaTables$1) });
1769
1814
  }
1770
1815
  return db;
1771
1816
  }
1772
1817
  }
1773
1818
  _tables = new WeakMap();
1819
+ _schemaTables$1 = new WeakMap();
1774
1820
 
1775
1821
  var __accessCheck$1 = (obj, member, msg) => {
1776
1822
  if (!member.has(obj))
@@ -1794,39 +1840,40 @@ var __privateMethod$1 = (obj, member, method) => {
1794
1840
  __accessCheck$1(obj, member, "access private method");
1795
1841
  return method;
1796
1842
  };
1797
- var _schema, _search, search_fn, _getSchema, getSchema_fn;
1843
+ var _schemaTables, _search, search_fn, _getSchemaTables, getSchemaTables_fn;
1798
1844
  class SearchPlugin extends XataPlugin {
1799
- constructor(db) {
1845
+ constructor(db, schemaTables) {
1800
1846
  super();
1801
1847
  this.db = db;
1802
1848
  __privateAdd$1(this, _search);
1803
- __privateAdd$1(this, _getSchema);
1804
- __privateAdd$1(this, _schema, void 0);
1849
+ __privateAdd$1(this, _getSchemaTables);
1850
+ __privateAdd$1(this, _schemaTables, void 0);
1851
+ __privateSet$1(this, _schemaTables, schemaTables);
1805
1852
  }
1806
1853
  build({ getFetchProps }) {
1807
1854
  return {
1808
1855
  all: async (query, options = {}) => {
1809
1856
  const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
1810
- const schema = await __privateMethod$1(this, _getSchema, getSchema_fn).call(this, getFetchProps);
1857
+ const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
1811
1858
  return records.map((record) => {
1812
1859
  const { table = "orphan" } = record.xata;
1813
- return { table, record: initObject(this.db, schema, table, record) };
1860
+ return { table, record: initObject(this.db, schemaTables, table, record) };
1814
1861
  });
1815
1862
  },
1816
1863
  byTable: async (query, options = {}) => {
1817
1864
  const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
1818
- const schema = await __privateMethod$1(this, _getSchema, getSchema_fn).call(this, getFetchProps);
1865
+ const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
1819
1866
  return records.reduce((acc, record) => {
1820
1867
  const { table = "orphan" } = record.xata;
1821
1868
  const items = acc[table] ?? [];
1822
- const item = initObject(this.db, schema, table, record);
1869
+ const item = initObject(this.db, schemaTables, table, record);
1823
1870
  return { ...acc, [table]: [...items, item] };
1824
1871
  }, {});
1825
1872
  }
1826
1873
  };
1827
1874
  }
1828
1875
  }
1829
- _schema = new WeakMap();
1876
+ _schemaTables = new WeakMap();
1830
1877
  _search = new WeakSet();
1831
1878
  search_fn = async function(query, options, getFetchProps) {
1832
1879
  const fetchProps = await getFetchProps();
@@ -1838,38 +1885,32 @@ search_fn = async function(query, options, getFetchProps) {
1838
1885
  });
1839
1886
  return records;
1840
1887
  };
1841
- _getSchema = new WeakSet();
1842
- getSchema_fn = async function(getFetchProps) {
1843
- if (__privateGet$1(this, _schema))
1844
- return __privateGet$1(this, _schema);
1888
+ _getSchemaTables = new WeakSet();
1889
+ getSchemaTables_fn = async function(getFetchProps) {
1890
+ if (__privateGet$1(this, _schemaTables))
1891
+ return __privateGet$1(this, _schemaTables);
1845
1892
  const fetchProps = await getFetchProps();
1846
1893
  const { schema } = await getBranchDetails({
1847
1894
  pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
1848
1895
  ...fetchProps
1849
1896
  });
1850
- __privateSet$1(this, _schema, schema);
1851
- return schema;
1897
+ __privateSet$1(this, _schemaTables, schema.tables);
1898
+ return schema.tables;
1852
1899
  };
1853
1900
 
1854
1901
  const isBranchStrategyBuilder = (strategy) => {
1855
1902
  return typeof strategy === "function";
1856
1903
  };
1857
1904
 
1858
- const envBranchNames = [
1859
- "XATA_BRANCH",
1860
- "VERCEL_GIT_COMMIT_REF",
1861
- "CF_PAGES_BRANCH",
1862
- "BRANCH"
1863
- ];
1864
1905
  async function getCurrentBranchName(options) {
1865
- const env = getBranchByEnvVariable();
1866
- if (env) {
1867
- const details = await getDatabaseBranch(env, options);
1906
+ const { branch, envBranch } = getEnvironment();
1907
+ if (branch) {
1908
+ const details = await getDatabaseBranch(branch, options);
1868
1909
  if (details)
1869
- return env;
1870
- console.warn(`Branch ${env} not found in Xata. Ignoring...`);
1910
+ return branch;
1911
+ console.warn(`Branch ${branch} not found in Xata. Ignoring...`);
1871
1912
  }
1872
- const gitBranch = await getGitBranch();
1913
+ const gitBranch = envBranch || await getGitBranch();
1873
1914
  return resolveXataBranch(gitBranch, options);
1874
1915
  }
1875
1916
  async function getCurrentBranchDetails(options) {
@@ -1885,13 +1926,14 @@ async function resolveXataBranch(gitBranch, options) {
1885
1926
  throw new Error("An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely");
1886
1927
  const [protocol, , host, , dbName] = databaseURL.split("/");
1887
1928
  const [workspace] = host.split(".");
1929
+ const { fallbackBranch } = getEnvironment();
1888
1930
  const { branch } = await resolveBranch({
1889
1931
  apiKey,
1890
1932
  apiUrl: databaseURL,
1891
1933
  fetchImpl: getFetchImplementation(options?.fetchImpl),
1892
1934
  workspacesApiUrl: `${protocol}//${host}`,
1893
1935
  pathParams: { dbName, workspace },
1894
- queryParams: { gitBranch, fallbackBranch: getEnvVariable("XATA_FALLBACK_BRANCH") }
1936
+ queryParams: { gitBranch, fallbackBranch }
1895
1937
  });
1896
1938
  return branch;
1897
1939
  }
@@ -1919,21 +1961,10 @@ async function getDatabaseBranch(branch, options) {
1919
1961
  throw err;
1920
1962
  }
1921
1963
  }
1922
- function getBranchByEnvVariable() {
1923
- for (const name of envBranchNames) {
1924
- const value = getEnvVariable(name);
1925
- if (value) {
1926
- return value;
1927
- }
1928
- }
1929
- try {
1930
- return XATA_BRANCH;
1931
- } catch (err) {
1932
- }
1933
- }
1934
1964
  function getDatabaseURL() {
1935
1965
  try {
1936
- return getEnvVariable("XATA_DATABASE_URL") ?? XATA_DATABASE_URL;
1966
+ const { databaseURL } = getEnvironment();
1967
+ return databaseURL;
1937
1968
  } catch (err) {
1938
1969
  return void 0;
1939
1970
  }
@@ -1964,7 +1995,7 @@ var __privateMethod = (obj, member, method) => {
1964
1995
  const buildClient = (plugins) => {
1965
1996
  var _branch, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
1966
1997
  return _a = class {
1967
- constructor(options = {}, tables) {
1998
+ constructor(options = {}, schemaTables) {
1968
1999
  __privateAdd(this, _parseOptions);
1969
2000
  __privateAdd(this, _getFetchProps);
1970
2001
  __privateAdd(this, _evaluateBranch);
@@ -1974,8 +2005,8 @@ const buildClient = (plugins) => {
1974
2005
  getFetchProps: () => __privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
1975
2006
  cache: safeOptions.cache
1976
2007
  };
1977
- const db = new SchemaPlugin(tables).build(pluginOptions);
1978
- const search = new SearchPlugin(db).build(pluginOptions);
2008
+ const db = new SchemaPlugin(schemaTables).build(pluginOptions);
2009
+ const search = new SearchPlugin(db, schemaTables).build(pluginOptions);
1979
2010
  this.db = db;
1980
2011
  this.search = search;
1981
2012
  for (const [key, namespace] of Object.entries(plugins ?? {})) {