@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/CHANGELOG.md +18 -0
- package/dist/index.cjs +175 -126
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +92 -23
- package/dist/index.mjs +157 -126
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
@@ -22,35 +22,81 @@ function toBase64(value) {
|
|
22
22
|
}
|
23
23
|
}
|
24
24
|
|
25
|
-
function
|
25
|
+
function getEnvironment() {
|
26
26
|
try {
|
27
|
-
if (isObject(process) &&
|
28
|
-
return
|
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) &&
|
34
|
-
return
|
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
|
-
|
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
|
-
|
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.
|
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$
|
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$
|
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$
|
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$
|
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(
|
994
|
-
super(..._RecordArray.parseConstructorParams(
|
1040
|
+
constructor(...args) {
|
1041
|
+
super(..._RecordArray.parseConstructorParams(...args));
|
995
1042
|
__privateAdd$6(this, _page, void 0);
|
996
|
-
__privateSet$
|
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$
|
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$
|
1110
|
+
__privateSet$5(this, _table$1, table);
|
1058
1111
|
if (repository) {
|
1059
|
-
__privateSet$
|
1112
|
+
__privateSet$5(this, _repository, repository);
|
1060
1113
|
} else {
|
1061
|
-
__privateSet$
|
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$
|
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,
|
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,
|
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,
|
1269
|
-
__privateSet$
|
1270
|
-
__privateSet$
|
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$
|
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
|
1279
|
-
|
1280
|
-
|
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
|
1342
|
-
return initObject(this.db,
|
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
|
1432
|
-
return records.map((item) => initObject(this.db,
|
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
|
1452
|
-
const records = objects.map((record) => initObject(this.db,
|
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
|
-
|
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
|
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(
|
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
|
-
|
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
|
-
|
1591
|
-
|
1592
|
-
if (__privateGet$4(this,
|
1593
|
-
return __privateGet$4(this,
|
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$
|
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,
|
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 } =
|
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,
|
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$
|
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$
|
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
|
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(
|
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
|
-
|
1768
|
-
|
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
|
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,
|
1804
|
-
__privateAdd$1(this,
|
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
|
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,
|
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
|
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,
|
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
|
-
|
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
|
-
|
1842
|
-
|
1843
|
-
if (__privateGet$1(this,
|
1844
|
-
return __privateGet$1(this,
|
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,
|
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
|
1866
|
-
if (
|
1867
|
-
const details = await getDatabaseBranch(
|
1906
|
+
const { branch, envBranch } = getEnvironment();
|
1907
|
+
if (branch) {
|
1908
|
+
const details = await getDatabaseBranch(branch, options);
|
1868
1909
|
if (details)
|
1869
|
-
return
|
1870
|
-
console.warn(`Branch ${
|
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
|
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
|
-
|
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 = {},
|
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(
|
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 ?? {})) {
|