@xata.io/client 0.0.0-alpha.vf3081bb → 0.0.0-alpha.vf3111df
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +98 -0
- package/README.md +43 -35
- package/Usage.md +449 -0
- package/dist/index.cjs +645 -380
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +648 -160
- package/dist/index.mjs +622 -381
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -4
package/dist/index.cjs
CHANGED
@@ -2,6 +2,48 @@
|
|
2
2
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
|
+
function _interopNamespace(e) {
|
6
|
+
if (e && e.__esModule) return e;
|
7
|
+
var n = Object.create(null);
|
8
|
+
if (e) {
|
9
|
+
Object.keys(e).forEach(function (k) {
|
10
|
+
if (k !== 'default') {
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
13
|
+
enumerable: true,
|
14
|
+
get: function () { return e[k]; }
|
15
|
+
});
|
16
|
+
}
|
17
|
+
});
|
18
|
+
}
|
19
|
+
n["default"] = e;
|
20
|
+
return Object.freeze(n);
|
21
|
+
}
|
22
|
+
|
23
|
+
const defaultTrace = async (_name, fn, _options) => {
|
24
|
+
return await fn({
|
25
|
+
setAttributes: () => {
|
26
|
+
return;
|
27
|
+
},
|
28
|
+
onError: () => {
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
});
|
32
|
+
};
|
33
|
+
const TraceAttributes = {
|
34
|
+
VERSION: "xata.sdk.version",
|
35
|
+
TABLE: "xata.table",
|
36
|
+
HTTP_REQUEST_ID: "http.request_id",
|
37
|
+
HTTP_STATUS_CODE: "http.status_code",
|
38
|
+
HTTP_HOST: "http.host",
|
39
|
+
HTTP_SCHEME: "http.scheme",
|
40
|
+
HTTP_USER_AGENT: "http.user_agent",
|
41
|
+
HTTP_METHOD: "http.method",
|
42
|
+
HTTP_URL: "http.url",
|
43
|
+
HTTP_ROUTE: "http.route",
|
44
|
+
HTTP_TARGET: "http.target"
|
45
|
+
};
|
46
|
+
|
5
47
|
function notEmpty(value) {
|
6
48
|
return value !== null && value !== void 0;
|
7
49
|
}
|
@@ -17,43 +59,95 @@ function isDefined(value) {
|
|
17
59
|
function isString(value) {
|
18
60
|
return isDefined(value) && typeof value === "string";
|
19
61
|
}
|
62
|
+
function isStringArray(value) {
|
63
|
+
return isDefined(value) && Array.isArray(value) && value.every(isString);
|
64
|
+
}
|
20
65
|
function toBase64(value) {
|
21
66
|
try {
|
22
67
|
return btoa(value);
|
23
68
|
} catch (err) {
|
24
|
-
|
69
|
+
const buf = Buffer;
|
70
|
+
return buf.from(value).toString("base64");
|
25
71
|
}
|
26
72
|
}
|
27
73
|
|
28
|
-
function
|
74
|
+
function getEnvironment() {
|
29
75
|
try {
|
30
|
-
if (isObject(process) &&
|
31
|
-
return
|
76
|
+
if (isObject(process) && isObject(process.env)) {
|
77
|
+
return {
|
78
|
+
apiKey: process.env.XATA_API_KEY ?? getGlobalApiKey(),
|
79
|
+
databaseURL: process.env.XATA_DATABASE_URL ?? getGlobalDatabaseURL(),
|
80
|
+
branch: process.env.XATA_BRANCH ?? getGlobalBranch(),
|
81
|
+
envBranch: process.env.VERCEL_GIT_COMMIT_REF ?? process.env.CF_PAGES_BRANCH ?? process.env.BRANCH,
|
82
|
+
fallbackBranch: process.env.XATA_FALLBACK_BRANCH ?? getGlobalFallbackBranch()
|
83
|
+
};
|
32
84
|
}
|
33
85
|
} catch (err) {
|
34
86
|
}
|
35
87
|
try {
|
36
|
-
if (isObject(Deno) &&
|
37
|
-
return
|
88
|
+
if (isObject(Deno) && isObject(Deno.env)) {
|
89
|
+
return {
|
90
|
+
apiKey: Deno.env.get("XATA_API_KEY") ?? getGlobalApiKey(),
|
91
|
+
databaseURL: Deno.env.get("XATA_DATABASE_URL") ?? getGlobalDatabaseURL(),
|
92
|
+
branch: Deno.env.get("XATA_BRANCH") ?? getGlobalBranch(),
|
93
|
+
envBranch: Deno.env.get("VERCEL_GIT_COMMIT_REF") ?? Deno.env.get("CF_PAGES_BRANCH") ?? Deno.env.get("BRANCH"),
|
94
|
+
fallbackBranch: Deno.env.get("XATA_FALLBACK_BRANCH") ?? getGlobalFallbackBranch()
|
95
|
+
};
|
38
96
|
}
|
39
97
|
} catch (err) {
|
40
98
|
}
|
99
|
+
return {
|
100
|
+
apiKey: getGlobalApiKey(),
|
101
|
+
databaseURL: getGlobalDatabaseURL(),
|
102
|
+
branch: getGlobalBranch(),
|
103
|
+
envBranch: void 0,
|
104
|
+
fallbackBranch: getGlobalFallbackBranch()
|
105
|
+
};
|
106
|
+
}
|
107
|
+
function getGlobalApiKey() {
|
108
|
+
try {
|
109
|
+
return XATA_API_KEY;
|
110
|
+
} catch (err) {
|
111
|
+
return void 0;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
function getGlobalDatabaseURL() {
|
115
|
+
try {
|
116
|
+
return XATA_DATABASE_URL;
|
117
|
+
} catch (err) {
|
118
|
+
return void 0;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
function getGlobalBranch() {
|
122
|
+
try {
|
123
|
+
return XATA_BRANCH;
|
124
|
+
} catch (err) {
|
125
|
+
return void 0;
|
126
|
+
}
|
127
|
+
}
|
128
|
+
function getGlobalFallbackBranch() {
|
129
|
+
try {
|
130
|
+
return XATA_FALLBACK_BRANCH;
|
131
|
+
} catch (err) {
|
132
|
+
return void 0;
|
133
|
+
}
|
41
134
|
}
|
42
135
|
async function getGitBranch() {
|
136
|
+
const cmd = ["git", "branch", "--show-current"];
|
137
|
+
const fullCmd = cmd.join(" ");
|
138
|
+
const nodeModule = ["child", "process"].join("_");
|
139
|
+
const execOptions = { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] };
|
43
140
|
try {
|
44
141
|
if (typeof require === "function") {
|
45
|
-
|
46
|
-
return req("child_process").execSync("git branch --show-current", { encoding: "utf-8" }).trim();
|
142
|
+
return require(nodeModule).execSync(fullCmd, execOptions).trim();
|
47
143
|
}
|
144
|
+
const { execSync } = await (function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(nodeModule);
|
145
|
+
return execSync(fullCmd, execOptions).toString().trim();
|
48
146
|
} catch (err) {
|
49
147
|
}
|
50
148
|
try {
|
51
149
|
if (isObject(Deno)) {
|
52
|
-
const process2 = Deno.run({
|
53
|
-
cmd: ["git", "branch", "--show-current"],
|
54
|
-
stdout: "piped",
|
55
|
-
stderr: "piped"
|
56
|
-
});
|
150
|
+
const process2 = Deno.run({ cmd, stdout: "piped", stderr: "null" });
|
57
151
|
return new TextDecoder().decode(await process2.output()).trim();
|
58
152
|
}
|
59
153
|
} catch (err) {
|
@@ -62,7 +156,8 @@ async function getGitBranch() {
|
|
62
156
|
|
63
157
|
function getAPIKey() {
|
64
158
|
try {
|
65
|
-
|
159
|
+
const { apiKey } = getEnvironment();
|
160
|
+
return apiKey;
|
66
161
|
} catch (err) {
|
67
162
|
return void 0;
|
68
163
|
}
|
@@ -72,26 +167,35 @@ function getFetchImplementation(userFetch) {
|
|
72
167
|
const globalFetch = typeof fetch !== "undefined" ? fetch : void 0;
|
73
168
|
const fetchImpl = userFetch ?? globalFetch;
|
74
169
|
if (!fetchImpl) {
|
75
|
-
throw new Error(
|
170
|
+
throw new Error(
|
171
|
+
`The \`fetch\` option passed to the Xata client is resolving to a falsy value and may not be correctly imported.`
|
172
|
+
);
|
76
173
|
}
|
77
174
|
return fetchImpl;
|
78
175
|
}
|
79
176
|
|
177
|
+
const VERSION = "0.0.0-alpha.vf3111df";
|
178
|
+
|
80
179
|
class ErrorWithCause extends Error {
|
81
180
|
constructor(message, options) {
|
82
181
|
super(message, options);
|
83
182
|
}
|
84
183
|
}
|
85
184
|
class FetcherError extends ErrorWithCause {
|
86
|
-
constructor(status, data) {
|
185
|
+
constructor(status, data, requestId) {
|
87
186
|
super(getMessage(data));
|
88
187
|
this.status = status;
|
89
188
|
this.errors = isBulkError(data) ? data.errors : void 0;
|
189
|
+
this.requestId = requestId;
|
90
190
|
if (data instanceof Error) {
|
91
191
|
this.stack = data.stack;
|
92
192
|
this.cause = data.cause;
|
93
193
|
}
|
94
194
|
}
|
195
|
+
toString() {
|
196
|
+
const error = super.toString();
|
197
|
+
return `[${this.status}] (${this.requestId ?? "Unknown"}): ${error}`;
|
198
|
+
}
|
95
199
|
}
|
96
200
|
function isBulkError(error) {
|
97
201
|
return isObject(error) && Array.isArray(error.errors);
|
@@ -114,7 +218,12 @@ function getMessage(data) {
|
|
114
218
|
}
|
115
219
|
|
116
220
|
const resolveUrl = (url, queryParams = {}, pathParams = {}) => {
|
117
|
-
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();
|
118
227
|
const queryString = query.length > 0 ? `?${query}` : "";
|
119
228
|
return url.replace(/\{\w*\}/g, (key) => pathParams[key.slice(1, -1)]) + queryString;
|
120
229
|
};
|
@@ -144,32 +253,62 @@ async function fetch$1({
|
|
144
253
|
fetchImpl,
|
145
254
|
apiKey,
|
146
255
|
apiUrl,
|
147
|
-
workspacesApiUrl
|
256
|
+
workspacesApiUrl,
|
257
|
+
trace
|
148
258
|
}) {
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
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) {
|
165
307
|
try {
|
166
|
-
const
|
167
|
-
|
168
|
-
return jsonResponse;
|
169
|
-
}
|
170
|
-
throw new FetcherError(response.status, jsonResponse);
|
308
|
+
const { host, protocol } = new URL(url);
|
309
|
+
return { host, protocol };
|
171
310
|
} catch (error) {
|
172
|
-
|
311
|
+
return {};
|
173
312
|
}
|
174
313
|
}
|
175
314
|
|
@@ -228,6 +367,7 @@ const removeWorkspaceMember = (variables) => fetch$1({
|
|
228
367
|
...variables
|
229
368
|
});
|
230
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 });
|
231
371
|
const cancelWorkspaceMemberInvite = (variables) => fetch$1({
|
232
372
|
url: "/workspaces/{workspaceId}/invites/{inviteId}",
|
233
373
|
method: "delete",
|
@@ -263,6 +403,11 @@ const deleteDatabase = (variables) => fetch$1({
|
|
263
403
|
method: "delete",
|
264
404
|
...variables
|
265
405
|
});
|
406
|
+
const getDatabaseMetadata = (variables) => fetch$1({
|
407
|
+
url: "/dbs/{dbName}/metadata",
|
408
|
+
method: "get",
|
409
|
+
...variables
|
410
|
+
});
|
266
411
|
const getGitBranchesMapping = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "get", ...variables });
|
267
412
|
const addGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "post", ...variables });
|
268
413
|
const removeGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "delete", ...variables });
|
@@ -276,11 +421,7 @@ const getBranchDetails = (variables) => fetch$1({
|
|
276
421
|
method: "get",
|
277
422
|
...variables
|
278
423
|
});
|
279
|
-
const createBranch = (variables) => fetch$1({
|
280
|
-
url: "/db/{dbBranchName}",
|
281
|
-
method: "put",
|
282
|
-
...variables
|
283
|
-
});
|
424
|
+
const createBranch = (variables) => fetch$1({ url: "/db/{dbBranchName}", method: "put", ...variables });
|
284
425
|
const deleteBranch = (variables) => fetch$1({
|
285
426
|
url: "/db/{dbBranchName}",
|
286
427
|
method: "delete",
|
@@ -354,11 +495,7 @@ const updateColumn = (variables) => fetch$1({
|
|
354
495
|
method: "patch",
|
355
496
|
...variables
|
356
497
|
});
|
357
|
-
const insertRecord = (variables) => fetch$1({
|
358
|
-
url: "/db/{dbBranchName}/tables/{tableName}/data",
|
359
|
-
method: "post",
|
360
|
-
...variables
|
361
|
-
});
|
498
|
+
const insertRecord = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data", method: "post", ...variables });
|
362
499
|
const insertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "put", ...variables });
|
363
500
|
const updateRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "patch", ...variables });
|
364
501
|
const upsertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "post", ...variables });
|
@@ -400,6 +537,7 @@ const operationsByTag = {
|
|
400
537
|
updateWorkspaceMemberRole,
|
401
538
|
removeWorkspaceMember,
|
402
539
|
inviteWorkspaceMember,
|
540
|
+
updateWorkspaceMemberInvite,
|
403
541
|
cancelWorkspaceMemberInvite,
|
404
542
|
resendWorkspaceMemberInvite,
|
405
543
|
acceptWorkspaceMemberInvite
|
@@ -408,6 +546,7 @@ const operationsByTag = {
|
|
408
546
|
getDatabaseList,
|
409
547
|
createDatabase,
|
410
548
|
deleteDatabase,
|
549
|
+
getDatabaseMetadata,
|
411
550
|
getGitBranchesMapping,
|
412
551
|
addGitBranchesEntry,
|
413
552
|
removeGitBranchesEntry,
|
@@ -489,7 +628,7 @@ var __privateAdd$7 = (obj, member, value) => {
|
|
489
628
|
throw TypeError("Cannot add the same private member more than once");
|
490
629
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
491
630
|
};
|
492
|
-
var __privateSet$
|
631
|
+
var __privateSet$7 = (obj, member, value, setter) => {
|
493
632
|
__accessCheck$7(obj, member, "write to private field");
|
494
633
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
495
634
|
return value;
|
@@ -500,15 +639,17 @@ class XataApiClient {
|
|
500
639
|
__privateAdd$7(this, _extraProps, void 0);
|
501
640
|
__privateAdd$7(this, _namespaces, {});
|
502
641
|
const provider = options.host ?? "production";
|
503
|
-
const apiKey = options
|
642
|
+
const apiKey = options.apiKey ?? getAPIKey();
|
643
|
+
const trace = options.trace ?? defaultTrace;
|
504
644
|
if (!apiKey) {
|
505
645
|
throw new Error("Could not resolve a valid apiKey");
|
506
646
|
}
|
507
|
-
__privateSet$
|
647
|
+
__privateSet$7(this, _extraProps, {
|
508
648
|
apiUrl: getHostUrl(provider, "main"),
|
509
649
|
workspacesApiUrl: getHostUrl(provider, "workspaces"),
|
510
650
|
fetchImpl: getFetchImplementation(options.fetch),
|
511
|
-
apiKey
|
651
|
+
apiKey,
|
652
|
+
trace
|
512
653
|
});
|
513
654
|
}
|
514
655
|
get user() {
|
@@ -631,6 +772,13 @@ class WorkspaceApi {
|
|
631
772
|
...this.extraProps
|
632
773
|
});
|
633
774
|
}
|
775
|
+
updateWorkspaceMemberInvite(workspaceId, inviteId, role) {
|
776
|
+
return operationsByTag.workspaces.updateWorkspaceMemberInvite({
|
777
|
+
pathParams: { workspaceId, inviteId },
|
778
|
+
body: { role },
|
779
|
+
...this.extraProps
|
780
|
+
});
|
781
|
+
}
|
634
782
|
cancelWorkspaceMemberInvite(workspaceId, inviteId) {
|
635
783
|
return operationsByTag.workspaces.cancelWorkspaceMemberInvite({
|
636
784
|
pathParams: { workspaceId, inviteId },
|
@@ -673,6 +821,12 @@ class DatabaseApi {
|
|
673
821
|
...this.extraProps
|
674
822
|
});
|
675
823
|
}
|
824
|
+
getDatabaseMetadata(workspace, dbName) {
|
825
|
+
return operationsByTag.database.getDatabaseMetadata({
|
826
|
+
pathParams: { workspace, dbName },
|
827
|
+
...this.extraProps
|
828
|
+
});
|
829
|
+
}
|
676
830
|
getGitBranchesMapping(workspace, dbName) {
|
677
831
|
return operationsByTag.database.getGitBranchesMapping({
|
678
832
|
pathParams: { workspace, dbName },
|
@@ -693,10 +847,10 @@ class DatabaseApi {
|
|
693
847
|
...this.extraProps
|
694
848
|
});
|
695
849
|
}
|
696
|
-
resolveBranch(workspace, dbName, gitBranch) {
|
850
|
+
resolveBranch(workspace, dbName, gitBranch, fallbackBranch) {
|
697
851
|
return operationsByTag.database.resolveBranch({
|
698
852
|
pathParams: { workspace, dbName },
|
699
|
-
queryParams: { gitBranch },
|
853
|
+
queryParams: { gitBranch, fallbackBranch },
|
700
854
|
...this.extraProps
|
701
855
|
});
|
702
856
|
}
|
@@ -845,9 +999,10 @@ class RecordsApi {
|
|
845
999
|
constructor(extraProps) {
|
846
1000
|
this.extraProps = extraProps;
|
847
1001
|
}
|
848
|
-
insertRecord(workspace, database, branch, tableName, record) {
|
1002
|
+
insertRecord(workspace, database, branch, tableName, record, options = {}) {
|
849
1003
|
return operationsByTag.records.insertRecord({
|
850
1004
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1005
|
+
queryParams: options,
|
851
1006
|
body: record,
|
852
1007
|
...this.extraProps
|
853
1008
|
});
|
@@ -876,21 +1031,24 @@ class RecordsApi {
|
|
876
1031
|
...this.extraProps
|
877
1032
|
});
|
878
1033
|
}
|
879
|
-
deleteRecord(workspace, database, branch, tableName, recordId) {
|
1034
|
+
deleteRecord(workspace, database, branch, tableName, recordId, options = {}) {
|
880
1035
|
return operationsByTag.records.deleteRecord({
|
881
1036
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
|
1037
|
+
queryParams: options,
|
882
1038
|
...this.extraProps
|
883
1039
|
});
|
884
1040
|
}
|
885
1041
|
getRecord(workspace, database, branch, tableName, recordId, options = {}) {
|
886
1042
|
return operationsByTag.records.getRecord({
|
887
1043
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
|
1044
|
+
queryParams: options,
|
888
1045
|
...this.extraProps
|
889
1046
|
});
|
890
1047
|
}
|
891
|
-
bulkInsertTableRecords(workspace, database, branch, tableName, records) {
|
1048
|
+
bulkInsertTableRecords(workspace, database, branch, tableName, records, options = {}) {
|
892
1049
|
return operationsByTag.records.bulkInsertTableRecords({
|
893
1050
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1051
|
+
queryParams: options,
|
894
1052
|
body: { records },
|
895
1053
|
...this.extraProps
|
896
1054
|
});
|
@@ -941,7 +1099,7 @@ var __privateAdd$6 = (obj, member, value) => {
|
|
941
1099
|
throw TypeError("Cannot add the same private member more than once");
|
942
1100
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
943
1101
|
};
|
944
|
-
var __privateSet$
|
1102
|
+
var __privateSet$6 = (obj, member, value, setter) => {
|
945
1103
|
__accessCheck$6(obj, member, "write to private field");
|
946
1104
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
947
1105
|
return value;
|
@@ -950,7 +1108,7 @@ var _query, _page;
|
|
950
1108
|
class Page {
|
951
1109
|
constructor(query, meta, records = []) {
|
952
1110
|
__privateAdd$6(this, _query, void 0);
|
953
|
-
__privateSet$
|
1111
|
+
__privateSet$6(this, _query, query);
|
954
1112
|
this.meta = meta;
|
955
1113
|
this.records = new RecordArray(this, records);
|
956
1114
|
}
|
@@ -979,10 +1137,26 @@ function isCursorPaginationOptions(options) {
|
|
979
1137
|
return isDefined(options) && (isDefined(options.first) || isDefined(options.last) || isDefined(options.after) || isDefined(options.before));
|
980
1138
|
}
|
981
1139
|
const _RecordArray = class extends Array {
|
982
|
-
constructor(
|
983
|
-
super(...
|
1140
|
+
constructor(...args) {
|
1141
|
+
super(..._RecordArray.parseConstructorParams(...args));
|
984
1142
|
__privateAdd$6(this, _page, void 0);
|
985
|
-
__privateSet$
|
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);
|
986
1160
|
}
|
987
1161
|
async nextPage(size, offset) {
|
988
1162
|
const newPage = await __privateGet$6(this, _page).nextPage(size, offset);
|
@@ -1020,7 +1194,7 @@ var __privateAdd$5 = (obj, member, value) => {
|
|
1020
1194
|
throw TypeError("Cannot add the same private member more than once");
|
1021
1195
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1022
1196
|
};
|
1023
|
-
var __privateSet$
|
1197
|
+
var __privateSet$5 = (obj, member, value, setter) => {
|
1024
1198
|
__accessCheck$5(obj, member, "write to private field");
|
1025
1199
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1026
1200
|
return value;
|
@@ -1033,11 +1207,11 @@ const _Query = class {
|
|
1033
1207
|
__privateAdd$5(this, _data, { filter: {} });
|
1034
1208
|
this.meta = { page: { cursor: "start", more: true } };
|
1035
1209
|
this.records = new RecordArray(this, []);
|
1036
|
-
__privateSet$
|
1210
|
+
__privateSet$5(this, _table$1, table);
|
1037
1211
|
if (repository) {
|
1038
|
-
__privateSet$
|
1212
|
+
__privateSet$5(this, _repository, repository);
|
1039
1213
|
} else {
|
1040
|
-
__privateSet$
|
1214
|
+
__privateSet$5(this, _repository, this);
|
1041
1215
|
}
|
1042
1216
|
const parent = cleanParent(data, rawParent);
|
1043
1217
|
__privateGet$5(this, _data).filter = data.filter ?? parent?.filter ?? {};
|
@@ -1092,13 +1266,18 @@ const _Query = class {
|
|
1092
1266
|
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
|
1093
1267
|
}
|
1094
1268
|
}
|
1095
|
-
sort(column, direction) {
|
1269
|
+
sort(column, direction = "asc") {
|
1096
1270
|
const originalSort = [__privateGet$5(this, _data).sort ?? []].flat();
|
1097
1271
|
const sort = [...originalSort, { column, direction }];
|
1098
1272
|
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { sort }, __privateGet$5(this, _data));
|
1099
1273
|
}
|
1100
1274
|
select(columns) {
|
1101
|
-
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
|
+
);
|
1102
1281
|
}
|
1103
1282
|
getPaginated(options = {}) {
|
1104
1283
|
const query = new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), options, __privateGet$5(this, _data));
|
@@ -1214,7 +1393,7 @@ var __privateAdd$4 = (obj, member, value) => {
|
|
1214
1393
|
throw TypeError("Cannot add the same private member more than once");
|
1215
1394
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1216
1395
|
};
|
1217
|
-
var __privateSet$
|
1396
|
+
var __privateSet$4 = (obj, member, value, setter) => {
|
1218
1397
|
__accessCheck$4(obj, member, "write to private field");
|
1219
1398
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1220
1399
|
return value;
|
@@ -1223,7 +1402,7 @@ var __privateMethod$2 = (obj, member, method) => {
|
|
1223
1402
|
__accessCheck$4(obj, member, "access private method");
|
1224
1403
|
return method;
|
1225
1404
|
};
|
1226
|
-
var _table, _getFetchProps, _cache,
|
1405
|
+
var _table, _getFetchProps, _db, _cache, _schemaTables$2, _trace, _insertRecordWithoutId, insertRecordWithoutId_fn, _insertRecordWithId, insertRecordWithId_fn, _bulkInsertTableRecords, bulkInsertTableRecords_fn, _updateRecordWithID, updateRecordWithID_fn, _upsertRecordWithID, upsertRecordWithID_fn, _deleteRecord, deleteRecord_fn, _setCacheQuery, setCacheQuery_fn, _getCacheQuery, getCacheQuery_fn, _getSchemaTables$1, getSchemaTables_fn$1;
|
1227
1406
|
class Repository extends Query {
|
1228
1407
|
}
|
1229
1408
|
class RestRepository extends Query {
|
@@ -1235,188 +1414,214 @@ class RestRepository extends Query {
|
|
1235
1414
|
__privateAdd$4(this, _updateRecordWithID);
|
1236
1415
|
__privateAdd$4(this, _upsertRecordWithID);
|
1237
1416
|
__privateAdd$4(this, _deleteRecord);
|
1238
|
-
__privateAdd$4(this, _invalidateCache);
|
1239
|
-
__privateAdd$4(this, _setCacheRecord);
|
1240
|
-
__privateAdd$4(this, _getCacheRecord);
|
1241
1417
|
__privateAdd$4(this, _setCacheQuery);
|
1242
1418
|
__privateAdd$4(this, _getCacheQuery);
|
1243
|
-
__privateAdd$4(this,
|
1419
|
+
__privateAdd$4(this, _getSchemaTables$1);
|
1244
1420
|
__privateAdd$4(this, _table, void 0);
|
1245
1421
|
__privateAdd$4(this, _getFetchProps, void 0);
|
1422
|
+
__privateAdd$4(this, _db, void 0);
|
1246
1423
|
__privateAdd$4(this, _cache, void 0);
|
1247
|
-
__privateAdd$4(this,
|
1248
|
-
|
1249
|
-
__privateSet$
|
1250
|
-
this
|
1251
|
-
__privateSet$
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
if (a === "")
|
1263
|
-
throw new Error("The id can't be empty");
|
1264
|
-
const record = await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b);
|
1265
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1266
|
-
return record;
|
1267
|
-
}
|
1268
|
-
if (isObject(a) && isString(a.id)) {
|
1269
|
-
if (a.id === "")
|
1270
|
-
throw new Error("The id can't be empty");
|
1271
|
-
const record = await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 });
|
1272
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1273
|
-
return record;
|
1274
|
-
}
|
1275
|
-
if (isObject(a)) {
|
1276
|
-
const record = await __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a);
|
1277
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1278
|
-
return record;
|
1279
|
-
}
|
1280
|
-
throw new Error("Invalid arguments for create method");
|
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
|
1437
|
+
});
|
1438
|
+
});
|
1281
1439
|
}
|
1282
|
-
async
|
1283
|
-
|
1284
|
-
if (a
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
if (
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
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);
|
1447
|
+
}
|
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
|
+
});
|
1466
|
+
}
|
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);
|
1480
|
+
}
|
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;
|
1303
1502
|
}
|
1304
|
-
throw e;
|
1305
1503
|
}
|
1306
|
-
|
1504
|
+
return null;
|
1505
|
+
});
|
1307
1506
|
}
|
1308
|
-
async update(a, b) {
|
1309
|
-
|
1310
|
-
if (a
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
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)));
|
1314
1517
|
}
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
await __privateMethod$2(this, _invalidateCache, invalidateCache_fn).call(this, a);
|
1319
|
-
const record = await __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a, b);
|
1320
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1321
|
-
return record;
|
1322
|
-
}
|
1323
|
-
if (isObject(a) && isString(a.id)) {
|
1324
|
-
await __privateMethod$2(this, _invalidateCache, invalidateCache_fn).call(this, a.id);
|
1325
|
-
const record = await __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a.id, { ...a, id: void 0 });
|
1326
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1327
|
-
return record;
|
1328
|
-
}
|
1329
|
-
throw new Error("Invalid arguments for update method");
|
1330
|
-
}
|
1331
|
-
async createOrUpdate(a, b) {
|
1332
|
-
if (Array.isArray(a)) {
|
1333
|
-
if (a.length === 0)
|
1334
|
-
return [];
|
1335
|
-
if (a.length > 100) {
|
1336
|
-
console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
|
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);
|
1337
1521
|
}
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
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
|
+
});
|
1353
1550
|
}
|
1354
1551
|
async delete(a) {
|
1355
|
-
|
1356
|
-
if (a
|
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)));
|
1357
1560
|
return;
|
1358
|
-
if (a.length > 100) {
|
1359
|
-
console.warn("Bulk delete operation is not optimized in the Xata API yet, this request might be slow");
|
1360
1561
|
}
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
await __privateMethod$2(this, _invalidateCache, invalidateCache_fn).call(this, a.id);
|
1372
|
-
return;
|
1373
|
-
}
|
1374
|
-
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
|
+
});
|
1375
1572
|
}
|
1376
1573
|
async search(query, options = {}) {
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
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));
|
1387
1590
|
});
|
1388
|
-
const schema = await __privateMethod$2(this, _getSchema$1, getSchema_fn$1).call(this);
|
1389
|
-
return records.map((item) => initObject(this.db, schema, __privateGet$4(this, _table), item));
|
1390
1591
|
}
|
1391
1592
|
async query(query) {
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1400
|
-
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
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);
|
1407
1614
|
});
|
1408
|
-
const schema = await __privateMethod$2(this, _getSchema$1, getSchema_fn$1).call(this);
|
1409
|
-
const records = objects.map((record) => initObject(this.db, schema, __privateGet$4(this, _table), record));
|
1410
|
-
await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
|
1411
|
-
return new Page(query, meta, records);
|
1412
1615
|
}
|
1413
1616
|
}
|
1414
1617
|
_table = new WeakMap();
|
1415
1618
|
_getFetchProps = new WeakMap();
|
1619
|
+
_db = new WeakMap();
|
1416
1620
|
_cache = new WeakMap();
|
1417
|
-
|
1621
|
+
_schemaTables$2 = new WeakMap();
|
1622
|
+
_trace = new WeakMap();
|
1418
1623
|
_insertRecordWithoutId = new WeakSet();
|
1419
|
-
insertRecordWithoutId_fn = async function(object) {
|
1624
|
+
insertRecordWithoutId_fn = async function(object, columns = ["*"]) {
|
1420
1625
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1421
1626
|
const record = transformObjectLinks(object);
|
1422
1627
|
const response = await insertRecord({
|
@@ -1425,17 +1630,15 @@ insertRecordWithoutId_fn = async function(object) {
|
|
1425
1630
|
dbBranchName: "{dbBranch}",
|
1426
1631
|
tableName: __privateGet$4(this, _table)
|
1427
1632
|
},
|
1633
|
+
queryParams: { columns },
|
1428
1634
|
body: record,
|
1429
1635
|
...fetchProps
|
1430
1636
|
});
|
1431
|
-
const
|
1432
|
-
|
1433
|
-
throw new Error("The server failed to save the record");
|
1434
|
-
}
|
1435
|
-
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);
|
1436
1639
|
};
|
1437
1640
|
_insertRecordWithId = new WeakSet();
|
1438
|
-
insertRecordWithId_fn = async function(recordId, object) {
|
1641
|
+
insertRecordWithId_fn = async function(recordId, object, columns = ["*"]) {
|
1439
1642
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1440
1643
|
const record = transformObjectLinks(object);
|
1441
1644
|
const response = await insertRecordWithID({
|
@@ -1446,56 +1649,52 @@ insertRecordWithId_fn = async function(recordId, object) {
|
|
1446
1649
|
recordId
|
1447
1650
|
},
|
1448
1651
|
body: record,
|
1449
|
-
queryParams: { createOnly: true },
|
1652
|
+
queryParams: { createOnly: true, columns },
|
1450
1653
|
...fetchProps
|
1451
1654
|
});
|
1452
|
-
const
|
1453
|
-
|
1454
|
-
throw new Error("The server failed to save the record");
|
1455
|
-
}
|
1456
|
-
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);
|
1457
1657
|
};
|
1458
1658
|
_bulkInsertTableRecords = new WeakSet();
|
1459
|
-
bulkInsertTableRecords_fn = async function(objects) {
|
1659
|
+
bulkInsertTableRecords_fn = async function(objects, columns = ["*"]) {
|
1460
1660
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1461
1661
|
const records = objects.map((object) => transformObjectLinks(object));
|
1462
1662
|
const response = await bulkInsertTableRecords({
|
1463
1663
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
|
1664
|
+
queryParams: { columns },
|
1464
1665
|
body: { records },
|
1465
1666
|
...fetchProps
|
1466
1667
|
});
|
1467
|
-
|
1468
|
-
|
1469
|
-
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");
|
1470
1670
|
}
|
1471
|
-
|
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));
|
1472
1673
|
};
|
1473
1674
|
_updateRecordWithID = new WeakSet();
|
1474
|
-
updateRecordWithID_fn = async function(recordId, object) {
|
1675
|
+
updateRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
|
1475
1676
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1476
1677
|
const record = transformObjectLinks(object);
|
1477
1678
|
const response = await updateRecordWithID({
|
1478
1679
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1680
|
+
queryParams: { columns },
|
1479
1681
|
body: record,
|
1480
1682
|
...fetchProps
|
1481
1683
|
});
|
1482
|
-
const
|
1483
|
-
|
1484
|
-
throw new Error("The server failed to save the record");
|
1485
|
-
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);
|
1486
1686
|
};
|
1487
1687
|
_upsertRecordWithID = new WeakSet();
|
1488
|
-
upsertRecordWithID_fn = async function(recordId, object) {
|
1688
|
+
upsertRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
|
1489
1689
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1490
1690
|
const response = await upsertRecordWithID({
|
1491
1691
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1692
|
+
queryParams: { columns },
|
1492
1693
|
body: object,
|
1493
1694
|
...fetchProps
|
1494
1695
|
});
|
1495
|
-
const
|
1496
|
-
|
1497
|
-
throw new Error("The server failed to save the record");
|
1498
|
-
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);
|
1499
1698
|
};
|
1500
1699
|
_deleteRecord = new WeakSet();
|
1501
1700
|
deleteRecord_fn = async function(recordId) {
|
@@ -1505,29 +1704,6 @@ deleteRecord_fn = async function(recordId) {
|
|
1505
1704
|
...fetchProps
|
1506
1705
|
});
|
1507
1706
|
};
|
1508
|
-
_invalidateCache = new WeakSet();
|
1509
|
-
invalidateCache_fn = async function(recordId) {
|
1510
|
-
await __privateGet$4(this, _cache).delete(`rec_${__privateGet$4(this, _table)}:${recordId}`);
|
1511
|
-
const cacheItems = await __privateGet$4(this, _cache).getAll();
|
1512
|
-
const queries = Object.entries(cacheItems).filter(([key]) => key.startsWith("query_"));
|
1513
|
-
for (const [key, value] of queries) {
|
1514
|
-
const ids = getIds(value);
|
1515
|
-
if (ids.includes(recordId))
|
1516
|
-
await __privateGet$4(this, _cache).delete(key);
|
1517
|
-
}
|
1518
|
-
};
|
1519
|
-
_setCacheRecord = new WeakSet();
|
1520
|
-
setCacheRecord_fn = async function(record) {
|
1521
|
-
if (!__privateGet$4(this, _cache).cacheRecords)
|
1522
|
-
return;
|
1523
|
-
await __privateGet$4(this, _cache).set(`rec_${__privateGet$4(this, _table)}:${record.id}`, record);
|
1524
|
-
};
|
1525
|
-
_getCacheRecord = new WeakSet();
|
1526
|
-
getCacheRecord_fn = async function(recordId) {
|
1527
|
-
if (!__privateGet$4(this, _cache).cacheRecords)
|
1528
|
-
return null;
|
1529
|
-
return __privateGet$4(this, _cache).get(`rec_${__privateGet$4(this, _table)}:${recordId}`);
|
1530
|
-
};
|
1531
1707
|
_setCacheQuery = new WeakSet();
|
1532
1708
|
setCacheQuery_fn = async function(query, meta, records) {
|
1533
1709
|
await __privateGet$4(this, _cache).set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: new Date(), meta, records });
|
@@ -1544,17 +1720,17 @@ getCacheQuery_fn = async function(query) {
|
|
1544
1720
|
const hasExpired = result.date.getTime() + ttl < Date.now();
|
1545
1721
|
return hasExpired ? null : result;
|
1546
1722
|
};
|
1547
|
-
|
1548
|
-
|
1549
|
-
if (__privateGet$4(this,
|
1550
|
-
return __privateGet$4(this,
|
1723
|
+
_getSchemaTables$1 = new WeakSet();
|
1724
|
+
getSchemaTables_fn$1 = async function() {
|
1725
|
+
if (__privateGet$4(this, _schemaTables$2))
|
1726
|
+
return __privateGet$4(this, _schemaTables$2);
|
1551
1727
|
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1552
1728
|
const { schema } = await getBranchDetails({
|
1553
1729
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1554
1730
|
...fetchProps
|
1555
1731
|
});
|
1556
|
-
__privateSet$
|
1557
|
-
return schema;
|
1732
|
+
__privateSet$4(this, _schemaTables$2, schema.tables);
|
1733
|
+
return schema.tables;
|
1558
1734
|
};
|
1559
1735
|
const transformObjectLinks = (object) => {
|
1560
1736
|
return Object.entries(object).reduce((acc, [key, value]) => {
|
@@ -1563,11 +1739,11 @@ const transformObjectLinks = (object) => {
|
|
1563
1739
|
return { ...acc, [key]: isIdentifiable(value) ? value.id : value };
|
1564
1740
|
}, {});
|
1565
1741
|
};
|
1566
|
-
const initObject = (db,
|
1742
|
+
const initObject = (db, schemaTables, table, object) => {
|
1567
1743
|
const result = {};
|
1568
1744
|
const { xata, ...rest } = object ?? {};
|
1569
1745
|
Object.assign(result, rest);
|
1570
|
-
const { columns } =
|
1746
|
+
const { columns } = schemaTables.find(({ name }) => name === table) ?? {};
|
1571
1747
|
if (!columns)
|
1572
1748
|
console.error(`Table ${table} not found in schema`);
|
1573
1749
|
for (const column of columns ?? []) {
|
@@ -1587,17 +1763,17 @@ const initObject = (db, schema, table, object) => {
|
|
1587
1763
|
if (!linkTable) {
|
1588
1764
|
console.error(`Failed to parse link for field ${column.name}`);
|
1589
1765
|
} else if (isObject(value)) {
|
1590
|
-
result[column.name] = initObject(db,
|
1766
|
+
result[column.name] = initObject(db, schemaTables, linkTable, value);
|
1591
1767
|
}
|
1592
1768
|
break;
|
1593
1769
|
}
|
1594
1770
|
}
|
1595
1771
|
}
|
1596
|
-
result.read = function() {
|
1597
|
-
return db[table].read(result["id"]);
|
1772
|
+
result.read = function(columns2) {
|
1773
|
+
return db[table].read(result["id"], columns2);
|
1598
1774
|
};
|
1599
|
-
result.update = function(data) {
|
1600
|
-
return db[table].update(result["id"], data);
|
1775
|
+
result.update = function(data, columns2) {
|
1776
|
+
return db[table].update(result["id"], data, columns2);
|
1601
1777
|
};
|
1602
1778
|
result.delete = function() {
|
1603
1779
|
return db[table].delete(result["id"]);
|
@@ -1611,14 +1787,8 @@ const initObject = (db, schema, table, object) => {
|
|
1611
1787
|
Object.freeze(result);
|
1612
1788
|
return result;
|
1613
1789
|
};
|
1614
|
-
function
|
1615
|
-
|
1616
|
-
return value.map((item) => getIds(item)).flat();
|
1617
|
-
}
|
1618
|
-
if (!isObject(value))
|
1619
|
-
return [];
|
1620
|
-
const nestedIds = Object.values(value).map((item) => getIds(item)).flat();
|
1621
|
-
return isString(value.id) ? [value.id, ...nestedIds] : nestedIds;
|
1790
|
+
function isResponseWithRecords(value) {
|
1791
|
+
return isObject(value) && Array.isArray(value.records);
|
1622
1792
|
}
|
1623
1793
|
|
1624
1794
|
var __accessCheck$3 = (obj, member, msg) => {
|
@@ -1634,7 +1804,7 @@ var __privateAdd$3 = (obj, member, value) => {
|
|
1634
1804
|
throw TypeError("Cannot add the same private member more than once");
|
1635
1805
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1636
1806
|
};
|
1637
|
-
var __privateSet$
|
1807
|
+
var __privateSet$3 = (obj, member, value, setter) => {
|
1638
1808
|
__accessCheck$3(obj, member, "write to private field");
|
1639
1809
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1640
1810
|
return value;
|
@@ -1643,9 +1813,8 @@ var _map;
|
|
1643
1813
|
class SimpleCache {
|
1644
1814
|
constructor(options = {}) {
|
1645
1815
|
__privateAdd$3(this, _map, void 0);
|
1646
|
-
__privateSet$
|
1816
|
+
__privateSet$3(this, _map, /* @__PURE__ */ new Map());
|
1647
1817
|
this.capacity = options.max ?? 500;
|
1648
|
-
this.cacheRecords = options.cacheRecords ?? true;
|
1649
1818
|
this.defaultQueryTTL = options.defaultQueryTTL ?? 60 * 1e3;
|
1650
1819
|
}
|
1651
1820
|
async getAll() {
|
@@ -1703,31 +1872,42 @@ var __privateAdd$2 = (obj, member, value) => {
|
|
1703
1872
|
throw TypeError("Cannot add the same private member more than once");
|
1704
1873
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1705
1874
|
};
|
1706
|
-
var
|
1875
|
+
var __privateSet$2 = (obj, member, value, setter) => {
|
1876
|
+
__accessCheck$2(obj, member, "write to private field");
|
1877
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
1878
|
+
return value;
|
1879
|
+
};
|
1880
|
+
var _tables, _schemaTables$1;
|
1707
1881
|
class SchemaPlugin extends XataPlugin {
|
1708
|
-
constructor(
|
1882
|
+
constructor(schemaTables) {
|
1709
1883
|
super();
|
1710
|
-
this.tableNames = tableNames;
|
1711
1884
|
__privateAdd$2(this, _tables, {});
|
1885
|
+
__privateAdd$2(this, _schemaTables$1, void 0);
|
1886
|
+
__privateSet$2(this, _schemaTables$1, schemaTables);
|
1712
1887
|
}
|
1713
1888
|
build(pluginOptions) {
|
1714
|
-
const db = new Proxy(
|
1715
|
-
|
1716
|
-
|
1717
|
-
|
1718
|
-
|
1719
|
-
|
1889
|
+
const db = new Proxy(
|
1890
|
+
{},
|
1891
|
+
{
|
1892
|
+
get: (_target, table) => {
|
1893
|
+
if (!isString(table))
|
1894
|
+
throw new Error("Invalid table name");
|
1895
|
+
if (__privateGet$2(this, _tables)[table] === void 0) {
|
1896
|
+
__privateGet$2(this, _tables)[table] = new RestRepository({ db, pluginOptions, table, schemaTables: __privateGet$2(this, _schemaTables$1) });
|
1897
|
+
}
|
1898
|
+
return __privateGet$2(this, _tables)[table];
|
1720
1899
|
}
|
1721
|
-
return __privateGet$2(this, _tables)[table];
|
1722
1900
|
}
|
1723
|
-
|
1724
|
-
|
1725
|
-
|
1901
|
+
);
|
1902
|
+
const tableNames = __privateGet$2(this, _schemaTables$1)?.map(({ name }) => name) ?? [];
|
1903
|
+
for (const table of tableNames) {
|
1904
|
+
db[table] = new RestRepository({ db, pluginOptions, table, schemaTables: __privateGet$2(this, _schemaTables$1) });
|
1726
1905
|
}
|
1727
1906
|
return db;
|
1728
1907
|
}
|
1729
1908
|
}
|
1730
1909
|
_tables = new WeakMap();
|
1910
|
+
_schemaTables$1 = new WeakMap();
|
1731
1911
|
|
1732
1912
|
var __accessCheck$1 = (obj, member, msg) => {
|
1733
1913
|
if (!member.has(obj))
|
@@ -1751,82 +1931,77 @@ var __privateMethod$1 = (obj, member, method) => {
|
|
1751
1931
|
__accessCheck$1(obj, member, "access private method");
|
1752
1932
|
return method;
|
1753
1933
|
};
|
1754
|
-
var
|
1934
|
+
var _schemaTables, _search, search_fn, _getSchemaTables, getSchemaTables_fn;
|
1755
1935
|
class SearchPlugin extends XataPlugin {
|
1756
|
-
constructor(db) {
|
1936
|
+
constructor(db, schemaTables) {
|
1757
1937
|
super();
|
1758
1938
|
this.db = db;
|
1759
1939
|
__privateAdd$1(this, _search);
|
1760
|
-
__privateAdd$1(this,
|
1761
|
-
__privateAdd$1(this,
|
1940
|
+
__privateAdd$1(this, _getSchemaTables);
|
1941
|
+
__privateAdd$1(this, _schemaTables, void 0);
|
1942
|
+
__privateSet$1(this, _schemaTables, schemaTables);
|
1762
1943
|
}
|
1763
1944
|
build({ getFetchProps }) {
|
1764
1945
|
return {
|
1765
1946
|
all: async (query, options = {}) => {
|
1766
1947
|
const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
|
1767
|
-
const
|
1948
|
+
const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
|
1768
1949
|
return records.map((record) => {
|
1769
1950
|
const { table = "orphan" } = record.xata;
|
1770
|
-
return { table, record: initObject(this.db,
|
1951
|
+
return { table, record: initObject(this.db, schemaTables, table, record) };
|
1771
1952
|
});
|
1772
1953
|
},
|
1773
1954
|
byTable: async (query, options = {}) => {
|
1774
1955
|
const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
|
1775
|
-
const
|
1956
|
+
const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
|
1776
1957
|
return records.reduce((acc, record) => {
|
1777
1958
|
const { table = "orphan" } = record.xata;
|
1778
1959
|
const items = acc[table] ?? [];
|
1779
|
-
const item = initObject(this.db,
|
1960
|
+
const item = initObject(this.db, schemaTables, table, record);
|
1780
1961
|
return { ...acc, [table]: [...items, item] };
|
1781
1962
|
}, {});
|
1782
1963
|
}
|
1783
1964
|
};
|
1784
1965
|
}
|
1785
1966
|
}
|
1786
|
-
|
1967
|
+
_schemaTables = new WeakMap();
|
1787
1968
|
_search = new WeakSet();
|
1788
1969
|
search_fn = async function(query, options, getFetchProps) {
|
1789
1970
|
const fetchProps = await getFetchProps();
|
1790
|
-
const { tables, fuzziness, highlight } = options ?? {};
|
1971
|
+
const { tables, fuzziness, highlight, prefix } = options ?? {};
|
1791
1972
|
const { records } = await searchBranch({
|
1792
1973
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1793
|
-
body: { tables, query, fuzziness, highlight },
|
1974
|
+
body: { tables, query, fuzziness, prefix, highlight },
|
1794
1975
|
...fetchProps
|
1795
1976
|
});
|
1796
1977
|
return records;
|
1797
1978
|
};
|
1798
|
-
|
1799
|
-
|
1800
|
-
if (__privateGet$1(this,
|
1801
|
-
return __privateGet$1(this,
|
1979
|
+
_getSchemaTables = new WeakSet();
|
1980
|
+
getSchemaTables_fn = async function(getFetchProps) {
|
1981
|
+
if (__privateGet$1(this, _schemaTables))
|
1982
|
+
return __privateGet$1(this, _schemaTables);
|
1802
1983
|
const fetchProps = await getFetchProps();
|
1803
1984
|
const { schema } = await getBranchDetails({
|
1804
1985
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1805
1986
|
...fetchProps
|
1806
1987
|
});
|
1807
|
-
__privateSet$1(this,
|
1808
|
-
return schema;
|
1988
|
+
__privateSet$1(this, _schemaTables, schema.tables);
|
1989
|
+
return schema.tables;
|
1809
1990
|
};
|
1810
1991
|
|
1811
1992
|
const isBranchStrategyBuilder = (strategy) => {
|
1812
1993
|
return typeof strategy === "function";
|
1813
1994
|
};
|
1814
1995
|
|
1815
|
-
const envBranchNames = [
|
1816
|
-
"XATA_BRANCH",
|
1817
|
-
"VERCEL_GIT_COMMIT_REF",
|
1818
|
-
"CF_PAGES_BRANCH",
|
1819
|
-
"BRANCH"
|
1820
|
-
];
|
1821
1996
|
async function getCurrentBranchName(options) {
|
1822
|
-
const
|
1823
|
-
if (
|
1824
|
-
const details = await getDatabaseBranch(
|
1997
|
+
const { branch, envBranch } = getEnvironment();
|
1998
|
+
if (branch) {
|
1999
|
+
const details = await getDatabaseBranch(branch, options);
|
1825
2000
|
if (details)
|
1826
|
-
return
|
1827
|
-
console.warn(`Branch ${
|
2001
|
+
return branch;
|
2002
|
+
console.warn(`Branch ${branch} not found in Xata. Ignoring...`);
|
1828
2003
|
}
|
1829
|
-
const gitBranch = await getGitBranch();
|
2004
|
+
const gitBranch = envBranch || await getGitBranch();
|
1830
2005
|
return resolveXataBranch(gitBranch, options);
|
1831
2006
|
}
|
1832
2007
|
async function getCurrentBranchDetails(options) {
|
@@ -1837,18 +2012,24 @@ async function resolveXataBranch(gitBranch, options) {
|
|
1837
2012
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1838
2013
|
const apiKey = options?.apiKey || getAPIKey();
|
1839
2014
|
if (!databaseURL)
|
1840
|
-
throw new Error(
|
2015
|
+
throw new Error(
|
2016
|
+
"A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
|
2017
|
+
);
|
1841
2018
|
if (!apiKey)
|
1842
|
-
throw new Error(
|
2019
|
+
throw new Error(
|
2020
|
+
"An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
|
2021
|
+
);
|
1843
2022
|
const [protocol, , host, , dbName] = databaseURL.split("/");
|
1844
2023
|
const [workspace] = host.split(".");
|
2024
|
+
const { fallbackBranch } = getEnvironment();
|
1845
2025
|
const { branch } = await resolveBranch({
|
1846
2026
|
apiKey,
|
1847
2027
|
apiUrl: databaseURL,
|
1848
2028
|
fetchImpl: getFetchImplementation(options?.fetchImpl),
|
1849
2029
|
workspacesApiUrl: `${protocol}//${host}`,
|
1850
2030
|
pathParams: { dbName, workspace },
|
1851
|
-
queryParams: { gitBranch, fallbackBranch
|
2031
|
+
queryParams: { gitBranch, fallbackBranch },
|
2032
|
+
trace: defaultTrace
|
1852
2033
|
});
|
1853
2034
|
return branch;
|
1854
2035
|
}
|
@@ -1856,9 +2037,13 @@ async function getDatabaseBranch(branch, options) {
|
|
1856
2037
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1857
2038
|
const apiKey = options?.apiKey || getAPIKey();
|
1858
2039
|
if (!databaseURL)
|
1859
|
-
throw new Error(
|
2040
|
+
throw new Error(
|
2041
|
+
"A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
|
2042
|
+
);
|
1860
2043
|
if (!apiKey)
|
1861
|
-
throw new Error(
|
2044
|
+
throw new Error(
|
2045
|
+
"An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
|
2046
|
+
);
|
1862
2047
|
const [protocol, , host, , database] = databaseURL.split("/");
|
1863
2048
|
const [workspace] = host.split(".");
|
1864
2049
|
const dbBranchName = `${database}:${branch}`;
|
@@ -1868,10 +2053,8 @@ async function getDatabaseBranch(branch, options) {
|
|
1868
2053
|
apiUrl: databaseURL,
|
1869
2054
|
fetchImpl: getFetchImplementation(options?.fetchImpl),
|
1870
2055
|
workspacesApiUrl: `${protocol}//${host}`,
|
1871
|
-
pathParams: {
|
1872
|
-
|
1873
|
-
workspace
|
1874
|
-
}
|
2056
|
+
pathParams: { dbBranchName, workspace },
|
2057
|
+
trace: defaultTrace
|
1875
2058
|
});
|
1876
2059
|
} catch (err) {
|
1877
2060
|
if (isObject(err) && err.status === 404)
|
@@ -1879,21 +2062,10 @@ async function getDatabaseBranch(branch, options) {
|
|
1879
2062
|
throw err;
|
1880
2063
|
}
|
1881
2064
|
}
|
1882
|
-
function getBranchByEnvVariable() {
|
1883
|
-
for (const name of envBranchNames) {
|
1884
|
-
const value = getEnvVariable(name);
|
1885
|
-
if (value) {
|
1886
|
-
return value;
|
1887
|
-
}
|
1888
|
-
}
|
1889
|
-
try {
|
1890
|
-
return XATA_BRANCH;
|
1891
|
-
} catch (err) {
|
1892
|
-
}
|
1893
|
-
}
|
1894
2065
|
function getDatabaseURL() {
|
1895
2066
|
try {
|
1896
|
-
|
2067
|
+
const { databaseURL } = getEnvironment();
|
2068
|
+
return databaseURL;
|
1897
2069
|
} catch (err) {
|
1898
2070
|
return void 0;
|
1899
2071
|
}
|
@@ -1922,20 +2094,23 @@ var __privateMethod = (obj, member, method) => {
|
|
1922
2094
|
return method;
|
1923
2095
|
};
|
1924
2096
|
const buildClient = (plugins) => {
|
1925
|
-
var _branch, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
|
2097
|
+
var _branch, _options, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
|
1926
2098
|
return _a = class {
|
1927
|
-
constructor(options = {},
|
2099
|
+
constructor(options = {}, schemaTables) {
|
1928
2100
|
__privateAdd(this, _parseOptions);
|
1929
2101
|
__privateAdd(this, _getFetchProps);
|
1930
2102
|
__privateAdd(this, _evaluateBranch);
|
1931
2103
|
__privateAdd(this, _branch, void 0);
|
2104
|
+
__privateAdd(this, _options, void 0);
|
1932
2105
|
const safeOptions = __privateMethod(this, _parseOptions, parseOptions_fn).call(this, options);
|
2106
|
+
__privateSet(this, _options, safeOptions);
|
1933
2107
|
const pluginOptions = {
|
1934
2108
|
getFetchProps: () => __privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
|
1935
|
-
cache: safeOptions.cache
|
2109
|
+
cache: safeOptions.cache,
|
2110
|
+
trace: safeOptions.trace
|
1936
2111
|
};
|
1937
|
-
const db = new SchemaPlugin(
|
1938
|
-
const search = new SearchPlugin(db).build(pluginOptions);
|
2112
|
+
const db = new SchemaPlugin(schemaTables).build(pluginOptions);
|
2113
|
+
const search = new SearchPlugin(db, schemaTables).build(pluginOptions);
|
1939
2114
|
this.db = db;
|
1940
2115
|
this.search = search;
|
1941
2116
|
for (const [key, namespace] of Object.entries(plugins ?? {})) {
|
@@ -1951,22 +2126,23 @@ const buildClient = (plugins) => {
|
|
1951
2126
|
}
|
1952
2127
|
}
|
1953
2128
|
}
|
1954
|
-
|
2129
|
+
async getConfig() {
|
2130
|
+
const databaseURL = __privateGet(this, _options).databaseURL;
|
2131
|
+
const branch = await __privateGet(this, _options).branch();
|
2132
|
+
return { databaseURL, branch };
|
2133
|
+
}
|
2134
|
+
}, _branch = new WeakMap(), _options = new WeakMap(), _parseOptions = new WeakSet(), parseOptions_fn = function(options) {
|
1955
2135
|
const fetch = getFetchImplementation(options?.fetch);
|
1956
2136
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1957
2137
|
const apiKey = options?.apiKey || getAPIKey();
|
1958
|
-
const cache = options?.cache ?? new SimpleCache({
|
2138
|
+
const cache = options?.cache ?? new SimpleCache({ defaultQueryTTL: 0 });
|
2139
|
+
const trace = options?.trace ?? defaultTrace;
|
1959
2140
|
const branch = async () => options?.branch !== void 0 ? await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, options.branch) : await getCurrentBranchName({ apiKey, databaseURL, fetchImpl: options?.fetch });
|
1960
2141
|
if (!databaseURL || !apiKey) {
|
1961
2142
|
throw new Error("Options databaseURL and apiKey are required");
|
1962
2143
|
}
|
1963
|
-
return { fetch, databaseURL, apiKey, branch, cache };
|
1964
|
-
}, _getFetchProps = new WeakSet(), getFetchProps_fn = async function({
|
1965
|
-
fetch,
|
1966
|
-
apiKey,
|
1967
|
-
databaseURL,
|
1968
|
-
branch
|
1969
|
-
}) {
|
2144
|
+
return { fetch, databaseURL, apiKey, branch, cache, trace };
|
2145
|
+
}, _getFetchProps = new WeakSet(), getFetchProps_fn = async function({ fetch, apiKey, databaseURL, branch, trace }) {
|
1970
2146
|
const branchValue = await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, branch);
|
1971
2147
|
if (!branchValue)
|
1972
2148
|
throw new Error("Unable to resolve branch value");
|
@@ -1978,7 +2154,8 @@ const buildClient = (plugins) => {
|
|
1978
2154
|
const hasBranch = params.dbBranchName ?? params.branch;
|
1979
2155
|
const newPath = path.replace(/^\/db\/[^/]+/, hasBranch ? `:${branchValue}` : "");
|
1980
2156
|
return databaseURL + newPath;
|
1981
|
-
}
|
2157
|
+
},
|
2158
|
+
trace
|
1982
2159
|
};
|
1983
2160
|
}, _evaluateBranch = new WeakSet(), evaluateBranch_fn = async function(param) {
|
1984
2161
|
if (__privateGet(this, _branch))
|
@@ -2001,6 +2178,88 @@ const buildClient = (plugins) => {
|
|
2001
2178
|
class BaseClient extends buildClient() {
|
2002
2179
|
}
|
2003
2180
|
|
2181
|
+
const META = "__";
|
2182
|
+
const VALUE = "___";
|
2183
|
+
class Serializer {
|
2184
|
+
constructor() {
|
2185
|
+
this.classes = {};
|
2186
|
+
}
|
2187
|
+
add(clazz) {
|
2188
|
+
this.classes[clazz.name] = clazz;
|
2189
|
+
}
|
2190
|
+
toJSON(data) {
|
2191
|
+
function visit(obj) {
|
2192
|
+
if (Array.isArray(obj))
|
2193
|
+
return obj.map(visit);
|
2194
|
+
const type = typeof obj;
|
2195
|
+
if (type === "undefined")
|
2196
|
+
return { [META]: "undefined" };
|
2197
|
+
if (type === "bigint")
|
2198
|
+
return { [META]: "bigint", [VALUE]: obj.toString() };
|
2199
|
+
if (obj === null || type !== "object")
|
2200
|
+
return obj;
|
2201
|
+
const constructor = obj.constructor;
|
2202
|
+
const o = { [META]: constructor.name };
|
2203
|
+
for (const [key, value] of Object.entries(obj)) {
|
2204
|
+
o[key] = visit(value);
|
2205
|
+
}
|
2206
|
+
if (constructor === Date)
|
2207
|
+
o[VALUE] = obj.toISOString();
|
2208
|
+
if (constructor === Map)
|
2209
|
+
o[VALUE] = Object.fromEntries(obj);
|
2210
|
+
if (constructor === Set)
|
2211
|
+
o[VALUE] = [...obj];
|
2212
|
+
return o;
|
2213
|
+
}
|
2214
|
+
return JSON.stringify(visit(data));
|
2215
|
+
}
|
2216
|
+
fromJSON(json) {
|
2217
|
+
return JSON.parse(json, (key, value) => {
|
2218
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
2219
|
+
const { [META]: clazz, [VALUE]: val, ...rest } = value;
|
2220
|
+
const constructor = this.classes[clazz];
|
2221
|
+
if (constructor) {
|
2222
|
+
return Object.assign(Object.create(constructor.prototype), rest);
|
2223
|
+
}
|
2224
|
+
if (clazz === "Date")
|
2225
|
+
return new Date(val);
|
2226
|
+
if (clazz === "Set")
|
2227
|
+
return new Set(val);
|
2228
|
+
if (clazz === "Map")
|
2229
|
+
return new Map(Object.entries(val));
|
2230
|
+
if (clazz === "bigint")
|
2231
|
+
return BigInt(val);
|
2232
|
+
if (clazz === "undefined")
|
2233
|
+
return void 0;
|
2234
|
+
return rest;
|
2235
|
+
}
|
2236
|
+
return value;
|
2237
|
+
});
|
2238
|
+
}
|
2239
|
+
}
|
2240
|
+
const defaultSerializer = new Serializer();
|
2241
|
+
const serialize = (data) => {
|
2242
|
+
return defaultSerializer.toJSON(data);
|
2243
|
+
};
|
2244
|
+
const deserialize = (json) => {
|
2245
|
+
return defaultSerializer.fromJSON(json);
|
2246
|
+
};
|
2247
|
+
|
2248
|
+
function buildWorkerRunner(config) {
|
2249
|
+
return function xataWorker(name, _worker) {
|
2250
|
+
return async (...args) => {
|
2251
|
+
const url = process.env.NODE_ENV === "development" ? `http://localhost:64749/${name}` : `https://dispatcher.xata.workers.dev/${config.workspace}/${config.worker}/${name}`;
|
2252
|
+
const result = await fetch(url, {
|
2253
|
+
method: "POST",
|
2254
|
+
headers: { "Content-Type": "application/json" },
|
2255
|
+
body: serialize({ args })
|
2256
|
+
});
|
2257
|
+
const text = await result.text();
|
2258
|
+
return deserialize(text);
|
2259
|
+
};
|
2260
|
+
};
|
2261
|
+
}
|
2262
|
+
|
2004
2263
|
class XataError extends Error {
|
2005
2264
|
constructor(message, status) {
|
2006
2265
|
super(message);
|
@@ -2021,6 +2280,7 @@ exports.Repository = Repository;
|
|
2021
2280
|
exports.RestRepository = RestRepository;
|
2022
2281
|
exports.SchemaPlugin = SchemaPlugin;
|
2023
2282
|
exports.SearchPlugin = SearchPlugin;
|
2283
|
+
exports.Serializer = Serializer;
|
2024
2284
|
exports.SimpleCache = SimpleCache;
|
2025
2285
|
exports.XataApiClient = XataApiClient;
|
2026
2286
|
exports.XataApiPlugin = XataApiPlugin;
|
@@ -2030,6 +2290,7 @@ exports.acceptWorkspaceMemberInvite = acceptWorkspaceMemberInvite;
|
|
2030
2290
|
exports.addGitBranchesEntry = addGitBranchesEntry;
|
2031
2291
|
exports.addTableColumn = addTableColumn;
|
2032
2292
|
exports.buildClient = buildClient;
|
2293
|
+
exports.buildWorkerRunner = buildWorkerRunner;
|
2033
2294
|
exports.bulkInsertTableRecords = bulkInsertTableRecords;
|
2034
2295
|
exports.cancelWorkspaceMemberInvite = cancelWorkspaceMemberInvite;
|
2035
2296
|
exports.contains = contains;
|
@@ -2046,6 +2307,7 @@ exports.deleteTable = deleteTable;
|
|
2046
2307
|
exports.deleteUser = deleteUser;
|
2047
2308
|
exports.deleteUserAPIKey = deleteUserAPIKey;
|
2048
2309
|
exports.deleteWorkspace = deleteWorkspace;
|
2310
|
+
exports.deserialize = deserialize;
|
2049
2311
|
exports.endsWith = endsWith;
|
2050
2312
|
exports.executeBranchMigrationPlan = executeBranchMigrationPlan;
|
2051
2313
|
exports.exists = exists;
|
@@ -2061,6 +2323,7 @@ exports.getColumn = getColumn;
|
|
2061
2323
|
exports.getCurrentBranchDetails = getCurrentBranchDetails;
|
2062
2324
|
exports.getCurrentBranchName = getCurrentBranchName;
|
2063
2325
|
exports.getDatabaseList = getDatabaseList;
|
2326
|
+
exports.getDatabaseMetadata = getDatabaseMetadata;
|
2064
2327
|
exports.getDatabaseURL = getDatabaseURL;
|
2065
2328
|
exports.getGitBranchesMapping = getGitBranchesMapping;
|
2066
2329
|
exports.getRecord = getRecord;
|
@@ -2098,6 +2361,7 @@ exports.resendWorkspaceMemberInvite = resendWorkspaceMemberInvite;
|
|
2098
2361
|
exports.resolveBranch = resolveBranch;
|
2099
2362
|
exports.searchBranch = searchBranch;
|
2100
2363
|
exports.searchTable = searchTable;
|
2364
|
+
exports.serialize = serialize;
|
2101
2365
|
exports.setTableSchema = setTableSchema;
|
2102
2366
|
exports.startsWith = startsWith;
|
2103
2367
|
exports.updateBranchMetadata = updateBranchMetadata;
|
@@ -2106,6 +2370,7 @@ exports.updateRecordWithID = updateRecordWithID;
|
|
2106
2370
|
exports.updateTable = updateTable;
|
2107
2371
|
exports.updateUser = updateUser;
|
2108
2372
|
exports.updateWorkspace = updateWorkspace;
|
2373
|
+
exports.updateWorkspaceMemberInvite = updateWorkspaceMemberInvite;
|
2109
2374
|
exports.updateWorkspaceMemberRole = updateWorkspaceMemberRole;
|
2110
2375
|
exports.upsertRecordWithID = upsertRecordWithID;
|
2111
2376
|
//# sourceMappingURL=index.cjs.map
|