@xata.io/client 0.0.0-alpha.vfde9dcf → 0.0.0-alpha.vfe4a947
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 +130 -0
- package/README.md +273 -1
- package/Usage.md +449 -0
- package/dist/index.cjs +732 -387
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +853 -164
- package/dist/index.mjs +701 -388
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -4
package/dist/index.cjs
CHANGED
@@ -2,6 +2,48 @@
|
|
2
2
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
|
+
function _interopNamespace(e) {
|
6
|
+
if (e && e.__esModule) return e;
|
7
|
+
var n = Object.create(null);
|
8
|
+
if (e) {
|
9
|
+
Object.keys(e).forEach(function (k) {
|
10
|
+
if (k !== 'default') {
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
13
|
+
enumerable: true,
|
14
|
+
get: function () { return e[k]; }
|
15
|
+
});
|
16
|
+
}
|
17
|
+
});
|
18
|
+
}
|
19
|
+
n["default"] = e;
|
20
|
+
return Object.freeze(n);
|
21
|
+
}
|
22
|
+
|
23
|
+
const defaultTrace = async (_name, fn, _options) => {
|
24
|
+
return await fn({
|
25
|
+
setAttributes: () => {
|
26
|
+
return;
|
27
|
+
},
|
28
|
+
onError: () => {
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
});
|
32
|
+
};
|
33
|
+
const TraceAttributes = {
|
34
|
+
VERSION: "xata.sdk.version",
|
35
|
+
TABLE: "xata.table",
|
36
|
+
HTTP_REQUEST_ID: "http.request_id",
|
37
|
+
HTTP_STATUS_CODE: "http.status_code",
|
38
|
+
HTTP_HOST: "http.host",
|
39
|
+
HTTP_SCHEME: "http.scheme",
|
40
|
+
HTTP_USER_AGENT: "http.user_agent",
|
41
|
+
HTTP_METHOD: "http.method",
|
42
|
+
HTTP_URL: "http.url",
|
43
|
+
HTTP_ROUTE: "http.route",
|
44
|
+
HTTP_TARGET: "http.target"
|
45
|
+
};
|
46
|
+
|
5
47
|
function notEmpty(value) {
|
6
48
|
return value !== null && value !== void 0;
|
7
49
|
}
|
@@ -17,43 +59,95 @@ function isDefined(value) {
|
|
17
59
|
function isString(value) {
|
18
60
|
return isDefined(value) && typeof value === "string";
|
19
61
|
}
|
62
|
+
function isStringArray(value) {
|
63
|
+
return isDefined(value) && Array.isArray(value) && value.every(isString);
|
64
|
+
}
|
20
65
|
function toBase64(value) {
|
21
66
|
try {
|
22
67
|
return btoa(value);
|
23
68
|
} catch (err) {
|
24
|
-
|
69
|
+
const buf = Buffer;
|
70
|
+
return buf.from(value).toString("base64");
|
25
71
|
}
|
26
72
|
}
|
27
73
|
|
28
|
-
function
|
74
|
+
function getEnvironment() {
|
29
75
|
try {
|
30
|
-
if (isObject(process) &&
|
31
|
-
return
|
76
|
+
if (isObject(process) && isObject(process.env)) {
|
77
|
+
return {
|
78
|
+
apiKey: process.env.XATA_API_KEY ?? getGlobalApiKey(),
|
79
|
+
databaseURL: process.env.XATA_DATABASE_URL ?? getGlobalDatabaseURL(),
|
80
|
+
branch: process.env.XATA_BRANCH ?? getGlobalBranch(),
|
81
|
+
envBranch: process.env.VERCEL_GIT_COMMIT_REF ?? process.env.CF_PAGES_BRANCH ?? process.env.BRANCH,
|
82
|
+
fallbackBranch: process.env.XATA_FALLBACK_BRANCH ?? getGlobalFallbackBranch()
|
83
|
+
};
|
32
84
|
}
|
33
85
|
} catch (err) {
|
34
86
|
}
|
35
87
|
try {
|
36
|
-
if (isObject(Deno) &&
|
37
|
-
return
|
88
|
+
if (isObject(Deno) && isObject(Deno.env)) {
|
89
|
+
return {
|
90
|
+
apiKey: Deno.env.get("XATA_API_KEY") ?? getGlobalApiKey(),
|
91
|
+
databaseURL: Deno.env.get("XATA_DATABASE_URL") ?? getGlobalDatabaseURL(),
|
92
|
+
branch: Deno.env.get("XATA_BRANCH") ?? getGlobalBranch(),
|
93
|
+
envBranch: Deno.env.get("VERCEL_GIT_COMMIT_REF") ?? Deno.env.get("CF_PAGES_BRANCH") ?? Deno.env.get("BRANCH"),
|
94
|
+
fallbackBranch: Deno.env.get("XATA_FALLBACK_BRANCH") ?? getGlobalFallbackBranch()
|
95
|
+
};
|
38
96
|
}
|
39
97
|
} catch (err) {
|
40
98
|
}
|
99
|
+
return {
|
100
|
+
apiKey: getGlobalApiKey(),
|
101
|
+
databaseURL: getGlobalDatabaseURL(),
|
102
|
+
branch: getGlobalBranch(),
|
103
|
+
envBranch: void 0,
|
104
|
+
fallbackBranch: getGlobalFallbackBranch()
|
105
|
+
};
|
106
|
+
}
|
107
|
+
function getGlobalApiKey() {
|
108
|
+
try {
|
109
|
+
return XATA_API_KEY;
|
110
|
+
} catch (err) {
|
111
|
+
return void 0;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
function getGlobalDatabaseURL() {
|
115
|
+
try {
|
116
|
+
return XATA_DATABASE_URL;
|
117
|
+
} catch (err) {
|
118
|
+
return void 0;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
function getGlobalBranch() {
|
122
|
+
try {
|
123
|
+
return XATA_BRANCH;
|
124
|
+
} catch (err) {
|
125
|
+
return void 0;
|
126
|
+
}
|
127
|
+
}
|
128
|
+
function getGlobalFallbackBranch() {
|
129
|
+
try {
|
130
|
+
return XATA_FALLBACK_BRANCH;
|
131
|
+
} catch (err) {
|
132
|
+
return void 0;
|
133
|
+
}
|
41
134
|
}
|
42
135
|
async function getGitBranch() {
|
136
|
+
const cmd = ["git", "branch", "--show-current"];
|
137
|
+
const fullCmd = cmd.join(" ");
|
138
|
+
const nodeModule = ["child", "process"].join("_");
|
139
|
+
const execOptions = { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] };
|
43
140
|
try {
|
44
141
|
if (typeof require === "function") {
|
45
|
-
|
46
|
-
return req("child_process").execSync("git branch --show-current", { encoding: "utf-8" }).trim();
|
142
|
+
return require(nodeModule).execSync(fullCmd, execOptions).trim();
|
47
143
|
}
|
144
|
+
const { execSync } = await (function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(nodeModule);
|
145
|
+
return execSync(fullCmd, execOptions).toString().trim();
|
48
146
|
} catch (err) {
|
49
147
|
}
|
50
148
|
try {
|
51
149
|
if (isObject(Deno)) {
|
52
|
-
const process2 = Deno.run({
|
53
|
-
cmd: ["git", "branch", "--show-current"],
|
54
|
-
stdout: "piped",
|
55
|
-
stderr: "piped"
|
56
|
-
});
|
150
|
+
const process2 = Deno.run({ cmd, stdout: "piped", stderr: "null" });
|
57
151
|
return new TextDecoder().decode(await process2.output()).trim();
|
58
152
|
}
|
59
153
|
} catch (err) {
|
@@ -62,7 +156,8 @@ async function getGitBranch() {
|
|
62
156
|
|
63
157
|
function getAPIKey() {
|
64
158
|
try {
|
65
|
-
|
159
|
+
const { apiKey } = getEnvironment();
|
160
|
+
return apiKey;
|
66
161
|
} catch (err) {
|
67
162
|
return void 0;
|
68
163
|
}
|
@@ -72,21 +167,35 @@ function getFetchImplementation(userFetch) {
|
|
72
167
|
const globalFetch = typeof fetch !== "undefined" ? fetch : void 0;
|
73
168
|
const fetchImpl = userFetch ?? globalFetch;
|
74
169
|
if (!fetchImpl) {
|
75
|
-
throw new Error(
|
170
|
+
throw new Error(
|
171
|
+
`The \`fetch\` option passed to the Xata client is resolving to a falsy value and may not be correctly imported.`
|
172
|
+
);
|
76
173
|
}
|
77
174
|
return fetchImpl;
|
78
175
|
}
|
79
176
|
|
80
|
-
|
81
|
-
|
177
|
+
const VERSION = "0.0.0-alpha.vfe4a947";
|
178
|
+
|
179
|
+
class ErrorWithCause extends Error {
|
180
|
+
constructor(message, options) {
|
181
|
+
super(message, options);
|
182
|
+
}
|
183
|
+
}
|
184
|
+
class FetcherError extends ErrorWithCause {
|
185
|
+
constructor(status, data, requestId) {
|
82
186
|
super(getMessage(data));
|
83
187
|
this.status = status;
|
84
188
|
this.errors = isBulkError(data) ? data.errors : void 0;
|
189
|
+
this.requestId = requestId;
|
85
190
|
if (data instanceof Error) {
|
86
191
|
this.stack = data.stack;
|
87
192
|
this.cause = data.cause;
|
88
193
|
}
|
89
194
|
}
|
195
|
+
toString() {
|
196
|
+
const error = super.toString();
|
197
|
+
return `[${this.status}] (${this.requestId ?? "Unknown"}): ${error}`;
|
198
|
+
}
|
90
199
|
}
|
91
200
|
function isBulkError(error) {
|
92
201
|
return isObject(error) && Array.isArray(error.errors);
|
@@ -109,7 +218,12 @@ function getMessage(data) {
|
|
109
218
|
}
|
110
219
|
|
111
220
|
const resolveUrl = (url, queryParams = {}, pathParams = {}) => {
|
112
|
-
const
|
221
|
+
const cleanQueryParams = Object.entries(queryParams).reduce((acc, [key, value]) => {
|
222
|
+
if (value === void 0 || value === null)
|
223
|
+
return acc;
|
224
|
+
return { ...acc, [key]: value };
|
225
|
+
}, {});
|
226
|
+
const query = new URLSearchParams(cleanQueryParams).toString();
|
113
227
|
const queryString = query.length > 0 ? `?${query}` : "";
|
114
228
|
return url.replace(/\{\w*\}/g, (key) => pathParams[key.slice(1, -1)]) + queryString;
|
115
229
|
};
|
@@ -139,32 +253,62 @@ async function fetch$1({
|
|
139
253
|
fetchImpl,
|
140
254
|
apiKey,
|
141
255
|
apiUrl,
|
142
|
-
workspacesApiUrl
|
256
|
+
workspacesApiUrl,
|
257
|
+
trace
|
143
258
|
}) {
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
259
|
+
return trace(
|
260
|
+
`${method.toUpperCase()} ${path}`,
|
261
|
+
async ({ setAttributes, onError }) => {
|
262
|
+
const baseUrl = buildBaseUrl({ path, workspacesApiUrl, pathParams, apiUrl });
|
263
|
+
const fullUrl = resolveUrl(baseUrl, queryParams, pathParams);
|
264
|
+
const url = fullUrl.includes("localhost") ? fullUrl.replace(/^[^.]+\./, "http://") : fullUrl;
|
265
|
+
setAttributes({
|
266
|
+
[TraceAttributes.HTTP_URL]: url,
|
267
|
+
[TraceAttributes.HTTP_TARGET]: resolveUrl(path, queryParams, pathParams)
|
268
|
+
});
|
269
|
+
const response = await fetchImpl(url, {
|
270
|
+
method: method.toUpperCase(),
|
271
|
+
body: body ? JSON.stringify(body) : void 0,
|
272
|
+
headers: {
|
273
|
+
"Content-Type": "application/json",
|
274
|
+
"User-Agent": `Xata client-ts/${VERSION}`,
|
275
|
+
...headers,
|
276
|
+
...hostHeader(fullUrl),
|
277
|
+
Authorization: `Bearer ${apiKey}`
|
278
|
+
}
|
279
|
+
});
|
280
|
+
if (response.status === 204) {
|
281
|
+
return {};
|
282
|
+
}
|
283
|
+
const { host, protocol } = parseUrl(response.url);
|
284
|
+
const requestId = response.headers?.get("x-request-id") ?? void 0;
|
285
|
+
setAttributes({
|
286
|
+
[TraceAttributes.HTTP_REQUEST_ID]: requestId,
|
287
|
+
[TraceAttributes.HTTP_STATUS_CODE]: response.status,
|
288
|
+
[TraceAttributes.HTTP_HOST]: host,
|
289
|
+
[TraceAttributes.HTTP_SCHEME]: protocol?.replace(":", "")
|
290
|
+
});
|
291
|
+
try {
|
292
|
+
const jsonResponse = await response.json();
|
293
|
+
if (response.ok) {
|
294
|
+
return jsonResponse;
|
295
|
+
}
|
296
|
+
throw new FetcherError(response.status, jsonResponse, requestId);
|
297
|
+
} catch (error) {
|
298
|
+
const fetcherError = new FetcherError(response.status, error, requestId);
|
299
|
+
onError(fetcherError.message);
|
300
|
+
throw fetcherError;
|
301
|
+
}
|
302
|
+
},
|
303
|
+
{ [TraceAttributes.HTTP_METHOD]: method.toUpperCase(), [TraceAttributes.HTTP_ROUTE]: path }
|
304
|
+
);
|
305
|
+
}
|
306
|
+
function parseUrl(url) {
|
160
307
|
try {
|
161
|
-
const
|
162
|
-
|
163
|
-
return jsonResponse;
|
164
|
-
}
|
165
|
-
throw new FetcherError(response.status, jsonResponse);
|
308
|
+
const { host, protocol } = new URL(url);
|
309
|
+
return { host, protocol };
|
166
310
|
} catch (error) {
|
167
|
-
|
311
|
+
return {};
|
168
312
|
}
|
169
313
|
}
|
170
314
|
|
@@ -223,6 +367,7 @@ const removeWorkspaceMember = (variables) => fetch$1({
|
|
223
367
|
...variables
|
224
368
|
});
|
225
369
|
const inviteWorkspaceMember = (variables) => fetch$1({ url: "/workspaces/{workspaceId}/invites", method: "post", ...variables });
|
370
|
+
const updateWorkspaceMemberInvite = (variables) => fetch$1({ url: "/workspaces/{workspaceId}/invites/{inviteId}", method: "patch", ...variables });
|
226
371
|
const cancelWorkspaceMemberInvite = (variables) => fetch$1({
|
227
372
|
url: "/workspaces/{workspaceId}/invites/{inviteId}",
|
228
373
|
method: "delete",
|
@@ -258,6 +403,11 @@ const deleteDatabase = (variables) => fetch$1({
|
|
258
403
|
method: "delete",
|
259
404
|
...variables
|
260
405
|
});
|
406
|
+
const getDatabaseMetadata = (variables) => fetch$1({
|
407
|
+
url: "/dbs/{dbName}/metadata",
|
408
|
+
method: "get",
|
409
|
+
...variables
|
410
|
+
});
|
261
411
|
const getGitBranchesMapping = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "get", ...variables });
|
262
412
|
const addGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "post", ...variables });
|
263
413
|
const removeGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "delete", ...variables });
|
@@ -271,11 +421,7 @@ const getBranchDetails = (variables) => fetch$1({
|
|
271
421
|
method: "get",
|
272
422
|
...variables
|
273
423
|
});
|
274
|
-
const createBranch = (variables) => fetch$1({
|
275
|
-
url: "/db/{dbBranchName}",
|
276
|
-
method: "put",
|
277
|
-
...variables
|
278
|
-
});
|
424
|
+
const createBranch = (variables) => fetch$1({ url: "/db/{dbBranchName}", method: "put", ...variables });
|
279
425
|
const deleteBranch = (variables) => fetch$1({
|
280
426
|
url: "/db/{dbBranchName}",
|
281
427
|
method: "delete",
|
@@ -349,11 +495,7 @@ const updateColumn = (variables) => fetch$1({
|
|
349
495
|
method: "patch",
|
350
496
|
...variables
|
351
497
|
});
|
352
|
-
const insertRecord = (variables) => fetch$1({
|
353
|
-
url: "/db/{dbBranchName}/tables/{tableName}/data",
|
354
|
-
method: "post",
|
355
|
-
...variables
|
356
|
-
});
|
498
|
+
const insertRecord = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data", method: "post", ...variables });
|
357
499
|
const insertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "put", ...variables });
|
358
500
|
const updateRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "patch", ...variables });
|
359
501
|
const upsertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "post", ...variables });
|
@@ -395,6 +537,7 @@ const operationsByTag = {
|
|
395
537
|
updateWorkspaceMemberRole,
|
396
538
|
removeWorkspaceMember,
|
397
539
|
inviteWorkspaceMember,
|
540
|
+
updateWorkspaceMemberInvite,
|
398
541
|
cancelWorkspaceMemberInvite,
|
399
542
|
resendWorkspaceMemberInvite,
|
400
543
|
acceptWorkspaceMemberInvite
|
@@ -403,6 +546,7 @@ const operationsByTag = {
|
|
403
546
|
getDatabaseList,
|
404
547
|
createDatabase,
|
405
548
|
deleteDatabase,
|
549
|
+
getDatabaseMetadata,
|
406
550
|
getGitBranchesMapping,
|
407
551
|
addGitBranchesEntry,
|
408
552
|
removeGitBranchesEntry,
|
@@ -484,7 +628,7 @@ var __privateAdd$7 = (obj, member, value) => {
|
|
484
628
|
throw TypeError("Cannot add the same private member more than once");
|
485
629
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
486
630
|
};
|
487
|
-
var __privateSet$
|
631
|
+
var __privateSet$7 = (obj, member, value, setter) => {
|
488
632
|
__accessCheck$7(obj, member, "write to private field");
|
489
633
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
490
634
|
return value;
|
@@ -495,15 +639,17 @@ class XataApiClient {
|
|
495
639
|
__privateAdd$7(this, _extraProps, void 0);
|
496
640
|
__privateAdd$7(this, _namespaces, {});
|
497
641
|
const provider = options.host ?? "production";
|
498
|
-
const apiKey = options
|
642
|
+
const apiKey = options.apiKey ?? getAPIKey();
|
643
|
+
const trace = options.trace ?? defaultTrace;
|
499
644
|
if (!apiKey) {
|
500
645
|
throw new Error("Could not resolve a valid apiKey");
|
501
646
|
}
|
502
|
-
__privateSet$
|
647
|
+
__privateSet$7(this, _extraProps, {
|
503
648
|
apiUrl: getHostUrl(provider, "main"),
|
504
649
|
workspacesApiUrl: getHostUrl(provider, "workspaces"),
|
505
650
|
fetchImpl: getFetchImplementation(options.fetch),
|
506
|
-
apiKey
|
651
|
+
apiKey,
|
652
|
+
trace
|
507
653
|
});
|
508
654
|
}
|
509
655
|
get user() {
|
@@ -626,6 +772,13 @@ class WorkspaceApi {
|
|
626
772
|
...this.extraProps
|
627
773
|
});
|
628
774
|
}
|
775
|
+
updateWorkspaceMemberInvite(workspaceId, inviteId, role) {
|
776
|
+
return operationsByTag.workspaces.updateWorkspaceMemberInvite({
|
777
|
+
pathParams: { workspaceId, inviteId },
|
778
|
+
body: { role },
|
779
|
+
...this.extraProps
|
780
|
+
});
|
781
|
+
}
|
629
782
|
cancelWorkspaceMemberInvite(workspaceId, inviteId) {
|
630
783
|
return operationsByTag.workspaces.cancelWorkspaceMemberInvite({
|
631
784
|
pathParams: { workspaceId, inviteId },
|
@@ -668,6 +821,12 @@ class DatabaseApi {
|
|
668
821
|
...this.extraProps
|
669
822
|
});
|
670
823
|
}
|
824
|
+
getDatabaseMetadata(workspace, dbName) {
|
825
|
+
return operationsByTag.database.getDatabaseMetadata({
|
826
|
+
pathParams: { workspace, dbName },
|
827
|
+
...this.extraProps
|
828
|
+
});
|
829
|
+
}
|
671
830
|
getGitBranchesMapping(workspace, dbName) {
|
672
831
|
return operationsByTag.database.getGitBranchesMapping({
|
673
832
|
pathParams: { workspace, dbName },
|
@@ -688,10 +847,10 @@ class DatabaseApi {
|
|
688
847
|
...this.extraProps
|
689
848
|
});
|
690
849
|
}
|
691
|
-
resolveBranch(workspace, dbName, gitBranch) {
|
850
|
+
resolveBranch(workspace, dbName, gitBranch, fallbackBranch) {
|
692
851
|
return operationsByTag.database.resolveBranch({
|
693
852
|
pathParams: { workspace, dbName },
|
694
|
-
queryParams: { gitBranch },
|
853
|
+
queryParams: { gitBranch, fallbackBranch },
|
695
854
|
...this.extraProps
|
696
855
|
});
|
697
856
|
}
|
@@ -840,9 +999,10 @@ class RecordsApi {
|
|
840
999
|
constructor(extraProps) {
|
841
1000
|
this.extraProps = extraProps;
|
842
1001
|
}
|
843
|
-
insertRecord(workspace, database, branch, tableName, record) {
|
1002
|
+
insertRecord(workspace, database, branch, tableName, record, options = {}) {
|
844
1003
|
return operationsByTag.records.insertRecord({
|
845
1004
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1005
|
+
queryParams: options,
|
846
1006
|
body: record,
|
847
1007
|
...this.extraProps
|
848
1008
|
});
|
@@ -871,21 +1031,24 @@ class RecordsApi {
|
|
871
1031
|
...this.extraProps
|
872
1032
|
});
|
873
1033
|
}
|
874
|
-
deleteRecord(workspace, database, branch, tableName, recordId) {
|
1034
|
+
deleteRecord(workspace, database, branch, tableName, recordId, options = {}) {
|
875
1035
|
return operationsByTag.records.deleteRecord({
|
876
1036
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
|
1037
|
+
queryParams: options,
|
877
1038
|
...this.extraProps
|
878
1039
|
});
|
879
1040
|
}
|
880
1041
|
getRecord(workspace, database, branch, tableName, recordId, options = {}) {
|
881
1042
|
return operationsByTag.records.getRecord({
|
882
1043
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
|
1044
|
+
queryParams: options,
|
883
1045
|
...this.extraProps
|
884
1046
|
});
|
885
1047
|
}
|
886
|
-
bulkInsertTableRecords(workspace, database, branch, tableName, records) {
|
1048
|
+
bulkInsertTableRecords(workspace, database, branch, tableName, records, options = {}) {
|
887
1049
|
return operationsByTag.records.bulkInsertTableRecords({
|
888
1050
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1051
|
+
queryParams: options,
|
889
1052
|
body: { records },
|
890
1053
|
...this.extraProps
|
891
1054
|
});
|
@@ -936,18 +1099,18 @@ var __privateAdd$6 = (obj, member, value) => {
|
|
936
1099
|
throw TypeError("Cannot add the same private member more than once");
|
937
1100
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
938
1101
|
};
|
939
|
-
var __privateSet$
|
1102
|
+
var __privateSet$6 = (obj, member, value, setter) => {
|
940
1103
|
__accessCheck$6(obj, member, "write to private field");
|
941
1104
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
942
1105
|
return value;
|
943
1106
|
};
|
944
|
-
var _query;
|
1107
|
+
var _query, _page;
|
945
1108
|
class Page {
|
946
1109
|
constructor(query, meta, records = []) {
|
947
1110
|
__privateAdd$6(this, _query, void 0);
|
948
|
-
__privateSet$
|
1111
|
+
__privateSet$6(this, _query, query);
|
949
1112
|
this.meta = meta;
|
950
|
-
this.records = records;
|
1113
|
+
this.records = new RecordArray(this, records);
|
951
1114
|
}
|
952
1115
|
async nextPage(size, offset) {
|
953
1116
|
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, after: this.meta.page.cursor } });
|
@@ -967,12 +1130,56 @@ class Page {
|
|
967
1130
|
}
|
968
1131
|
_query = new WeakMap();
|
969
1132
|
const PAGINATION_MAX_SIZE = 200;
|
970
|
-
const PAGINATION_DEFAULT_SIZE =
|
1133
|
+
const PAGINATION_DEFAULT_SIZE = 20;
|
971
1134
|
const PAGINATION_MAX_OFFSET = 800;
|
972
1135
|
const PAGINATION_DEFAULT_OFFSET = 0;
|
973
1136
|
function isCursorPaginationOptions(options) {
|
974
1137
|
return isDefined(options) && (isDefined(options.first) || isDefined(options.last) || isDefined(options.after) || isDefined(options.before));
|
975
1138
|
}
|
1139
|
+
const _RecordArray = class extends Array {
|
1140
|
+
constructor(...args) {
|
1141
|
+
super(..._RecordArray.parseConstructorParams(...args));
|
1142
|
+
__privateAdd$6(this, _page, void 0);
|
1143
|
+
__privateSet$6(this, _page, isObject(args[0]?.meta) ? args[0] : { meta: { page: { cursor: "", more: false } }, records: [] });
|
1144
|
+
}
|
1145
|
+
static parseConstructorParams(...args) {
|
1146
|
+
if (args.length === 1 && typeof args[0] === "number") {
|
1147
|
+
return new Array(args[0]);
|
1148
|
+
}
|
1149
|
+
if (args.length <= 2 && isObject(args[0]?.meta) && Array.isArray(args[1] ?? [])) {
|
1150
|
+
const result = args[1] ?? args[0].records ?? [];
|
1151
|
+
return new Array(...result);
|
1152
|
+
}
|
1153
|
+
return new Array(...args);
|
1154
|
+
}
|
1155
|
+
toArray() {
|
1156
|
+
return new Array(...this);
|
1157
|
+
}
|
1158
|
+
map(callbackfn, thisArg) {
|
1159
|
+
return this.toArray().map(callbackfn, thisArg);
|
1160
|
+
}
|
1161
|
+
async nextPage(size, offset) {
|
1162
|
+
const newPage = await __privateGet$6(this, _page).nextPage(size, offset);
|
1163
|
+
return new _RecordArray(newPage);
|
1164
|
+
}
|
1165
|
+
async previousPage(size, offset) {
|
1166
|
+
const newPage = await __privateGet$6(this, _page).previousPage(size, offset);
|
1167
|
+
return new _RecordArray(newPage);
|
1168
|
+
}
|
1169
|
+
async firstPage(size, offset) {
|
1170
|
+
const newPage = await __privateGet$6(this, _page).firstPage(size, offset);
|
1171
|
+
return new _RecordArray(newPage);
|
1172
|
+
}
|
1173
|
+
async lastPage(size, offset) {
|
1174
|
+
const newPage = await __privateGet$6(this, _page).lastPage(size, offset);
|
1175
|
+
return new _RecordArray(newPage);
|
1176
|
+
}
|
1177
|
+
hasNextPage() {
|
1178
|
+
return __privateGet$6(this, _page).meta.page.more;
|
1179
|
+
}
|
1180
|
+
};
|
1181
|
+
let RecordArray = _RecordArray;
|
1182
|
+
_page = new WeakMap();
|
976
1183
|
|
977
1184
|
var __accessCheck$5 = (obj, member, msg) => {
|
978
1185
|
if (!member.has(obj))
|
@@ -987,25 +1194,26 @@ var __privateAdd$5 = (obj, member, value) => {
|
|
987
1194
|
throw TypeError("Cannot add the same private member more than once");
|
988
1195
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
989
1196
|
};
|
990
|
-
var __privateSet$
|
1197
|
+
var __privateSet$5 = (obj, member, value, setter) => {
|
991
1198
|
__accessCheck$5(obj, member, "write to private field");
|
992
1199
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
993
1200
|
return value;
|
994
1201
|
};
|
995
1202
|
var _table$1, _repository, _data;
|
996
1203
|
const _Query = class {
|
997
|
-
constructor(repository, table, data,
|
1204
|
+
constructor(repository, table, data, rawParent) {
|
998
1205
|
__privateAdd$5(this, _table$1, void 0);
|
999
1206
|
__privateAdd$5(this, _repository, void 0);
|
1000
1207
|
__privateAdd$5(this, _data, { filter: {} });
|
1001
1208
|
this.meta = { page: { cursor: "start", more: true } };
|
1002
|
-
this.records = [];
|
1003
|
-
__privateSet$
|
1209
|
+
this.records = new RecordArray(this, []);
|
1210
|
+
__privateSet$5(this, _table$1, table);
|
1004
1211
|
if (repository) {
|
1005
|
-
__privateSet$
|
1212
|
+
__privateSet$5(this, _repository, repository);
|
1006
1213
|
} else {
|
1007
|
-
__privateSet$
|
1214
|
+
__privateSet$5(this, _repository, this);
|
1008
1215
|
}
|
1216
|
+
const parent = cleanParent(data, rawParent);
|
1009
1217
|
__privateGet$5(this, _data).filter = data.filter ?? parent?.filter ?? {};
|
1010
1218
|
__privateGet$5(this, _data).filter.$any = data.filter?.$any ?? parent?.filter?.$any;
|
1011
1219
|
__privateGet$5(this, _data).filter.$all = data.filter?.$all ?? parent?.filter?.$all;
|
@@ -1058,13 +1266,18 @@ const _Query = class {
|
|
1058
1266
|
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
|
1059
1267
|
}
|
1060
1268
|
}
|
1061
|
-
sort(column, direction) {
|
1269
|
+
sort(column, direction = "asc") {
|
1062
1270
|
const originalSort = [__privateGet$5(this, _data).sort ?? []].flat();
|
1063
1271
|
const sort = [...originalSort, { column, direction }];
|
1064
1272
|
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { sort }, __privateGet$5(this, _data));
|
1065
1273
|
}
|
1066
1274
|
select(columns) {
|
1067
|
-
return new _Query(
|
1275
|
+
return new _Query(
|
1276
|
+
__privateGet$5(this, _repository),
|
1277
|
+
__privateGet$5(this, _table$1),
|
1278
|
+
{ columns },
|
1279
|
+
__privateGet$5(this, _data)
|
1280
|
+
);
|
1068
1281
|
}
|
1069
1282
|
getPaginated(options = {}) {
|
1070
1283
|
const query = new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), options, __privateGet$5(this, _data));
|
@@ -1087,8 +1300,11 @@ const _Query = class {
|
|
1087
1300
|
}
|
1088
1301
|
}
|
1089
1302
|
async getMany(options = {}) {
|
1090
|
-
const
|
1091
|
-
|
1303
|
+
const page = await this.getPaginated(options);
|
1304
|
+
if (page.hasNextPage() && options.pagination?.size === void 0) {
|
1305
|
+
console.trace("Calling getMany does not return all results. Paginate to get all results or call getAll.");
|
1306
|
+
}
|
1307
|
+
return page.records;
|
1092
1308
|
}
|
1093
1309
|
async getAll(options = {}) {
|
1094
1310
|
const { batchSize = PAGINATION_MAX_SIZE, ...rest } = options;
|
@@ -1125,12 +1341,20 @@ let Query = _Query;
|
|
1125
1341
|
_table$1 = new WeakMap();
|
1126
1342
|
_repository = new WeakMap();
|
1127
1343
|
_data = new WeakMap();
|
1344
|
+
function cleanParent(data, parent) {
|
1345
|
+
if (isCursorPaginationOptions(data.pagination)) {
|
1346
|
+
return { ...parent, sorting: void 0, filter: void 0 };
|
1347
|
+
}
|
1348
|
+
return parent;
|
1349
|
+
}
|
1128
1350
|
|
1129
1351
|
function isIdentifiable(x) {
|
1130
1352
|
return isObject(x) && isString(x?.id);
|
1131
1353
|
}
|
1132
1354
|
function isXataRecord(x) {
|
1133
|
-
|
1355
|
+
const record = x;
|
1356
|
+
const metadata = record?.getMetadata();
|
1357
|
+
return isIdentifiable(x) && isObject(metadata) && typeof metadata.version === "number";
|
1134
1358
|
}
|
1135
1359
|
|
1136
1360
|
function isSortFilterString(value) {
|
@@ -1169,7 +1393,7 @@ var __privateAdd$4 = (obj, member, value) => {
|
|
1169
1393
|
throw TypeError("Cannot add the same private member more than once");
|
1170
1394
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1171
1395
|
};
|
1172
|
-
var __privateSet$
|
1396
|
+
var __privateSet$4 = (obj, member, value, setter) => {
|
1173
1397
|
__accessCheck$4(obj, member, "write to private field");
|
1174
1398
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1175
1399
|
return value;
|
@@ -1178,7 +1402,7 @@ var __privateMethod$2 = (obj, member, method) => {
|
|
1178
1402
|
__accessCheck$4(obj, member, "access private method");
|
1179
1403
|
return method;
|
1180
1404
|
};
|
1181
|
-
var _table, _getFetchProps, _cache,
|
1405
|
+
var _table, _getFetchProps, _db, _cache, _schemaTables$2, _trace, _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;
|
1182
1406
|
class Repository extends Query {
|
1183
1407
|
}
|
1184
1408
|
class RestRepository extends Query {
|
@@ -1190,175 +1414,214 @@ class RestRepository extends Query {
|
|
1190
1414
|
__privateAdd$4(this, _updateRecordWithID);
|
1191
1415
|
__privateAdd$4(this, _upsertRecordWithID);
|
1192
1416
|
__privateAdd$4(this, _deleteRecord);
|
1193
|
-
__privateAdd$4(this, _invalidateCache);
|
1194
|
-
__privateAdd$4(this, _setCacheRecord);
|
1195
|
-
__privateAdd$4(this, _getCacheRecord);
|
1196
1417
|
__privateAdd$4(this, _setCacheQuery);
|
1197
1418
|
__privateAdd$4(this, _getCacheQuery);
|
1198
|
-
__privateAdd$4(this,
|
1419
|
+
__privateAdd$4(this, _getSchemaTables$1);
|
1199
1420
|
__privateAdd$4(this, _table, void 0);
|
1200
1421
|
__privateAdd$4(this, _getFetchProps, void 0);
|
1422
|
+
__privateAdd$4(this, _db, void 0);
|
1201
1423
|
__privateAdd$4(this, _cache, void 0);
|
1202
|
-
__privateAdd$4(this,
|
1203
|
-
|
1204
|
-
__privateSet$
|
1205
|
-
this
|
1206
|
-
__privateSet$
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
if (a === "")
|
1216
|
-
throw new Error("The id can't be empty");
|
1217
|
-
const record = await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b);
|
1218
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1219
|
-
return record;
|
1220
|
-
}
|
1221
|
-
if (isObject(a) && isString(a.id)) {
|
1222
|
-
if (a.id === "")
|
1223
|
-
throw new Error("The id can't be empty");
|
1224
|
-
const record = await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 });
|
1225
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1226
|
-
return record;
|
1227
|
-
}
|
1228
|
-
if (isObject(a)) {
|
1229
|
-
const record = await __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a);
|
1230
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1231
|
-
return record;
|
1232
|
-
}
|
1233
|
-
throw new Error("Invalid arguments for create method");
|
1234
|
-
}
|
1235
|
-
async read(recordId) {
|
1236
|
-
const cacheRecord = await __privateMethod$2(this, _getCacheRecord, getCacheRecord_fn).call(this, recordId);
|
1237
|
-
if (cacheRecord)
|
1238
|
-
return cacheRecord;
|
1239
|
-
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1240
|
-
try {
|
1241
|
-
const response = await getRecord({
|
1242
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1243
|
-
...fetchProps
|
1424
|
+
__privateAdd$4(this, _schemaTables$2, void 0);
|
1425
|
+
__privateAdd$4(this, _trace, void 0);
|
1426
|
+
__privateSet$4(this, _table, options.table);
|
1427
|
+
__privateSet$4(this, _getFetchProps, options.pluginOptions.getFetchProps);
|
1428
|
+
__privateSet$4(this, _db, options.db);
|
1429
|
+
__privateSet$4(this, _cache, options.pluginOptions.cache);
|
1430
|
+
__privateSet$4(this, _schemaTables$2, options.schemaTables);
|
1431
|
+
const trace = options.pluginOptions.trace ?? defaultTrace;
|
1432
|
+
__privateSet$4(this, _trace, async (name, fn, options2 = {}) => {
|
1433
|
+
return trace(name, fn, {
|
1434
|
+
...options2,
|
1435
|
+
[TraceAttributes.TABLE]: __privateGet$4(this, _table),
|
1436
|
+
[TraceAttributes.VERSION]: VERSION
|
1244
1437
|
});
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1438
|
+
});
|
1439
|
+
}
|
1440
|
+
async create(a, b, c) {
|
1441
|
+
return __privateGet$4(this, _trace).call(this, "create", async () => {
|
1442
|
+
if (Array.isArray(a)) {
|
1443
|
+
if (a.length === 0)
|
1444
|
+
return [];
|
1445
|
+
const columns = isStringArray(b) ? b : void 0;
|
1446
|
+
return __privateMethod$2(this, _bulkInsertTableRecords, bulkInsertTableRecords_fn).call(this, a, columns);
|
1250
1447
|
}
|
1251
|
-
|
1252
|
-
|
1448
|
+
if (isString(a) && isObject(b)) {
|
1449
|
+
if (a === "")
|
1450
|
+
throw new Error("The id can't be empty");
|
1451
|
+
const columns = isStringArray(c) ? c : void 0;
|
1452
|
+
return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b, columns);
|
1453
|
+
}
|
1454
|
+
if (isObject(a) && isString(a.id)) {
|
1455
|
+
if (a.id === "")
|
1456
|
+
throw new Error("The id can't be empty");
|
1457
|
+
const columns = isStringArray(b) ? b : void 0;
|
1458
|
+
return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 }, columns);
|
1459
|
+
}
|
1460
|
+
if (isObject(a)) {
|
1461
|
+
const columns = isStringArray(b) ? b : void 0;
|
1462
|
+
return __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a, columns);
|
1463
|
+
}
|
1464
|
+
throw new Error("Invalid arguments for create method");
|
1465
|
+
});
|
1253
1466
|
}
|
1254
|
-
async
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1467
|
+
async read(a, b) {
|
1468
|
+
return __privateGet$4(this, _trace).call(this, "read", async () => {
|
1469
|
+
const columns = isStringArray(b) ? b : ["*"];
|
1470
|
+
if (Array.isArray(a)) {
|
1471
|
+
if (a.length === 0)
|
1472
|
+
return [];
|
1473
|
+
const ids = a.map((item) => isString(item) ? item : item.id).filter((id2) => isString(id2));
|
1474
|
+
const finalObjects = await this.getAll({ filter: { id: { $any: ids } }, columns });
|
1475
|
+
const dictionary = finalObjects.reduce((acc, object) => {
|
1476
|
+
acc[object.id] = object;
|
1477
|
+
return acc;
|
1478
|
+
}, {});
|
1479
|
+
return ids.map((id2) => dictionary[id2] ?? null);
|
1258
1480
|
}
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1481
|
+
const id = isString(a) ? a : a.id;
|
1482
|
+
if (isString(id)) {
|
1483
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1484
|
+
try {
|
1485
|
+
const response = await getRecord({
|
1486
|
+
pathParams: {
|
1487
|
+
workspace: "{workspaceId}",
|
1488
|
+
dbBranchName: "{dbBranch}",
|
1489
|
+
tableName: __privateGet$4(this, _table),
|
1490
|
+
recordId: id
|
1491
|
+
},
|
1492
|
+
queryParams: { columns },
|
1493
|
+
...fetchProps
|
1494
|
+
});
|
1495
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1496
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1497
|
+
} catch (e) {
|
1498
|
+
if (isObject(e) && e.status === 404) {
|
1499
|
+
return null;
|
1500
|
+
}
|
1501
|
+
throw e;
|
1502
|
+
}
|
1503
|
+
}
|
1504
|
+
return null;
|
1505
|
+
});
|
1274
1506
|
}
|
1275
|
-
async
|
1276
|
-
|
1277
|
-
if (a
|
1278
|
-
|
1507
|
+
async update(a, b, c) {
|
1508
|
+
return __privateGet$4(this, _trace).call(this, "update", async () => {
|
1509
|
+
if (Array.isArray(a)) {
|
1510
|
+
if (a.length === 0)
|
1511
|
+
return [];
|
1512
|
+
if (a.length > 100) {
|
1513
|
+
console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
|
1514
|
+
}
|
1515
|
+
const columns = isStringArray(b) ? b : ["*"];
|
1516
|
+
return Promise.all(a.map((object) => this.update(object, columns)));
|
1279
1517
|
}
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1518
|
+
if (isString(a) && isObject(b)) {
|
1519
|
+
const columns = isStringArray(c) ? c : void 0;
|
1520
|
+
return __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a, b, columns);
|
1521
|
+
}
|
1522
|
+
if (isObject(a) && isString(a.id)) {
|
1523
|
+
const columns = isStringArray(b) ? b : void 0;
|
1524
|
+
return __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns);
|
1525
|
+
}
|
1526
|
+
throw new Error("Invalid arguments for update method");
|
1527
|
+
});
|
1528
|
+
}
|
1529
|
+
async createOrUpdate(a, b, c) {
|
1530
|
+
return __privateGet$4(this, _trace).call(this, "createOrUpdate", async () => {
|
1531
|
+
if (Array.isArray(a)) {
|
1532
|
+
if (a.length === 0)
|
1533
|
+
return [];
|
1534
|
+
if (a.length > 100) {
|
1535
|
+
console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
|
1536
|
+
}
|
1537
|
+
const columns = isStringArray(b) ? b : ["*"];
|
1538
|
+
return Promise.all(a.map((object) => this.createOrUpdate(object, columns)));
|
1539
|
+
}
|
1540
|
+
if (isString(a) && isObject(b)) {
|
1541
|
+
const columns = isStringArray(c) ? c : void 0;
|
1542
|
+
return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a, b, columns);
|
1543
|
+
}
|
1544
|
+
if (isObject(a) && isString(a.id)) {
|
1545
|
+
const columns = isStringArray(c) ? c : void 0;
|
1546
|
+
return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns);
|
1547
|
+
}
|
1548
|
+
throw new Error("Invalid arguments for createOrUpdate method");
|
1549
|
+
});
|
1295
1550
|
}
|
1296
1551
|
async delete(a) {
|
1297
|
-
|
1298
|
-
if (a
|
1299
|
-
|
1552
|
+
return __privateGet$4(this, _trace).call(this, "delete", async () => {
|
1553
|
+
if (Array.isArray(a)) {
|
1554
|
+
if (a.length === 0)
|
1555
|
+
return;
|
1556
|
+
if (a.length > 100) {
|
1557
|
+
console.warn("Bulk delete operation is not optimized in the Xata API yet, this request might be slow");
|
1558
|
+
}
|
1559
|
+
await Promise.all(a.map((id) => this.delete(id)));
|
1560
|
+
return;
|
1300
1561
|
}
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1311
|
-
await __privateMethod$2(this, _invalidateCache, invalidateCache_fn).call(this, a.id);
|
1312
|
-
return;
|
1313
|
-
}
|
1314
|
-
throw new Error("Invalid arguments for delete method");
|
1562
|
+
if (isString(a)) {
|
1563
|
+
await __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a);
|
1564
|
+
return;
|
1565
|
+
}
|
1566
|
+
if (isObject(a) && isString(a.id)) {
|
1567
|
+
await __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a.id);
|
1568
|
+
return;
|
1569
|
+
}
|
1570
|
+
throw new Error("Invalid arguments for delete method");
|
1571
|
+
});
|
1315
1572
|
}
|
1316
1573
|
async search(query, options = {}) {
|
1317
|
-
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1574
|
+
return __privateGet$4(this, _trace).call(this, "search", async () => {
|
1575
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1576
|
+
const { records } = await searchTable({
|
1577
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
|
1578
|
+
body: {
|
1579
|
+
query,
|
1580
|
+
fuzziness: options.fuzziness,
|
1581
|
+
prefix: options.prefix,
|
1582
|
+
highlight: options.highlight,
|
1583
|
+
filter: options.filter,
|
1584
|
+
boosters: options.boosters
|
1585
|
+
},
|
1586
|
+
...fetchProps
|
1587
|
+
});
|
1588
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1589
|
+
return records.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item));
|
1326
1590
|
});
|
1327
|
-
const schema = await __privateMethod$2(this, _getSchema$1, getSchema_fn$1).call(this);
|
1328
|
-
return records.map((item) => initObject(this.db, schema, __privateGet$4(this, _table), item));
|
1329
1591
|
}
|
1330
1592
|
async query(query) {
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1593
|
+
return __privateGet$4(this, _trace).call(this, "query", async () => {
|
1594
|
+
const cacheQuery = await __privateMethod$2(this, _getCacheQuery, getCacheQuery_fn).call(this, query);
|
1595
|
+
if (cacheQuery)
|
1596
|
+
return new Page(query, cacheQuery.meta, cacheQuery.records);
|
1597
|
+
const data = query.getQueryOptions();
|
1598
|
+
const body = {
|
1599
|
+
filter: Object.values(data.filter ?? {}).some(Boolean) ? data.filter : void 0,
|
1600
|
+
sort: data.sort !== void 0 ? buildSortFilter(data.sort) : void 0,
|
1601
|
+
page: data.pagination,
|
1602
|
+
columns: data.columns
|
1603
|
+
};
|
1604
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1605
|
+
const { meta, records: objects } = await queryTable({
|
1606
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
|
1607
|
+
body,
|
1608
|
+
...fetchProps
|
1609
|
+
});
|
1610
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1611
|
+
const records = objects.map((record) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), record));
|
1612
|
+
await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
|
1613
|
+
return new Page(query, meta, records);
|
1349
1614
|
});
|
1350
|
-
const schema = await __privateMethod$2(this, _getSchema$1, getSchema_fn$1).call(this);
|
1351
|
-
const records = objects.map((record) => initObject(this.db, schema, __privateGet$4(this, _table), record));
|
1352
|
-
await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
|
1353
|
-
return new Page(query, meta, records);
|
1354
1615
|
}
|
1355
1616
|
}
|
1356
1617
|
_table = new WeakMap();
|
1357
1618
|
_getFetchProps = new WeakMap();
|
1619
|
+
_db = new WeakMap();
|
1358
1620
|
_cache = new WeakMap();
|
1359
|
-
|
1621
|
+
_schemaTables$2 = new WeakMap();
|
1622
|
+
_trace = new WeakMap();
|
1360
1623
|
_insertRecordWithoutId = new WeakSet();
|
1361
|
-
insertRecordWithoutId_fn = async function(object) {
|
1624
|
+
insertRecordWithoutId_fn = async function(object, columns = ["*"]) {
|
1362
1625
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1363
1626
|
const record = transformObjectLinks(object);
|
1364
1627
|
const response = await insertRecord({
|
@@ -1367,17 +1630,15 @@ insertRecordWithoutId_fn = async function(object) {
|
|
1367
1630
|
dbBranchName: "{dbBranch}",
|
1368
1631
|
tableName: __privateGet$4(this, _table)
|
1369
1632
|
},
|
1633
|
+
queryParams: { columns },
|
1370
1634
|
body: record,
|
1371
1635
|
...fetchProps
|
1372
1636
|
});
|
1373
|
-
const
|
1374
|
-
|
1375
|
-
throw new Error("The server failed to save the record");
|
1376
|
-
}
|
1377
|
-
return finalObject;
|
1637
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1638
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1378
1639
|
};
|
1379
1640
|
_insertRecordWithId = new WeakSet();
|
1380
|
-
insertRecordWithId_fn = async function(recordId, object) {
|
1641
|
+
insertRecordWithId_fn = async function(recordId, object, columns = ["*"]) {
|
1381
1642
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1382
1643
|
const record = transformObjectLinks(object);
|
1383
1644
|
const response = await insertRecordWithID({
|
@@ -1388,56 +1649,52 @@ insertRecordWithId_fn = async function(recordId, object) {
|
|
1388
1649
|
recordId
|
1389
1650
|
},
|
1390
1651
|
body: record,
|
1391
|
-
queryParams: { createOnly: true },
|
1652
|
+
queryParams: { createOnly: true, columns },
|
1392
1653
|
...fetchProps
|
1393
1654
|
});
|
1394
|
-
const
|
1395
|
-
|
1396
|
-
throw new Error("The server failed to save the record");
|
1397
|
-
}
|
1398
|
-
return finalObject;
|
1655
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1656
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1399
1657
|
};
|
1400
1658
|
_bulkInsertTableRecords = new WeakSet();
|
1401
|
-
bulkInsertTableRecords_fn = async function(objects) {
|
1659
|
+
bulkInsertTableRecords_fn = async function(objects, columns = ["*"]) {
|
1402
1660
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1403
1661
|
const records = objects.map((object) => transformObjectLinks(object));
|
1404
1662
|
const response = await bulkInsertTableRecords({
|
1405
1663
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
|
1664
|
+
queryParams: { columns },
|
1406
1665
|
body: { records },
|
1407
1666
|
...fetchProps
|
1408
1667
|
});
|
1409
|
-
|
1410
|
-
|
1411
|
-
throw new Error("The server failed to save some records");
|
1668
|
+
if (!isResponseWithRecords(response)) {
|
1669
|
+
throw new Error("Request included columns but server didn't include them");
|
1412
1670
|
}
|
1413
|
-
|
1671
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1672
|
+
return response.records?.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item));
|
1414
1673
|
};
|
1415
1674
|
_updateRecordWithID = new WeakSet();
|
1416
|
-
updateRecordWithID_fn = async function(recordId, object) {
|
1675
|
+
updateRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
|
1417
1676
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1418
1677
|
const record = transformObjectLinks(object);
|
1419
1678
|
const response = await updateRecordWithID({
|
1420
1679
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1680
|
+
queryParams: { columns },
|
1421
1681
|
body: record,
|
1422
1682
|
...fetchProps
|
1423
1683
|
});
|
1424
|
-
const
|
1425
|
-
|
1426
|
-
throw new Error("The server failed to save the record");
|
1427
|
-
return item;
|
1684
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1685
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1428
1686
|
};
|
1429
1687
|
_upsertRecordWithID = new WeakSet();
|
1430
|
-
upsertRecordWithID_fn = async function(recordId, object) {
|
1688
|
+
upsertRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
|
1431
1689
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1432
1690
|
const response = await upsertRecordWithID({
|
1433
1691
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1692
|
+
queryParams: { columns },
|
1434
1693
|
body: object,
|
1435
1694
|
...fetchProps
|
1436
1695
|
});
|
1437
|
-
const
|
1438
|
-
|
1439
|
-
throw new Error("The server failed to save the record");
|
1440
|
-
return item;
|
1696
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1697
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1441
1698
|
};
|
1442
1699
|
_deleteRecord = new WeakSet();
|
1443
1700
|
deleteRecord_fn = async function(recordId) {
|
@@ -1447,29 +1704,6 @@ deleteRecord_fn = async function(recordId) {
|
|
1447
1704
|
...fetchProps
|
1448
1705
|
});
|
1449
1706
|
};
|
1450
|
-
_invalidateCache = new WeakSet();
|
1451
|
-
invalidateCache_fn = async function(recordId) {
|
1452
|
-
await __privateGet$4(this, _cache).delete(`rec_${__privateGet$4(this, _table)}:${recordId}`);
|
1453
|
-
const cacheItems = await __privateGet$4(this, _cache).getAll();
|
1454
|
-
const queries = Object.entries(cacheItems).filter(([key]) => key.startsWith("query_"));
|
1455
|
-
for (const [key, value] of queries) {
|
1456
|
-
const ids = getIds(value);
|
1457
|
-
if (ids.includes(recordId))
|
1458
|
-
await __privateGet$4(this, _cache).delete(key);
|
1459
|
-
}
|
1460
|
-
};
|
1461
|
-
_setCacheRecord = new WeakSet();
|
1462
|
-
setCacheRecord_fn = async function(record) {
|
1463
|
-
if (!__privateGet$4(this, _cache).cacheRecords)
|
1464
|
-
return;
|
1465
|
-
await __privateGet$4(this, _cache).set(`rec_${__privateGet$4(this, _table)}:${record.id}`, record);
|
1466
|
-
};
|
1467
|
-
_getCacheRecord = new WeakSet();
|
1468
|
-
getCacheRecord_fn = async function(recordId) {
|
1469
|
-
if (!__privateGet$4(this, _cache).cacheRecords)
|
1470
|
-
return null;
|
1471
|
-
return __privateGet$4(this, _cache).get(`rec_${__privateGet$4(this, _table)}:${recordId}`);
|
1472
|
-
};
|
1473
1707
|
_setCacheQuery = new WeakSet();
|
1474
1708
|
setCacheQuery_fn = async function(query, meta, records) {
|
1475
1709
|
await __privateGet$4(this, _cache).set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: new Date(), meta, records });
|
@@ -1486,17 +1720,17 @@ getCacheQuery_fn = async function(query) {
|
|
1486
1720
|
const hasExpired = result.date.getTime() + ttl < Date.now();
|
1487
1721
|
return hasExpired ? null : result;
|
1488
1722
|
};
|
1489
|
-
|
1490
|
-
|
1491
|
-
if (__privateGet$4(this,
|
1492
|
-
return __privateGet$4(this,
|
1723
|
+
_getSchemaTables$1 = new WeakSet();
|
1724
|
+
getSchemaTables_fn$1 = async function() {
|
1725
|
+
if (__privateGet$4(this, _schemaTables$2))
|
1726
|
+
return __privateGet$4(this, _schemaTables$2);
|
1493
1727
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1494
1728
|
const { schema } = await getBranchDetails({
|
1495
1729
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1496
1730
|
...fetchProps
|
1497
1731
|
});
|
1498
|
-
__privateSet$
|
1499
|
-
return schema;
|
1732
|
+
__privateSet$4(this, _schemaTables$2, schema.tables);
|
1733
|
+
return schema.tables;
|
1500
1734
|
};
|
1501
1735
|
const transformObjectLinks = (object) => {
|
1502
1736
|
return Object.entries(object).reduce((acc, [key, value]) => {
|
@@ -1505,20 +1739,21 @@ const transformObjectLinks = (object) => {
|
|
1505
1739
|
return { ...acc, [key]: isIdentifiable(value) ? value.id : value };
|
1506
1740
|
}, {});
|
1507
1741
|
};
|
1508
|
-
const initObject = (db,
|
1742
|
+
const initObject = (db, schemaTables, table, object) => {
|
1509
1743
|
const result = {};
|
1510
|
-
|
1511
|
-
|
1744
|
+
const { xata, ...rest } = object ?? {};
|
1745
|
+
Object.assign(result, rest);
|
1746
|
+
const { columns } = schemaTables.find(({ name }) => name === table) ?? {};
|
1512
1747
|
if (!columns)
|
1513
1748
|
console.error(`Table ${table} not found in schema`);
|
1514
1749
|
for (const column of columns ?? []) {
|
1515
1750
|
const value = result[column.name];
|
1516
1751
|
switch (column.type) {
|
1517
1752
|
case "datetime": {
|
1518
|
-
const date = new Date(value);
|
1519
|
-
if (isNaN(date.getTime())) {
|
1753
|
+
const date = value !== void 0 ? new Date(value) : void 0;
|
1754
|
+
if (date && isNaN(date.getTime())) {
|
1520
1755
|
console.error(`Failed to parse date ${value} for field ${column.name}`);
|
1521
|
-
} else {
|
1756
|
+
} else if (date) {
|
1522
1757
|
result[column.name] = date;
|
1523
1758
|
}
|
1524
1759
|
break;
|
@@ -1528,35 +1763,32 @@ const initObject = (db, schema, table, object) => {
|
|
1528
1763
|
if (!linkTable) {
|
1529
1764
|
console.error(`Failed to parse link for field ${column.name}`);
|
1530
1765
|
} else if (isObject(value)) {
|
1531
|
-
result[column.name] = initObject(db,
|
1766
|
+
result[column.name] = initObject(db, schemaTables, linkTable, value);
|
1532
1767
|
}
|
1533
1768
|
break;
|
1534
1769
|
}
|
1535
1770
|
}
|
1536
1771
|
}
|
1537
|
-
result.read = function() {
|
1538
|
-
return db[table].read(result["id"]);
|
1772
|
+
result.read = function(columns2) {
|
1773
|
+
return db[table].read(result["id"], columns2);
|
1539
1774
|
};
|
1540
|
-
result.update = function(data) {
|
1541
|
-
return db[table].update(result["id"], data);
|
1775
|
+
result.update = function(data, columns2) {
|
1776
|
+
return db[table].update(result["id"], data, columns2);
|
1542
1777
|
};
|
1543
1778
|
result.delete = function() {
|
1544
1779
|
return db[table].delete(result["id"]);
|
1545
1780
|
};
|
1546
|
-
|
1781
|
+
result.getMetadata = function() {
|
1782
|
+
return xata;
|
1783
|
+
};
|
1784
|
+
for (const prop of ["read", "update", "delete", "getMetadata"]) {
|
1547
1785
|
Object.defineProperty(result, prop, { enumerable: false });
|
1548
1786
|
}
|
1549
1787
|
Object.freeze(result);
|
1550
1788
|
return result;
|
1551
1789
|
};
|
1552
|
-
function
|
1553
|
-
|
1554
|
-
return value.map((item) => getIds(item)).flat();
|
1555
|
-
}
|
1556
|
-
if (!isObject(value))
|
1557
|
-
return [];
|
1558
|
-
const nestedIds = Object.values(value).map((item) => getIds(item)).flat();
|
1559
|
-
return isString(value.id) ? [value.id, ...nestedIds] : nestedIds;
|
1790
|
+
function isResponseWithRecords(value) {
|
1791
|
+
return isObject(value) && Array.isArray(value.records);
|
1560
1792
|
}
|
1561
1793
|
|
1562
1794
|
var __accessCheck$3 = (obj, member, msg) => {
|
@@ -1572,7 +1804,7 @@ var __privateAdd$3 = (obj, member, value) => {
|
|
1572
1804
|
throw TypeError("Cannot add the same private member more than once");
|
1573
1805
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1574
1806
|
};
|
1575
|
-
var __privateSet$
|
1807
|
+
var __privateSet$3 = (obj, member, value, setter) => {
|
1576
1808
|
__accessCheck$3(obj, member, "write to private field");
|
1577
1809
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1578
1810
|
return value;
|
@@ -1581,9 +1813,8 @@ var _map;
|
|
1581
1813
|
class SimpleCache {
|
1582
1814
|
constructor(options = {}) {
|
1583
1815
|
__privateAdd$3(this, _map, void 0);
|
1584
|
-
__privateSet$
|
1816
|
+
__privateSet$3(this, _map, /* @__PURE__ */ new Map());
|
1585
1817
|
this.capacity = options.max ?? 500;
|
1586
|
-
this.cacheRecords = options.cacheRecords ?? true;
|
1587
1818
|
this.defaultQueryTTL = options.defaultQueryTTL ?? 60 * 1e3;
|
1588
1819
|
}
|
1589
1820
|
async getAll() {
|
@@ -1609,18 +1840,25 @@ class SimpleCache {
|
|
1609
1840
|
}
|
1610
1841
|
_map = new WeakMap();
|
1611
1842
|
|
1612
|
-
const
|
1613
|
-
const
|
1614
|
-
const
|
1615
|
-
const
|
1616
|
-
const
|
1617
|
-
const
|
1843
|
+
const greaterThan = (value) => ({ $gt: value });
|
1844
|
+
const gt = greaterThan;
|
1845
|
+
const greaterThanEquals = (value) => ({ $ge: value });
|
1846
|
+
const greaterEquals = greaterThanEquals;
|
1847
|
+
const gte = greaterThanEquals;
|
1848
|
+
const ge = greaterThanEquals;
|
1849
|
+
const lessThan = (value) => ({ $lt: value });
|
1850
|
+
const lt = lessThan;
|
1851
|
+
const lessThanEquals = (value) => ({ $le: value });
|
1852
|
+
const lessEquals = lessThanEquals;
|
1853
|
+
const lte = lessThanEquals;
|
1854
|
+
const le = lessThanEquals;
|
1618
1855
|
const exists = (column) => ({ $exists: column });
|
1619
1856
|
const notExists = (column) => ({ $notExists: column });
|
1620
1857
|
const startsWith = (value) => ({ $startsWith: value });
|
1621
1858
|
const endsWith = (value) => ({ $endsWith: value });
|
1622
1859
|
const pattern = (value) => ({ $pattern: value });
|
1623
1860
|
const is = (value) => ({ $is: value });
|
1861
|
+
const equals = is;
|
1624
1862
|
const isNot = (value) => ({ $isNot: value });
|
1625
1863
|
const contains = (value) => ({ $contains: value });
|
1626
1864
|
const includes = (value) => ({ $includes: value });
|
@@ -1641,31 +1879,42 @@ var __privateAdd$2 = (obj, member, value) => {
|
|
1641
1879
|
throw TypeError("Cannot add the same private member more than once");
|
1642
1880
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1643
1881
|
};
|
1644
|
-
var
|
1882
|
+
var __privateSet$2 = (obj, member, value, setter) => {
|
1883
|
+
__accessCheck$2(obj, member, "write to private field");
|
1884
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
1885
|
+
return value;
|
1886
|
+
};
|
1887
|
+
var _tables, _schemaTables$1;
|
1645
1888
|
class SchemaPlugin extends XataPlugin {
|
1646
|
-
constructor(
|
1889
|
+
constructor(schemaTables) {
|
1647
1890
|
super();
|
1648
|
-
this.tableNames = tableNames;
|
1649
1891
|
__privateAdd$2(this, _tables, {});
|
1892
|
+
__privateAdd$2(this, _schemaTables$1, void 0);
|
1893
|
+
__privateSet$2(this, _schemaTables$1, schemaTables);
|
1650
1894
|
}
|
1651
1895
|
build(pluginOptions) {
|
1652
|
-
const db = new Proxy(
|
1653
|
-
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1896
|
+
const db = new Proxy(
|
1897
|
+
{},
|
1898
|
+
{
|
1899
|
+
get: (_target, table) => {
|
1900
|
+
if (!isString(table))
|
1901
|
+
throw new Error("Invalid table name");
|
1902
|
+
if (__privateGet$2(this, _tables)[table] === void 0) {
|
1903
|
+
__privateGet$2(this, _tables)[table] = new RestRepository({ db, pluginOptions, table, schemaTables: __privateGet$2(this, _schemaTables$1) });
|
1904
|
+
}
|
1905
|
+
return __privateGet$2(this, _tables)[table];
|
1658
1906
|
}
|
1659
|
-
return __privateGet$2(this, _tables)[table];
|
1660
1907
|
}
|
1661
|
-
|
1662
|
-
|
1663
|
-
|
1908
|
+
);
|
1909
|
+
const tableNames = __privateGet$2(this, _schemaTables$1)?.map(({ name }) => name) ?? [];
|
1910
|
+
for (const table of tableNames) {
|
1911
|
+
db[table] = new RestRepository({ db, pluginOptions, table, schemaTables: __privateGet$2(this, _schemaTables$1) });
|
1664
1912
|
}
|
1665
1913
|
return db;
|
1666
1914
|
}
|
1667
1915
|
}
|
1668
1916
|
_tables = new WeakMap();
|
1917
|
+
_schemaTables$1 = new WeakMap();
|
1669
1918
|
|
1670
1919
|
var __accessCheck$1 = (obj, member, msg) => {
|
1671
1920
|
if (!member.has(obj))
|
@@ -1689,82 +1938,77 @@ var __privateMethod$1 = (obj, member, method) => {
|
|
1689
1938
|
__accessCheck$1(obj, member, "access private method");
|
1690
1939
|
return method;
|
1691
1940
|
};
|
1692
|
-
var
|
1941
|
+
var _schemaTables, _search, search_fn, _getSchemaTables, getSchemaTables_fn;
|
1693
1942
|
class SearchPlugin extends XataPlugin {
|
1694
|
-
constructor(db) {
|
1943
|
+
constructor(db, schemaTables) {
|
1695
1944
|
super();
|
1696
1945
|
this.db = db;
|
1697
1946
|
__privateAdd$1(this, _search);
|
1698
|
-
__privateAdd$1(this,
|
1699
|
-
__privateAdd$1(this,
|
1947
|
+
__privateAdd$1(this, _getSchemaTables);
|
1948
|
+
__privateAdd$1(this, _schemaTables, void 0);
|
1949
|
+
__privateSet$1(this, _schemaTables, schemaTables);
|
1700
1950
|
}
|
1701
1951
|
build({ getFetchProps }) {
|
1702
1952
|
return {
|
1703
1953
|
all: async (query, options = {}) => {
|
1704
1954
|
const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
|
1705
|
-
const
|
1955
|
+
const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
|
1706
1956
|
return records.map((record) => {
|
1707
1957
|
const { table = "orphan" } = record.xata;
|
1708
|
-
return { table, record: initObject(this.db,
|
1958
|
+
return { table, record: initObject(this.db, schemaTables, table, record) };
|
1709
1959
|
});
|
1710
1960
|
},
|
1711
1961
|
byTable: async (query, options = {}) => {
|
1712
1962
|
const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
|
1713
|
-
const
|
1963
|
+
const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
|
1714
1964
|
return records.reduce((acc, record) => {
|
1715
1965
|
const { table = "orphan" } = record.xata;
|
1716
1966
|
const items = acc[table] ?? [];
|
1717
|
-
const item = initObject(this.db,
|
1967
|
+
const item = initObject(this.db, schemaTables, table, record);
|
1718
1968
|
return { ...acc, [table]: [...items, item] };
|
1719
1969
|
}, {});
|
1720
1970
|
}
|
1721
1971
|
};
|
1722
1972
|
}
|
1723
1973
|
}
|
1724
|
-
|
1974
|
+
_schemaTables = new WeakMap();
|
1725
1975
|
_search = new WeakSet();
|
1726
1976
|
search_fn = async function(query, options, getFetchProps) {
|
1727
1977
|
const fetchProps = await getFetchProps();
|
1728
|
-
const { tables, fuzziness } = options ?? {};
|
1978
|
+
const { tables, fuzziness, highlight, prefix } = options ?? {};
|
1729
1979
|
const { records } = await searchBranch({
|
1730
1980
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1731
|
-
body: { tables, query, fuzziness },
|
1981
|
+
body: { tables, query, fuzziness, prefix, highlight },
|
1732
1982
|
...fetchProps
|
1733
1983
|
});
|
1734
1984
|
return records;
|
1735
1985
|
};
|
1736
|
-
|
1737
|
-
|
1738
|
-
if (__privateGet$1(this,
|
1739
|
-
return __privateGet$1(this,
|
1986
|
+
_getSchemaTables = new WeakSet();
|
1987
|
+
getSchemaTables_fn = async function(getFetchProps) {
|
1988
|
+
if (__privateGet$1(this, _schemaTables))
|
1989
|
+
return __privateGet$1(this, _schemaTables);
|
1740
1990
|
const fetchProps = await getFetchProps();
|
1741
1991
|
const { schema } = await getBranchDetails({
|
1742
1992
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1743
1993
|
...fetchProps
|
1744
1994
|
});
|
1745
|
-
__privateSet$1(this,
|
1746
|
-
return schema;
|
1995
|
+
__privateSet$1(this, _schemaTables, schema.tables);
|
1996
|
+
return schema.tables;
|
1747
1997
|
};
|
1748
1998
|
|
1749
1999
|
const isBranchStrategyBuilder = (strategy) => {
|
1750
2000
|
return typeof strategy === "function";
|
1751
2001
|
};
|
1752
2002
|
|
1753
|
-
const envBranchNames = [
|
1754
|
-
"XATA_BRANCH",
|
1755
|
-
"VERCEL_GIT_COMMIT_REF",
|
1756
|
-
"CF_PAGES_BRANCH",
|
1757
|
-
"BRANCH"
|
1758
|
-
];
|
1759
2003
|
async function getCurrentBranchName(options) {
|
1760
|
-
const
|
1761
|
-
if (
|
1762
|
-
const details = await getDatabaseBranch(
|
2004
|
+
const { branch, envBranch } = getEnvironment();
|
2005
|
+
if (branch) {
|
2006
|
+
const details = await getDatabaseBranch(branch, options);
|
1763
2007
|
if (details)
|
1764
|
-
return
|
1765
|
-
console.warn(`Branch ${
|
2008
|
+
return branch;
|
2009
|
+
console.warn(`Branch ${branch} not found in Xata. Ignoring...`);
|
1766
2010
|
}
|
1767
|
-
const gitBranch = await getGitBranch();
|
2011
|
+
const gitBranch = envBranch || await getGitBranch();
|
1768
2012
|
return resolveXataBranch(gitBranch, options);
|
1769
2013
|
}
|
1770
2014
|
async function getCurrentBranchDetails(options) {
|
@@ -1775,18 +2019,24 @@ async function resolveXataBranch(gitBranch, options) {
|
|
1775
2019
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1776
2020
|
const apiKey = options?.apiKey || getAPIKey();
|
1777
2021
|
if (!databaseURL)
|
1778
|
-
throw new Error(
|
2022
|
+
throw new Error(
|
2023
|
+
"A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
|
2024
|
+
);
|
1779
2025
|
if (!apiKey)
|
1780
|
-
throw new Error(
|
2026
|
+
throw new Error(
|
2027
|
+
"An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
|
2028
|
+
);
|
1781
2029
|
const [protocol, , host, , dbName] = databaseURL.split("/");
|
1782
2030
|
const [workspace] = host.split(".");
|
2031
|
+
const { fallbackBranch } = getEnvironment();
|
1783
2032
|
const { branch } = await resolveBranch({
|
1784
2033
|
apiKey,
|
1785
2034
|
apiUrl: databaseURL,
|
1786
2035
|
fetchImpl: getFetchImplementation(options?.fetchImpl),
|
1787
2036
|
workspacesApiUrl: `${protocol}//${host}`,
|
1788
2037
|
pathParams: { dbName, workspace },
|
1789
|
-
queryParams: { gitBranch, fallbackBranch
|
2038
|
+
queryParams: { gitBranch, fallbackBranch },
|
2039
|
+
trace: defaultTrace
|
1790
2040
|
});
|
1791
2041
|
return branch;
|
1792
2042
|
}
|
@@ -1794,9 +2044,13 @@ async function getDatabaseBranch(branch, options) {
|
|
1794
2044
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1795
2045
|
const apiKey = options?.apiKey || getAPIKey();
|
1796
2046
|
if (!databaseURL)
|
1797
|
-
throw new Error(
|
2047
|
+
throw new Error(
|
2048
|
+
"A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
|
2049
|
+
);
|
1798
2050
|
if (!apiKey)
|
1799
|
-
throw new Error(
|
2051
|
+
throw new Error(
|
2052
|
+
"An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
|
2053
|
+
);
|
1800
2054
|
const [protocol, , host, , database] = databaseURL.split("/");
|
1801
2055
|
const [workspace] = host.split(".");
|
1802
2056
|
const dbBranchName = `${database}:${branch}`;
|
@@ -1806,10 +2060,8 @@ async function getDatabaseBranch(branch, options) {
|
|
1806
2060
|
apiUrl: databaseURL,
|
1807
2061
|
fetchImpl: getFetchImplementation(options?.fetchImpl),
|
1808
2062
|
workspacesApiUrl: `${protocol}//${host}`,
|
1809
|
-
pathParams: {
|
1810
|
-
|
1811
|
-
workspace
|
1812
|
-
}
|
2063
|
+
pathParams: { dbBranchName, workspace },
|
2064
|
+
trace: defaultTrace
|
1813
2065
|
});
|
1814
2066
|
} catch (err) {
|
1815
2067
|
if (isObject(err) && err.status === 404)
|
@@ -1817,21 +2069,10 @@ async function getDatabaseBranch(branch, options) {
|
|
1817
2069
|
throw err;
|
1818
2070
|
}
|
1819
2071
|
}
|
1820
|
-
function getBranchByEnvVariable() {
|
1821
|
-
for (const name of envBranchNames) {
|
1822
|
-
const value = getEnvVariable(name);
|
1823
|
-
if (value) {
|
1824
|
-
return value;
|
1825
|
-
}
|
1826
|
-
}
|
1827
|
-
try {
|
1828
|
-
return XATA_BRANCH;
|
1829
|
-
} catch (err) {
|
1830
|
-
}
|
1831
|
-
}
|
1832
2072
|
function getDatabaseURL() {
|
1833
2073
|
try {
|
1834
|
-
|
2074
|
+
const { databaseURL } = getEnvironment();
|
2075
|
+
return databaseURL;
|
1835
2076
|
} catch (err) {
|
1836
2077
|
return void 0;
|
1837
2078
|
}
|
@@ -1860,20 +2101,23 @@ var __privateMethod = (obj, member, method) => {
|
|
1860
2101
|
return method;
|
1861
2102
|
};
|
1862
2103
|
const buildClient = (plugins) => {
|
1863
|
-
var _branch, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
|
2104
|
+
var _branch, _options, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
|
1864
2105
|
return _a = class {
|
1865
|
-
constructor(options = {},
|
2106
|
+
constructor(options = {}, schemaTables) {
|
1866
2107
|
__privateAdd(this, _parseOptions);
|
1867
2108
|
__privateAdd(this, _getFetchProps);
|
1868
2109
|
__privateAdd(this, _evaluateBranch);
|
1869
2110
|
__privateAdd(this, _branch, void 0);
|
2111
|
+
__privateAdd(this, _options, void 0);
|
1870
2112
|
const safeOptions = __privateMethod(this, _parseOptions, parseOptions_fn).call(this, options);
|
2113
|
+
__privateSet(this, _options, safeOptions);
|
1871
2114
|
const pluginOptions = {
|
1872
2115
|
getFetchProps: () => __privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
|
1873
|
-
cache: safeOptions.cache
|
2116
|
+
cache: safeOptions.cache,
|
2117
|
+
trace: safeOptions.trace
|
1874
2118
|
};
|
1875
|
-
const db = new SchemaPlugin(
|
1876
|
-
const search = new SearchPlugin(db).build(pluginOptions);
|
2119
|
+
const db = new SchemaPlugin(schemaTables).build(pluginOptions);
|
2120
|
+
const search = new SearchPlugin(db, schemaTables).build(pluginOptions);
|
1877
2121
|
this.db = db;
|
1878
2122
|
this.search = search;
|
1879
2123
|
for (const [key, namespace] of Object.entries(plugins ?? {})) {
|
@@ -1889,22 +2133,26 @@ const buildClient = (plugins) => {
|
|
1889
2133
|
}
|
1890
2134
|
}
|
1891
2135
|
}
|
1892
|
-
|
2136
|
+
async getConfig() {
|
2137
|
+
const databaseURL = __privateGet(this, _options).databaseURL;
|
2138
|
+
const branch = await __privateGet(this, _options).branch();
|
2139
|
+
return { databaseURL, branch };
|
2140
|
+
}
|
2141
|
+
}, _branch = new WeakMap(), _options = new WeakMap(), _parseOptions = new WeakSet(), parseOptions_fn = function(options) {
|
1893
2142
|
const fetch = getFetchImplementation(options?.fetch);
|
1894
2143
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1895
2144
|
const apiKey = options?.apiKey || getAPIKey();
|
1896
|
-
const cache = options?.cache ?? new SimpleCache({
|
2145
|
+
const cache = options?.cache ?? new SimpleCache({ defaultQueryTTL: 0 });
|
2146
|
+
const trace = options?.trace ?? defaultTrace;
|
1897
2147
|
const branch = async () => options?.branch !== void 0 ? await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, options.branch) : await getCurrentBranchName({ apiKey, databaseURL, fetchImpl: options?.fetch });
|
1898
|
-
if (!
|
1899
|
-
throw new Error("
|
2148
|
+
if (!apiKey) {
|
2149
|
+
throw new Error("Option apiKey is required");
|
1900
2150
|
}
|
1901
|
-
|
1902
|
-
|
1903
|
-
|
1904
|
-
apiKey,
|
1905
|
-
|
1906
|
-
branch
|
1907
|
-
}) {
|
2151
|
+
if (!databaseURL) {
|
2152
|
+
throw new Error("Option databaseURL is required");
|
2153
|
+
}
|
2154
|
+
return { fetch, databaseURL, apiKey, branch, cache, trace };
|
2155
|
+
}, _getFetchProps = new WeakSet(), getFetchProps_fn = async function({ fetch, apiKey, databaseURL, branch, trace }) {
|
1908
2156
|
const branchValue = await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, branch);
|
1909
2157
|
if (!branchValue)
|
1910
2158
|
throw new Error("Unable to resolve branch value");
|
@@ -1916,7 +2164,8 @@ const buildClient = (plugins) => {
|
|
1916
2164
|
const hasBranch = params.dbBranchName ?? params.branch;
|
1917
2165
|
const newPath = path.replace(/^\/db\/[^/]+/, hasBranch ? `:${branchValue}` : "");
|
1918
2166
|
return databaseURL + newPath;
|
1919
|
-
}
|
2167
|
+
},
|
2168
|
+
trace
|
1920
2169
|
};
|
1921
2170
|
}, _evaluateBranch = new WeakSet(), evaluateBranch_fn = async function(param) {
|
1922
2171
|
if (__privateGet(this, _branch))
|
@@ -1939,6 +2188,88 @@ const buildClient = (plugins) => {
|
|
1939
2188
|
class BaseClient extends buildClient() {
|
1940
2189
|
}
|
1941
2190
|
|
2191
|
+
const META = "__";
|
2192
|
+
const VALUE = "___";
|
2193
|
+
class Serializer {
|
2194
|
+
constructor() {
|
2195
|
+
this.classes = {};
|
2196
|
+
}
|
2197
|
+
add(clazz) {
|
2198
|
+
this.classes[clazz.name] = clazz;
|
2199
|
+
}
|
2200
|
+
toJSON(data) {
|
2201
|
+
function visit(obj) {
|
2202
|
+
if (Array.isArray(obj))
|
2203
|
+
return obj.map(visit);
|
2204
|
+
const type = typeof obj;
|
2205
|
+
if (type === "undefined")
|
2206
|
+
return { [META]: "undefined" };
|
2207
|
+
if (type === "bigint")
|
2208
|
+
return { [META]: "bigint", [VALUE]: obj.toString() };
|
2209
|
+
if (obj === null || type !== "object")
|
2210
|
+
return obj;
|
2211
|
+
const constructor = obj.constructor;
|
2212
|
+
const o = { [META]: constructor.name };
|
2213
|
+
for (const [key, value] of Object.entries(obj)) {
|
2214
|
+
o[key] = visit(value);
|
2215
|
+
}
|
2216
|
+
if (constructor === Date)
|
2217
|
+
o[VALUE] = obj.toISOString();
|
2218
|
+
if (constructor === Map)
|
2219
|
+
o[VALUE] = Object.fromEntries(obj);
|
2220
|
+
if (constructor === Set)
|
2221
|
+
o[VALUE] = [...obj];
|
2222
|
+
return o;
|
2223
|
+
}
|
2224
|
+
return JSON.stringify(visit(data));
|
2225
|
+
}
|
2226
|
+
fromJSON(json) {
|
2227
|
+
return JSON.parse(json, (key, value) => {
|
2228
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
2229
|
+
const { [META]: clazz, [VALUE]: val, ...rest } = value;
|
2230
|
+
const constructor = this.classes[clazz];
|
2231
|
+
if (constructor) {
|
2232
|
+
return Object.assign(Object.create(constructor.prototype), rest);
|
2233
|
+
}
|
2234
|
+
if (clazz === "Date")
|
2235
|
+
return new Date(val);
|
2236
|
+
if (clazz === "Set")
|
2237
|
+
return new Set(val);
|
2238
|
+
if (clazz === "Map")
|
2239
|
+
return new Map(Object.entries(val));
|
2240
|
+
if (clazz === "bigint")
|
2241
|
+
return BigInt(val);
|
2242
|
+
if (clazz === "undefined")
|
2243
|
+
return void 0;
|
2244
|
+
return rest;
|
2245
|
+
}
|
2246
|
+
return value;
|
2247
|
+
});
|
2248
|
+
}
|
2249
|
+
}
|
2250
|
+
const defaultSerializer = new Serializer();
|
2251
|
+
const serialize = (data) => {
|
2252
|
+
return defaultSerializer.toJSON(data);
|
2253
|
+
};
|
2254
|
+
const deserialize = (json) => {
|
2255
|
+
return defaultSerializer.fromJSON(json);
|
2256
|
+
};
|
2257
|
+
|
2258
|
+
function buildWorkerRunner(config) {
|
2259
|
+
return function xataWorker(name, _worker) {
|
2260
|
+
return async (...args) => {
|
2261
|
+
const url = process.env.NODE_ENV === "development" ? `http://localhost:64749/${name}` : `https://dispatcher.xata.workers.dev/${config.workspace}/${config.worker}/${name}`;
|
2262
|
+
const result = await fetch(url, {
|
2263
|
+
method: "POST",
|
2264
|
+
headers: { "Content-Type": "application/json" },
|
2265
|
+
body: serialize({ args })
|
2266
|
+
});
|
2267
|
+
const text = await result.text();
|
2268
|
+
return deserialize(text);
|
2269
|
+
};
|
2270
|
+
};
|
2271
|
+
}
|
2272
|
+
|
1942
2273
|
class XataError extends Error {
|
1943
2274
|
constructor(message, status) {
|
1944
2275
|
super(message);
|
@@ -1954,10 +2285,12 @@ exports.PAGINATION_MAX_OFFSET = PAGINATION_MAX_OFFSET;
|
|
1954
2285
|
exports.PAGINATION_MAX_SIZE = PAGINATION_MAX_SIZE;
|
1955
2286
|
exports.Page = Page;
|
1956
2287
|
exports.Query = Query;
|
2288
|
+
exports.RecordArray = RecordArray;
|
1957
2289
|
exports.Repository = Repository;
|
1958
2290
|
exports.RestRepository = RestRepository;
|
1959
2291
|
exports.SchemaPlugin = SchemaPlugin;
|
1960
2292
|
exports.SearchPlugin = SearchPlugin;
|
2293
|
+
exports.Serializer = Serializer;
|
1961
2294
|
exports.SimpleCache = SimpleCache;
|
1962
2295
|
exports.XataApiClient = XataApiClient;
|
1963
2296
|
exports.XataApiPlugin = XataApiPlugin;
|
@@ -1967,6 +2300,7 @@ exports.acceptWorkspaceMemberInvite = acceptWorkspaceMemberInvite;
|
|
1967
2300
|
exports.addGitBranchesEntry = addGitBranchesEntry;
|
1968
2301
|
exports.addTableColumn = addTableColumn;
|
1969
2302
|
exports.buildClient = buildClient;
|
2303
|
+
exports.buildWorkerRunner = buildWorkerRunner;
|
1970
2304
|
exports.bulkInsertTableRecords = bulkInsertTableRecords;
|
1971
2305
|
exports.cancelWorkspaceMemberInvite = cancelWorkspaceMemberInvite;
|
1972
2306
|
exports.contains = contains;
|
@@ -1983,7 +2317,9 @@ exports.deleteTable = deleteTable;
|
|
1983
2317
|
exports.deleteUser = deleteUser;
|
1984
2318
|
exports.deleteUserAPIKey = deleteUserAPIKey;
|
1985
2319
|
exports.deleteWorkspace = deleteWorkspace;
|
2320
|
+
exports.deserialize = deserialize;
|
1986
2321
|
exports.endsWith = endsWith;
|
2322
|
+
exports.equals = equals;
|
1987
2323
|
exports.executeBranchMigrationPlan = executeBranchMigrationPlan;
|
1988
2324
|
exports.exists = exists;
|
1989
2325
|
exports.ge = ge;
|
@@ -1998,6 +2334,7 @@ exports.getColumn = getColumn;
|
|
1998
2334
|
exports.getCurrentBranchDetails = getCurrentBranchDetails;
|
1999
2335
|
exports.getCurrentBranchName = getCurrentBranchName;
|
2000
2336
|
exports.getDatabaseList = getDatabaseList;
|
2337
|
+
exports.getDatabaseMetadata = getDatabaseMetadata;
|
2001
2338
|
exports.getDatabaseURL = getDatabaseURL;
|
2002
2339
|
exports.getGitBranchesMapping = getGitBranchesMapping;
|
2003
2340
|
exports.getRecord = getRecord;
|
@@ -2008,6 +2345,9 @@ exports.getUserAPIKeys = getUserAPIKeys;
|
|
2008
2345
|
exports.getWorkspace = getWorkspace;
|
2009
2346
|
exports.getWorkspaceMembersList = getWorkspaceMembersList;
|
2010
2347
|
exports.getWorkspacesList = getWorkspacesList;
|
2348
|
+
exports.greaterEquals = greaterEquals;
|
2349
|
+
exports.greaterThan = greaterThan;
|
2350
|
+
exports.greaterThanEquals = greaterThanEquals;
|
2011
2351
|
exports.gt = gt;
|
2012
2352
|
exports.gte = gte;
|
2013
2353
|
exports.includes = includes;
|
@@ -2023,6 +2363,9 @@ exports.isIdentifiable = isIdentifiable;
|
|
2023
2363
|
exports.isNot = isNot;
|
2024
2364
|
exports.isXataRecord = isXataRecord;
|
2025
2365
|
exports.le = le;
|
2366
|
+
exports.lessEquals = lessEquals;
|
2367
|
+
exports.lessThan = lessThan;
|
2368
|
+
exports.lessThanEquals = lessThanEquals;
|
2026
2369
|
exports.lt = lt;
|
2027
2370
|
exports.lte = lte;
|
2028
2371
|
exports.notExists = notExists;
|
@@ -2035,6 +2378,7 @@ exports.resendWorkspaceMemberInvite = resendWorkspaceMemberInvite;
|
|
2035
2378
|
exports.resolveBranch = resolveBranch;
|
2036
2379
|
exports.searchBranch = searchBranch;
|
2037
2380
|
exports.searchTable = searchTable;
|
2381
|
+
exports.serialize = serialize;
|
2038
2382
|
exports.setTableSchema = setTableSchema;
|
2039
2383
|
exports.startsWith = startsWith;
|
2040
2384
|
exports.updateBranchMetadata = updateBranchMetadata;
|
@@ -2043,6 +2387,7 @@ exports.updateRecordWithID = updateRecordWithID;
|
|
2043
2387
|
exports.updateTable = updateTable;
|
2044
2388
|
exports.updateUser = updateUser;
|
2045
2389
|
exports.updateWorkspace = updateWorkspace;
|
2390
|
+
exports.updateWorkspaceMemberInvite = updateWorkspaceMemberInvite;
|
2046
2391
|
exports.updateWorkspaceMemberRole = updateWorkspaceMemberRole;
|
2047
2392
|
exports.upsertRecordWithID = upsertRecordWithID;
|
2048
2393
|
//# sourceMappingURL=index.cjs.map
|