@xata.io/client 0.0.0-alpha.vfd071d9 → 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/.eslintrc.cjs +1 -2
- package/CHANGELOG.md +162 -0
- package/README.md +273 -1
- package/Usage.md +449 -0
- package/dist/index.cjs +915 -475
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +994 -242
- package/dist/index.mjs +882 -476
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -4
- package/tsconfig.json +1 -0
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
|
}
|
@@ -11,46 +53,101 @@ function compact(arr) {
|
|
11
53
|
function isObject(value) {
|
12
54
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
13
55
|
}
|
56
|
+
function isDefined(value) {
|
57
|
+
return value !== null && value !== void 0;
|
58
|
+
}
|
14
59
|
function isString(value) {
|
15
|
-
return value
|
60
|
+
return isDefined(value) && typeof value === "string";
|
61
|
+
}
|
62
|
+
function isStringArray(value) {
|
63
|
+
return isDefined(value) && Array.isArray(value) && value.every(isString);
|
16
64
|
}
|
17
65
|
function toBase64(value) {
|
18
66
|
try {
|
19
67
|
return btoa(value);
|
20
68
|
} catch (err) {
|
21
|
-
|
69
|
+
const buf = Buffer;
|
70
|
+
return buf.from(value).toString("base64");
|
22
71
|
}
|
23
72
|
}
|
24
73
|
|
25
|
-
function
|
74
|
+
function getEnvironment() {
|
26
75
|
try {
|
27
|
-
if (isObject(process) &&
|
28
|
-
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
|
+
};
|
29
84
|
}
|
30
85
|
} catch (err) {
|
31
86
|
}
|
32
87
|
try {
|
33
|
-
if (isObject(Deno) &&
|
34
|
-
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
|
+
};
|
35
96
|
}
|
36
97
|
} catch (err) {
|
37
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
|
+
}
|
38
134
|
}
|
39
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"] };
|
40
140
|
try {
|
41
141
|
if (typeof require === "function") {
|
42
|
-
|
43
|
-
return req("child_process").execSync("git branch --show-current", { encoding: "utf-8" }).trim();
|
142
|
+
return require(nodeModule).execSync(fullCmd, execOptions).trim();
|
44
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();
|
45
146
|
} catch (err) {
|
46
147
|
}
|
47
148
|
try {
|
48
149
|
if (isObject(Deno)) {
|
49
|
-
const process2 = Deno.run({
|
50
|
-
cmd: ["git", "branch", "--show-current"],
|
51
|
-
stdout: "piped",
|
52
|
-
stderr: "piped"
|
53
|
-
});
|
150
|
+
const process2 = Deno.run({ cmd, stdout: "piped", stderr: "null" });
|
54
151
|
return new TextDecoder().decode(await process2.output()).trim();
|
55
152
|
}
|
56
153
|
} catch (err) {
|
@@ -59,7 +156,8 @@ async function getGitBranch() {
|
|
59
156
|
|
60
157
|
function getAPIKey() {
|
61
158
|
try {
|
62
|
-
|
159
|
+
const { apiKey } = getEnvironment();
|
160
|
+
return apiKey;
|
63
161
|
} catch (err) {
|
64
162
|
return void 0;
|
65
163
|
}
|
@@ -69,21 +167,35 @@ function getFetchImplementation(userFetch) {
|
|
69
167
|
const globalFetch = typeof fetch !== "undefined" ? fetch : void 0;
|
70
168
|
const fetchImpl = userFetch ?? globalFetch;
|
71
169
|
if (!fetchImpl) {
|
72
|
-
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
|
+
);
|
73
173
|
}
|
74
174
|
return fetchImpl;
|
75
175
|
}
|
76
176
|
|
77
|
-
|
78
|
-
|
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) {
|
79
186
|
super(getMessage(data));
|
80
187
|
this.status = status;
|
81
188
|
this.errors = isBulkError(data) ? data.errors : void 0;
|
189
|
+
this.requestId = requestId;
|
82
190
|
if (data instanceof Error) {
|
83
191
|
this.stack = data.stack;
|
84
192
|
this.cause = data.cause;
|
85
193
|
}
|
86
194
|
}
|
195
|
+
toString() {
|
196
|
+
const error = super.toString();
|
197
|
+
return `[${this.status}] (${this.requestId ?? "Unknown"}): ${error}`;
|
198
|
+
}
|
87
199
|
}
|
88
200
|
function isBulkError(error) {
|
89
201
|
return isObject(error) && Array.isArray(error.errors);
|
@@ -106,7 +218,12 @@ function getMessage(data) {
|
|
106
218
|
}
|
107
219
|
|
108
220
|
const resolveUrl = (url, queryParams = {}, pathParams = {}) => {
|
109
|
-
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();
|
110
227
|
const queryString = query.length > 0 ? `?${query}` : "";
|
111
228
|
return url.replace(/\{\w*\}/g, (key) => pathParams[key.slice(1, -1)]) + queryString;
|
112
229
|
};
|
@@ -136,32 +253,62 @@ async function fetch$1({
|
|
136
253
|
fetchImpl,
|
137
254
|
apiKey,
|
138
255
|
apiUrl,
|
139
|
-
workspacesApiUrl
|
256
|
+
workspacesApiUrl,
|
257
|
+
trace
|
140
258
|
}) {
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
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) {
|
157
307
|
try {
|
158
|
-
const
|
159
|
-
|
160
|
-
return jsonResponse;
|
161
|
-
}
|
162
|
-
throw new FetcherError(response.status, jsonResponse);
|
308
|
+
const { host, protocol } = new URL(url);
|
309
|
+
return { host, protocol };
|
163
310
|
} catch (error) {
|
164
|
-
|
311
|
+
return {};
|
165
312
|
}
|
166
313
|
}
|
167
314
|
|
@@ -220,6 +367,7 @@ const removeWorkspaceMember = (variables) => fetch$1({
|
|
220
367
|
...variables
|
221
368
|
});
|
222
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 });
|
223
371
|
const cancelWorkspaceMemberInvite = (variables) => fetch$1({
|
224
372
|
url: "/workspaces/{workspaceId}/invites/{inviteId}",
|
225
373
|
method: "delete",
|
@@ -255,6 +403,11 @@ const deleteDatabase = (variables) => fetch$1({
|
|
255
403
|
method: "delete",
|
256
404
|
...variables
|
257
405
|
});
|
406
|
+
const getDatabaseMetadata = (variables) => fetch$1({
|
407
|
+
url: "/dbs/{dbName}/metadata",
|
408
|
+
method: "get",
|
409
|
+
...variables
|
410
|
+
});
|
258
411
|
const getGitBranchesMapping = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "get", ...variables });
|
259
412
|
const addGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "post", ...variables });
|
260
413
|
const removeGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "delete", ...variables });
|
@@ -268,11 +421,7 @@ const getBranchDetails = (variables) => fetch$1({
|
|
268
421
|
method: "get",
|
269
422
|
...variables
|
270
423
|
});
|
271
|
-
const createBranch = (variables) => fetch$1({
|
272
|
-
url: "/db/{dbBranchName}",
|
273
|
-
method: "put",
|
274
|
-
...variables
|
275
|
-
});
|
424
|
+
const createBranch = (variables) => fetch$1({ url: "/db/{dbBranchName}", method: "put", ...variables });
|
276
425
|
const deleteBranch = (variables) => fetch$1({
|
277
426
|
url: "/db/{dbBranchName}",
|
278
427
|
method: "delete",
|
@@ -346,11 +495,7 @@ const updateColumn = (variables) => fetch$1({
|
|
346
495
|
method: "patch",
|
347
496
|
...variables
|
348
497
|
});
|
349
|
-
const insertRecord = (variables) => fetch$1({
|
350
|
-
url: "/db/{dbBranchName}/tables/{tableName}/data",
|
351
|
-
method: "post",
|
352
|
-
...variables
|
353
|
-
});
|
498
|
+
const insertRecord = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data", method: "post", ...variables });
|
354
499
|
const insertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "put", ...variables });
|
355
500
|
const updateRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "patch", ...variables });
|
356
501
|
const upsertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "post", ...variables });
|
@@ -370,6 +515,11 @@ const queryTable = (variables) => fetch$1({
|
|
370
515
|
method: "post",
|
371
516
|
...variables
|
372
517
|
});
|
518
|
+
const searchTable = (variables) => fetch$1({
|
519
|
+
url: "/db/{dbBranchName}/tables/{tableName}/search",
|
520
|
+
method: "post",
|
521
|
+
...variables
|
522
|
+
});
|
373
523
|
const searchBranch = (variables) => fetch$1({
|
374
524
|
url: "/db/{dbBranchName}/search",
|
375
525
|
method: "post",
|
@@ -387,6 +537,7 @@ const operationsByTag = {
|
|
387
537
|
updateWorkspaceMemberRole,
|
388
538
|
removeWorkspaceMember,
|
389
539
|
inviteWorkspaceMember,
|
540
|
+
updateWorkspaceMemberInvite,
|
390
541
|
cancelWorkspaceMemberInvite,
|
391
542
|
resendWorkspaceMemberInvite,
|
392
543
|
acceptWorkspaceMemberInvite
|
@@ -395,6 +546,7 @@ const operationsByTag = {
|
|
395
546
|
getDatabaseList,
|
396
547
|
createDatabase,
|
397
548
|
deleteDatabase,
|
549
|
+
getDatabaseMetadata,
|
398
550
|
getGitBranchesMapping,
|
399
551
|
addGitBranchesEntry,
|
400
552
|
removeGitBranchesEntry,
|
@@ -433,6 +585,7 @@ const operationsByTag = {
|
|
433
585
|
getRecord,
|
434
586
|
bulkInsertTableRecords,
|
435
587
|
queryTable,
|
588
|
+
searchTable,
|
436
589
|
searchBranch
|
437
590
|
}
|
438
591
|
};
|
@@ -466,7 +619,7 @@ var __accessCheck$7 = (obj, member, msg) => {
|
|
466
619
|
if (!member.has(obj))
|
467
620
|
throw TypeError("Cannot " + msg);
|
468
621
|
};
|
469
|
-
var __privateGet$
|
622
|
+
var __privateGet$7 = (obj, member, getter) => {
|
470
623
|
__accessCheck$7(obj, member, "read from private field");
|
471
624
|
return getter ? getter.call(obj) : member.get(obj);
|
472
625
|
};
|
@@ -475,7 +628,7 @@ var __privateAdd$7 = (obj, member, value) => {
|
|
475
628
|
throw TypeError("Cannot add the same private member more than once");
|
476
629
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
477
630
|
};
|
478
|
-
var __privateSet$
|
631
|
+
var __privateSet$7 = (obj, member, value, setter) => {
|
479
632
|
__accessCheck$7(obj, member, "write to private field");
|
480
633
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
481
634
|
return value;
|
@@ -486,46 +639,48 @@ class XataApiClient {
|
|
486
639
|
__privateAdd$7(this, _extraProps, void 0);
|
487
640
|
__privateAdd$7(this, _namespaces, {});
|
488
641
|
const provider = options.host ?? "production";
|
489
|
-
const apiKey = options
|
642
|
+
const apiKey = options.apiKey ?? getAPIKey();
|
643
|
+
const trace = options.trace ?? defaultTrace;
|
490
644
|
if (!apiKey) {
|
491
645
|
throw new Error("Could not resolve a valid apiKey");
|
492
646
|
}
|
493
|
-
__privateSet$
|
647
|
+
__privateSet$7(this, _extraProps, {
|
494
648
|
apiUrl: getHostUrl(provider, "main"),
|
495
649
|
workspacesApiUrl: getHostUrl(provider, "workspaces"),
|
496
650
|
fetchImpl: getFetchImplementation(options.fetch),
|
497
|
-
apiKey
|
651
|
+
apiKey,
|
652
|
+
trace
|
498
653
|
});
|
499
654
|
}
|
500
655
|
get user() {
|
501
|
-
if (!__privateGet$
|
502
|
-
__privateGet$
|
503
|
-
return __privateGet$
|
656
|
+
if (!__privateGet$7(this, _namespaces).user)
|
657
|
+
__privateGet$7(this, _namespaces).user = new UserApi(__privateGet$7(this, _extraProps));
|
658
|
+
return __privateGet$7(this, _namespaces).user;
|
504
659
|
}
|
505
660
|
get workspaces() {
|
506
|
-
if (!__privateGet$
|
507
|
-
__privateGet$
|
508
|
-
return __privateGet$
|
661
|
+
if (!__privateGet$7(this, _namespaces).workspaces)
|
662
|
+
__privateGet$7(this, _namespaces).workspaces = new WorkspaceApi(__privateGet$7(this, _extraProps));
|
663
|
+
return __privateGet$7(this, _namespaces).workspaces;
|
509
664
|
}
|
510
665
|
get databases() {
|
511
|
-
if (!__privateGet$
|
512
|
-
__privateGet$
|
513
|
-
return __privateGet$
|
666
|
+
if (!__privateGet$7(this, _namespaces).databases)
|
667
|
+
__privateGet$7(this, _namespaces).databases = new DatabaseApi(__privateGet$7(this, _extraProps));
|
668
|
+
return __privateGet$7(this, _namespaces).databases;
|
514
669
|
}
|
515
670
|
get branches() {
|
516
|
-
if (!__privateGet$
|
517
|
-
__privateGet$
|
518
|
-
return __privateGet$
|
671
|
+
if (!__privateGet$7(this, _namespaces).branches)
|
672
|
+
__privateGet$7(this, _namespaces).branches = new BranchApi(__privateGet$7(this, _extraProps));
|
673
|
+
return __privateGet$7(this, _namespaces).branches;
|
519
674
|
}
|
520
675
|
get tables() {
|
521
|
-
if (!__privateGet$
|
522
|
-
__privateGet$
|
523
|
-
return __privateGet$
|
676
|
+
if (!__privateGet$7(this, _namespaces).tables)
|
677
|
+
__privateGet$7(this, _namespaces).tables = new TableApi(__privateGet$7(this, _extraProps));
|
678
|
+
return __privateGet$7(this, _namespaces).tables;
|
524
679
|
}
|
525
680
|
get records() {
|
526
|
-
if (!__privateGet$
|
527
|
-
__privateGet$
|
528
|
-
return __privateGet$
|
681
|
+
if (!__privateGet$7(this, _namespaces).records)
|
682
|
+
__privateGet$7(this, _namespaces).records = new RecordsApi(__privateGet$7(this, _extraProps));
|
683
|
+
return __privateGet$7(this, _namespaces).records;
|
529
684
|
}
|
530
685
|
}
|
531
686
|
_extraProps = new WeakMap();
|
@@ -617,6 +772,13 @@ class WorkspaceApi {
|
|
617
772
|
...this.extraProps
|
618
773
|
});
|
619
774
|
}
|
775
|
+
updateWorkspaceMemberInvite(workspaceId, inviteId, role) {
|
776
|
+
return operationsByTag.workspaces.updateWorkspaceMemberInvite({
|
777
|
+
pathParams: { workspaceId, inviteId },
|
778
|
+
body: { role },
|
779
|
+
...this.extraProps
|
780
|
+
});
|
781
|
+
}
|
620
782
|
cancelWorkspaceMemberInvite(workspaceId, inviteId) {
|
621
783
|
return operationsByTag.workspaces.cancelWorkspaceMemberInvite({
|
622
784
|
pathParams: { workspaceId, inviteId },
|
@@ -659,6 +821,12 @@ class DatabaseApi {
|
|
659
821
|
...this.extraProps
|
660
822
|
});
|
661
823
|
}
|
824
|
+
getDatabaseMetadata(workspace, dbName) {
|
825
|
+
return operationsByTag.database.getDatabaseMetadata({
|
826
|
+
pathParams: { workspace, dbName },
|
827
|
+
...this.extraProps
|
828
|
+
});
|
829
|
+
}
|
662
830
|
getGitBranchesMapping(workspace, dbName) {
|
663
831
|
return operationsByTag.database.getGitBranchesMapping({
|
664
832
|
pathParams: { workspace, dbName },
|
@@ -679,10 +847,10 @@ class DatabaseApi {
|
|
679
847
|
...this.extraProps
|
680
848
|
});
|
681
849
|
}
|
682
|
-
resolveBranch(workspace, dbName, gitBranch) {
|
850
|
+
resolveBranch(workspace, dbName, gitBranch, fallbackBranch) {
|
683
851
|
return operationsByTag.database.resolveBranch({
|
684
852
|
pathParams: { workspace, dbName },
|
685
|
-
queryParams: { gitBranch },
|
853
|
+
queryParams: { gitBranch, fallbackBranch },
|
686
854
|
...this.extraProps
|
687
855
|
});
|
688
856
|
}
|
@@ -703,10 +871,10 @@ class BranchApi {
|
|
703
871
|
...this.extraProps
|
704
872
|
});
|
705
873
|
}
|
706
|
-
createBranch(workspace, database, branch, from
|
874
|
+
createBranch(workspace, database, branch, from, options = {}) {
|
707
875
|
return operationsByTag.branch.createBranch({
|
708
876
|
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
709
|
-
queryParams: { from },
|
877
|
+
queryParams: isString(from) ? { from } : void 0,
|
710
878
|
body: options,
|
711
879
|
...this.extraProps
|
712
880
|
});
|
@@ -831,9 +999,10 @@ class RecordsApi {
|
|
831
999
|
constructor(extraProps) {
|
832
1000
|
this.extraProps = extraProps;
|
833
1001
|
}
|
834
|
-
insertRecord(workspace, database, branch, tableName, record) {
|
1002
|
+
insertRecord(workspace, database, branch, tableName, record, options = {}) {
|
835
1003
|
return operationsByTag.records.insertRecord({
|
836
1004
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1005
|
+
queryParams: options,
|
837
1006
|
body: record,
|
838
1007
|
...this.extraProps
|
839
1008
|
});
|
@@ -862,21 +1031,24 @@ class RecordsApi {
|
|
862
1031
|
...this.extraProps
|
863
1032
|
});
|
864
1033
|
}
|
865
|
-
deleteRecord(workspace, database, branch, tableName, recordId) {
|
1034
|
+
deleteRecord(workspace, database, branch, tableName, recordId, options = {}) {
|
866
1035
|
return operationsByTag.records.deleteRecord({
|
867
1036
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
|
1037
|
+
queryParams: options,
|
868
1038
|
...this.extraProps
|
869
1039
|
});
|
870
1040
|
}
|
871
1041
|
getRecord(workspace, database, branch, tableName, recordId, options = {}) {
|
872
1042
|
return operationsByTag.records.getRecord({
|
873
1043
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
|
1044
|
+
queryParams: options,
|
874
1045
|
...this.extraProps
|
875
1046
|
});
|
876
1047
|
}
|
877
|
-
bulkInsertTableRecords(workspace, database, branch, tableName, records) {
|
1048
|
+
bulkInsertTableRecords(workspace, database, branch, tableName, records, options = {}) {
|
878
1049
|
return operationsByTag.records.bulkInsertTableRecords({
|
879
1050
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1051
|
+
queryParams: options,
|
880
1052
|
body: { records },
|
881
1053
|
...this.extraProps
|
882
1054
|
});
|
@@ -888,6 +1060,13 @@ class RecordsApi {
|
|
888
1060
|
...this.extraProps
|
889
1061
|
});
|
890
1062
|
}
|
1063
|
+
searchTable(workspace, database, branch, tableName, query) {
|
1064
|
+
return operationsByTag.records.searchTable({
|
1065
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1066
|
+
body: query,
|
1067
|
+
...this.extraProps
|
1068
|
+
});
|
1069
|
+
}
|
891
1070
|
searchBranch(workspace, database, branch, query) {
|
892
1071
|
return operationsByTag.records.searchBranch({
|
893
1072
|
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
@@ -911,7 +1090,7 @@ var __accessCheck$6 = (obj, member, msg) => {
|
|
911
1090
|
if (!member.has(obj))
|
912
1091
|
throw TypeError("Cannot " + msg);
|
913
1092
|
};
|
914
|
-
var __privateGet$
|
1093
|
+
var __privateGet$6 = (obj, member, getter) => {
|
915
1094
|
__accessCheck$6(obj, member, "read from private field");
|
916
1095
|
return getter ? getter.call(obj) : member.get(obj);
|
917
1096
|
};
|
@@ -920,30 +1099,30 @@ var __privateAdd$6 = (obj, member, value) => {
|
|
920
1099
|
throw TypeError("Cannot add the same private member more than once");
|
921
1100
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
922
1101
|
};
|
923
|
-
var __privateSet$
|
1102
|
+
var __privateSet$6 = (obj, member, value, setter) => {
|
924
1103
|
__accessCheck$6(obj, member, "write to private field");
|
925
1104
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
926
1105
|
return value;
|
927
1106
|
};
|
928
|
-
var _query;
|
1107
|
+
var _query, _page;
|
929
1108
|
class Page {
|
930
1109
|
constructor(query, meta, records = []) {
|
931
1110
|
__privateAdd$6(this, _query, void 0);
|
932
|
-
__privateSet$
|
1111
|
+
__privateSet$6(this, _query, query);
|
933
1112
|
this.meta = meta;
|
934
|
-
this.records = records;
|
1113
|
+
this.records = new RecordArray(this, records);
|
935
1114
|
}
|
936
1115
|
async nextPage(size, offset) {
|
937
|
-
return __privateGet$
|
1116
|
+
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, after: this.meta.page.cursor } });
|
938
1117
|
}
|
939
1118
|
async previousPage(size, offset) {
|
940
|
-
return __privateGet$
|
1119
|
+
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, before: this.meta.page.cursor } });
|
941
1120
|
}
|
942
1121
|
async firstPage(size, offset) {
|
943
|
-
return __privateGet$
|
1122
|
+
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, first: this.meta.page.cursor } });
|
944
1123
|
}
|
945
1124
|
async lastPage(size, offset) {
|
946
|
-
return __privateGet$
|
1125
|
+
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, last: this.meta.page.cursor } });
|
947
1126
|
}
|
948
1127
|
hasNextPage() {
|
949
1128
|
return this.meta.page.more;
|
@@ -951,15 +1130,62 @@ class Page {
|
|
951
1130
|
}
|
952
1131
|
_query = new WeakMap();
|
953
1132
|
const PAGINATION_MAX_SIZE = 200;
|
954
|
-
const PAGINATION_DEFAULT_SIZE =
|
1133
|
+
const PAGINATION_DEFAULT_SIZE = 20;
|
955
1134
|
const PAGINATION_MAX_OFFSET = 800;
|
956
1135
|
const PAGINATION_DEFAULT_OFFSET = 0;
|
1136
|
+
function isCursorPaginationOptions(options) {
|
1137
|
+
return isDefined(options) && (isDefined(options.first) || isDefined(options.last) || isDefined(options.after) || isDefined(options.before));
|
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();
|
957
1183
|
|
958
1184
|
var __accessCheck$5 = (obj, member, msg) => {
|
959
1185
|
if (!member.has(obj))
|
960
1186
|
throw TypeError("Cannot " + msg);
|
961
1187
|
};
|
962
|
-
var __privateGet$
|
1188
|
+
var __privateGet$5 = (obj, member, getter) => {
|
963
1189
|
__accessCheck$5(obj, member, "read from private field");
|
964
1190
|
return getter ? getter.call(obj) : member.get(obj);
|
965
1191
|
};
|
@@ -968,34 +1194,35 @@ var __privateAdd$5 = (obj, member, value) => {
|
|
968
1194
|
throw TypeError("Cannot add the same private member more than once");
|
969
1195
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
970
1196
|
};
|
971
|
-
var __privateSet$
|
1197
|
+
var __privateSet$5 = (obj, member, value, setter) => {
|
972
1198
|
__accessCheck$5(obj, member, "write to private field");
|
973
1199
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
974
1200
|
return value;
|
975
1201
|
};
|
976
1202
|
var _table$1, _repository, _data;
|
977
1203
|
const _Query = class {
|
978
|
-
constructor(repository, table, data,
|
1204
|
+
constructor(repository, table, data, rawParent) {
|
979
1205
|
__privateAdd$5(this, _table$1, void 0);
|
980
1206
|
__privateAdd$5(this, _repository, void 0);
|
981
1207
|
__privateAdd$5(this, _data, { filter: {} });
|
982
1208
|
this.meta = { page: { cursor: "start", more: true } };
|
983
|
-
this.records = [];
|
984
|
-
__privateSet$
|
1209
|
+
this.records = new RecordArray(this, []);
|
1210
|
+
__privateSet$5(this, _table$1, table);
|
985
1211
|
if (repository) {
|
986
|
-
__privateSet$
|
1212
|
+
__privateSet$5(this, _repository, repository);
|
987
1213
|
} else {
|
988
|
-
__privateSet$
|
1214
|
+
__privateSet$5(this, _repository, this);
|
989
1215
|
}
|
990
|
-
|
991
|
-
__privateGet$
|
992
|
-
__privateGet$
|
993
|
-
__privateGet$
|
994
|
-
__privateGet$
|
995
|
-
__privateGet$
|
996
|
-
__privateGet$
|
997
|
-
__privateGet$
|
998
|
-
__privateGet$
|
1216
|
+
const parent = cleanParent(data, rawParent);
|
1217
|
+
__privateGet$5(this, _data).filter = data.filter ?? parent?.filter ?? {};
|
1218
|
+
__privateGet$5(this, _data).filter.$any = data.filter?.$any ?? parent?.filter?.$any;
|
1219
|
+
__privateGet$5(this, _data).filter.$all = data.filter?.$all ?? parent?.filter?.$all;
|
1220
|
+
__privateGet$5(this, _data).filter.$not = data.filter?.$not ?? parent?.filter?.$not;
|
1221
|
+
__privateGet$5(this, _data).filter.$none = data.filter?.$none ?? parent?.filter?.$none;
|
1222
|
+
__privateGet$5(this, _data).sort = data.sort ?? parent?.sort;
|
1223
|
+
__privateGet$5(this, _data).columns = data.columns ?? parent?.columns ?? ["*"];
|
1224
|
+
__privateGet$5(this, _data).pagination = data.pagination ?? parent?.pagination;
|
1225
|
+
__privateGet$5(this, _data).cache = data.cache ?? parent?.cache;
|
999
1226
|
this.any = this.any.bind(this);
|
1000
1227
|
this.all = this.all.bind(this);
|
1001
1228
|
this.not = this.not.bind(this);
|
@@ -1006,83 +1233,93 @@ const _Query = class {
|
|
1006
1233
|
Object.defineProperty(this, "repository", { enumerable: false });
|
1007
1234
|
}
|
1008
1235
|
getQueryOptions() {
|
1009
|
-
return __privateGet$
|
1236
|
+
return __privateGet$5(this, _data);
|
1010
1237
|
}
|
1011
1238
|
key() {
|
1012
|
-
const { columns = [], filter = {}, sort = [],
|
1013
|
-
const key = JSON.stringify({ columns, filter, sort,
|
1239
|
+
const { columns = [], filter = {}, sort = [], pagination = {} } = __privateGet$5(this, _data);
|
1240
|
+
const key = JSON.stringify({ columns, filter, sort, pagination });
|
1014
1241
|
return toBase64(key);
|
1015
1242
|
}
|
1016
1243
|
any(...queries) {
|
1017
1244
|
const $any = queries.map((query) => query.getQueryOptions().filter ?? {});
|
1018
|
-
return new _Query(__privateGet$
|
1245
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $any } }, __privateGet$5(this, _data));
|
1019
1246
|
}
|
1020
1247
|
all(...queries) {
|
1021
1248
|
const $all = queries.map((query) => query.getQueryOptions().filter ?? {});
|
1022
|
-
return new _Query(__privateGet$
|
1249
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
|
1023
1250
|
}
|
1024
1251
|
not(...queries) {
|
1025
1252
|
const $not = queries.map((query) => query.getQueryOptions().filter ?? {});
|
1026
|
-
return new _Query(__privateGet$
|
1253
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $not } }, __privateGet$5(this, _data));
|
1027
1254
|
}
|
1028
1255
|
none(...queries) {
|
1029
1256
|
const $none = queries.map((query) => query.getQueryOptions().filter ?? {});
|
1030
|
-
return new _Query(__privateGet$
|
1257
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $none } }, __privateGet$5(this, _data));
|
1031
1258
|
}
|
1032
1259
|
filter(a, b) {
|
1033
1260
|
if (arguments.length === 1) {
|
1034
1261
|
const constraints = Object.entries(a).map(([column, constraint]) => ({ [column]: constraint }));
|
1035
|
-
const $all = compact([__privateGet$
|
1036
|
-
return new _Query(__privateGet$
|
1262
|
+
const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat(constraints));
|
1263
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
|
1037
1264
|
} else {
|
1038
|
-
const $all = compact([__privateGet$
|
1039
|
-
return new _Query(__privateGet$
|
1265
|
+
const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat([{ [a]: b }]));
|
1266
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
|
1040
1267
|
}
|
1041
1268
|
}
|
1042
|
-
sort(column, direction) {
|
1043
|
-
const originalSort = [__privateGet$
|
1269
|
+
sort(column, direction = "asc") {
|
1270
|
+
const originalSort = [__privateGet$5(this, _data).sort ?? []].flat();
|
1044
1271
|
const sort = [...originalSort, { column, direction }];
|
1045
|
-
return new _Query(__privateGet$
|
1272
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { sort }, __privateGet$5(this, _data));
|
1046
1273
|
}
|
1047
1274
|
select(columns) {
|
1048
|
-
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
|
+
);
|
1049
1281
|
}
|
1050
1282
|
getPaginated(options = {}) {
|
1051
|
-
const query = new _Query(__privateGet$
|
1052
|
-
return __privateGet$
|
1283
|
+
const query = new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), options, __privateGet$5(this, _data));
|
1284
|
+
return __privateGet$5(this, _repository).query(query);
|
1053
1285
|
}
|
1054
1286
|
async *[Symbol.asyncIterator]() {
|
1055
|
-
for await (const [record] of this.getIterator(1)) {
|
1287
|
+
for await (const [record] of this.getIterator({ batchSize: 1 })) {
|
1056
1288
|
yield record;
|
1057
1289
|
}
|
1058
1290
|
}
|
1059
|
-
async *getIterator(
|
1060
|
-
|
1061
|
-
let
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1291
|
+
async *getIterator(options = {}) {
|
1292
|
+
const { batchSize = 1 } = options;
|
1293
|
+
let page = await this.getPaginated({ ...options, pagination: { size: batchSize, offset: 0 } });
|
1294
|
+
let more = page.hasNextPage();
|
1295
|
+
yield page.records;
|
1296
|
+
while (more) {
|
1297
|
+
page = await page.nextPage();
|
1298
|
+
more = page.hasNextPage();
|
1299
|
+
yield page.records;
|
1067
1300
|
}
|
1068
1301
|
}
|
1069
1302
|
async getMany(options = {}) {
|
1070
|
-
const
|
1071
|
-
|
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;
|
1072
1308
|
}
|
1073
|
-
async getAll(
|
1309
|
+
async getAll(options = {}) {
|
1310
|
+
const { batchSize = PAGINATION_MAX_SIZE, ...rest } = options;
|
1074
1311
|
const results = [];
|
1075
|
-
for await (const page of this.getIterator(
|
1312
|
+
for await (const page of this.getIterator({ ...rest, batchSize })) {
|
1076
1313
|
results.push(...page);
|
1077
1314
|
}
|
1078
1315
|
return results;
|
1079
1316
|
}
|
1080
1317
|
async getFirst(options = {}) {
|
1081
|
-
const records = await this.getMany({ ...options,
|
1082
|
-
return records[0]
|
1318
|
+
const records = await this.getMany({ ...options, pagination: { size: 1 } });
|
1319
|
+
return records[0] ?? null;
|
1083
1320
|
}
|
1084
1321
|
cache(ttl) {
|
1085
|
-
return new _Query(__privateGet$
|
1322
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { cache: ttl }, __privateGet$5(this, _data));
|
1086
1323
|
}
|
1087
1324
|
nextPage(size, offset) {
|
1088
1325
|
return this.firstPage(size, offset);
|
@@ -1091,10 +1328,10 @@ const _Query = class {
|
|
1091
1328
|
return this.firstPage(size, offset);
|
1092
1329
|
}
|
1093
1330
|
firstPage(size, offset) {
|
1094
|
-
return this.getPaginated({
|
1331
|
+
return this.getPaginated({ pagination: { size, offset } });
|
1095
1332
|
}
|
1096
1333
|
lastPage(size, offset) {
|
1097
|
-
return this.getPaginated({
|
1334
|
+
return this.getPaginated({ pagination: { size, offset, before: "end" } });
|
1098
1335
|
}
|
1099
1336
|
hasNextPage() {
|
1100
1337
|
return this.meta.page.more;
|
@@ -1104,12 +1341,20 @@ let Query = _Query;
|
|
1104
1341
|
_table$1 = new WeakMap();
|
1105
1342
|
_repository = new WeakMap();
|
1106
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
|
+
}
|
1107
1350
|
|
1108
1351
|
function isIdentifiable(x) {
|
1109
1352
|
return isObject(x) && isString(x?.id);
|
1110
1353
|
}
|
1111
1354
|
function isXataRecord(x) {
|
1112
|
-
|
1355
|
+
const record = x;
|
1356
|
+
const metadata = record?.getMetadata();
|
1357
|
+
return isIdentifiable(x) && isObject(metadata) && typeof metadata.version === "number";
|
1113
1358
|
}
|
1114
1359
|
|
1115
1360
|
function isSortFilterString(value) {
|
@@ -1139,7 +1384,7 @@ var __accessCheck$4 = (obj, member, msg) => {
|
|
1139
1384
|
if (!member.has(obj))
|
1140
1385
|
throw TypeError("Cannot " + msg);
|
1141
1386
|
};
|
1142
|
-
var __privateGet$
|
1387
|
+
var __privateGet$4 = (obj, member, getter) => {
|
1143
1388
|
__accessCheck$4(obj, member, "read from private field");
|
1144
1389
|
return getter ? getter.call(obj) : member.get(obj);
|
1145
1390
|
};
|
@@ -1148,7 +1393,7 @@ var __privateAdd$4 = (obj, member, value) => {
|
|
1148
1393
|
throw TypeError("Cannot add the same private member more than once");
|
1149
1394
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1150
1395
|
};
|
1151
|
-
var __privateSet$
|
1396
|
+
var __privateSet$4 = (obj, member, value, setter) => {
|
1152
1397
|
__accessCheck$4(obj, member, "write to private field");
|
1153
1398
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1154
1399
|
return value;
|
@@ -1157,7 +1402,7 @@ var __privateMethod$2 = (obj, member, method) => {
|
|
1157
1402
|
__accessCheck$4(obj, member, "access private method");
|
1158
1403
|
return method;
|
1159
1404
|
};
|
1160
|
-
var _table,
|
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;
|
1161
1406
|
class Repository extends Query {
|
1162
1407
|
}
|
1163
1408
|
class RestRepository extends Query {
|
@@ -1169,292 +1414,324 @@ class RestRepository extends Query {
|
|
1169
1414
|
__privateAdd$4(this, _updateRecordWithID);
|
1170
1415
|
__privateAdd$4(this, _upsertRecordWithID);
|
1171
1416
|
__privateAdd$4(this, _deleteRecord);
|
1172
|
-
__privateAdd$4(this, _invalidateCache);
|
1173
|
-
__privateAdd$4(this, _setCacheRecord);
|
1174
|
-
__privateAdd$4(this, _getCacheRecord);
|
1175
1417
|
__privateAdd$4(this, _setCacheQuery);
|
1176
1418
|
__privateAdd$4(this, _getCacheQuery);
|
1419
|
+
__privateAdd$4(this, _getSchemaTables$1);
|
1177
1420
|
__privateAdd$4(this, _table, void 0);
|
1178
|
-
__privateAdd$4(this, _links, void 0);
|
1179
1421
|
__privateAdd$4(this, _getFetchProps, void 0);
|
1422
|
+
__privateAdd$4(this, _db, void 0);
|
1180
1423
|
__privateAdd$4(this, _cache, void 0);
|
1181
|
-
|
1182
|
-
|
1183
|
-
__privateSet$
|
1184
|
-
this
|
1185
|
-
__privateSet$
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
if (a === "")
|
1195
|
-
throw new Error("The id can't be empty");
|
1196
|
-
const record = await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b);
|
1197
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1198
|
-
return record;
|
1199
|
-
}
|
1200
|
-
if (isObject(a) && isString(a.id)) {
|
1201
|
-
if (a.id === "")
|
1202
|
-
throw new Error("The id can't be empty");
|
1203
|
-
const record = await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 });
|
1204
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1205
|
-
return record;
|
1206
|
-
}
|
1207
|
-
if (isObject(a)) {
|
1208
|
-
const record = await __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a);
|
1209
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1210
|
-
return record;
|
1211
|
-
}
|
1212
|
-
throw new Error("Invalid arguments for create method");
|
1213
|
-
}
|
1214
|
-
async read(recordId) {
|
1215
|
-
const cacheRecord = await __privateMethod$2(this, _getCacheRecord, getCacheRecord_fn).call(this, recordId);
|
1216
|
-
if (cacheRecord)
|
1217
|
-
return cacheRecord;
|
1218
|
-
const fetchProps = await __privateGet$3(this, _getFetchProps).call(this);
|
1219
|
-
try {
|
1220
|
-
const response = await getRecord({
|
1221
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$3(this, _table), recordId },
|
1222
|
-
...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
|
1223
1437
|
});
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
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);
|
1228
1447
|
}
|
1229
|
-
|
1230
|
-
|
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
|
+
});
|
1231
1466
|
}
|
1232
|
-
async
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
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);
|
1236
1480
|
}
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
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
|
+
});
|
1252
1506
|
}
|
1253
|
-
async
|
1254
|
-
|
1255
|
-
if (a
|
1256
|
-
|
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)));
|
1257
1517
|
}
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
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
|
+
});
|
1273
1550
|
}
|
1274
1551
|
async delete(a) {
|
1275
|
-
|
1276
|
-
if (a
|
1277
|
-
|
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;
|
1278
1561
|
}
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
await __privateMethod$2(this, _invalidateCache, invalidateCache_fn).call(this, a.id);
|
1290
|
-
return;
|
1291
|
-
}
|
1292
|
-
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
|
+
});
|
1293
1572
|
}
|
1294
1573
|
async search(query, options = {}) {
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
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));
|
1300
1590
|
});
|
1301
|
-
return records.map((item) => initObject(this.db, __privateGet$3(this, _links), __privateGet$3(this, _table), item));
|
1302
1591
|
}
|
1303
1592
|
async query(query) {
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
|
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);
|
1319
1614
|
});
|
1320
|
-
const records = objects.map((record) => initObject(this.db, __privateGet$3(this, _links), __privateGet$3(this, _table), record));
|
1321
|
-
await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
|
1322
|
-
return new Page(query, meta, records);
|
1323
1615
|
}
|
1324
1616
|
}
|
1325
1617
|
_table = new WeakMap();
|
1326
|
-
_links = new WeakMap();
|
1327
1618
|
_getFetchProps = new WeakMap();
|
1619
|
+
_db = new WeakMap();
|
1328
1620
|
_cache = new WeakMap();
|
1621
|
+
_schemaTables$2 = new WeakMap();
|
1622
|
+
_trace = new WeakMap();
|
1329
1623
|
_insertRecordWithoutId = new WeakSet();
|
1330
|
-
insertRecordWithoutId_fn = async function(object) {
|
1331
|
-
const fetchProps = await __privateGet$
|
1624
|
+
insertRecordWithoutId_fn = async function(object, columns = ["*"]) {
|
1625
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1332
1626
|
const record = transformObjectLinks(object);
|
1333
1627
|
const response = await insertRecord({
|
1334
1628
|
pathParams: {
|
1335
1629
|
workspace: "{workspaceId}",
|
1336
1630
|
dbBranchName: "{dbBranch}",
|
1337
|
-
tableName: __privateGet$
|
1631
|
+
tableName: __privateGet$4(this, _table)
|
1338
1632
|
},
|
1633
|
+
queryParams: { columns },
|
1339
1634
|
body: record,
|
1340
1635
|
...fetchProps
|
1341
1636
|
});
|
1342
|
-
const
|
1343
|
-
|
1344
|
-
throw new Error("The server failed to save the record");
|
1345
|
-
}
|
1346
|
-
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);
|
1347
1639
|
};
|
1348
1640
|
_insertRecordWithId = new WeakSet();
|
1349
|
-
insertRecordWithId_fn = async function(recordId, object) {
|
1350
|
-
const fetchProps = await __privateGet$
|
1641
|
+
insertRecordWithId_fn = async function(recordId, object, columns = ["*"]) {
|
1642
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1351
1643
|
const record = transformObjectLinks(object);
|
1352
1644
|
const response = await insertRecordWithID({
|
1353
1645
|
pathParams: {
|
1354
1646
|
workspace: "{workspaceId}",
|
1355
1647
|
dbBranchName: "{dbBranch}",
|
1356
|
-
tableName: __privateGet$
|
1648
|
+
tableName: __privateGet$4(this, _table),
|
1357
1649
|
recordId
|
1358
1650
|
},
|
1359
1651
|
body: record,
|
1360
|
-
queryParams: { createOnly: true },
|
1652
|
+
queryParams: { createOnly: true, columns },
|
1361
1653
|
...fetchProps
|
1362
1654
|
});
|
1363
|
-
const
|
1364
|
-
|
1365
|
-
throw new Error("The server failed to save the record");
|
1366
|
-
}
|
1367
|
-
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);
|
1368
1657
|
};
|
1369
1658
|
_bulkInsertTableRecords = new WeakSet();
|
1370
|
-
bulkInsertTableRecords_fn = async function(objects) {
|
1371
|
-
const fetchProps = await __privateGet$
|
1659
|
+
bulkInsertTableRecords_fn = async function(objects, columns = ["*"]) {
|
1660
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1372
1661
|
const records = objects.map((object) => transformObjectLinks(object));
|
1373
1662
|
const response = await bulkInsertTableRecords({
|
1374
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$
|
1663
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
|
1664
|
+
queryParams: { columns },
|
1375
1665
|
body: { records },
|
1376
1666
|
...fetchProps
|
1377
1667
|
});
|
1378
|
-
|
1379
|
-
|
1380
|
-
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");
|
1381
1670
|
}
|
1382
|
-
|
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));
|
1383
1673
|
};
|
1384
1674
|
_updateRecordWithID = new WeakSet();
|
1385
|
-
updateRecordWithID_fn = async function(recordId, object) {
|
1386
|
-
const fetchProps = await __privateGet$
|
1675
|
+
updateRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
|
1676
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1387
1677
|
const record = transformObjectLinks(object);
|
1388
1678
|
const response = await updateRecordWithID({
|
1389
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$
|
1679
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1680
|
+
queryParams: { columns },
|
1390
1681
|
body: record,
|
1391
1682
|
...fetchProps
|
1392
1683
|
});
|
1393
|
-
const
|
1394
|
-
|
1395
|
-
throw new Error("The server failed to save the record");
|
1396
|
-
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);
|
1397
1686
|
};
|
1398
1687
|
_upsertRecordWithID = new WeakSet();
|
1399
|
-
upsertRecordWithID_fn = async function(recordId, object) {
|
1400
|
-
const fetchProps = await __privateGet$
|
1688
|
+
upsertRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
|
1689
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1401
1690
|
const response = await upsertRecordWithID({
|
1402
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$
|
1691
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1692
|
+
queryParams: { columns },
|
1403
1693
|
body: object,
|
1404
1694
|
...fetchProps
|
1405
1695
|
});
|
1406
|
-
const
|
1407
|
-
|
1408
|
-
throw new Error("The server failed to save the record");
|
1409
|
-
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);
|
1410
1698
|
};
|
1411
1699
|
_deleteRecord = new WeakSet();
|
1412
1700
|
deleteRecord_fn = async function(recordId) {
|
1413
|
-
const fetchProps = await __privateGet$
|
1701
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1414
1702
|
await deleteRecord({
|
1415
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$
|
1703
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1416
1704
|
...fetchProps
|
1417
1705
|
});
|
1418
1706
|
};
|
1419
|
-
_invalidateCache = new WeakSet();
|
1420
|
-
invalidateCache_fn = async function(recordId) {
|
1421
|
-
await __privateGet$3(this, _cache).delete(`rec_${__privateGet$3(this, _table)}:${recordId}`);
|
1422
|
-
const cacheItems = await __privateGet$3(this, _cache).getAll();
|
1423
|
-
const queries = Object.entries(cacheItems).filter(([key]) => key.startsWith("query_"));
|
1424
|
-
for (const [key, value] of queries) {
|
1425
|
-
const ids = getIds(value);
|
1426
|
-
if (ids.includes(recordId))
|
1427
|
-
await __privateGet$3(this, _cache).delete(key);
|
1428
|
-
}
|
1429
|
-
};
|
1430
|
-
_setCacheRecord = new WeakSet();
|
1431
|
-
setCacheRecord_fn = async function(record) {
|
1432
|
-
if (!__privateGet$3(this, _cache).cacheRecords)
|
1433
|
-
return;
|
1434
|
-
await __privateGet$3(this, _cache).set(`rec_${__privateGet$3(this, _table)}:${record.id}`, record);
|
1435
|
-
};
|
1436
|
-
_getCacheRecord = new WeakSet();
|
1437
|
-
getCacheRecord_fn = async function(recordId) {
|
1438
|
-
if (!__privateGet$3(this, _cache).cacheRecords)
|
1439
|
-
return null;
|
1440
|
-
return __privateGet$3(this, _cache).get(`rec_${__privateGet$3(this, _table)}:${recordId}`);
|
1441
|
-
};
|
1442
1707
|
_setCacheQuery = new WeakSet();
|
1443
1708
|
setCacheQuery_fn = async function(query, meta, records) {
|
1444
|
-
await __privateGet$
|
1709
|
+
await __privateGet$4(this, _cache).set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: new Date(), meta, records });
|
1445
1710
|
};
|
1446
1711
|
_getCacheQuery = new WeakSet();
|
1447
1712
|
getCacheQuery_fn = async function(query) {
|
1448
|
-
const key = `query_${__privateGet$
|
1449
|
-
const result = await __privateGet$
|
1713
|
+
const key = `query_${__privateGet$4(this, _table)}:${query.key()}`;
|
1714
|
+
const result = await __privateGet$4(this, _cache).get(key);
|
1450
1715
|
if (!result)
|
1451
1716
|
return null;
|
1452
|
-
const { cache: ttl = __privateGet$
|
1453
|
-
if (
|
1454
|
-
return
|
1717
|
+
const { cache: ttl = __privateGet$4(this, _cache).defaultQueryTTL } = query.getQueryOptions();
|
1718
|
+
if (ttl < 0)
|
1719
|
+
return null;
|
1455
1720
|
const hasExpired = result.date.getTime() + ttl < Date.now();
|
1456
1721
|
return hasExpired ? null : result;
|
1457
1722
|
};
|
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);
|
1727
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1728
|
+
const { schema } = await getBranchDetails({
|
1729
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1730
|
+
...fetchProps
|
1731
|
+
});
|
1732
|
+
__privateSet$4(this, _schemaTables$2, schema.tables);
|
1733
|
+
return schema.tables;
|
1734
|
+
};
|
1458
1735
|
const transformObjectLinks = (object) => {
|
1459
1736
|
return Object.entries(object).reduce((acc, [key, value]) => {
|
1460
1737
|
if (key === "xata")
|
@@ -1462,47 +1739,63 @@ const transformObjectLinks = (object) => {
|
|
1462
1739
|
return { ...acc, [key]: isIdentifiable(value) ? value.id : value };
|
1463
1740
|
}, {});
|
1464
1741
|
};
|
1465
|
-
const initObject = (db,
|
1742
|
+
const initObject = (db, schemaTables, table, object) => {
|
1466
1743
|
const result = {};
|
1467
|
-
|
1468
|
-
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1472
|
-
|
1473
|
-
|
1744
|
+
const { xata, ...rest } = object ?? {};
|
1745
|
+
Object.assign(result, rest);
|
1746
|
+
const { columns } = schemaTables.find(({ name }) => name === table) ?? {};
|
1747
|
+
if (!columns)
|
1748
|
+
console.error(`Table ${table} not found in schema`);
|
1749
|
+
for (const column of columns ?? []) {
|
1750
|
+
const value = result[column.name];
|
1751
|
+
switch (column.type) {
|
1752
|
+
case "datetime": {
|
1753
|
+
const date = value !== void 0 ? new Date(value) : void 0;
|
1754
|
+
if (date && isNaN(date.getTime())) {
|
1755
|
+
console.error(`Failed to parse date ${value} for field ${column.name}`);
|
1756
|
+
} else if (date) {
|
1757
|
+
result[column.name] = date;
|
1758
|
+
}
|
1759
|
+
break;
|
1760
|
+
}
|
1761
|
+
case "link": {
|
1762
|
+
const linkTable = column.link?.table;
|
1763
|
+
if (!linkTable) {
|
1764
|
+
console.error(`Failed to parse link for field ${column.name}`);
|
1765
|
+
} else if (isObject(value)) {
|
1766
|
+
result[column.name] = initObject(db, schemaTables, linkTable, value);
|
1767
|
+
}
|
1768
|
+
break;
|
1769
|
+
}
|
1474
1770
|
}
|
1475
1771
|
}
|
1476
|
-
result.read = function() {
|
1477
|
-
return db[table].read(result["id"]);
|
1772
|
+
result.read = function(columns2) {
|
1773
|
+
return db[table].read(result["id"], columns2);
|
1478
1774
|
};
|
1479
|
-
result.update = function(data) {
|
1480
|
-
return db[table].update(result["id"], data);
|
1775
|
+
result.update = function(data, columns2) {
|
1776
|
+
return db[table].update(result["id"], data, columns2);
|
1481
1777
|
};
|
1482
1778
|
result.delete = function() {
|
1483
1779
|
return db[table].delete(result["id"]);
|
1484
1780
|
};
|
1485
|
-
|
1781
|
+
result.getMetadata = function() {
|
1782
|
+
return xata;
|
1783
|
+
};
|
1784
|
+
for (const prop of ["read", "update", "delete", "getMetadata"]) {
|
1486
1785
|
Object.defineProperty(result, prop, { enumerable: false });
|
1487
1786
|
}
|
1488
1787
|
Object.freeze(result);
|
1489
1788
|
return result;
|
1490
1789
|
};
|
1491
|
-
function
|
1492
|
-
|
1493
|
-
return value.map((item) => getIds(item)).flat();
|
1494
|
-
}
|
1495
|
-
if (!isObject(value))
|
1496
|
-
return [];
|
1497
|
-
const nestedIds = Object.values(value).map((item) => getIds(item)).flat();
|
1498
|
-
return isString(value.id) ? [value.id, ...nestedIds] : nestedIds;
|
1790
|
+
function isResponseWithRecords(value) {
|
1791
|
+
return isObject(value) && Array.isArray(value.records);
|
1499
1792
|
}
|
1500
1793
|
|
1501
1794
|
var __accessCheck$3 = (obj, member, msg) => {
|
1502
1795
|
if (!member.has(obj))
|
1503
1796
|
throw TypeError("Cannot " + msg);
|
1504
1797
|
};
|
1505
|
-
var __privateGet$
|
1798
|
+
var __privateGet$3 = (obj, member, getter) => {
|
1506
1799
|
__accessCheck$3(obj, member, "read from private field");
|
1507
1800
|
return getter ? getter.call(obj) : member.get(obj);
|
1508
1801
|
};
|
@@ -1511,7 +1804,7 @@ var __privateAdd$3 = (obj, member, value) => {
|
|
1511
1804
|
throw TypeError("Cannot add the same private member more than once");
|
1512
1805
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1513
1806
|
};
|
1514
|
-
var __privateSet$
|
1807
|
+
var __privateSet$3 = (obj, member, value, setter) => {
|
1515
1808
|
__accessCheck$3(obj, member, "write to private field");
|
1516
1809
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1517
1810
|
return value;
|
@@ -1520,46 +1813,52 @@ var _map;
|
|
1520
1813
|
class SimpleCache {
|
1521
1814
|
constructor(options = {}) {
|
1522
1815
|
__privateAdd$3(this, _map, void 0);
|
1523
|
-
__privateSet$
|
1816
|
+
__privateSet$3(this, _map, /* @__PURE__ */ new Map());
|
1524
1817
|
this.capacity = options.max ?? 500;
|
1525
|
-
this.cacheRecords = options.cacheRecords ?? true;
|
1526
1818
|
this.defaultQueryTTL = options.defaultQueryTTL ?? 60 * 1e3;
|
1527
1819
|
}
|
1528
1820
|
async getAll() {
|
1529
|
-
return Object.fromEntries(__privateGet$
|
1821
|
+
return Object.fromEntries(__privateGet$3(this, _map));
|
1530
1822
|
}
|
1531
1823
|
async get(key) {
|
1532
|
-
return __privateGet$
|
1824
|
+
return __privateGet$3(this, _map).get(key) ?? null;
|
1533
1825
|
}
|
1534
1826
|
async set(key, value) {
|
1535
1827
|
await this.delete(key);
|
1536
|
-
__privateGet$
|
1537
|
-
if (__privateGet$
|
1538
|
-
const leastRecentlyUsed = __privateGet$
|
1828
|
+
__privateGet$3(this, _map).set(key, value);
|
1829
|
+
if (__privateGet$3(this, _map).size > this.capacity) {
|
1830
|
+
const leastRecentlyUsed = __privateGet$3(this, _map).keys().next().value;
|
1539
1831
|
await this.delete(leastRecentlyUsed);
|
1540
1832
|
}
|
1541
1833
|
}
|
1542
1834
|
async delete(key) {
|
1543
|
-
__privateGet$
|
1835
|
+
__privateGet$3(this, _map).delete(key);
|
1544
1836
|
}
|
1545
1837
|
async clear() {
|
1546
|
-
return __privateGet$
|
1838
|
+
return __privateGet$3(this, _map).clear();
|
1547
1839
|
}
|
1548
1840
|
}
|
1549
1841
|
_map = new WeakMap();
|
1550
1842
|
|
1551
|
-
const
|
1552
|
-
const
|
1553
|
-
const
|
1554
|
-
const
|
1555
|
-
const
|
1556
|
-
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;
|
1557
1855
|
const exists = (column) => ({ $exists: column });
|
1558
1856
|
const notExists = (column) => ({ $notExists: column });
|
1559
1857
|
const startsWith = (value) => ({ $startsWith: value });
|
1560
1858
|
const endsWith = (value) => ({ $endsWith: value });
|
1561
1859
|
const pattern = (value) => ({ $pattern: value });
|
1562
1860
|
const is = (value) => ({ $is: value });
|
1861
|
+
const equals = is;
|
1563
1862
|
const isNot = (value) => ({ $isNot: value });
|
1564
1863
|
const contains = (value) => ({ $contains: value });
|
1565
1864
|
const includes = (value) => ({ $includes: value });
|
@@ -1571,7 +1870,7 @@ var __accessCheck$2 = (obj, member, msg) => {
|
|
1571
1870
|
if (!member.has(obj))
|
1572
1871
|
throw TypeError("Cannot " + msg);
|
1573
1872
|
};
|
1574
|
-
var __privateGet$
|
1873
|
+
var __privateGet$2 = (obj, member, getter) => {
|
1575
1874
|
__accessCheck$2(obj, member, "read from private field");
|
1576
1875
|
return getter ? getter.call(obj) : member.get(obj);
|
1577
1876
|
};
|
@@ -1580,130 +1879,178 @@ var __privateAdd$2 = (obj, member, value) => {
|
|
1580
1879
|
throw TypeError("Cannot add the same private member more than once");
|
1581
1880
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1582
1881
|
};
|
1583
|
-
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;
|
1584
1888
|
class SchemaPlugin extends XataPlugin {
|
1585
|
-
constructor(
|
1889
|
+
constructor(schemaTables) {
|
1586
1890
|
super();
|
1587
|
-
this.links = links;
|
1588
|
-
this.tableNames = tableNames;
|
1589
1891
|
__privateAdd$2(this, _tables, {});
|
1892
|
+
__privateAdd$2(this, _schemaTables$1, void 0);
|
1893
|
+
__privateSet$2(this, _schemaTables$1, schemaTables);
|
1590
1894
|
}
|
1591
1895
|
build(pluginOptions) {
|
1592
|
-
const
|
1593
|
-
|
1594
|
-
|
1595
|
-
|
1596
|
-
|
1597
|
-
|
1598
|
-
__privateGet$
|
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];
|
1599
1906
|
}
|
1600
|
-
return __privateGet$1(this, _tables)[table];
|
1601
1907
|
}
|
1602
|
-
|
1603
|
-
|
1604
|
-
|
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) });
|
1605
1912
|
}
|
1606
1913
|
return db;
|
1607
1914
|
}
|
1608
1915
|
}
|
1609
1916
|
_tables = new WeakMap();
|
1917
|
+
_schemaTables$1 = new WeakMap();
|
1610
1918
|
|
1611
1919
|
var __accessCheck$1 = (obj, member, msg) => {
|
1612
1920
|
if (!member.has(obj))
|
1613
1921
|
throw TypeError("Cannot " + msg);
|
1614
1922
|
};
|
1923
|
+
var __privateGet$1 = (obj, member, getter) => {
|
1924
|
+
__accessCheck$1(obj, member, "read from private field");
|
1925
|
+
return getter ? getter.call(obj) : member.get(obj);
|
1926
|
+
};
|
1615
1927
|
var __privateAdd$1 = (obj, member, value) => {
|
1616
1928
|
if (member.has(obj))
|
1617
1929
|
throw TypeError("Cannot add the same private member more than once");
|
1618
1930
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1619
1931
|
};
|
1932
|
+
var __privateSet$1 = (obj, member, value, setter) => {
|
1933
|
+
__accessCheck$1(obj, member, "write to private field");
|
1934
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
1935
|
+
return value;
|
1936
|
+
};
|
1620
1937
|
var __privateMethod$1 = (obj, member, method) => {
|
1621
1938
|
__accessCheck$1(obj, member, "access private method");
|
1622
1939
|
return method;
|
1623
1940
|
};
|
1624
|
-
var _search, search_fn;
|
1941
|
+
var _schemaTables, _search, search_fn, _getSchemaTables, getSchemaTables_fn;
|
1625
1942
|
class SearchPlugin extends XataPlugin {
|
1626
|
-
constructor(db,
|
1943
|
+
constructor(db, schemaTables) {
|
1627
1944
|
super();
|
1628
1945
|
this.db = db;
|
1629
|
-
this.links = links;
|
1630
1946
|
__privateAdd$1(this, _search);
|
1947
|
+
__privateAdd$1(this, _getSchemaTables);
|
1948
|
+
__privateAdd$1(this, _schemaTables, void 0);
|
1949
|
+
__privateSet$1(this, _schemaTables, schemaTables);
|
1631
1950
|
}
|
1632
1951
|
build({ getFetchProps }) {
|
1633
1952
|
return {
|
1634
1953
|
all: async (query, options = {}) => {
|
1635
1954
|
const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
|
1955
|
+
const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
|
1636
1956
|
return records.map((record) => {
|
1637
1957
|
const { table = "orphan" } = record.xata;
|
1638
|
-
return { table, record: initObject(this.db,
|
1958
|
+
return { table, record: initObject(this.db, schemaTables, table, record) };
|
1639
1959
|
});
|
1640
1960
|
},
|
1641
1961
|
byTable: async (query, options = {}) => {
|
1642
1962
|
const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
|
1963
|
+
const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
|
1643
1964
|
return records.reduce((acc, record) => {
|
1644
1965
|
const { table = "orphan" } = record.xata;
|
1645
1966
|
const items = acc[table] ?? [];
|
1646
|
-
const item = initObject(this.db,
|
1967
|
+
const item = initObject(this.db, schemaTables, table, record);
|
1647
1968
|
return { ...acc, [table]: [...items, item] };
|
1648
1969
|
}, {});
|
1649
1970
|
}
|
1650
1971
|
};
|
1651
1972
|
}
|
1652
1973
|
}
|
1974
|
+
_schemaTables = new WeakMap();
|
1653
1975
|
_search = new WeakSet();
|
1654
1976
|
search_fn = async function(query, options, getFetchProps) {
|
1655
1977
|
const fetchProps = await getFetchProps();
|
1656
|
-
const { tables, fuzziness } = options ?? {};
|
1978
|
+
const { tables, fuzziness, highlight, prefix } = options ?? {};
|
1657
1979
|
const { records } = await searchBranch({
|
1658
1980
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1659
|
-
body: { tables, query, fuzziness },
|
1981
|
+
body: { tables, query, fuzziness, prefix, highlight },
|
1660
1982
|
...fetchProps
|
1661
1983
|
});
|
1662
1984
|
return records;
|
1663
1985
|
};
|
1986
|
+
_getSchemaTables = new WeakSet();
|
1987
|
+
getSchemaTables_fn = async function(getFetchProps) {
|
1988
|
+
if (__privateGet$1(this, _schemaTables))
|
1989
|
+
return __privateGet$1(this, _schemaTables);
|
1990
|
+
const fetchProps = await getFetchProps();
|
1991
|
+
const { schema } = await getBranchDetails({
|
1992
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1993
|
+
...fetchProps
|
1994
|
+
});
|
1995
|
+
__privateSet$1(this, _schemaTables, schema.tables);
|
1996
|
+
return schema.tables;
|
1997
|
+
};
|
1664
1998
|
|
1665
1999
|
const isBranchStrategyBuilder = (strategy) => {
|
1666
2000
|
return typeof strategy === "function";
|
1667
2001
|
};
|
1668
2002
|
|
1669
|
-
const envBranchNames = [
|
1670
|
-
"XATA_BRANCH",
|
1671
|
-
"VERCEL_GIT_COMMIT_REF",
|
1672
|
-
"CF_PAGES_BRANCH",
|
1673
|
-
"BRANCH"
|
1674
|
-
];
|
1675
|
-
const defaultBranch = "main";
|
1676
2003
|
async function getCurrentBranchName(options) {
|
1677
|
-
const
|
1678
|
-
if (
|
1679
|
-
|
1680
|
-
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
return defaultBranch;
|
2004
|
+
const { branch, envBranch } = getEnvironment();
|
2005
|
+
if (branch) {
|
2006
|
+
const details = await getDatabaseBranch(branch, options);
|
2007
|
+
if (details)
|
2008
|
+
return branch;
|
2009
|
+
console.warn(`Branch ${branch} not found in Xata. Ignoring...`);
|
2010
|
+
}
|
2011
|
+
const gitBranch = envBranch || await getGitBranch();
|
2012
|
+
return resolveXataBranch(gitBranch, options);
|
1687
2013
|
}
|
1688
2014
|
async function getCurrentBranchDetails(options) {
|
1689
|
-
const
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
2015
|
+
const branch = await getCurrentBranchName(options);
|
2016
|
+
return getDatabaseBranch(branch, options);
|
2017
|
+
}
|
2018
|
+
async function resolveXataBranch(gitBranch, options) {
|
2019
|
+
const databaseURL = options?.databaseURL || getDatabaseURL();
|
2020
|
+
const apiKey = options?.apiKey || getAPIKey();
|
2021
|
+
if (!databaseURL)
|
2022
|
+
throw new Error(
|
2023
|
+
"A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
|
2024
|
+
);
|
2025
|
+
if (!apiKey)
|
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
|
+
);
|
2029
|
+
const [protocol, , host, , dbName] = databaseURL.split("/");
|
2030
|
+
const [workspace] = host.split(".");
|
2031
|
+
const { fallbackBranch } = getEnvironment();
|
2032
|
+
const { branch } = await resolveBranch({
|
2033
|
+
apiKey,
|
2034
|
+
apiUrl: databaseURL,
|
2035
|
+
fetchImpl: getFetchImplementation(options?.fetchImpl),
|
2036
|
+
workspacesApiUrl: `${protocol}//${host}`,
|
2037
|
+
pathParams: { dbName, workspace },
|
2038
|
+
queryParams: { gitBranch, fallbackBranch },
|
2039
|
+
trace: defaultTrace
|
2040
|
+
});
|
2041
|
+
return branch;
|
1699
2042
|
}
|
1700
2043
|
async function getDatabaseBranch(branch, options) {
|
1701
2044
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1702
2045
|
const apiKey = options?.apiKey || getAPIKey();
|
1703
2046
|
if (!databaseURL)
|
1704
|
-
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
|
+
);
|
1705
2050
|
if (!apiKey)
|
1706
|
-
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
|
+
);
|
1707
2054
|
const [protocol, , host, , database] = databaseURL.split("/");
|
1708
2055
|
const [workspace] = host.split(".");
|
1709
2056
|
const dbBranchName = `${database}:${branch}`;
|
@@ -1713,10 +2060,8 @@ async function getDatabaseBranch(branch, options) {
|
|
1713
2060
|
apiUrl: databaseURL,
|
1714
2061
|
fetchImpl: getFetchImplementation(options?.fetchImpl),
|
1715
2062
|
workspacesApiUrl: `${protocol}//${host}`,
|
1716
|
-
pathParams: {
|
1717
|
-
|
1718
|
-
workspace
|
1719
|
-
}
|
2063
|
+
pathParams: { dbBranchName, workspace },
|
2064
|
+
trace: defaultTrace
|
1720
2065
|
});
|
1721
2066
|
} catch (err) {
|
1722
2067
|
if (isObject(err) && err.status === 404)
|
@@ -1724,21 +2069,10 @@ async function getDatabaseBranch(branch, options) {
|
|
1724
2069
|
throw err;
|
1725
2070
|
}
|
1726
2071
|
}
|
1727
|
-
function getBranchByEnvVariable() {
|
1728
|
-
for (const name of envBranchNames) {
|
1729
|
-
const value = getEnvVariable(name);
|
1730
|
-
if (value) {
|
1731
|
-
return value;
|
1732
|
-
}
|
1733
|
-
}
|
1734
|
-
try {
|
1735
|
-
return XATA_BRANCH;
|
1736
|
-
} catch (err) {
|
1737
|
-
}
|
1738
|
-
}
|
1739
2072
|
function getDatabaseURL() {
|
1740
2073
|
try {
|
1741
|
-
|
2074
|
+
const { databaseURL } = getEnvironment();
|
2075
|
+
return databaseURL;
|
1742
2076
|
} catch (err) {
|
1743
2077
|
return void 0;
|
1744
2078
|
}
|
@@ -1767,24 +2101,27 @@ var __privateMethod = (obj, member, method) => {
|
|
1767
2101
|
return method;
|
1768
2102
|
};
|
1769
2103
|
const buildClient = (plugins) => {
|
1770
|
-
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;
|
1771
2105
|
return _a = class {
|
1772
|
-
constructor(options = {},
|
2106
|
+
constructor(options = {}, schemaTables) {
|
1773
2107
|
__privateAdd(this, _parseOptions);
|
1774
2108
|
__privateAdd(this, _getFetchProps);
|
1775
2109
|
__privateAdd(this, _evaluateBranch);
|
1776
2110
|
__privateAdd(this, _branch, void 0);
|
2111
|
+
__privateAdd(this, _options, void 0);
|
1777
2112
|
const safeOptions = __privateMethod(this, _parseOptions, parseOptions_fn).call(this, options);
|
2113
|
+
__privateSet(this, _options, safeOptions);
|
1778
2114
|
const pluginOptions = {
|
1779
2115
|
getFetchProps: () => __privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
|
1780
|
-
cache: safeOptions.cache
|
2116
|
+
cache: safeOptions.cache,
|
2117
|
+
trace: safeOptions.trace
|
1781
2118
|
};
|
1782
|
-
const db = new SchemaPlugin(
|
1783
|
-
const search = new SearchPlugin(db,
|
2119
|
+
const db = new SchemaPlugin(schemaTables).build(pluginOptions);
|
2120
|
+
const search = new SearchPlugin(db, schemaTables).build(pluginOptions);
|
1784
2121
|
this.db = db;
|
1785
2122
|
this.search = search;
|
1786
2123
|
for (const [key, namespace] of Object.entries(plugins ?? {})) {
|
1787
|
-
if (
|
2124
|
+
if (namespace === void 0)
|
1788
2125
|
continue;
|
1789
2126
|
const result = namespace.build(pluginOptions);
|
1790
2127
|
if (result instanceof Promise) {
|
@@ -1796,22 +2133,26 @@ const buildClient = (plugins) => {
|
|
1796
2133
|
}
|
1797
2134
|
}
|
1798
2135
|
}
|
1799
|
-
|
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) {
|
1800
2142
|
const fetch = getFetchImplementation(options?.fetch);
|
1801
2143
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1802
2144
|
const apiKey = options?.apiKey || getAPIKey();
|
1803
|
-
const cache = options?.cache ?? new SimpleCache({
|
1804
|
-
const
|
1805
|
-
|
1806
|
-
|
2145
|
+
const cache = options?.cache ?? new SimpleCache({ defaultQueryTTL: 0 });
|
2146
|
+
const trace = options?.trace ?? defaultTrace;
|
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 });
|
2148
|
+
if (!apiKey) {
|
2149
|
+
throw new Error("Option apiKey is required");
|
1807
2150
|
}
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1811
|
-
apiKey,
|
1812
|
-
|
1813
|
-
branch
|
1814
|
-
}) {
|
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 }) {
|
1815
2156
|
const branchValue = await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, branch);
|
1816
2157
|
if (!branchValue)
|
1817
2158
|
throw new Error("Unable to resolve branch value");
|
@@ -1823,12 +2164,13 @@ const buildClient = (plugins) => {
|
|
1823
2164
|
const hasBranch = params.dbBranchName ?? params.branch;
|
1824
2165
|
const newPath = path.replace(/^\/db\/[^/]+/, hasBranch ? `:${branchValue}` : "");
|
1825
2166
|
return databaseURL + newPath;
|
1826
|
-
}
|
2167
|
+
},
|
2168
|
+
trace
|
1827
2169
|
};
|
1828
2170
|
}, _evaluateBranch = new WeakSet(), evaluateBranch_fn = async function(param) {
|
1829
2171
|
if (__privateGet(this, _branch))
|
1830
2172
|
return __privateGet(this, _branch);
|
1831
|
-
if (
|
2173
|
+
if (param === void 0)
|
1832
2174
|
return void 0;
|
1833
2175
|
const strategies = Array.isArray(param) ? [...param] : [param];
|
1834
2176
|
const evaluateBranch = async (strategy) => {
|
@@ -1846,6 +2188,88 @@ const buildClient = (plugins) => {
|
|
1846
2188
|
class BaseClient extends buildClient() {
|
1847
2189
|
}
|
1848
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
|
+
|
1849
2273
|
class XataError extends Error {
|
1850
2274
|
constructor(message, status) {
|
1851
2275
|
super(message);
|
@@ -1861,10 +2285,12 @@ exports.PAGINATION_MAX_OFFSET = PAGINATION_MAX_OFFSET;
|
|
1861
2285
|
exports.PAGINATION_MAX_SIZE = PAGINATION_MAX_SIZE;
|
1862
2286
|
exports.Page = Page;
|
1863
2287
|
exports.Query = Query;
|
2288
|
+
exports.RecordArray = RecordArray;
|
1864
2289
|
exports.Repository = Repository;
|
1865
2290
|
exports.RestRepository = RestRepository;
|
1866
2291
|
exports.SchemaPlugin = SchemaPlugin;
|
1867
2292
|
exports.SearchPlugin = SearchPlugin;
|
2293
|
+
exports.Serializer = Serializer;
|
1868
2294
|
exports.SimpleCache = SimpleCache;
|
1869
2295
|
exports.XataApiClient = XataApiClient;
|
1870
2296
|
exports.XataApiPlugin = XataApiPlugin;
|
@@ -1874,6 +2300,7 @@ exports.acceptWorkspaceMemberInvite = acceptWorkspaceMemberInvite;
|
|
1874
2300
|
exports.addGitBranchesEntry = addGitBranchesEntry;
|
1875
2301
|
exports.addTableColumn = addTableColumn;
|
1876
2302
|
exports.buildClient = buildClient;
|
2303
|
+
exports.buildWorkerRunner = buildWorkerRunner;
|
1877
2304
|
exports.bulkInsertTableRecords = bulkInsertTableRecords;
|
1878
2305
|
exports.cancelWorkspaceMemberInvite = cancelWorkspaceMemberInvite;
|
1879
2306
|
exports.contains = contains;
|
@@ -1890,7 +2317,9 @@ exports.deleteTable = deleteTable;
|
|
1890
2317
|
exports.deleteUser = deleteUser;
|
1891
2318
|
exports.deleteUserAPIKey = deleteUserAPIKey;
|
1892
2319
|
exports.deleteWorkspace = deleteWorkspace;
|
2320
|
+
exports.deserialize = deserialize;
|
1893
2321
|
exports.endsWith = endsWith;
|
2322
|
+
exports.equals = equals;
|
1894
2323
|
exports.executeBranchMigrationPlan = executeBranchMigrationPlan;
|
1895
2324
|
exports.exists = exists;
|
1896
2325
|
exports.ge = ge;
|
@@ -1905,6 +2334,7 @@ exports.getColumn = getColumn;
|
|
1905
2334
|
exports.getCurrentBranchDetails = getCurrentBranchDetails;
|
1906
2335
|
exports.getCurrentBranchName = getCurrentBranchName;
|
1907
2336
|
exports.getDatabaseList = getDatabaseList;
|
2337
|
+
exports.getDatabaseMetadata = getDatabaseMetadata;
|
1908
2338
|
exports.getDatabaseURL = getDatabaseURL;
|
1909
2339
|
exports.getGitBranchesMapping = getGitBranchesMapping;
|
1910
2340
|
exports.getRecord = getRecord;
|
@@ -1915,6 +2345,9 @@ exports.getUserAPIKeys = getUserAPIKeys;
|
|
1915
2345
|
exports.getWorkspace = getWorkspace;
|
1916
2346
|
exports.getWorkspaceMembersList = getWorkspaceMembersList;
|
1917
2347
|
exports.getWorkspacesList = getWorkspacesList;
|
2348
|
+
exports.greaterEquals = greaterEquals;
|
2349
|
+
exports.greaterThan = greaterThan;
|
2350
|
+
exports.greaterThanEquals = greaterThanEquals;
|
1918
2351
|
exports.gt = gt;
|
1919
2352
|
exports.gte = gte;
|
1920
2353
|
exports.includes = includes;
|
@@ -1925,10 +2358,14 @@ exports.insertRecord = insertRecord;
|
|
1925
2358
|
exports.insertRecordWithID = insertRecordWithID;
|
1926
2359
|
exports.inviteWorkspaceMember = inviteWorkspaceMember;
|
1927
2360
|
exports.is = is;
|
2361
|
+
exports.isCursorPaginationOptions = isCursorPaginationOptions;
|
1928
2362
|
exports.isIdentifiable = isIdentifiable;
|
1929
2363
|
exports.isNot = isNot;
|
1930
2364
|
exports.isXataRecord = isXataRecord;
|
1931
2365
|
exports.le = le;
|
2366
|
+
exports.lessEquals = lessEquals;
|
2367
|
+
exports.lessThan = lessThan;
|
2368
|
+
exports.lessThanEquals = lessThanEquals;
|
1932
2369
|
exports.lt = lt;
|
1933
2370
|
exports.lte = lte;
|
1934
2371
|
exports.notExists = notExists;
|
@@ -1940,6 +2377,8 @@ exports.removeWorkspaceMember = removeWorkspaceMember;
|
|
1940
2377
|
exports.resendWorkspaceMemberInvite = resendWorkspaceMemberInvite;
|
1941
2378
|
exports.resolveBranch = resolveBranch;
|
1942
2379
|
exports.searchBranch = searchBranch;
|
2380
|
+
exports.searchTable = searchTable;
|
2381
|
+
exports.serialize = serialize;
|
1943
2382
|
exports.setTableSchema = setTableSchema;
|
1944
2383
|
exports.startsWith = startsWith;
|
1945
2384
|
exports.updateBranchMetadata = updateBranchMetadata;
|
@@ -1948,6 +2387,7 @@ exports.updateRecordWithID = updateRecordWithID;
|
|
1948
2387
|
exports.updateTable = updateTable;
|
1949
2388
|
exports.updateUser = updateUser;
|
1950
2389
|
exports.updateWorkspace = updateWorkspace;
|
2390
|
+
exports.updateWorkspaceMemberInvite = updateWorkspaceMemberInvite;
|
1951
2391
|
exports.updateWorkspaceMemberRole = updateWorkspaceMemberRole;
|
1952
2392
|
exports.upsertRecordWithID = upsertRecordWithID;
|
1953
2393
|
//# sourceMappingURL=index.cjs.map
|