@xata.io/client 0.0.0-alpha.vf4b92f1 → 0.0.0-alpha.vf683143
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 +224 -0
- package/README.md +273 -1
- package/Usage.md +451 -0
- package/dist/index.cjs +1318 -513
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2144 -325
- package/dist/index.mjs +1265 -514
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -4
- package/tsconfig.json +1 -0
package/dist/index.mjs
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
const defaultTrace = async (_name, fn, _options) => {
|
2
|
+
return await fn({
|
3
|
+
setAttributes: () => {
|
4
|
+
return;
|
5
|
+
}
|
6
|
+
});
|
7
|
+
};
|
8
|
+
const TraceAttributes = {
|
9
|
+
KIND: "xata.trace.kind",
|
10
|
+
VERSION: "xata.sdk.version",
|
11
|
+
TABLE: "xata.table",
|
12
|
+
HTTP_REQUEST_ID: "http.request_id",
|
13
|
+
HTTP_STATUS_CODE: "http.status_code",
|
14
|
+
HTTP_HOST: "http.host",
|
15
|
+
HTTP_SCHEME: "http.scheme",
|
16
|
+
HTTP_USER_AGENT: "http.user_agent",
|
17
|
+
HTTP_METHOD: "http.method",
|
18
|
+
HTTP_URL: "http.url",
|
19
|
+
HTTP_ROUTE: "http.route",
|
20
|
+
HTTP_TARGET: "http.target"
|
21
|
+
};
|
22
|
+
|
1
23
|
function notEmpty(value) {
|
2
24
|
return value !== null && value !== void 0;
|
3
25
|
}
|
@@ -7,43 +29,101 @@ function compact(arr) {
|
|
7
29
|
function isObject(value) {
|
8
30
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
9
31
|
}
|
32
|
+
function isDefined(value) {
|
33
|
+
return value !== null && value !== void 0;
|
34
|
+
}
|
10
35
|
function isString(value) {
|
11
|
-
return value
|
36
|
+
return isDefined(value) && typeof value === "string";
|
37
|
+
}
|
38
|
+
function isStringArray(value) {
|
39
|
+
return isDefined(value) && Array.isArray(value) && value.every(isString);
|
12
40
|
}
|
13
41
|
function toBase64(value) {
|
14
42
|
try {
|
15
43
|
return btoa(value);
|
16
44
|
} catch (err) {
|
17
|
-
|
45
|
+
const buf = Buffer;
|
46
|
+
return buf.from(value).toString("base64");
|
18
47
|
}
|
19
48
|
}
|
20
49
|
|
21
|
-
function
|
50
|
+
function getEnvironment() {
|
22
51
|
try {
|
23
|
-
if (isObject(process) &&
|
24
|
-
return
|
52
|
+
if (isObject(process) && isObject(process.env)) {
|
53
|
+
return {
|
54
|
+
apiKey: process.env.XATA_API_KEY ?? getGlobalApiKey(),
|
55
|
+
databaseURL: process.env.XATA_DATABASE_URL ?? getGlobalDatabaseURL(),
|
56
|
+
branch: process.env.XATA_BRANCH ?? getGlobalBranch(),
|
57
|
+
envBranch: process.env.VERCEL_GIT_COMMIT_REF ?? process.env.CF_PAGES_BRANCH ?? process.env.BRANCH,
|
58
|
+
fallbackBranch: process.env.XATA_FALLBACK_BRANCH ?? getGlobalFallbackBranch()
|
59
|
+
};
|
25
60
|
}
|
26
61
|
} catch (err) {
|
27
62
|
}
|
28
63
|
try {
|
29
|
-
if (isObject(Deno) &&
|
30
|
-
return
|
64
|
+
if (isObject(Deno) && isObject(Deno.env)) {
|
65
|
+
return {
|
66
|
+
apiKey: Deno.env.get("XATA_API_KEY") ?? getGlobalApiKey(),
|
67
|
+
databaseURL: Deno.env.get("XATA_DATABASE_URL") ?? getGlobalDatabaseURL(),
|
68
|
+
branch: Deno.env.get("XATA_BRANCH") ?? getGlobalBranch(),
|
69
|
+
envBranch: Deno.env.get("VERCEL_GIT_COMMIT_REF") ?? Deno.env.get("CF_PAGES_BRANCH") ?? Deno.env.get("BRANCH"),
|
70
|
+
fallbackBranch: Deno.env.get("XATA_FALLBACK_BRANCH") ?? getGlobalFallbackBranch()
|
71
|
+
};
|
31
72
|
}
|
32
73
|
} catch (err) {
|
33
74
|
}
|
75
|
+
return {
|
76
|
+
apiKey: getGlobalApiKey(),
|
77
|
+
databaseURL: getGlobalDatabaseURL(),
|
78
|
+
branch: getGlobalBranch(),
|
79
|
+
envBranch: void 0,
|
80
|
+
fallbackBranch: getGlobalFallbackBranch()
|
81
|
+
};
|
82
|
+
}
|
83
|
+
function getGlobalApiKey() {
|
84
|
+
try {
|
85
|
+
return XATA_API_KEY;
|
86
|
+
} catch (err) {
|
87
|
+
return void 0;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
function getGlobalDatabaseURL() {
|
91
|
+
try {
|
92
|
+
return XATA_DATABASE_URL;
|
93
|
+
} catch (err) {
|
94
|
+
return void 0;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
function getGlobalBranch() {
|
98
|
+
try {
|
99
|
+
return XATA_BRANCH;
|
100
|
+
} catch (err) {
|
101
|
+
return void 0;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
function getGlobalFallbackBranch() {
|
105
|
+
try {
|
106
|
+
return XATA_FALLBACK_BRANCH;
|
107
|
+
} catch (err) {
|
108
|
+
return void 0;
|
109
|
+
}
|
34
110
|
}
|
35
111
|
async function getGitBranch() {
|
112
|
+
const cmd = ["git", "branch", "--show-current"];
|
113
|
+
const fullCmd = cmd.join(" ");
|
114
|
+
const nodeModule = ["child", "process"].join("_");
|
115
|
+
const execOptions = { encoding: "utf-8", stdio: ["ignore", "pipe", "ignore"] };
|
36
116
|
try {
|
37
|
-
|
117
|
+
if (typeof require === "function") {
|
118
|
+
return require(nodeModule).execSync(fullCmd, execOptions).trim();
|
119
|
+
}
|
120
|
+
const { execSync } = await import(nodeModule);
|
121
|
+
return execSync(fullCmd, execOptions).toString().trim();
|
38
122
|
} catch (err) {
|
39
123
|
}
|
40
124
|
try {
|
41
125
|
if (isObject(Deno)) {
|
42
|
-
const process2 = Deno.run({
|
43
|
-
cmd: ["git", "branch", "--show-current"],
|
44
|
-
stdout: "piped",
|
45
|
-
stderr: "piped"
|
46
|
-
});
|
126
|
+
const process2 = Deno.run({ cmd, stdout: "piped", stderr: "null" });
|
47
127
|
return new TextDecoder().decode(await process2.output()).trim();
|
48
128
|
}
|
49
129
|
} catch (err) {
|
@@ -52,7 +132,8 @@ async function getGitBranch() {
|
|
52
132
|
|
53
133
|
function getAPIKey() {
|
54
134
|
try {
|
55
|
-
|
135
|
+
const { apiKey } = getEnvironment();
|
136
|
+
return apiKey;
|
56
137
|
} catch (err) {
|
57
138
|
return void 0;
|
58
139
|
}
|
@@ -62,21 +143,35 @@ function getFetchImplementation(userFetch) {
|
|
62
143
|
const globalFetch = typeof fetch !== "undefined" ? fetch : void 0;
|
63
144
|
const fetchImpl = userFetch ?? globalFetch;
|
64
145
|
if (!fetchImpl) {
|
65
|
-
throw new Error(
|
146
|
+
throw new Error(
|
147
|
+
`Couldn't find \`fetch\`. Install a fetch implementation such as \`node-fetch\` and pass it explicitly.`
|
148
|
+
);
|
66
149
|
}
|
67
150
|
return fetchImpl;
|
68
151
|
}
|
69
152
|
|
70
|
-
|
71
|
-
|
153
|
+
const VERSION = "0.0.0-alpha.vf683143";
|
154
|
+
|
155
|
+
class ErrorWithCause extends Error {
|
156
|
+
constructor(message, options) {
|
157
|
+
super(message, options);
|
158
|
+
}
|
159
|
+
}
|
160
|
+
class FetcherError extends ErrorWithCause {
|
161
|
+
constructor(status, data, requestId) {
|
72
162
|
super(getMessage(data));
|
73
163
|
this.status = status;
|
74
164
|
this.errors = isBulkError(data) ? data.errors : void 0;
|
165
|
+
this.requestId = requestId;
|
75
166
|
if (data instanceof Error) {
|
76
167
|
this.stack = data.stack;
|
77
168
|
this.cause = data.cause;
|
78
169
|
}
|
79
170
|
}
|
171
|
+
toString() {
|
172
|
+
const error = super.toString();
|
173
|
+
return `[${this.status}] (${this.requestId ?? "Unknown"}): ${error}`;
|
174
|
+
}
|
80
175
|
}
|
81
176
|
function isBulkError(error) {
|
82
177
|
return isObject(error) && Array.isArray(error.errors);
|
@@ -99,9 +194,17 @@ function getMessage(data) {
|
|
99
194
|
}
|
100
195
|
|
101
196
|
const resolveUrl = (url, queryParams = {}, pathParams = {}) => {
|
102
|
-
const
|
197
|
+
const cleanQueryParams = Object.entries(queryParams).reduce((acc, [key, value]) => {
|
198
|
+
if (value === void 0 || value === null)
|
199
|
+
return acc;
|
200
|
+
return { ...acc, [key]: value };
|
201
|
+
}, {});
|
202
|
+
const query = new URLSearchParams(cleanQueryParams).toString();
|
103
203
|
const queryString = query.length > 0 ? `?${query}` : "";
|
104
|
-
|
204
|
+
const cleanPathParams = Object.entries(pathParams).reduce((acc, [key, value]) => {
|
205
|
+
return { ...acc, [key]: encodeURIComponent(String(value ?? "")).replace("%3A", ":") };
|
206
|
+
}, {});
|
207
|
+
return url.replace(/\{\w*\}/g, (key) => cleanPathParams[key.slice(1, -1)]) + queryString;
|
105
208
|
};
|
106
209
|
function buildBaseUrl({
|
107
210
|
path,
|
@@ -109,10 +212,10 @@ function buildBaseUrl({
|
|
109
212
|
apiUrl,
|
110
213
|
pathParams
|
111
214
|
}) {
|
112
|
-
if (
|
215
|
+
if (pathParams?.workspace === void 0)
|
113
216
|
return `${apiUrl}${path}`;
|
114
217
|
const url = typeof workspacesApiUrl === "string" ? `${workspacesApiUrl}${path}` : workspacesApiUrl(path, pathParams);
|
115
|
-
return url.replace("{workspaceId}", pathParams.workspace);
|
218
|
+
return url.replace("{workspaceId}", String(pathParams.workspace));
|
116
219
|
}
|
117
220
|
function hostHeader(url) {
|
118
221
|
const pattern = /.*:\/\/(?<host>[^/]+).*/;
|
@@ -129,32 +232,61 @@ async function fetch$1({
|
|
129
232
|
fetchImpl,
|
130
233
|
apiKey,
|
131
234
|
apiUrl,
|
132
|
-
workspacesApiUrl
|
235
|
+
workspacesApiUrl,
|
236
|
+
trace
|
133
237
|
}) {
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
238
|
+
return trace(
|
239
|
+
`${method.toUpperCase()} ${path}`,
|
240
|
+
async ({ setAttributes }) => {
|
241
|
+
const baseUrl = buildBaseUrl({ path, workspacesApiUrl, pathParams, apiUrl });
|
242
|
+
const fullUrl = resolveUrl(baseUrl, queryParams, pathParams);
|
243
|
+
const url = fullUrl.includes("localhost") ? fullUrl.replace(/^[^.]+\./, "http://") : fullUrl;
|
244
|
+
setAttributes({
|
245
|
+
[TraceAttributes.HTTP_URL]: url,
|
246
|
+
[TraceAttributes.HTTP_TARGET]: resolveUrl(path, queryParams, pathParams)
|
247
|
+
});
|
248
|
+
const response = await fetchImpl(url, {
|
249
|
+
method: method.toUpperCase(),
|
250
|
+
body: body ? JSON.stringify(body) : void 0,
|
251
|
+
headers: {
|
252
|
+
"Content-Type": "application/json",
|
253
|
+
"User-Agent": `Xata client-ts/${VERSION}`,
|
254
|
+
...headers,
|
255
|
+
...hostHeader(fullUrl),
|
256
|
+
Authorization: `Bearer ${apiKey}`
|
257
|
+
}
|
258
|
+
});
|
259
|
+
if (response.status === 204) {
|
260
|
+
return {};
|
261
|
+
}
|
262
|
+
const { host, protocol } = parseUrl(response.url);
|
263
|
+
const requestId = response.headers?.get("x-request-id") ?? void 0;
|
264
|
+
setAttributes({
|
265
|
+
[TraceAttributes.KIND]: "http",
|
266
|
+
[TraceAttributes.HTTP_REQUEST_ID]: requestId,
|
267
|
+
[TraceAttributes.HTTP_STATUS_CODE]: response.status,
|
268
|
+
[TraceAttributes.HTTP_HOST]: host,
|
269
|
+
[TraceAttributes.HTTP_SCHEME]: protocol?.replace(":", "")
|
270
|
+
});
|
271
|
+
try {
|
272
|
+
const jsonResponse = await response.json();
|
273
|
+
if (response.ok) {
|
274
|
+
return jsonResponse;
|
275
|
+
}
|
276
|
+
throw new FetcherError(response.status, jsonResponse, requestId);
|
277
|
+
} catch (error) {
|
278
|
+
throw new FetcherError(response.status, error, requestId);
|
279
|
+
}
|
280
|
+
},
|
281
|
+
{ [TraceAttributes.HTTP_METHOD]: method.toUpperCase(), [TraceAttributes.HTTP_ROUTE]: path }
|
282
|
+
);
|
283
|
+
}
|
284
|
+
function parseUrl(url) {
|
150
285
|
try {
|
151
|
-
const
|
152
|
-
|
153
|
-
return jsonResponse;
|
154
|
-
}
|
155
|
-
throw new FetcherError(response.status, jsonResponse);
|
286
|
+
const { host, protocol } = new URL(url);
|
287
|
+
return { host, protocol };
|
156
288
|
} catch (error) {
|
157
|
-
|
289
|
+
return {};
|
158
290
|
}
|
159
291
|
}
|
160
292
|
|
@@ -213,6 +345,7 @@ const removeWorkspaceMember = (variables) => fetch$1({
|
|
213
345
|
...variables
|
214
346
|
});
|
215
347
|
const inviteWorkspaceMember = (variables) => fetch$1({ url: "/workspaces/{workspaceId}/invites", method: "post", ...variables });
|
348
|
+
const updateWorkspaceMemberInvite = (variables) => fetch$1({ url: "/workspaces/{workspaceId}/invites/{inviteId}", method: "patch", ...variables });
|
216
349
|
const cancelWorkspaceMemberInvite = (variables) => fetch$1({
|
217
350
|
url: "/workspaces/{workspaceId}/invites/{inviteId}",
|
218
351
|
method: "delete",
|
@@ -248,16 +381,42 @@ const deleteDatabase = (variables) => fetch$1({
|
|
248
381
|
method: "delete",
|
249
382
|
...variables
|
250
383
|
});
|
251
|
-
const
|
252
|
-
url: "/
|
384
|
+
const getDatabaseMetadata = (variables) => fetch$1({
|
385
|
+
url: "/dbs/{dbName}/metadata",
|
386
|
+
method: "get",
|
387
|
+
...variables
|
388
|
+
});
|
389
|
+
const updateDatabaseMetadata = (variables) => fetch$1({ url: "/dbs/{dbName}/metadata", method: "patch", ...variables });
|
390
|
+
const getGitBranchesMapping = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "get", ...variables });
|
391
|
+
const addGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "post", ...variables });
|
392
|
+
const removeGitBranchesEntry = (variables) => fetch$1({ url: "/dbs/{dbName}/gitBranches", method: "delete", ...variables });
|
393
|
+
const resolveBranch = (variables) => fetch$1({
|
394
|
+
url: "/dbs/{dbName}/resolveBranch",
|
395
|
+
method: "get",
|
396
|
+
...variables
|
397
|
+
});
|
398
|
+
const listMigrationRequests = (variables) => fetch$1({ url: "/dbs/{dbName}/migrations/list", method: "post", ...variables });
|
399
|
+
const createMigrationRequest = (variables) => fetch$1({ url: "/dbs/{dbName}/migrations", method: "post", ...variables });
|
400
|
+
const getMigrationRequest = (variables) => fetch$1({
|
401
|
+
url: "/dbs/{dbName}/migrations/{mrNumber}",
|
253
402
|
method: "get",
|
254
403
|
...variables
|
255
404
|
});
|
256
|
-
const
|
405
|
+
const updateMigrationRequest = (variables) => fetch$1({ url: "/dbs/{dbName}/migrations/{mrNumber}", method: "patch", ...variables });
|
406
|
+
const listMigrationRequestsCommits = (variables) => fetch$1({ url: "/dbs/{dbName}/migrations/{mrNumber}/commits", method: "post", ...variables });
|
407
|
+
const compareMigrationRequest = (variables) => fetch$1({ url: "/dbs/{dbName}/migrations/{mrNumber}/compare", method: "post", ...variables });
|
408
|
+
const getMigrationRequestIsMerged = (variables) => fetch$1({ url: "/dbs/{dbName}/migrations/{mrNumber}/merge", method: "get", ...variables });
|
409
|
+
const mergeMigrationRequest = (variables) => fetch$1({
|
410
|
+
url: "/dbs/{dbName}/migrations/{mrNumber}/merge",
|
411
|
+
method: "post",
|
412
|
+
...variables
|
413
|
+
});
|
414
|
+
const getBranchDetails = (variables) => fetch$1({
|
257
415
|
url: "/db/{dbBranchName}",
|
258
|
-
method: "
|
416
|
+
method: "get",
|
259
417
|
...variables
|
260
418
|
});
|
419
|
+
const createBranch = (variables) => fetch$1({ url: "/db/{dbBranchName}", method: "put", ...variables });
|
261
420
|
const deleteBranch = (variables) => fetch$1({
|
262
421
|
url: "/db/{dbBranchName}",
|
263
422
|
method: "delete",
|
@@ -276,6 +435,16 @@ const getBranchMetadata = (variables) => fetch$1({
|
|
276
435
|
const getBranchMigrationHistory = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations", method: "get", ...variables });
|
277
436
|
const executeBranchMigrationPlan = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations/execute", method: "post", ...variables });
|
278
437
|
const getBranchMigrationPlan = (variables) => fetch$1({ url: "/db/{dbBranchName}/migrations/plan", method: "post", ...variables });
|
438
|
+
const compareBranchWithUserSchema = (variables) => fetch$1({ url: "/db/{dbBranchName}/schema/compare", method: "post", ...variables });
|
439
|
+
const compareBranchSchemas = (variables) => fetch$1({ url: "/db/{dbBranchName}/schema/compare/{branchName}", method: "post", ...variables });
|
440
|
+
const updateBranchSchema = (variables) => fetch$1({
|
441
|
+
url: "/db/{dbBranchName}/schema/update",
|
442
|
+
method: "post",
|
443
|
+
...variables
|
444
|
+
});
|
445
|
+
const previewBranchSchemaEdit = (variables) => fetch$1({ url: "/db/{dbBranchName}/schema/preview", method: "post", ...variables });
|
446
|
+
const applyBranchSchemaEdit = (variables) => fetch$1({ url: "/db/{dbBranchName}/schema/apply", method: "post", ...variables });
|
447
|
+
const getBranchSchemaHistory = (variables) => fetch$1({ url: "/db/{dbBranchName}/schema/history", method: "post", ...variables });
|
279
448
|
const getBranchStats = (variables) => fetch$1({
|
280
449
|
url: "/db/{dbBranchName}/stats",
|
281
450
|
method: "get",
|
@@ -331,11 +500,7 @@ const updateColumn = (variables) => fetch$1({
|
|
331
500
|
method: "patch",
|
332
501
|
...variables
|
333
502
|
});
|
334
|
-
const insertRecord = (variables) => fetch$1({
|
335
|
-
url: "/db/{dbBranchName}/tables/{tableName}/data",
|
336
|
-
method: "post",
|
337
|
-
...variables
|
338
|
-
});
|
503
|
+
const insertRecord = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data", method: "post", ...variables });
|
339
504
|
const insertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "put", ...variables });
|
340
505
|
const updateRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "patch", ...variables });
|
341
506
|
const upsertRecordWithID = (variables) => fetch$1({ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}", method: "post", ...variables });
|
@@ -355,11 +520,21 @@ const queryTable = (variables) => fetch$1({
|
|
355
520
|
method: "post",
|
356
521
|
...variables
|
357
522
|
});
|
523
|
+
const searchTable = (variables) => fetch$1({
|
524
|
+
url: "/db/{dbBranchName}/tables/{tableName}/search",
|
525
|
+
method: "post",
|
526
|
+
...variables
|
527
|
+
});
|
358
528
|
const searchBranch = (variables) => fetch$1({
|
359
529
|
url: "/db/{dbBranchName}/search",
|
360
530
|
method: "post",
|
361
531
|
...variables
|
362
532
|
});
|
533
|
+
const summarizeTable = (variables) => fetch$1({
|
534
|
+
url: "/db/{dbBranchName}/tables/{tableName}/summarize",
|
535
|
+
method: "post",
|
536
|
+
...variables
|
537
|
+
});
|
363
538
|
const operationsByTag = {
|
364
539
|
users: { getUser, updateUser, deleteUser, getUserAPIKeys, createUserAPIKey, deleteUserAPIKey },
|
365
540
|
workspaces: {
|
@@ -372,11 +547,22 @@ const operationsByTag = {
|
|
372
547
|
updateWorkspaceMemberRole,
|
373
548
|
removeWorkspaceMember,
|
374
549
|
inviteWorkspaceMember,
|
550
|
+
updateWorkspaceMemberInvite,
|
375
551
|
cancelWorkspaceMemberInvite,
|
376
552
|
resendWorkspaceMemberInvite,
|
377
553
|
acceptWorkspaceMemberInvite
|
378
554
|
},
|
379
|
-
database: {
|
555
|
+
database: {
|
556
|
+
getDatabaseList,
|
557
|
+
createDatabase,
|
558
|
+
deleteDatabase,
|
559
|
+
getDatabaseMetadata,
|
560
|
+
updateDatabaseMetadata,
|
561
|
+
getGitBranchesMapping,
|
562
|
+
addGitBranchesEntry,
|
563
|
+
removeGitBranchesEntry,
|
564
|
+
resolveBranch
|
565
|
+
},
|
380
566
|
branch: {
|
381
567
|
getBranchList,
|
382
568
|
getBranchDetails,
|
@@ -384,10 +570,28 @@ const operationsByTag = {
|
|
384
570
|
deleteBranch,
|
385
571
|
updateBranchMetadata,
|
386
572
|
getBranchMetadata,
|
573
|
+
getBranchStats
|
574
|
+
},
|
575
|
+
migrationRequests: {
|
576
|
+
listMigrationRequests,
|
577
|
+
createMigrationRequest,
|
578
|
+
getMigrationRequest,
|
579
|
+
updateMigrationRequest,
|
580
|
+
listMigrationRequestsCommits,
|
581
|
+
compareMigrationRequest,
|
582
|
+
getMigrationRequestIsMerged,
|
583
|
+
mergeMigrationRequest
|
584
|
+
},
|
585
|
+
branchSchema: {
|
387
586
|
getBranchMigrationHistory,
|
388
587
|
executeBranchMigrationPlan,
|
389
588
|
getBranchMigrationPlan,
|
390
|
-
|
589
|
+
compareBranchWithUserSchema,
|
590
|
+
compareBranchSchemas,
|
591
|
+
updateBranchSchema,
|
592
|
+
previewBranchSchemaEdit,
|
593
|
+
applyBranchSchemaEdit,
|
594
|
+
getBranchSchemaHistory
|
391
595
|
},
|
392
596
|
table: {
|
393
597
|
createTable,
|
@@ -410,14 +614,16 @@ const operationsByTag = {
|
|
410
614
|
getRecord,
|
411
615
|
bulkInsertTableRecords,
|
412
616
|
queryTable,
|
413
|
-
|
617
|
+
searchTable,
|
618
|
+
searchBranch,
|
619
|
+
summarizeTable
|
414
620
|
}
|
415
621
|
};
|
416
622
|
|
417
623
|
function getHostUrl(provider, type) {
|
418
|
-
if (
|
624
|
+
if (isHostProviderAlias(provider)) {
|
419
625
|
return providers[provider][type];
|
420
|
-
} else if (
|
626
|
+
} else if (isHostProviderBuilder(provider)) {
|
421
627
|
return provider[type];
|
422
628
|
}
|
423
629
|
throw new Error("Invalid API provider");
|
@@ -432,10 +638,10 @@ const providers = {
|
|
432
638
|
workspaces: "https://{workspaceId}.staging.xatabase.co"
|
433
639
|
}
|
434
640
|
};
|
435
|
-
function
|
641
|
+
function isHostProviderAlias(alias) {
|
436
642
|
return isString(alias) && Object.keys(providers).includes(alias);
|
437
643
|
}
|
438
|
-
function
|
644
|
+
function isHostProviderBuilder(builder) {
|
439
645
|
return isObject(builder) && isString(builder.main) && isString(builder.workspaces);
|
440
646
|
}
|
441
647
|
|
@@ -443,7 +649,7 @@ var __accessCheck$7 = (obj, member, msg) => {
|
|
443
649
|
if (!member.has(obj))
|
444
650
|
throw TypeError("Cannot " + msg);
|
445
651
|
};
|
446
|
-
var __privateGet$
|
652
|
+
var __privateGet$7 = (obj, member, getter) => {
|
447
653
|
__accessCheck$7(obj, member, "read from private field");
|
448
654
|
return getter ? getter.call(obj) : member.get(obj);
|
449
655
|
};
|
@@ -452,7 +658,7 @@ var __privateAdd$7 = (obj, member, value) => {
|
|
452
658
|
throw TypeError("Cannot add the same private member more than once");
|
453
659
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
454
660
|
};
|
455
|
-
var __privateSet$
|
661
|
+
var __privateSet$7 = (obj, member, value, setter) => {
|
456
662
|
__accessCheck$7(obj, member, "write to private field");
|
457
663
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
458
664
|
return value;
|
@@ -463,46 +669,58 @@ class XataApiClient {
|
|
463
669
|
__privateAdd$7(this, _extraProps, void 0);
|
464
670
|
__privateAdd$7(this, _namespaces, {});
|
465
671
|
const provider = options.host ?? "production";
|
466
|
-
const apiKey = options
|
672
|
+
const apiKey = options.apiKey ?? getAPIKey();
|
673
|
+
const trace = options.trace ?? defaultTrace;
|
467
674
|
if (!apiKey) {
|
468
675
|
throw new Error("Could not resolve a valid apiKey");
|
469
676
|
}
|
470
|
-
__privateSet$
|
677
|
+
__privateSet$7(this, _extraProps, {
|
471
678
|
apiUrl: getHostUrl(provider, "main"),
|
472
679
|
workspacesApiUrl: getHostUrl(provider, "workspaces"),
|
473
680
|
fetchImpl: getFetchImplementation(options.fetch),
|
474
|
-
apiKey
|
681
|
+
apiKey,
|
682
|
+
trace
|
475
683
|
});
|
476
684
|
}
|
477
685
|
get user() {
|
478
|
-
if (!__privateGet$
|
479
|
-
__privateGet$
|
480
|
-
return __privateGet$
|
686
|
+
if (!__privateGet$7(this, _namespaces).user)
|
687
|
+
__privateGet$7(this, _namespaces).user = new UserApi(__privateGet$7(this, _extraProps));
|
688
|
+
return __privateGet$7(this, _namespaces).user;
|
481
689
|
}
|
482
690
|
get workspaces() {
|
483
|
-
if (!__privateGet$
|
484
|
-
__privateGet$
|
485
|
-
return __privateGet$
|
691
|
+
if (!__privateGet$7(this, _namespaces).workspaces)
|
692
|
+
__privateGet$7(this, _namespaces).workspaces = new WorkspaceApi(__privateGet$7(this, _extraProps));
|
693
|
+
return __privateGet$7(this, _namespaces).workspaces;
|
486
694
|
}
|
487
695
|
get databases() {
|
488
|
-
if (!__privateGet$
|
489
|
-
__privateGet$
|
490
|
-
return __privateGet$
|
696
|
+
if (!__privateGet$7(this, _namespaces).databases)
|
697
|
+
__privateGet$7(this, _namespaces).databases = new DatabaseApi(__privateGet$7(this, _extraProps));
|
698
|
+
return __privateGet$7(this, _namespaces).databases;
|
491
699
|
}
|
492
700
|
get branches() {
|
493
|
-
if (!__privateGet$
|
494
|
-
__privateGet$
|
495
|
-
return __privateGet$
|
701
|
+
if (!__privateGet$7(this, _namespaces).branches)
|
702
|
+
__privateGet$7(this, _namespaces).branches = new BranchApi(__privateGet$7(this, _extraProps));
|
703
|
+
return __privateGet$7(this, _namespaces).branches;
|
496
704
|
}
|
497
705
|
get tables() {
|
498
|
-
if (!__privateGet$
|
499
|
-
__privateGet$
|
500
|
-
return __privateGet$
|
706
|
+
if (!__privateGet$7(this, _namespaces).tables)
|
707
|
+
__privateGet$7(this, _namespaces).tables = new TableApi(__privateGet$7(this, _extraProps));
|
708
|
+
return __privateGet$7(this, _namespaces).tables;
|
501
709
|
}
|
502
710
|
get records() {
|
503
|
-
if (!__privateGet$
|
504
|
-
__privateGet$
|
505
|
-
return __privateGet$
|
711
|
+
if (!__privateGet$7(this, _namespaces).records)
|
712
|
+
__privateGet$7(this, _namespaces).records = new RecordsApi(__privateGet$7(this, _extraProps));
|
713
|
+
return __privateGet$7(this, _namespaces).records;
|
714
|
+
}
|
715
|
+
get migrationRequests() {
|
716
|
+
if (!__privateGet$7(this, _namespaces).migrationRequests)
|
717
|
+
__privateGet$7(this, _namespaces).migrationRequests = new MigrationRequestsApi(__privateGet$7(this, _extraProps));
|
718
|
+
return __privateGet$7(this, _namespaces).migrationRequests;
|
719
|
+
}
|
720
|
+
get branchSchema() {
|
721
|
+
if (!__privateGet$7(this, _namespaces).branchSchema)
|
722
|
+
__privateGet$7(this, _namespaces).branchSchema = new BranchSchemaApi(__privateGet$7(this, _extraProps));
|
723
|
+
return __privateGet$7(this, _namespaces).branchSchema;
|
506
724
|
}
|
507
725
|
}
|
508
726
|
_extraProps = new WeakMap();
|
@@ -594,6 +812,13 @@ class WorkspaceApi {
|
|
594
812
|
...this.extraProps
|
595
813
|
});
|
596
814
|
}
|
815
|
+
updateWorkspaceMemberInvite(workspaceId, inviteId, role) {
|
816
|
+
return operationsByTag.workspaces.updateWorkspaceMemberInvite({
|
817
|
+
pathParams: { workspaceId, inviteId },
|
818
|
+
body: { role },
|
819
|
+
...this.extraProps
|
820
|
+
});
|
821
|
+
}
|
597
822
|
cancelWorkspaceMemberInvite(workspaceId, inviteId) {
|
598
823
|
return operationsByTag.workspaces.cancelWorkspaceMemberInvite({
|
599
824
|
pathParams: { workspaceId, inviteId },
|
@@ -636,6 +861,46 @@ class DatabaseApi {
|
|
636
861
|
...this.extraProps
|
637
862
|
});
|
638
863
|
}
|
864
|
+
getDatabaseMetadata(workspace, dbName) {
|
865
|
+
return operationsByTag.database.getDatabaseMetadata({
|
866
|
+
pathParams: { workspace, dbName },
|
867
|
+
...this.extraProps
|
868
|
+
});
|
869
|
+
}
|
870
|
+
updateDatabaseMetadata(workspace, dbName, options = {}) {
|
871
|
+
return operationsByTag.database.updateDatabaseMetadata({
|
872
|
+
pathParams: { workspace, dbName },
|
873
|
+
body: options,
|
874
|
+
...this.extraProps
|
875
|
+
});
|
876
|
+
}
|
877
|
+
getGitBranchesMapping(workspace, dbName) {
|
878
|
+
return operationsByTag.database.getGitBranchesMapping({
|
879
|
+
pathParams: { workspace, dbName },
|
880
|
+
...this.extraProps
|
881
|
+
});
|
882
|
+
}
|
883
|
+
addGitBranchesEntry(workspace, dbName, body) {
|
884
|
+
return operationsByTag.database.addGitBranchesEntry({
|
885
|
+
pathParams: { workspace, dbName },
|
886
|
+
body,
|
887
|
+
...this.extraProps
|
888
|
+
});
|
889
|
+
}
|
890
|
+
removeGitBranchesEntry(workspace, dbName, gitBranch) {
|
891
|
+
return operationsByTag.database.removeGitBranchesEntry({
|
892
|
+
pathParams: { workspace, dbName },
|
893
|
+
queryParams: { gitBranch },
|
894
|
+
...this.extraProps
|
895
|
+
});
|
896
|
+
}
|
897
|
+
resolveBranch(workspace, dbName, gitBranch, fallbackBranch) {
|
898
|
+
return operationsByTag.database.resolveBranch({
|
899
|
+
pathParams: { workspace, dbName },
|
900
|
+
queryParams: { gitBranch, fallbackBranch },
|
901
|
+
...this.extraProps
|
902
|
+
});
|
903
|
+
}
|
639
904
|
}
|
640
905
|
class BranchApi {
|
641
906
|
constructor(extraProps) {
|
@@ -653,10 +918,10 @@ class BranchApi {
|
|
653
918
|
...this.extraProps
|
654
919
|
});
|
655
920
|
}
|
656
|
-
createBranch(workspace, database, branch, from
|
921
|
+
createBranch(workspace, database, branch, from, options = {}) {
|
657
922
|
return operationsByTag.branch.createBranch({
|
658
923
|
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
659
|
-
queryParams: { from },
|
924
|
+
queryParams: isString(from) ? { from } : void 0,
|
660
925
|
body: options,
|
661
926
|
...this.extraProps
|
662
927
|
});
|
@@ -680,27 +945,6 @@ class BranchApi {
|
|
680
945
|
...this.extraProps
|
681
946
|
});
|
682
947
|
}
|
683
|
-
getBranchMigrationHistory(workspace, database, branch, options = {}) {
|
684
|
-
return operationsByTag.branch.getBranchMigrationHistory({
|
685
|
-
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
686
|
-
body: options,
|
687
|
-
...this.extraProps
|
688
|
-
});
|
689
|
-
}
|
690
|
-
executeBranchMigrationPlan(workspace, database, branch, migrationPlan) {
|
691
|
-
return operationsByTag.branch.executeBranchMigrationPlan({
|
692
|
-
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
693
|
-
body: migrationPlan,
|
694
|
-
...this.extraProps
|
695
|
-
});
|
696
|
-
}
|
697
|
-
getBranchMigrationPlan(workspace, database, branch, schema) {
|
698
|
-
return operationsByTag.branch.getBranchMigrationPlan({
|
699
|
-
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
700
|
-
body: schema,
|
701
|
-
...this.extraProps
|
702
|
-
});
|
703
|
-
}
|
704
948
|
getBranchStats(workspace, database, branch) {
|
705
949
|
return operationsByTag.branch.getBranchStats({
|
706
950
|
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
@@ -781,9 +1025,10 @@ class RecordsApi {
|
|
781
1025
|
constructor(extraProps) {
|
782
1026
|
this.extraProps = extraProps;
|
783
1027
|
}
|
784
|
-
insertRecord(workspace, database, branch, tableName, record) {
|
1028
|
+
insertRecord(workspace, database, branch, tableName, record, options = {}) {
|
785
1029
|
return operationsByTag.records.insertRecord({
|
786
1030
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1031
|
+
queryParams: options,
|
787
1032
|
body: record,
|
788
1033
|
...this.extraProps
|
789
1034
|
});
|
@@ -812,21 +1057,24 @@ class RecordsApi {
|
|
812
1057
|
...this.extraProps
|
813
1058
|
});
|
814
1059
|
}
|
815
|
-
deleteRecord(workspace, database, branch, tableName, recordId) {
|
1060
|
+
deleteRecord(workspace, database, branch, tableName, recordId, options = {}) {
|
816
1061
|
return operationsByTag.records.deleteRecord({
|
817
1062
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
|
1063
|
+
queryParams: options,
|
818
1064
|
...this.extraProps
|
819
1065
|
});
|
820
1066
|
}
|
821
1067
|
getRecord(workspace, database, branch, tableName, recordId, options = {}) {
|
822
1068
|
return operationsByTag.records.getRecord({
|
823
1069
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName, recordId },
|
1070
|
+
queryParams: options,
|
824
1071
|
...this.extraProps
|
825
1072
|
});
|
826
1073
|
}
|
827
|
-
bulkInsertTableRecords(workspace, database, branch, tableName, records) {
|
1074
|
+
bulkInsertTableRecords(workspace, database, branch, tableName, records, options = {}) {
|
828
1075
|
return operationsByTag.records.bulkInsertTableRecords({
|
829
1076
|
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1077
|
+
queryParams: options,
|
830
1078
|
body: { records },
|
831
1079
|
...this.extraProps
|
832
1080
|
});
|
@@ -838,6 +1086,13 @@ class RecordsApi {
|
|
838
1086
|
...this.extraProps
|
839
1087
|
});
|
840
1088
|
}
|
1089
|
+
searchTable(workspace, database, branch, tableName, query) {
|
1090
|
+
return operationsByTag.records.searchTable({
|
1091
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1092
|
+
body: query,
|
1093
|
+
...this.extraProps
|
1094
|
+
});
|
1095
|
+
}
|
841
1096
|
searchBranch(workspace, database, branch, query) {
|
842
1097
|
return operationsByTag.records.searchBranch({
|
843
1098
|
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
@@ -845,6 +1100,138 @@ class RecordsApi {
|
|
845
1100
|
...this.extraProps
|
846
1101
|
});
|
847
1102
|
}
|
1103
|
+
summarizeTable(workspace, database, branch, tableName, query) {
|
1104
|
+
return operationsByTag.records.summarizeTable({
|
1105
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}`, tableName },
|
1106
|
+
body: query,
|
1107
|
+
...this.extraProps
|
1108
|
+
});
|
1109
|
+
}
|
1110
|
+
}
|
1111
|
+
class MigrationRequestsApi {
|
1112
|
+
constructor(extraProps) {
|
1113
|
+
this.extraProps = extraProps;
|
1114
|
+
}
|
1115
|
+
listMigrationRequests(workspace, database, options = {}) {
|
1116
|
+
return operationsByTag.migrationRequests.listMigrationRequests({
|
1117
|
+
pathParams: { workspace, dbName: database },
|
1118
|
+
body: options,
|
1119
|
+
...this.extraProps
|
1120
|
+
});
|
1121
|
+
}
|
1122
|
+
createMigrationRequest(workspace, database, options) {
|
1123
|
+
return operationsByTag.migrationRequests.createMigrationRequest({
|
1124
|
+
pathParams: { workspace, dbName: database },
|
1125
|
+
body: options,
|
1126
|
+
...this.extraProps
|
1127
|
+
});
|
1128
|
+
}
|
1129
|
+
getMigrationRequest(workspace, database, migrationRequest) {
|
1130
|
+
return operationsByTag.migrationRequests.getMigrationRequest({
|
1131
|
+
pathParams: { workspace, dbName: database, mrNumber: migrationRequest },
|
1132
|
+
...this.extraProps
|
1133
|
+
});
|
1134
|
+
}
|
1135
|
+
updateMigrationRequest(workspace, database, migrationRequest, options) {
|
1136
|
+
return operationsByTag.migrationRequests.updateMigrationRequest({
|
1137
|
+
pathParams: { workspace, dbName: database, mrNumber: migrationRequest },
|
1138
|
+
body: options,
|
1139
|
+
...this.extraProps
|
1140
|
+
});
|
1141
|
+
}
|
1142
|
+
listMigrationRequestsCommits(workspace, database, migrationRequest, options = {}) {
|
1143
|
+
return operationsByTag.migrationRequests.listMigrationRequestsCommits({
|
1144
|
+
pathParams: { workspace, dbName: database, mrNumber: migrationRequest },
|
1145
|
+
body: options,
|
1146
|
+
...this.extraProps
|
1147
|
+
});
|
1148
|
+
}
|
1149
|
+
compareMigrationRequest(workspace, database, migrationRequest) {
|
1150
|
+
return operationsByTag.migrationRequests.compareMigrationRequest({
|
1151
|
+
pathParams: { workspace, dbName: database, mrNumber: migrationRequest },
|
1152
|
+
...this.extraProps
|
1153
|
+
});
|
1154
|
+
}
|
1155
|
+
getMigrationRequestIsMerged(workspace, database, migrationRequest) {
|
1156
|
+
return operationsByTag.migrationRequests.getMigrationRequestIsMerged({
|
1157
|
+
pathParams: { workspace, dbName: database, mrNumber: migrationRequest },
|
1158
|
+
...this.extraProps
|
1159
|
+
});
|
1160
|
+
}
|
1161
|
+
mergeMigrationRequest(workspace, database, migrationRequest) {
|
1162
|
+
return operationsByTag.migrationRequests.mergeMigrationRequest({
|
1163
|
+
pathParams: { workspace, dbName: database, mrNumber: migrationRequest },
|
1164
|
+
...this.extraProps
|
1165
|
+
});
|
1166
|
+
}
|
1167
|
+
}
|
1168
|
+
class BranchSchemaApi {
|
1169
|
+
constructor(extraProps) {
|
1170
|
+
this.extraProps = extraProps;
|
1171
|
+
}
|
1172
|
+
getBranchMigrationHistory(workspace, database, branch, options = {}) {
|
1173
|
+
return operationsByTag.branchSchema.getBranchMigrationHistory({
|
1174
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
1175
|
+
body: options,
|
1176
|
+
...this.extraProps
|
1177
|
+
});
|
1178
|
+
}
|
1179
|
+
executeBranchMigrationPlan(workspace, database, branch, migrationPlan) {
|
1180
|
+
return operationsByTag.branchSchema.executeBranchMigrationPlan({
|
1181
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
1182
|
+
body: migrationPlan,
|
1183
|
+
...this.extraProps
|
1184
|
+
});
|
1185
|
+
}
|
1186
|
+
getBranchMigrationPlan(workspace, database, branch, schema) {
|
1187
|
+
return operationsByTag.branchSchema.getBranchMigrationPlan({
|
1188
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
1189
|
+
body: schema,
|
1190
|
+
...this.extraProps
|
1191
|
+
});
|
1192
|
+
}
|
1193
|
+
compareBranchWithUserSchema(workspace, database, branch, schema) {
|
1194
|
+
return operationsByTag.branchSchema.compareBranchWithUserSchema({
|
1195
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
1196
|
+
body: { schema },
|
1197
|
+
...this.extraProps
|
1198
|
+
});
|
1199
|
+
}
|
1200
|
+
compareBranchSchemas(workspace, database, branch, branchName, schema) {
|
1201
|
+
return operationsByTag.branchSchema.compareBranchSchemas({
|
1202
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}`, branchName },
|
1203
|
+
body: { schema },
|
1204
|
+
...this.extraProps
|
1205
|
+
});
|
1206
|
+
}
|
1207
|
+
updateBranchSchema(workspace, database, branch, migration) {
|
1208
|
+
return operationsByTag.branchSchema.updateBranchSchema({
|
1209
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
1210
|
+
body: migration,
|
1211
|
+
...this.extraProps
|
1212
|
+
});
|
1213
|
+
}
|
1214
|
+
previewBranchSchemaEdit(workspace, database, branch, migration) {
|
1215
|
+
return operationsByTag.branchSchema.previewBranchSchemaEdit({
|
1216
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
1217
|
+
body: migration,
|
1218
|
+
...this.extraProps
|
1219
|
+
});
|
1220
|
+
}
|
1221
|
+
applyBranchSchemaEdit(workspace, database, branch, edits) {
|
1222
|
+
return operationsByTag.branchSchema.applyBranchSchemaEdit({
|
1223
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
1224
|
+
body: { edits },
|
1225
|
+
...this.extraProps
|
1226
|
+
});
|
1227
|
+
}
|
1228
|
+
getBranchSchemaHistory(workspace, database, branch, options = {}) {
|
1229
|
+
return operationsByTag.branchSchema.getBranchSchemaHistory({
|
1230
|
+
pathParams: { workspace, dbBranchName: `${database}:${branch}` },
|
1231
|
+
body: options,
|
1232
|
+
...this.extraProps
|
1233
|
+
});
|
1234
|
+
}
|
848
1235
|
}
|
849
1236
|
|
850
1237
|
class XataApiPlugin {
|
@@ -861,7 +1248,7 @@ var __accessCheck$6 = (obj, member, msg) => {
|
|
861
1248
|
if (!member.has(obj))
|
862
1249
|
throw TypeError("Cannot " + msg);
|
863
1250
|
};
|
864
|
-
var __privateGet$
|
1251
|
+
var __privateGet$6 = (obj, member, getter) => {
|
865
1252
|
__accessCheck$6(obj, member, "read from private field");
|
866
1253
|
return getter ? getter.call(obj) : member.get(obj);
|
867
1254
|
};
|
@@ -870,30 +1257,30 @@ var __privateAdd$6 = (obj, member, value) => {
|
|
870
1257
|
throw TypeError("Cannot add the same private member more than once");
|
871
1258
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
872
1259
|
};
|
873
|
-
var __privateSet$
|
1260
|
+
var __privateSet$6 = (obj, member, value, setter) => {
|
874
1261
|
__accessCheck$6(obj, member, "write to private field");
|
875
1262
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
876
1263
|
return value;
|
877
1264
|
};
|
878
|
-
var _query;
|
1265
|
+
var _query, _page;
|
879
1266
|
class Page {
|
880
1267
|
constructor(query, meta, records = []) {
|
881
1268
|
__privateAdd$6(this, _query, void 0);
|
882
|
-
__privateSet$
|
1269
|
+
__privateSet$6(this, _query, query);
|
883
1270
|
this.meta = meta;
|
884
|
-
this.records = records;
|
1271
|
+
this.records = new RecordArray(this, records);
|
885
1272
|
}
|
886
1273
|
async nextPage(size, offset) {
|
887
|
-
return __privateGet$
|
1274
|
+
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, after: this.meta.page.cursor } });
|
888
1275
|
}
|
889
1276
|
async previousPage(size, offset) {
|
890
|
-
return __privateGet$
|
1277
|
+
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, before: this.meta.page.cursor } });
|
891
1278
|
}
|
892
1279
|
async firstPage(size, offset) {
|
893
|
-
return __privateGet$
|
1280
|
+
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, first: this.meta.page.cursor } });
|
894
1281
|
}
|
895
1282
|
async lastPage(size, offset) {
|
896
|
-
return __privateGet$
|
1283
|
+
return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, last: this.meta.page.cursor } });
|
897
1284
|
}
|
898
1285
|
hasNextPage() {
|
899
1286
|
return this.meta.page.more;
|
@@ -901,15 +1288,62 @@ class Page {
|
|
901
1288
|
}
|
902
1289
|
_query = new WeakMap();
|
903
1290
|
const PAGINATION_MAX_SIZE = 200;
|
904
|
-
const PAGINATION_DEFAULT_SIZE =
|
1291
|
+
const PAGINATION_DEFAULT_SIZE = 20;
|
905
1292
|
const PAGINATION_MAX_OFFSET = 800;
|
906
1293
|
const PAGINATION_DEFAULT_OFFSET = 0;
|
1294
|
+
function isCursorPaginationOptions(options) {
|
1295
|
+
return isDefined(options) && (isDefined(options.first) || isDefined(options.last) || isDefined(options.after) || isDefined(options.before));
|
1296
|
+
}
|
1297
|
+
const _RecordArray = class extends Array {
|
1298
|
+
constructor(...args) {
|
1299
|
+
super(..._RecordArray.parseConstructorParams(...args));
|
1300
|
+
__privateAdd$6(this, _page, void 0);
|
1301
|
+
__privateSet$6(this, _page, isObject(args[0]?.meta) ? args[0] : { meta: { page: { cursor: "", more: false } }, records: [] });
|
1302
|
+
}
|
1303
|
+
static parseConstructorParams(...args) {
|
1304
|
+
if (args.length === 1 && typeof args[0] === "number") {
|
1305
|
+
return new Array(args[0]);
|
1306
|
+
}
|
1307
|
+
if (args.length <= 2 && isObject(args[0]?.meta) && Array.isArray(args[1] ?? [])) {
|
1308
|
+
const result = args[1] ?? args[0].records ?? [];
|
1309
|
+
return new Array(...result);
|
1310
|
+
}
|
1311
|
+
return new Array(...args);
|
1312
|
+
}
|
1313
|
+
toArray() {
|
1314
|
+
return new Array(...this);
|
1315
|
+
}
|
1316
|
+
map(callbackfn, thisArg) {
|
1317
|
+
return this.toArray().map(callbackfn, thisArg);
|
1318
|
+
}
|
1319
|
+
async nextPage(size, offset) {
|
1320
|
+
const newPage = await __privateGet$6(this, _page).nextPage(size, offset);
|
1321
|
+
return new _RecordArray(newPage);
|
1322
|
+
}
|
1323
|
+
async previousPage(size, offset) {
|
1324
|
+
const newPage = await __privateGet$6(this, _page).previousPage(size, offset);
|
1325
|
+
return new _RecordArray(newPage);
|
1326
|
+
}
|
1327
|
+
async firstPage(size, offset) {
|
1328
|
+
const newPage = await __privateGet$6(this, _page).firstPage(size, offset);
|
1329
|
+
return new _RecordArray(newPage);
|
1330
|
+
}
|
1331
|
+
async lastPage(size, offset) {
|
1332
|
+
const newPage = await __privateGet$6(this, _page).lastPage(size, offset);
|
1333
|
+
return new _RecordArray(newPage);
|
1334
|
+
}
|
1335
|
+
hasNextPage() {
|
1336
|
+
return __privateGet$6(this, _page).meta.page.more;
|
1337
|
+
}
|
1338
|
+
};
|
1339
|
+
let RecordArray = _RecordArray;
|
1340
|
+
_page = new WeakMap();
|
907
1341
|
|
908
1342
|
var __accessCheck$5 = (obj, member, msg) => {
|
909
1343
|
if (!member.has(obj))
|
910
1344
|
throw TypeError("Cannot " + msg);
|
911
1345
|
};
|
912
|
-
var __privateGet$
|
1346
|
+
var __privateGet$5 = (obj, member, getter) => {
|
913
1347
|
__accessCheck$5(obj, member, "read from private field");
|
914
1348
|
return getter ? getter.call(obj) : member.get(obj);
|
915
1349
|
};
|
@@ -918,34 +1352,35 @@ var __privateAdd$5 = (obj, member, value) => {
|
|
918
1352
|
throw TypeError("Cannot add the same private member more than once");
|
919
1353
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
920
1354
|
};
|
921
|
-
var __privateSet$
|
1355
|
+
var __privateSet$5 = (obj, member, value, setter) => {
|
922
1356
|
__accessCheck$5(obj, member, "write to private field");
|
923
1357
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
924
1358
|
return value;
|
925
1359
|
};
|
926
1360
|
var _table$1, _repository, _data;
|
927
1361
|
const _Query = class {
|
928
|
-
constructor(repository, table, data,
|
1362
|
+
constructor(repository, table, data, rawParent) {
|
929
1363
|
__privateAdd$5(this, _table$1, void 0);
|
930
1364
|
__privateAdd$5(this, _repository, void 0);
|
931
1365
|
__privateAdd$5(this, _data, { filter: {} });
|
932
1366
|
this.meta = { page: { cursor: "start", more: true } };
|
933
|
-
this.records = [];
|
934
|
-
__privateSet$
|
1367
|
+
this.records = new RecordArray(this, []);
|
1368
|
+
__privateSet$5(this, _table$1, table);
|
935
1369
|
if (repository) {
|
936
|
-
__privateSet$
|
1370
|
+
__privateSet$5(this, _repository, repository);
|
937
1371
|
} else {
|
938
|
-
__privateSet$
|
1372
|
+
__privateSet$5(this, _repository, this);
|
939
1373
|
}
|
940
|
-
|
941
|
-
__privateGet$
|
942
|
-
__privateGet$
|
943
|
-
__privateGet$
|
944
|
-
__privateGet$
|
945
|
-
__privateGet$
|
946
|
-
__privateGet$
|
947
|
-
__privateGet$
|
948
|
-
__privateGet$
|
1374
|
+
const parent = cleanParent(data, rawParent);
|
1375
|
+
__privateGet$5(this, _data).filter = data.filter ?? parent?.filter ?? {};
|
1376
|
+
__privateGet$5(this, _data).filter.$any = data.filter?.$any ?? parent?.filter?.$any;
|
1377
|
+
__privateGet$5(this, _data).filter.$all = data.filter?.$all ?? parent?.filter?.$all;
|
1378
|
+
__privateGet$5(this, _data).filter.$not = data.filter?.$not ?? parent?.filter?.$not;
|
1379
|
+
__privateGet$5(this, _data).filter.$none = data.filter?.$none ?? parent?.filter?.$none;
|
1380
|
+
__privateGet$5(this, _data).sort = data.sort ?? parent?.sort;
|
1381
|
+
__privateGet$5(this, _data).columns = data.columns ?? parent?.columns ?? ["*"];
|
1382
|
+
__privateGet$5(this, _data).pagination = data.pagination ?? parent?.pagination;
|
1383
|
+
__privateGet$5(this, _data).cache = data.cache ?? parent?.cache;
|
949
1384
|
this.any = this.any.bind(this);
|
950
1385
|
this.all = this.all.bind(this);
|
951
1386
|
this.not = this.not.bind(this);
|
@@ -956,83 +1391,116 @@ const _Query = class {
|
|
956
1391
|
Object.defineProperty(this, "repository", { enumerable: false });
|
957
1392
|
}
|
958
1393
|
getQueryOptions() {
|
959
|
-
return __privateGet$
|
1394
|
+
return __privateGet$5(this, _data);
|
960
1395
|
}
|
961
1396
|
key() {
|
962
|
-
const { columns = [], filter = {}, sort = [],
|
963
|
-
const key = JSON.stringify({ columns, filter, sort,
|
1397
|
+
const { columns = [], filter = {}, sort = [], pagination = {} } = __privateGet$5(this, _data);
|
1398
|
+
const key = JSON.stringify({ columns, filter, sort, pagination });
|
964
1399
|
return toBase64(key);
|
965
1400
|
}
|
966
1401
|
any(...queries) {
|
967
1402
|
const $any = queries.map((query) => query.getQueryOptions().filter ?? {});
|
968
|
-
return new _Query(__privateGet$
|
1403
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $any } }, __privateGet$5(this, _data));
|
969
1404
|
}
|
970
1405
|
all(...queries) {
|
971
1406
|
const $all = queries.map((query) => query.getQueryOptions().filter ?? {});
|
972
|
-
return new _Query(__privateGet$
|
1407
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
|
973
1408
|
}
|
974
1409
|
not(...queries) {
|
975
1410
|
const $not = queries.map((query) => query.getQueryOptions().filter ?? {});
|
976
|
-
return new _Query(__privateGet$
|
1411
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $not } }, __privateGet$5(this, _data));
|
977
1412
|
}
|
978
1413
|
none(...queries) {
|
979
1414
|
const $none = queries.map((query) => query.getQueryOptions().filter ?? {});
|
980
|
-
return new _Query(__privateGet$
|
1415
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $none } }, __privateGet$5(this, _data));
|
981
1416
|
}
|
982
1417
|
filter(a, b) {
|
983
1418
|
if (arguments.length === 1) {
|
984
|
-
const constraints = Object.entries(a).map(([column, constraint]) => ({ [column]: constraint }));
|
985
|
-
const $all = compact([__privateGet$
|
986
|
-
return new _Query(__privateGet$
|
1419
|
+
const constraints = Object.entries(a ?? {}).map(([column, constraint]) => ({ [column]: constraint }));
|
1420
|
+
const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat(constraints));
|
1421
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
|
987
1422
|
} else {
|
988
|
-
const
|
989
|
-
|
1423
|
+
const constraints = isDefined(a) && isDefined(b) ? [{ [a]: this.defaultFilter(a, b) }] : void 0;
|
1424
|
+
const $all = compact([__privateGet$5(this, _data).filter?.$all].flat().concat(constraints));
|
1425
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
|
1426
|
+
}
|
1427
|
+
}
|
1428
|
+
defaultFilter(column, value) {
|
1429
|
+
const columnType = __privateGet$5(this, _table$1).schema?.columns.find(({ name }) => name === column)?.type;
|
1430
|
+
if (columnType === "multiple" && (isString(value) || isStringArray(value))) {
|
1431
|
+
return { $includes: value };
|
990
1432
|
}
|
1433
|
+
return value;
|
991
1434
|
}
|
992
|
-
sort(column, direction) {
|
993
|
-
const originalSort = [__privateGet$
|
1435
|
+
sort(column, direction = "asc") {
|
1436
|
+
const originalSort = [__privateGet$5(this, _data).sort ?? []].flat();
|
994
1437
|
const sort = [...originalSort, { column, direction }];
|
995
|
-
return new _Query(__privateGet$
|
1438
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { sort }, __privateGet$5(this, _data));
|
996
1439
|
}
|
997
1440
|
select(columns) {
|
998
|
-
return new _Query(
|
1441
|
+
return new _Query(
|
1442
|
+
__privateGet$5(this, _repository),
|
1443
|
+
__privateGet$5(this, _table$1),
|
1444
|
+
{ columns },
|
1445
|
+
__privateGet$5(this, _data)
|
1446
|
+
);
|
999
1447
|
}
|
1000
1448
|
getPaginated(options = {}) {
|
1001
|
-
const query = new _Query(__privateGet$
|
1002
|
-
return __privateGet$
|
1449
|
+
const query = new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), options, __privateGet$5(this, _data));
|
1450
|
+
return __privateGet$5(this, _repository).query(query);
|
1003
1451
|
}
|
1004
1452
|
async *[Symbol.asyncIterator]() {
|
1005
|
-
for await (const [record] of this.getIterator(1)) {
|
1453
|
+
for await (const [record] of this.getIterator({ batchSize: 1 })) {
|
1006
1454
|
yield record;
|
1007
1455
|
}
|
1008
1456
|
}
|
1009
|
-
async *getIterator(
|
1010
|
-
|
1011
|
-
let
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1457
|
+
async *getIterator(options = {}) {
|
1458
|
+
const { batchSize = 1 } = options;
|
1459
|
+
let page = await this.getPaginated({ ...options, pagination: { size: batchSize, offset: 0 } });
|
1460
|
+
let more = page.hasNextPage();
|
1461
|
+
yield page.records;
|
1462
|
+
while (more) {
|
1463
|
+
page = await page.nextPage();
|
1464
|
+
more = page.hasNextPage();
|
1465
|
+
yield page.records;
|
1017
1466
|
}
|
1018
1467
|
}
|
1019
1468
|
async getMany(options = {}) {
|
1020
|
-
const {
|
1021
|
-
|
1469
|
+
const { pagination = {}, ...rest } = options;
|
1470
|
+
const { size = PAGINATION_DEFAULT_SIZE, offset } = pagination;
|
1471
|
+
const batchSize = size <= PAGINATION_MAX_SIZE ? size : PAGINATION_MAX_SIZE;
|
1472
|
+
let page = await this.getPaginated({ ...rest, pagination: { size: batchSize, offset } });
|
1473
|
+
const results = [...page.records];
|
1474
|
+
while (page.hasNextPage() && results.length < size) {
|
1475
|
+
page = await page.nextPage();
|
1476
|
+
results.push(...page.records);
|
1477
|
+
}
|
1478
|
+
if (page.hasNextPage() && options.pagination?.size === void 0) {
|
1479
|
+
console.trace("Calling getMany does not return all results. Paginate to get all results or call getAll.");
|
1480
|
+
}
|
1481
|
+
const array = new RecordArray(page, results.slice(0, size));
|
1482
|
+
return array;
|
1022
1483
|
}
|
1023
|
-
async getAll(
|
1484
|
+
async getAll(options = {}) {
|
1485
|
+
const { batchSize = PAGINATION_MAX_SIZE, ...rest } = options;
|
1024
1486
|
const results = [];
|
1025
|
-
for await (const page of this.getIterator(
|
1487
|
+
for await (const page of this.getIterator({ ...rest, batchSize })) {
|
1026
1488
|
results.push(...page);
|
1027
1489
|
}
|
1028
1490
|
return results;
|
1029
1491
|
}
|
1030
1492
|
async getFirst(options = {}) {
|
1031
|
-
const records = await this.getMany({ ...options,
|
1032
|
-
return records[0]
|
1493
|
+
const records = await this.getMany({ ...options, pagination: { size: 1 } });
|
1494
|
+
return records[0] ?? null;
|
1495
|
+
}
|
1496
|
+
async getFirstOrThrow(options = {}) {
|
1497
|
+
const records = await this.getMany({ ...options, pagination: { size: 1 } });
|
1498
|
+
if (records[0] === void 0)
|
1499
|
+
throw new Error("No results found.");
|
1500
|
+
return records[0];
|
1033
1501
|
}
|
1034
1502
|
cache(ttl) {
|
1035
|
-
return new _Query(__privateGet$
|
1503
|
+
return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { cache: ttl }, __privateGet$5(this, _data));
|
1036
1504
|
}
|
1037
1505
|
nextPage(size, offset) {
|
1038
1506
|
return this.firstPage(size, offset);
|
@@ -1041,10 +1509,10 @@ const _Query = class {
|
|
1041
1509
|
return this.firstPage(size, offset);
|
1042
1510
|
}
|
1043
1511
|
firstPage(size, offset) {
|
1044
|
-
return this.getPaginated({
|
1512
|
+
return this.getPaginated({ pagination: { size, offset } });
|
1045
1513
|
}
|
1046
1514
|
lastPage(size, offset) {
|
1047
|
-
return this.getPaginated({
|
1515
|
+
return this.getPaginated({ pagination: { size, offset, before: "end" } });
|
1048
1516
|
}
|
1049
1517
|
hasNextPage() {
|
1050
1518
|
return this.meta.page.more;
|
@@ -1054,12 +1522,20 @@ let Query = _Query;
|
|
1054
1522
|
_table$1 = new WeakMap();
|
1055
1523
|
_repository = new WeakMap();
|
1056
1524
|
_data = new WeakMap();
|
1525
|
+
function cleanParent(data, parent) {
|
1526
|
+
if (isCursorPaginationOptions(data.pagination)) {
|
1527
|
+
return { ...parent, sorting: void 0, filter: void 0 };
|
1528
|
+
}
|
1529
|
+
return parent;
|
1530
|
+
}
|
1057
1531
|
|
1058
1532
|
function isIdentifiable(x) {
|
1059
1533
|
return isObject(x) && isString(x?.id);
|
1060
1534
|
}
|
1061
1535
|
function isXataRecord(x) {
|
1062
|
-
|
1536
|
+
const record = x;
|
1537
|
+
const metadata = record?.getMetadata();
|
1538
|
+
return isIdentifiable(x) && isObject(metadata) && typeof metadata.version === "number";
|
1063
1539
|
}
|
1064
1540
|
|
1065
1541
|
function isSortFilterString(value) {
|
@@ -1089,7 +1565,7 @@ var __accessCheck$4 = (obj, member, msg) => {
|
|
1089
1565
|
if (!member.has(obj))
|
1090
1566
|
throw TypeError("Cannot " + msg);
|
1091
1567
|
};
|
1092
|
-
var __privateGet$
|
1568
|
+
var __privateGet$4 = (obj, member, getter) => {
|
1093
1569
|
__accessCheck$4(obj, member, "read from private field");
|
1094
1570
|
return getter ? getter.call(obj) : member.get(obj);
|
1095
1571
|
};
|
@@ -1098,7 +1574,7 @@ var __privateAdd$4 = (obj, member, value) => {
|
|
1098
1574
|
throw TypeError("Cannot add the same private member more than once");
|
1099
1575
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1100
1576
|
};
|
1101
|
-
var __privateSet$
|
1577
|
+
var __privateSet$4 = (obj, member, value, setter) => {
|
1102
1578
|
__accessCheck$4(obj, member, "write to private field");
|
1103
1579
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1104
1580
|
return value;
|
@@ -1107,304 +1583,411 @@ var __privateMethod$2 = (obj, member, method) => {
|
|
1107
1583
|
__accessCheck$4(obj, member, "access private method");
|
1108
1584
|
return method;
|
1109
1585
|
};
|
1110
|
-
var _table,
|
1586
|
+
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;
|
1111
1587
|
class Repository extends Query {
|
1112
1588
|
}
|
1113
1589
|
class RestRepository extends Query {
|
1114
1590
|
constructor(options) {
|
1115
|
-
super(
|
1591
|
+
super(
|
1592
|
+
null,
|
1593
|
+
{ name: options.table, schema: options.schemaTables?.find((table) => table.name === options.table) },
|
1594
|
+
{}
|
1595
|
+
);
|
1116
1596
|
__privateAdd$4(this, _insertRecordWithoutId);
|
1117
1597
|
__privateAdd$4(this, _insertRecordWithId);
|
1118
1598
|
__privateAdd$4(this, _bulkInsertTableRecords);
|
1119
1599
|
__privateAdd$4(this, _updateRecordWithID);
|
1120
1600
|
__privateAdd$4(this, _upsertRecordWithID);
|
1121
1601
|
__privateAdd$4(this, _deleteRecord);
|
1122
|
-
__privateAdd$4(this, _invalidateCache);
|
1123
|
-
__privateAdd$4(this, _setCacheRecord);
|
1124
|
-
__privateAdd$4(this, _getCacheRecord);
|
1125
1602
|
__privateAdd$4(this, _setCacheQuery);
|
1126
1603
|
__privateAdd$4(this, _getCacheQuery);
|
1604
|
+
__privateAdd$4(this, _getSchemaTables$1);
|
1127
1605
|
__privateAdd$4(this, _table, void 0);
|
1128
|
-
__privateAdd$4(this, _links, void 0);
|
1129
1606
|
__privateAdd$4(this, _getFetchProps, void 0);
|
1607
|
+
__privateAdd$4(this, _db, void 0);
|
1130
1608
|
__privateAdd$4(this, _cache, void 0);
|
1131
|
-
|
1132
|
-
|
1133
|
-
__privateSet$
|
1134
|
-
this
|
1135
|
-
__privateSet$
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
throw new Error("The id can't be empty");
|
1146
|
-
const record = await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b);
|
1147
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1148
|
-
return record;
|
1149
|
-
}
|
1150
|
-
if (isObject(a) && isString(a.id)) {
|
1151
|
-
if (a.id === "")
|
1152
|
-
throw new Error("The id can't be empty");
|
1153
|
-
const record = await __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 });
|
1154
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1155
|
-
return record;
|
1156
|
-
}
|
1157
|
-
if (isObject(a)) {
|
1158
|
-
const record = await __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a);
|
1159
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1160
|
-
return record;
|
1161
|
-
}
|
1162
|
-
throw new Error("Invalid arguments for create method");
|
1163
|
-
}
|
1164
|
-
async read(recordId) {
|
1165
|
-
const cacheRecord = await __privateMethod$2(this, _getCacheRecord, getCacheRecord_fn).call(this, recordId);
|
1166
|
-
if (cacheRecord)
|
1167
|
-
return cacheRecord;
|
1168
|
-
const fetchProps = await __privateGet$3(this, _getFetchProps).call(this);
|
1169
|
-
try {
|
1170
|
-
const response = await getRecord({
|
1171
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$3(this, _table), recordId },
|
1172
|
-
...fetchProps
|
1609
|
+
__privateAdd$4(this, _schemaTables$2, void 0);
|
1610
|
+
__privateAdd$4(this, _trace, void 0);
|
1611
|
+
__privateSet$4(this, _table, options.table);
|
1612
|
+
__privateSet$4(this, _getFetchProps, options.pluginOptions.getFetchProps);
|
1613
|
+
__privateSet$4(this, _db, options.db);
|
1614
|
+
__privateSet$4(this, _cache, options.pluginOptions.cache);
|
1615
|
+
__privateSet$4(this, _schemaTables$2, options.schemaTables);
|
1616
|
+
const trace = options.pluginOptions.trace ?? defaultTrace;
|
1617
|
+
__privateSet$4(this, _trace, async (name, fn, options2 = {}) => {
|
1618
|
+
return trace(name, fn, {
|
1619
|
+
...options2,
|
1620
|
+
[TraceAttributes.TABLE]: __privateGet$4(this, _table),
|
1621
|
+
[TraceAttributes.KIND]: "sdk-operation",
|
1622
|
+
[TraceAttributes.VERSION]: VERSION
|
1173
1623
|
});
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1624
|
+
});
|
1625
|
+
}
|
1626
|
+
async create(a, b, c) {
|
1627
|
+
return __privateGet$4(this, _trace).call(this, "create", async () => {
|
1628
|
+
if (Array.isArray(a)) {
|
1629
|
+
if (a.length === 0)
|
1630
|
+
return [];
|
1631
|
+
const columns = isStringArray(b) ? b : void 0;
|
1632
|
+
return __privateMethod$2(this, _bulkInsertTableRecords, bulkInsertTableRecords_fn).call(this, a, columns);
|
1178
1633
|
}
|
1179
|
-
|
1180
|
-
|
1634
|
+
if (isString(a) && isObject(b)) {
|
1635
|
+
if (a === "")
|
1636
|
+
throw new Error("The id can't be empty");
|
1637
|
+
const columns = isStringArray(c) ? c : void 0;
|
1638
|
+
return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a, b, columns);
|
1639
|
+
}
|
1640
|
+
if (isObject(a) && isString(a.id)) {
|
1641
|
+
if (a.id === "")
|
1642
|
+
throw new Error("The id can't be empty");
|
1643
|
+
const columns = isStringArray(b) ? b : void 0;
|
1644
|
+
return __privateMethod$2(this, _insertRecordWithId, insertRecordWithId_fn).call(this, a.id, { ...a, id: void 0 }, columns);
|
1645
|
+
}
|
1646
|
+
if (isObject(a)) {
|
1647
|
+
const columns = isStringArray(b) ? b : void 0;
|
1648
|
+
return __privateMethod$2(this, _insertRecordWithoutId, insertRecordWithoutId_fn).call(this, a, columns);
|
1649
|
+
}
|
1650
|
+
throw new Error("Invalid arguments for create method");
|
1651
|
+
});
|
1181
1652
|
}
|
1182
|
-
async
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1653
|
+
async read(a, b) {
|
1654
|
+
return __privateGet$4(this, _trace).call(this, "read", async () => {
|
1655
|
+
const columns = isStringArray(b) ? b : ["*"];
|
1656
|
+
if (Array.isArray(a)) {
|
1657
|
+
if (a.length === 0)
|
1658
|
+
return [];
|
1659
|
+
const ids = a.map((item) => extractId(item));
|
1660
|
+
const finalObjects = await this.getAll({ filter: { id: { $any: compact(ids) } }, columns });
|
1661
|
+
const dictionary = finalObjects.reduce((acc, object) => {
|
1662
|
+
acc[object.id] = object;
|
1663
|
+
return acc;
|
1664
|
+
}, {});
|
1665
|
+
return ids.map((id2) => dictionary[id2 ?? ""] ?? null);
|
1186
1666
|
}
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1667
|
+
const id = extractId(a);
|
1668
|
+
if (id) {
|
1669
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1670
|
+
try {
|
1671
|
+
const response = await getRecord({
|
1672
|
+
pathParams: {
|
1673
|
+
workspace: "{workspaceId}",
|
1674
|
+
dbBranchName: "{dbBranch}",
|
1675
|
+
tableName: __privateGet$4(this, _table),
|
1676
|
+
recordId: id
|
1677
|
+
},
|
1678
|
+
queryParams: { columns },
|
1679
|
+
...fetchProps
|
1680
|
+
});
|
1681
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1682
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1683
|
+
} catch (e) {
|
1684
|
+
if (isObject(e) && e.status === 404) {
|
1685
|
+
return null;
|
1686
|
+
}
|
1687
|
+
throw e;
|
1688
|
+
}
|
1689
|
+
}
|
1690
|
+
return null;
|
1691
|
+
});
|
1202
1692
|
}
|
1203
|
-
async
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1693
|
+
async readOrThrow(a, b) {
|
1694
|
+
return __privateGet$4(this, _trace).call(this, "readOrThrow", async () => {
|
1695
|
+
const result = await this.read(a, b);
|
1696
|
+
if (Array.isArray(result)) {
|
1697
|
+
const missingIds = compact(
|
1698
|
+
a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
|
1699
|
+
);
|
1700
|
+
if (missingIds.length > 0) {
|
1701
|
+
throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
|
1702
|
+
}
|
1703
|
+
return result;
|
1207
1704
|
}
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
return record;
|
1215
|
-
}
|
1216
|
-
if (isObject(a) && isString(a.id)) {
|
1217
|
-
await __privateMethod$2(this, _invalidateCache, invalidateCache_fn).call(this, a.id);
|
1218
|
-
const record = await __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a.id, { ...a, id: void 0 });
|
1219
|
-
await __privateMethod$2(this, _setCacheRecord, setCacheRecord_fn).call(this, record);
|
1220
|
-
return record;
|
1221
|
-
}
|
1222
|
-
throw new Error("Invalid arguments for createOrUpdate method");
|
1705
|
+
if (result === null) {
|
1706
|
+
const id = extractId(a) ?? "unknown";
|
1707
|
+
throw new Error(`Record with id ${id} not found`);
|
1708
|
+
}
|
1709
|
+
return result;
|
1710
|
+
});
|
1223
1711
|
}
|
1224
|
-
async
|
1225
|
-
|
1226
|
-
if (a
|
1227
|
-
|
1712
|
+
async update(a, b, c) {
|
1713
|
+
return __privateGet$4(this, _trace).call(this, "update", async () => {
|
1714
|
+
if (Array.isArray(a)) {
|
1715
|
+
if (a.length === 0)
|
1716
|
+
return [];
|
1717
|
+
if (a.length > 100) {
|
1718
|
+
console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
|
1719
|
+
}
|
1720
|
+
const columns = isStringArray(b) ? b : ["*"];
|
1721
|
+
return Promise.all(a.map((object) => this.update(object, columns)));
|
1228
1722
|
}
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1723
|
+
if (isString(a) && isObject(b)) {
|
1724
|
+
const columns = isStringArray(c) ? c : void 0;
|
1725
|
+
return __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a, b, columns);
|
1726
|
+
}
|
1727
|
+
if (isObject(a) && isString(a.id)) {
|
1728
|
+
const columns = isStringArray(b) ? b : void 0;
|
1729
|
+
return __privateMethod$2(this, _updateRecordWithID, updateRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns);
|
1730
|
+
}
|
1731
|
+
throw new Error("Invalid arguments for update method");
|
1732
|
+
});
|
1733
|
+
}
|
1734
|
+
async updateOrThrow(a, b, c) {
|
1735
|
+
return __privateGet$4(this, _trace).call(this, "updateOrThrow", async () => {
|
1736
|
+
const result = await this.update(a, b, c);
|
1737
|
+
if (Array.isArray(result)) {
|
1738
|
+
const missingIds = compact(
|
1739
|
+
a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
|
1740
|
+
);
|
1741
|
+
if (missingIds.length > 0) {
|
1742
|
+
throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
|
1743
|
+
}
|
1744
|
+
return result;
|
1745
|
+
}
|
1746
|
+
if (result === null) {
|
1747
|
+
const id = extractId(a) ?? "unknown";
|
1748
|
+
throw new Error(`Record with id ${id} not found`);
|
1749
|
+
}
|
1750
|
+
return result;
|
1751
|
+
});
|
1752
|
+
}
|
1753
|
+
async createOrUpdate(a, b, c) {
|
1754
|
+
return __privateGet$4(this, _trace).call(this, "createOrUpdate", async () => {
|
1755
|
+
if (Array.isArray(a)) {
|
1756
|
+
if (a.length === 0)
|
1757
|
+
return [];
|
1758
|
+
if (a.length > 100) {
|
1759
|
+
console.warn("Bulk update operation is not optimized in the Xata API yet, this request might be slow");
|
1760
|
+
}
|
1761
|
+
const columns = isStringArray(b) ? b : ["*"];
|
1762
|
+
return Promise.all(a.map((object) => this.createOrUpdate(object, columns)));
|
1763
|
+
}
|
1764
|
+
if (isString(a) && isObject(b)) {
|
1765
|
+
const columns = isStringArray(c) ? c : void 0;
|
1766
|
+
return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a, b, columns);
|
1767
|
+
}
|
1768
|
+
if (isObject(a) && isString(a.id)) {
|
1769
|
+
const columns = isStringArray(c) ? c : void 0;
|
1770
|
+
return __privateMethod$2(this, _upsertRecordWithID, upsertRecordWithID_fn).call(this, a.id, { ...a, id: void 0 }, columns);
|
1771
|
+
}
|
1772
|
+
throw new Error("Invalid arguments for createOrUpdate method");
|
1773
|
+
});
|
1774
|
+
}
|
1775
|
+
async delete(a, b) {
|
1776
|
+
return __privateGet$4(this, _trace).call(this, "delete", async () => {
|
1777
|
+
if (Array.isArray(a)) {
|
1778
|
+
if (a.length === 0)
|
1779
|
+
return [];
|
1780
|
+
if (a.length > 100) {
|
1781
|
+
console.warn("Bulk delete operation is not optimized in the Xata API yet, this request might be slow");
|
1782
|
+
}
|
1783
|
+
return Promise.all(a.map((id) => this.delete(id, b)));
|
1784
|
+
}
|
1785
|
+
if (isString(a)) {
|
1786
|
+
return __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a, b);
|
1787
|
+
}
|
1788
|
+
if (isObject(a) && isString(a.id)) {
|
1789
|
+
return __privateMethod$2(this, _deleteRecord, deleteRecord_fn).call(this, a.id, b);
|
1790
|
+
}
|
1791
|
+
throw new Error("Invalid arguments for delete method");
|
1792
|
+
});
|
1793
|
+
}
|
1794
|
+
async deleteOrThrow(a, b) {
|
1795
|
+
return __privateGet$4(this, _trace).call(this, "deleteOrThrow", async () => {
|
1796
|
+
const result = await this.delete(a, b);
|
1797
|
+
if (Array.isArray(result)) {
|
1798
|
+
const missingIds = compact(
|
1799
|
+
a.filter((_item, index) => result[index] === null).map((item) => extractId(item))
|
1800
|
+
);
|
1801
|
+
if (missingIds.length > 0) {
|
1802
|
+
throw new Error(`Could not find records with ids: ${missingIds.join(", ")}`);
|
1803
|
+
}
|
1804
|
+
return result;
|
1805
|
+
} else if (result === null) {
|
1806
|
+
const id = extractId(a) ?? "unknown";
|
1807
|
+
throw new Error(`Record with id ${id} not found`);
|
1808
|
+
}
|
1809
|
+
return result;
|
1810
|
+
});
|
1243
1811
|
}
|
1244
1812
|
async search(query, options = {}) {
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1813
|
+
return __privateGet$4(this, _trace).call(this, "search", async () => {
|
1814
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1815
|
+
const { records } = await searchTable({
|
1816
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
|
1817
|
+
body: {
|
1818
|
+
query,
|
1819
|
+
fuzziness: options.fuzziness,
|
1820
|
+
prefix: options.prefix,
|
1821
|
+
highlight: options.highlight,
|
1822
|
+
filter: options.filter,
|
1823
|
+
boosters: options.boosters
|
1824
|
+
},
|
1825
|
+
...fetchProps
|
1826
|
+
});
|
1827
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1828
|
+
return records.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item));
|
1250
1829
|
});
|
1251
|
-
return records.map((item) => initObject(this.db, __privateGet$3(this, _links), __privateGet$3(this, _table), item));
|
1252
1830
|
}
|
1253
1831
|
async query(query) {
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1832
|
+
return __privateGet$4(this, _trace).call(this, "query", async () => {
|
1833
|
+
const cacheQuery = await __privateMethod$2(this, _getCacheQuery, getCacheQuery_fn).call(this, query);
|
1834
|
+
if (cacheQuery)
|
1835
|
+
return new Page(query, cacheQuery.meta, cacheQuery.records);
|
1836
|
+
const data = query.getQueryOptions();
|
1837
|
+
const body = {
|
1838
|
+
filter: cleanFilter(data.filter),
|
1839
|
+
sort: data.sort !== void 0 ? buildSortFilter(data.sort) : void 0,
|
1840
|
+
page: data.pagination,
|
1841
|
+
columns: data.columns
|
1842
|
+
};
|
1843
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1844
|
+
const { meta, records: objects } = await queryTable({
|
1845
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
|
1846
|
+
body,
|
1847
|
+
...fetchProps
|
1848
|
+
});
|
1849
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1850
|
+
const records = objects.map((record) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), record));
|
1851
|
+
await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
|
1852
|
+
return new Page(query, meta, records);
|
1269
1853
|
});
|
1270
|
-
const records = objects.map((record) => initObject(this.db, __privateGet$3(this, _links), __privateGet$3(this, _table), record));
|
1271
|
-
await __privateMethod$2(this, _setCacheQuery, setCacheQuery_fn).call(this, query, meta, records);
|
1272
|
-
return new Page(query, meta, records);
|
1273
1854
|
}
|
1274
1855
|
}
|
1275
1856
|
_table = new WeakMap();
|
1276
|
-
_links = new WeakMap();
|
1277
1857
|
_getFetchProps = new WeakMap();
|
1858
|
+
_db = new WeakMap();
|
1278
1859
|
_cache = new WeakMap();
|
1860
|
+
_schemaTables$2 = new WeakMap();
|
1861
|
+
_trace = new WeakMap();
|
1279
1862
|
_insertRecordWithoutId = new WeakSet();
|
1280
|
-
insertRecordWithoutId_fn = async function(object) {
|
1281
|
-
const fetchProps = await __privateGet$
|
1863
|
+
insertRecordWithoutId_fn = async function(object, columns = ["*"]) {
|
1864
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1282
1865
|
const record = transformObjectLinks(object);
|
1283
1866
|
const response = await insertRecord({
|
1284
1867
|
pathParams: {
|
1285
1868
|
workspace: "{workspaceId}",
|
1286
1869
|
dbBranchName: "{dbBranch}",
|
1287
|
-
tableName: __privateGet$
|
1870
|
+
tableName: __privateGet$4(this, _table)
|
1288
1871
|
},
|
1872
|
+
queryParams: { columns },
|
1289
1873
|
body: record,
|
1290
1874
|
...fetchProps
|
1291
1875
|
});
|
1292
|
-
const
|
1293
|
-
|
1294
|
-
throw new Error("The server failed to save the record");
|
1295
|
-
}
|
1296
|
-
return finalObject;
|
1876
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1877
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1297
1878
|
};
|
1298
1879
|
_insertRecordWithId = new WeakSet();
|
1299
|
-
insertRecordWithId_fn = async function(recordId, object) {
|
1300
|
-
const fetchProps = await __privateGet$
|
1880
|
+
insertRecordWithId_fn = async function(recordId, object, columns = ["*"]) {
|
1881
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1301
1882
|
const record = transformObjectLinks(object);
|
1302
1883
|
const response = await insertRecordWithID({
|
1303
1884
|
pathParams: {
|
1304
1885
|
workspace: "{workspaceId}",
|
1305
1886
|
dbBranchName: "{dbBranch}",
|
1306
|
-
tableName: __privateGet$
|
1887
|
+
tableName: __privateGet$4(this, _table),
|
1307
1888
|
recordId
|
1308
1889
|
},
|
1309
1890
|
body: record,
|
1310
|
-
queryParams: { createOnly: true },
|
1891
|
+
queryParams: { createOnly: true, columns },
|
1311
1892
|
...fetchProps
|
1312
1893
|
});
|
1313
|
-
const
|
1314
|
-
|
1315
|
-
throw new Error("The server failed to save the record");
|
1316
|
-
}
|
1317
|
-
return finalObject;
|
1894
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1895
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1318
1896
|
};
|
1319
1897
|
_bulkInsertTableRecords = new WeakSet();
|
1320
|
-
bulkInsertTableRecords_fn = async function(objects) {
|
1321
|
-
const fetchProps = await __privateGet$
|
1898
|
+
bulkInsertTableRecords_fn = async function(objects, columns = ["*"]) {
|
1899
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1322
1900
|
const records = objects.map((object) => transformObjectLinks(object));
|
1323
1901
|
const response = await bulkInsertTableRecords({
|
1324
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$
|
1902
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table) },
|
1903
|
+
queryParams: { columns },
|
1325
1904
|
body: { records },
|
1326
1905
|
...fetchProps
|
1327
1906
|
});
|
1328
|
-
|
1329
|
-
|
1330
|
-
throw new Error("The server failed to save some records");
|
1907
|
+
if (!isResponseWithRecords(response)) {
|
1908
|
+
throw new Error("Request included columns but server didn't include them");
|
1331
1909
|
}
|
1332
|
-
|
1910
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1911
|
+
return response.records?.map((item) => initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), item));
|
1333
1912
|
};
|
1334
1913
|
_updateRecordWithID = new WeakSet();
|
1335
|
-
updateRecordWithID_fn = async function(recordId, object) {
|
1336
|
-
const fetchProps = await __privateGet$
|
1914
|
+
updateRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
|
1915
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1337
1916
|
const record = transformObjectLinks(object);
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1917
|
+
try {
|
1918
|
+
const response = await updateRecordWithID({
|
1919
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1920
|
+
queryParams: { columns },
|
1921
|
+
body: record,
|
1922
|
+
...fetchProps
|
1923
|
+
});
|
1924
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1925
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1926
|
+
} catch (e) {
|
1927
|
+
if (isObject(e) && e.status === 404) {
|
1928
|
+
return null;
|
1929
|
+
}
|
1930
|
+
throw e;
|
1931
|
+
}
|
1347
1932
|
};
|
1348
1933
|
_upsertRecordWithID = new WeakSet();
|
1349
|
-
upsertRecordWithID_fn = async function(recordId, object) {
|
1350
|
-
const fetchProps = await __privateGet$
|
1934
|
+
upsertRecordWithID_fn = async function(recordId, object, columns = ["*"]) {
|
1935
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1351
1936
|
const response = await upsertRecordWithID({
|
1352
|
-
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$
|
1937
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1938
|
+
queryParams: { columns },
|
1353
1939
|
body: object,
|
1354
1940
|
...fetchProps
|
1355
1941
|
});
|
1356
|
-
const
|
1357
|
-
|
1358
|
-
throw new Error("The server failed to save the record");
|
1359
|
-
return item;
|
1942
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1943
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1360
1944
|
};
|
1361
1945
|
_deleteRecord = new WeakSet();
|
1362
|
-
deleteRecord_fn = async function(recordId) {
|
1363
|
-
const fetchProps = await __privateGet$
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
await __privateGet$3(this, _cache).delete(key);
|
1946
|
+
deleteRecord_fn = async function(recordId, columns = ["*"]) {
|
1947
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1948
|
+
try {
|
1949
|
+
const response = await deleteRecord({
|
1950
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", tableName: __privateGet$4(this, _table), recordId },
|
1951
|
+
queryParams: { columns },
|
1952
|
+
...fetchProps
|
1953
|
+
});
|
1954
|
+
const schemaTables = await __privateMethod$2(this, _getSchemaTables$1, getSchemaTables_fn$1).call(this);
|
1955
|
+
return initObject(__privateGet$4(this, _db), schemaTables, __privateGet$4(this, _table), response);
|
1956
|
+
} catch (e) {
|
1957
|
+
if (isObject(e) && e.status === 404) {
|
1958
|
+
return null;
|
1959
|
+
}
|
1960
|
+
throw e;
|
1378
1961
|
}
|
1379
1962
|
};
|
1380
|
-
_setCacheRecord = new WeakSet();
|
1381
|
-
setCacheRecord_fn = async function(record) {
|
1382
|
-
if (!__privateGet$3(this, _cache).cacheRecords)
|
1383
|
-
return;
|
1384
|
-
await __privateGet$3(this, _cache).set(`rec_${__privateGet$3(this, _table)}:${record.id}`, record);
|
1385
|
-
};
|
1386
|
-
_getCacheRecord = new WeakSet();
|
1387
|
-
getCacheRecord_fn = async function(recordId) {
|
1388
|
-
if (!__privateGet$3(this, _cache).cacheRecords)
|
1389
|
-
return null;
|
1390
|
-
return __privateGet$3(this, _cache).get(`rec_${__privateGet$3(this, _table)}:${recordId}`);
|
1391
|
-
};
|
1392
1963
|
_setCacheQuery = new WeakSet();
|
1393
1964
|
setCacheQuery_fn = async function(query, meta, records) {
|
1394
|
-
await __privateGet$
|
1965
|
+
await __privateGet$4(this, _cache).set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: new Date(), meta, records });
|
1395
1966
|
};
|
1396
1967
|
_getCacheQuery = new WeakSet();
|
1397
1968
|
getCacheQuery_fn = async function(query) {
|
1398
|
-
const key = `query_${__privateGet$
|
1399
|
-
const result = await __privateGet$
|
1969
|
+
const key = `query_${__privateGet$4(this, _table)}:${query.key()}`;
|
1970
|
+
const result = await __privateGet$4(this, _cache).get(key);
|
1400
1971
|
if (!result)
|
1401
1972
|
return null;
|
1402
|
-
const { cache: ttl = __privateGet$
|
1403
|
-
if (
|
1404
|
-
return
|
1973
|
+
const { cache: ttl = __privateGet$4(this, _cache).defaultQueryTTL } = query.getQueryOptions();
|
1974
|
+
if (ttl < 0)
|
1975
|
+
return null;
|
1405
1976
|
const hasExpired = result.date.getTime() + ttl < Date.now();
|
1406
1977
|
return hasExpired ? null : result;
|
1407
1978
|
};
|
1979
|
+
_getSchemaTables$1 = new WeakSet();
|
1980
|
+
getSchemaTables_fn$1 = async function() {
|
1981
|
+
if (__privateGet$4(this, _schemaTables$2))
|
1982
|
+
return __privateGet$4(this, _schemaTables$2);
|
1983
|
+
const fetchProps = await __privateGet$4(this, _getFetchProps).call(this);
|
1984
|
+
const { schema } = await getBranchDetails({
|
1985
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1986
|
+
...fetchProps
|
1987
|
+
});
|
1988
|
+
__privateSet$4(this, _schemaTables$2, schema.tables);
|
1989
|
+
return schema.tables;
|
1990
|
+
};
|
1408
1991
|
const transformObjectLinks = (object) => {
|
1409
1992
|
return Object.entries(object).reduce((acc, [key, value]) => {
|
1410
1993
|
if (key === "xata")
|
@@ -1412,47 +1995,84 @@ const transformObjectLinks = (object) => {
|
|
1412
1995
|
return { ...acc, [key]: isIdentifiable(value) ? value.id : value };
|
1413
1996
|
}, {});
|
1414
1997
|
};
|
1415
|
-
const initObject = (db,
|
1998
|
+
const initObject = (db, schemaTables, table, object) => {
|
1416
1999
|
const result = {};
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
2000
|
+
const { xata, ...rest } = object ?? {};
|
2001
|
+
Object.assign(result, rest);
|
2002
|
+
const { columns } = schemaTables.find(({ name }) => name === table) ?? {};
|
2003
|
+
if (!columns)
|
2004
|
+
console.error(`Table ${table} not found in schema`);
|
2005
|
+
for (const column of columns ?? []) {
|
2006
|
+
const value = result[column.name];
|
2007
|
+
switch (column.type) {
|
2008
|
+
case "datetime": {
|
2009
|
+
const date = value !== void 0 ? new Date(value) : void 0;
|
2010
|
+
if (date && isNaN(date.getTime())) {
|
2011
|
+
console.error(`Failed to parse date ${value} for field ${column.name}`);
|
2012
|
+
} else if (date) {
|
2013
|
+
result[column.name] = date;
|
2014
|
+
}
|
2015
|
+
break;
|
2016
|
+
}
|
2017
|
+
case "link": {
|
2018
|
+
const linkTable = column.link?.table;
|
2019
|
+
if (!linkTable) {
|
2020
|
+
console.error(`Failed to parse link for field ${column.name}`);
|
2021
|
+
} else if (isObject(value)) {
|
2022
|
+
result[column.name] = initObject(db, schemaTables, linkTable, value);
|
2023
|
+
} else {
|
2024
|
+
result[column.name] = null;
|
2025
|
+
}
|
2026
|
+
break;
|
2027
|
+
}
|
2028
|
+
default:
|
2029
|
+
result[column.name] = value ?? null;
|
2030
|
+
if (column.notNull === true && value === null) {
|
2031
|
+
console.error(`Parse error, column ${column.name} is non nullable and value resolves null`);
|
2032
|
+
}
|
2033
|
+
break;
|
1424
2034
|
}
|
1425
2035
|
}
|
1426
|
-
result.read = function() {
|
1427
|
-
return db[table].read(result["id"]);
|
2036
|
+
result.read = function(columns2) {
|
2037
|
+
return db[table].read(result["id"], columns2);
|
1428
2038
|
};
|
1429
|
-
result.update = function(data) {
|
1430
|
-
return db[table].update(result["id"], data);
|
2039
|
+
result.update = function(data, columns2) {
|
2040
|
+
return db[table].update(result["id"], data, columns2);
|
1431
2041
|
};
|
1432
2042
|
result.delete = function() {
|
1433
2043
|
return db[table].delete(result["id"]);
|
1434
2044
|
};
|
1435
|
-
|
2045
|
+
result.getMetadata = function() {
|
2046
|
+
return xata;
|
2047
|
+
};
|
2048
|
+
for (const prop of ["read", "update", "delete", "getMetadata"]) {
|
1436
2049
|
Object.defineProperty(result, prop, { enumerable: false });
|
1437
2050
|
}
|
1438
2051
|
Object.freeze(result);
|
1439
2052
|
return result;
|
1440
2053
|
};
|
1441
|
-
function
|
1442
|
-
|
1443
|
-
|
1444
|
-
|
1445
|
-
if (
|
1446
|
-
return
|
1447
|
-
|
1448
|
-
|
2054
|
+
function isResponseWithRecords(value) {
|
2055
|
+
return isObject(value) && Array.isArray(value.records);
|
2056
|
+
}
|
2057
|
+
function extractId(value) {
|
2058
|
+
if (isString(value))
|
2059
|
+
return value;
|
2060
|
+
if (isObject(value) && isString(value.id))
|
2061
|
+
return value.id;
|
2062
|
+
return void 0;
|
2063
|
+
}
|
2064
|
+
function cleanFilter(filter) {
|
2065
|
+
if (!filter)
|
2066
|
+
return void 0;
|
2067
|
+
const values = Object.values(filter).filter(Boolean).filter((value) => Array.isArray(value) ? value.length > 0 : true);
|
2068
|
+
return values.length > 0 ? filter : void 0;
|
1449
2069
|
}
|
1450
2070
|
|
1451
2071
|
var __accessCheck$3 = (obj, member, msg) => {
|
1452
2072
|
if (!member.has(obj))
|
1453
2073
|
throw TypeError("Cannot " + msg);
|
1454
2074
|
};
|
1455
|
-
var __privateGet$
|
2075
|
+
var __privateGet$3 = (obj, member, getter) => {
|
1456
2076
|
__accessCheck$3(obj, member, "read from private field");
|
1457
2077
|
return getter ? getter.call(obj) : member.get(obj);
|
1458
2078
|
};
|
@@ -1461,7 +2081,7 @@ var __privateAdd$3 = (obj, member, value) => {
|
|
1461
2081
|
throw TypeError("Cannot add the same private member more than once");
|
1462
2082
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1463
2083
|
};
|
1464
|
-
var __privateSet$
|
2084
|
+
var __privateSet$3 = (obj, member, value, setter) => {
|
1465
2085
|
__accessCheck$3(obj, member, "write to private field");
|
1466
2086
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
1467
2087
|
return value;
|
@@ -1470,46 +2090,52 @@ var _map;
|
|
1470
2090
|
class SimpleCache {
|
1471
2091
|
constructor(options = {}) {
|
1472
2092
|
__privateAdd$3(this, _map, void 0);
|
1473
|
-
__privateSet$
|
2093
|
+
__privateSet$3(this, _map, /* @__PURE__ */ new Map());
|
1474
2094
|
this.capacity = options.max ?? 500;
|
1475
|
-
this.cacheRecords = options.cacheRecords ?? true;
|
1476
2095
|
this.defaultQueryTTL = options.defaultQueryTTL ?? 60 * 1e3;
|
1477
2096
|
}
|
1478
2097
|
async getAll() {
|
1479
|
-
return Object.fromEntries(__privateGet$
|
2098
|
+
return Object.fromEntries(__privateGet$3(this, _map));
|
1480
2099
|
}
|
1481
2100
|
async get(key) {
|
1482
|
-
return __privateGet$
|
2101
|
+
return __privateGet$3(this, _map).get(key) ?? null;
|
1483
2102
|
}
|
1484
2103
|
async set(key, value) {
|
1485
2104
|
await this.delete(key);
|
1486
|
-
__privateGet$
|
1487
|
-
if (__privateGet$
|
1488
|
-
const leastRecentlyUsed = __privateGet$
|
2105
|
+
__privateGet$3(this, _map).set(key, value);
|
2106
|
+
if (__privateGet$3(this, _map).size > this.capacity) {
|
2107
|
+
const leastRecentlyUsed = __privateGet$3(this, _map).keys().next().value;
|
1489
2108
|
await this.delete(leastRecentlyUsed);
|
1490
2109
|
}
|
1491
2110
|
}
|
1492
2111
|
async delete(key) {
|
1493
|
-
__privateGet$
|
2112
|
+
__privateGet$3(this, _map).delete(key);
|
1494
2113
|
}
|
1495
2114
|
async clear() {
|
1496
|
-
return __privateGet$
|
2115
|
+
return __privateGet$3(this, _map).clear();
|
1497
2116
|
}
|
1498
2117
|
}
|
1499
2118
|
_map = new WeakMap();
|
1500
2119
|
|
1501
|
-
const
|
1502
|
-
const
|
1503
|
-
const
|
1504
|
-
const
|
1505
|
-
const
|
1506
|
-
const
|
2120
|
+
const greaterThan = (value) => ({ $gt: value });
|
2121
|
+
const gt = greaterThan;
|
2122
|
+
const greaterThanEquals = (value) => ({ $ge: value });
|
2123
|
+
const greaterEquals = greaterThanEquals;
|
2124
|
+
const gte = greaterThanEquals;
|
2125
|
+
const ge = greaterThanEquals;
|
2126
|
+
const lessThan = (value) => ({ $lt: value });
|
2127
|
+
const lt = lessThan;
|
2128
|
+
const lessThanEquals = (value) => ({ $le: value });
|
2129
|
+
const lessEquals = lessThanEquals;
|
2130
|
+
const lte = lessThanEquals;
|
2131
|
+
const le = lessThanEquals;
|
1507
2132
|
const exists = (column) => ({ $exists: column });
|
1508
2133
|
const notExists = (column) => ({ $notExists: column });
|
1509
2134
|
const startsWith = (value) => ({ $startsWith: value });
|
1510
2135
|
const endsWith = (value) => ({ $endsWith: value });
|
1511
2136
|
const pattern = (value) => ({ $pattern: value });
|
1512
2137
|
const is = (value) => ({ $is: value });
|
2138
|
+
const equals = is;
|
1513
2139
|
const isNot = (value) => ({ $isNot: value });
|
1514
2140
|
const contains = (value) => ({ $contains: value });
|
1515
2141
|
const includes = (value) => ({ $includes: value });
|
@@ -1521,7 +2147,7 @@ var __accessCheck$2 = (obj, member, msg) => {
|
|
1521
2147
|
if (!member.has(obj))
|
1522
2148
|
throw TypeError("Cannot " + msg);
|
1523
2149
|
};
|
1524
|
-
var __privateGet$
|
2150
|
+
var __privateGet$2 = (obj, member, getter) => {
|
1525
2151
|
__accessCheck$2(obj, member, "read from private field");
|
1526
2152
|
return getter ? getter.call(obj) : member.get(obj);
|
1527
2153
|
};
|
@@ -1530,130 +2156,178 @@ var __privateAdd$2 = (obj, member, value) => {
|
|
1530
2156
|
throw TypeError("Cannot add the same private member more than once");
|
1531
2157
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1532
2158
|
};
|
1533
|
-
var
|
2159
|
+
var __privateSet$2 = (obj, member, value, setter) => {
|
2160
|
+
__accessCheck$2(obj, member, "write to private field");
|
2161
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
2162
|
+
return value;
|
2163
|
+
};
|
2164
|
+
var _tables, _schemaTables$1;
|
1534
2165
|
class SchemaPlugin extends XataPlugin {
|
1535
|
-
constructor(
|
2166
|
+
constructor(schemaTables) {
|
1536
2167
|
super();
|
1537
|
-
this.links = links;
|
1538
|
-
this.tableNames = tableNames;
|
1539
2168
|
__privateAdd$2(this, _tables, {});
|
2169
|
+
__privateAdd$2(this, _schemaTables$1, void 0);
|
2170
|
+
__privateSet$2(this, _schemaTables$1, schemaTables);
|
1540
2171
|
}
|
1541
2172
|
build(pluginOptions) {
|
1542
|
-
const
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1546
|
-
|
1547
|
-
|
1548
|
-
__privateGet$
|
2173
|
+
const db = new Proxy(
|
2174
|
+
{},
|
2175
|
+
{
|
2176
|
+
get: (_target, table) => {
|
2177
|
+
if (!isString(table))
|
2178
|
+
throw new Error("Invalid table name");
|
2179
|
+
if (__privateGet$2(this, _tables)[table] === void 0) {
|
2180
|
+
__privateGet$2(this, _tables)[table] = new RestRepository({ db, pluginOptions, table, schemaTables: __privateGet$2(this, _schemaTables$1) });
|
2181
|
+
}
|
2182
|
+
return __privateGet$2(this, _tables)[table];
|
1549
2183
|
}
|
1550
|
-
return __privateGet$1(this, _tables)[table];
|
1551
2184
|
}
|
1552
|
-
|
1553
|
-
|
1554
|
-
|
2185
|
+
);
|
2186
|
+
const tableNames = __privateGet$2(this, _schemaTables$1)?.map(({ name }) => name) ?? [];
|
2187
|
+
for (const table of tableNames) {
|
2188
|
+
db[table] = new RestRepository({ db, pluginOptions, table, schemaTables: __privateGet$2(this, _schemaTables$1) });
|
1555
2189
|
}
|
1556
2190
|
return db;
|
1557
2191
|
}
|
1558
2192
|
}
|
1559
2193
|
_tables = new WeakMap();
|
2194
|
+
_schemaTables$1 = new WeakMap();
|
1560
2195
|
|
1561
2196
|
var __accessCheck$1 = (obj, member, msg) => {
|
1562
2197
|
if (!member.has(obj))
|
1563
2198
|
throw TypeError("Cannot " + msg);
|
1564
2199
|
};
|
2200
|
+
var __privateGet$1 = (obj, member, getter) => {
|
2201
|
+
__accessCheck$1(obj, member, "read from private field");
|
2202
|
+
return getter ? getter.call(obj) : member.get(obj);
|
2203
|
+
};
|
1565
2204
|
var __privateAdd$1 = (obj, member, value) => {
|
1566
2205
|
if (member.has(obj))
|
1567
2206
|
throw TypeError("Cannot add the same private member more than once");
|
1568
2207
|
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
1569
2208
|
};
|
2209
|
+
var __privateSet$1 = (obj, member, value, setter) => {
|
2210
|
+
__accessCheck$1(obj, member, "write to private field");
|
2211
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
2212
|
+
return value;
|
2213
|
+
};
|
1570
2214
|
var __privateMethod$1 = (obj, member, method) => {
|
1571
2215
|
__accessCheck$1(obj, member, "access private method");
|
1572
2216
|
return method;
|
1573
2217
|
};
|
1574
|
-
var _search, search_fn;
|
2218
|
+
var _schemaTables, _search, search_fn, _getSchemaTables, getSchemaTables_fn;
|
1575
2219
|
class SearchPlugin extends XataPlugin {
|
1576
|
-
constructor(db,
|
2220
|
+
constructor(db, schemaTables) {
|
1577
2221
|
super();
|
1578
2222
|
this.db = db;
|
1579
|
-
this.links = links;
|
1580
2223
|
__privateAdd$1(this, _search);
|
2224
|
+
__privateAdd$1(this, _getSchemaTables);
|
2225
|
+
__privateAdd$1(this, _schemaTables, void 0);
|
2226
|
+
__privateSet$1(this, _schemaTables, schemaTables);
|
1581
2227
|
}
|
1582
2228
|
build({ getFetchProps }) {
|
1583
2229
|
return {
|
1584
2230
|
all: async (query, options = {}) => {
|
1585
2231
|
const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
|
2232
|
+
const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
|
1586
2233
|
return records.map((record) => {
|
1587
2234
|
const { table = "orphan" } = record.xata;
|
1588
|
-
return { table, record: initObject(this.db,
|
2235
|
+
return { table, record: initObject(this.db, schemaTables, table, record) };
|
1589
2236
|
});
|
1590
2237
|
},
|
1591
2238
|
byTable: async (query, options = {}) => {
|
1592
2239
|
const records = await __privateMethod$1(this, _search, search_fn).call(this, query, options, getFetchProps);
|
2240
|
+
const schemaTables = await __privateMethod$1(this, _getSchemaTables, getSchemaTables_fn).call(this, getFetchProps);
|
1593
2241
|
return records.reduce((acc, record) => {
|
1594
2242
|
const { table = "orphan" } = record.xata;
|
1595
2243
|
const items = acc[table] ?? [];
|
1596
|
-
const item = initObject(this.db,
|
2244
|
+
const item = initObject(this.db, schemaTables, table, record);
|
1597
2245
|
return { ...acc, [table]: [...items, item] };
|
1598
2246
|
}, {});
|
1599
2247
|
}
|
1600
2248
|
};
|
1601
2249
|
}
|
1602
2250
|
}
|
2251
|
+
_schemaTables = new WeakMap();
|
1603
2252
|
_search = new WeakSet();
|
1604
2253
|
search_fn = async function(query, options, getFetchProps) {
|
1605
2254
|
const fetchProps = await getFetchProps();
|
1606
|
-
const { tables, fuzziness } = options ?? {};
|
2255
|
+
const { tables, fuzziness, highlight, prefix } = options ?? {};
|
1607
2256
|
const { records } = await searchBranch({
|
1608
2257
|
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
1609
|
-
body: { tables, query, fuzziness },
|
2258
|
+
body: { tables, query, fuzziness, prefix, highlight },
|
1610
2259
|
...fetchProps
|
1611
2260
|
});
|
1612
2261
|
return records;
|
1613
2262
|
};
|
2263
|
+
_getSchemaTables = new WeakSet();
|
2264
|
+
getSchemaTables_fn = async function(getFetchProps) {
|
2265
|
+
if (__privateGet$1(this, _schemaTables))
|
2266
|
+
return __privateGet$1(this, _schemaTables);
|
2267
|
+
const fetchProps = await getFetchProps();
|
2268
|
+
const { schema } = await getBranchDetails({
|
2269
|
+
pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}" },
|
2270
|
+
...fetchProps
|
2271
|
+
});
|
2272
|
+
__privateSet$1(this, _schemaTables, schema.tables);
|
2273
|
+
return schema.tables;
|
2274
|
+
};
|
1614
2275
|
|
1615
2276
|
const isBranchStrategyBuilder = (strategy) => {
|
1616
2277
|
return typeof strategy === "function";
|
1617
2278
|
};
|
1618
2279
|
|
1619
|
-
const envBranchNames = [
|
1620
|
-
"XATA_BRANCH",
|
1621
|
-
"VERCEL_GIT_COMMIT_REF",
|
1622
|
-
"CF_PAGES_BRANCH",
|
1623
|
-
"BRANCH"
|
1624
|
-
];
|
1625
|
-
const defaultBranch = "main";
|
1626
2280
|
async function getCurrentBranchName(options) {
|
1627
|
-
const
|
1628
|
-
if (
|
1629
|
-
|
1630
|
-
|
1631
|
-
|
1632
|
-
|
1633
|
-
|
1634
|
-
|
1635
|
-
|
1636
|
-
return defaultBranch;
|
2281
|
+
const { branch, envBranch } = getEnvironment();
|
2282
|
+
if (branch) {
|
2283
|
+
const details = await getDatabaseBranch(branch, options);
|
2284
|
+
if (details)
|
2285
|
+
return branch;
|
2286
|
+
console.warn(`Branch ${branch} not found in Xata. Ignoring...`);
|
2287
|
+
}
|
2288
|
+
const gitBranch = envBranch || await getGitBranch();
|
2289
|
+
return resolveXataBranch(gitBranch, options);
|
1637
2290
|
}
|
1638
2291
|
async function getCurrentBranchDetails(options) {
|
1639
|
-
const
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
2292
|
+
const branch = await getCurrentBranchName(options);
|
2293
|
+
return getDatabaseBranch(branch, options);
|
2294
|
+
}
|
2295
|
+
async function resolveXataBranch(gitBranch, options) {
|
2296
|
+
const databaseURL = options?.databaseURL || getDatabaseURL();
|
2297
|
+
const apiKey = options?.apiKey || getAPIKey();
|
2298
|
+
if (!databaseURL)
|
2299
|
+
throw new Error(
|
2300
|
+
"A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
|
2301
|
+
);
|
2302
|
+
if (!apiKey)
|
2303
|
+
throw new Error(
|
2304
|
+
"An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
|
2305
|
+
);
|
2306
|
+
const [protocol, , host, , dbName] = databaseURL.split("/");
|
2307
|
+
const [workspace] = host.split(".");
|
2308
|
+
const { fallbackBranch } = getEnvironment();
|
2309
|
+
const { branch } = await resolveBranch({
|
2310
|
+
apiKey,
|
2311
|
+
apiUrl: databaseURL,
|
2312
|
+
fetchImpl: getFetchImplementation(options?.fetchImpl),
|
2313
|
+
workspacesApiUrl: `${protocol}//${host}`,
|
2314
|
+
pathParams: { dbName, workspace },
|
2315
|
+
queryParams: { gitBranch, fallbackBranch },
|
2316
|
+
trace: defaultTrace
|
2317
|
+
});
|
2318
|
+
return branch;
|
1649
2319
|
}
|
1650
2320
|
async function getDatabaseBranch(branch, options) {
|
1651
2321
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1652
2322
|
const apiKey = options?.apiKey || getAPIKey();
|
1653
2323
|
if (!databaseURL)
|
1654
|
-
throw new Error(
|
2324
|
+
throw new Error(
|
2325
|
+
"A databaseURL was not defined. Either set the XATA_DATABASE_URL env variable or pass the argument explicitely"
|
2326
|
+
);
|
1655
2327
|
if (!apiKey)
|
1656
|
-
throw new Error(
|
2328
|
+
throw new Error(
|
2329
|
+
"An API key was not defined. Either set the XATA_API_KEY env variable or pass the argument explicitely"
|
2330
|
+
);
|
1657
2331
|
const [protocol, , host, , database] = databaseURL.split("/");
|
1658
2332
|
const [workspace] = host.split(".");
|
1659
2333
|
const dbBranchName = `${database}:${branch}`;
|
@@ -1663,10 +2337,8 @@ async function getDatabaseBranch(branch, options) {
|
|
1663
2337
|
apiUrl: databaseURL,
|
1664
2338
|
fetchImpl: getFetchImplementation(options?.fetchImpl),
|
1665
2339
|
workspacesApiUrl: `${protocol}//${host}`,
|
1666
|
-
pathParams: {
|
1667
|
-
|
1668
|
-
workspace
|
1669
|
-
}
|
2340
|
+
pathParams: { dbBranchName, workspace },
|
2341
|
+
trace: defaultTrace
|
1670
2342
|
});
|
1671
2343
|
} catch (err) {
|
1672
2344
|
if (isObject(err) && err.status === 404)
|
@@ -1674,21 +2346,10 @@ async function getDatabaseBranch(branch, options) {
|
|
1674
2346
|
throw err;
|
1675
2347
|
}
|
1676
2348
|
}
|
1677
|
-
function getBranchByEnvVariable() {
|
1678
|
-
for (const name of envBranchNames) {
|
1679
|
-
const value = getEnvVariable(name);
|
1680
|
-
if (value) {
|
1681
|
-
return value;
|
1682
|
-
}
|
1683
|
-
}
|
1684
|
-
try {
|
1685
|
-
return XATA_BRANCH;
|
1686
|
-
} catch (err) {
|
1687
|
-
}
|
1688
|
-
}
|
1689
2349
|
function getDatabaseURL() {
|
1690
2350
|
try {
|
1691
|
-
|
2351
|
+
const { databaseURL } = getEnvironment();
|
2352
|
+
return databaseURL;
|
1692
2353
|
} catch (err) {
|
1693
2354
|
return void 0;
|
1694
2355
|
}
|
@@ -1717,24 +2378,27 @@ var __privateMethod = (obj, member, method) => {
|
|
1717
2378
|
return method;
|
1718
2379
|
};
|
1719
2380
|
const buildClient = (plugins) => {
|
1720
|
-
var _branch, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
|
2381
|
+
var _branch, _options, _parseOptions, parseOptions_fn, _getFetchProps, getFetchProps_fn, _evaluateBranch, evaluateBranch_fn, _a;
|
1721
2382
|
return _a = class {
|
1722
|
-
constructor(options = {},
|
2383
|
+
constructor(options = {}, schemaTables) {
|
1723
2384
|
__privateAdd(this, _parseOptions);
|
1724
2385
|
__privateAdd(this, _getFetchProps);
|
1725
2386
|
__privateAdd(this, _evaluateBranch);
|
1726
2387
|
__privateAdd(this, _branch, void 0);
|
2388
|
+
__privateAdd(this, _options, void 0);
|
1727
2389
|
const safeOptions = __privateMethod(this, _parseOptions, parseOptions_fn).call(this, options);
|
2390
|
+
__privateSet(this, _options, safeOptions);
|
1728
2391
|
const pluginOptions = {
|
1729
2392
|
getFetchProps: () => __privateMethod(this, _getFetchProps, getFetchProps_fn).call(this, safeOptions),
|
1730
|
-
cache: safeOptions.cache
|
2393
|
+
cache: safeOptions.cache,
|
2394
|
+
trace: safeOptions.trace
|
1731
2395
|
};
|
1732
|
-
const db = new SchemaPlugin(
|
1733
|
-
const search = new SearchPlugin(db,
|
2396
|
+
const db = new SchemaPlugin(schemaTables).build(pluginOptions);
|
2397
|
+
const search = new SearchPlugin(db, schemaTables).build(pluginOptions);
|
1734
2398
|
this.db = db;
|
1735
2399
|
this.search = search;
|
1736
2400
|
for (const [key, namespace] of Object.entries(plugins ?? {})) {
|
1737
|
-
if (
|
2401
|
+
if (namespace === void 0)
|
1738
2402
|
continue;
|
1739
2403
|
const result = namespace.build(pluginOptions);
|
1740
2404
|
if (result instanceof Promise) {
|
@@ -1746,22 +2410,26 @@ const buildClient = (plugins) => {
|
|
1746
2410
|
}
|
1747
2411
|
}
|
1748
2412
|
}
|
1749
|
-
|
2413
|
+
async getConfig() {
|
2414
|
+
const databaseURL = __privateGet(this, _options).databaseURL;
|
2415
|
+
const branch = await __privateGet(this, _options).branch();
|
2416
|
+
return { databaseURL, branch };
|
2417
|
+
}
|
2418
|
+
}, _branch = new WeakMap(), _options = new WeakMap(), _parseOptions = new WeakSet(), parseOptions_fn = function(options) {
|
1750
2419
|
const fetch = getFetchImplementation(options?.fetch);
|
1751
2420
|
const databaseURL = options?.databaseURL || getDatabaseURL();
|
1752
2421
|
const apiKey = options?.apiKey || getAPIKey();
|
1753
|
-
const cache = options?.cache ?? new SimpleCache({
|
1754
|
-
const
|
1755
|
-
|
1756
|
-
|
2422
|
+
const cache = options?.cache ?? new SimpleCache({ defaultQueryTTL: 0 });
|
2423
|
+
const trace = options?.trace ?? defaultTrace;
|
2424
|
+
const branch = async () => options?.branch !== void 0 ? await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, options.branch) : await getCurrentBranchName({ apiKey, databaseURL, fetchImpl: options?.fetch });
|
2425
|
+
if (!apiKey) {
|
2426
|
+
throw new Error("Option apiKey is required");
|
1757
2427
|
}
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1761
|
-
apiKey,
|
1762
|
-
|
1763
|
-
branch
|
1764
|
-
}) {
|
2428
|
+
if (!databaseURL) {
|
2429
|
+
throw new Error("Option databaseURL is required");
|
2430
|
+
}
|
2431
|
+
return { fetch, databaseURL, apiKey, branch, cache, trace };
|
2432
|
+
}, _getFetchProps = new WeakSet(), getFetchProps_fn = async function({ fetch, apiKey, databaseURL, branch, trace }) {
|
1765
2433
|
const branchValue = await __privateMethod(this, _evaluateBranch, evaluateBranch_fn).call(this, branch);
|
1766
2434
|
if (!branchValue)
|
1767
2435
|
throw new Error("Unable to resolve branch value");
|
@@ -1771,14 +2439,15 @@ const buildClient = (plugins) => {
|
|
1771
2439
|
apiUrl: "",
|
1772
2440
|
workspacesApiUrl: (path, params) => {
|
1773
2441
|
const hasBranch = params.dbBranchName ?? params.branch;
|
1774
|
-
const newPath = path.replace(/^\/db\/[^/]+/, hasBranch ? `:${branchValue}` : "");
|
2442
|
+
const newPath = path.replace(/^\/db\/[^/]+/, hasBranch !== void 0 ? `:${branchValue}` : "");
|
1775
2443
|
return databaseURL + newPath;
|
1776
|
-
}
|
2444
|
+
},
|
2445
|
+
trace
|
1777
2446
|
};
|
1778
2447
|
}, _evaluateBranch = new WeakSet(), evaluateBranch_fn = async function(param) {
|
1779
2448
|
if (__privateGet(this, _branch))
|
1780
2449
|
return __privateGet(this, _branch);
|
1781
|
-
if (
|
2450
|
+
if (param === void 0)
|
1782
2451
|
return void 0;
|
1783
2452
|
const strategies = Array.isArray(param) ? [...param] : [param];
|
1784
2453
|
const evaluateBranch = async (strategy) => {
|
@@ -1796,6 +2465,88 @@ const buildClient = (plugins) => {
|
|
1796
2465
|
class BaseClient extends buildClient() {
|
1797
2466
|
}
|
1798
2467
|
|
2468
|
+
const META = "__";
|
2469
|
+
const VALUE = "___";
|
2470
|
+
class Serializer {
|
2471
|
+
constructor() {
|
2472
|
+
this.classes = {};
|
2473
|
+
}
|
2474
|
+
add(clazz) {
|
2475
|
+
this.classes[clazz.name] = clazz;
|
2476
|
+
}
|
2477
|
+
toJSON(data) {
|
2478
|
+
function visit(obj) {
|
2479
|
+
if (Array.isArray(obj))
|
2480
|
+
return obj.map(visit);
|
2481
|
+
const type = typeof obj;
|
2482
|
+
if (type === "undefined")
|
2483
|
+
return { [META]: "undefined" };
|
2484
|
+
if (type === "bigint")
|
2485
|
+
return { [META]: "bigint", [VALUE]: obj.toString() };
|
2486
|
+
if (obj === null || type !== "object")
|
2487
|
+
return obj;
|
2488
|
+
const constructor = obj.constructor;
|
2489
|
+
const o = { [META]: constructor.name };
|
2490
|
+
for (const [key, value] of Object.entries(obj)) {
|
2491
|
+
o[key] = visit(value);
|
2492
|
+
}
|
2493
|
+
if (constructor === Date)
|
2494
|
+
o[VALUE] = obj.toISOString();
|
2495
|
+
if (constructor === Map)
|
2496
|
+
o[VALUE] = Object.fromEntries(obj);
|
2497
|
+
if (constructor === Set)
|
2498
|
+
o[VALUE] = [...obj];
|
2499
|
+
return o;
|
2500
|
+
}
|
2501
|
+
return JSON.stringify(visit(data));
|
2502
|
+
}
|
2503
|
+
fromJSON(json) {
|
2504
|
+
return JSON.parse(json, (key, value) => {
|
2505
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
2506
|
+
const { [META]: clazz, [VALUE]: val, ...rest } = value;
|
2507
|
+
const constructor = this.classes[clazz];
|
2508
|
+
if (constructor) {
|
2509
|
+
return Object.assign(Object.create(constructor.prototype), rest);
|
2510
|
+
}
|
2511
|
+
if (clazz === "Date")
|
2512
|
+
return new Date(val);
|
2513
|
+
if (clazz === "Set")
|
2514
|
+
return new Set(val);
|
2515
|
+
if (clazz === "Map")
|
2516
|
+
return new Map(Object.entries(val));
|
2517
|
+
if (clazz === "bigint")
|
2518
|
+
return BigInt(val);
|
2519
|
+
if (clazz === "undefined")
|
2520
|
+
return void 0;
|
2521
|
+
return rest;
|
2522
|
+
}
|
2523
|
+
return value;
|
2524
|
+
});
|
2525
|
+
}
|
2526
|
+
}
|
2527
|
+
const defaultSerializer = new Serializer();
|
2528
|
+
const serialize = (data) => {
|
2529
|
+
return defaultSerializer.toJSON(data);
|
2530
|
+
};
|
2531
|
+
const deserialize = (json) => {
|
2532
|
+
return defaultSerializer.fromJSON(json);
|
2533
|
+
};
|
2534
|
+
|
2535
|
+
function buildWorkerRunner(config) {
|
2536
|
+
return function xataWorker(name, _worker) {
|
2537
|
+
return async (...args) => {
|
2538
|
+
const url = process.env.NODE_ENV === "development" ? `http://localhost:64749/${name}` : `https://dispatcher.xata.workers.dev/${config.workspace}/${config.worker}/${name}`;
|
2539
|
+
const result = await fetch(url, {
|
2540
|
+
method: "POST",
|
2541
|
+
headers: { "Content-Type": "application/json" },
|
2542
|
+
body: serialize({ args })
|
2543
|
+
});
|
2544
|
+
const text = await result.text();
|
2545
|
+
return deserialize(text);
|
2546
|
+
};
|
2547
|
+
};
|
2548
|
+
}
|
2549
|
+
|
1799
2550
|
class XataError extends Error {
|
1800
2551
|
constructor(message, status) {
|
1801
2552
|
super(message);
|
@@ -1803,5 +2554,5 @@ class XataError extends Error {
|
|
1803
2554
|
}
|
1804
2555
|
}
|
1805
2556
|
|
1806
|
-
export { BaseClient, operationsByTag as Operations, PAGINATION_DEFAULT_OFFSET, PAGINATION_DEFAULT_SIZE, PAGINATION_MAX_OFFSET, PAGINATION_MAX_SIZE, Page, Query, Repository, RestRepository, SchemaPlugin, SearchPlugin, SimpleCache, XataApiClient, XataApiPlugin, XataError, XataPlugin, acceptWorkspaceMemberInvite, addTableColumn, buildClient, bulkInsertTableRecords, cancelWorkspaceMemberInvite, contains, createBranch, createDatabase, createTable, createUserAPIKey, createWorkspace, deleteBranch, deleteColumn, deleteDatabase, deleteRecord, deleteTable, deleteUser, deleteUserAPIKey, deleteWorkspace, endsWith, executeBranchMigrationPlan, exists, ge, getAPIKey, getBranchDetails, getBranchList, getBranchMetadata, getBranchMigrationHistory, getBranchMigrationPlan, getBranchStats, getColumn, getCurrentBranchDetails, getCurrentBranchName, getDatabaseList, getDatabaseURL, getRecord, getTableColumns, getTableSchema, getUser, getUserAPIKeys, getWorkspace, getWorkspaceMembersList, getWorkspacesList, gt, gte, includes, includesAll, includesAny, includesNone, insertRecord, insertRecordWithID, inviteWorkspaceMember, is, isIdentifiable, isNot, isXataRecord, le, lt, lte, notExists, operationsByTag, pattern, queryTable, removeWorkspaceMember, resendWorkspaceMemberInvite, searchBranch, setTableSchema, startsWith, updateBranchMetadata, updateColumn, updateRecordWithID, updateTable, updateUser, updateWorkspace, updateWorkspaceMemberRole, upsertRecordWithID };
|
2557
|
+
export { BaseClient, operationsByTag as Operations, PAGINATION_DEFAULT_OFFSET, PAGINATION_DEFAULT_SIZE, PAGINATION_MAX_OFFSET, PAGINATION_MAX_SIZE, Page, Query, RecordArray, Repository, RestRepository, SchemaPlugin, SearchPlugin, Serializer, SimpleCache, XataApiClient, XataApiPlugin, XataError, XataPlugin, acceptWorkspaceMemberInvite, addGitBranchesEntry, addTableColumn, applyBranchSchemaEdit, buildClient, buildWorkerRunner, bulkInsertTableRecords, cancelWorkspaceMemberInvite, compareBranchSchemas, compareBranchWithUserSchema, compareMigrationRequest, contains, createBranch, createDatabase, createMigrationRequest, createTable, createUserAPIKey, createWorkspace, deleteBranch, deleteColumn, deleteDatabase, deleteRecord, deleteTable, deleteUser, deleteUserAPIKey, deleteWorkspace, deserialize, endsWith, equals, executeBranchMigrationPlan, exists, ge, getAPIKey, getBranchDetails, getBranchList, getBranchMetadata, getBranchMigrationHistory, getBranchMigrationPlan, getBranchSchemaHistory, getBranchStats, getColumn, getCurrentBranchDetails, getCurrentBranchName, getDatabaseList, getDatabaseMetadata, getDatabaseURL, getGitBranchesMapping, getMigrationRequest, getMigrationRequestIsMerged, getRecord, getTableColumns, getTableSchema, getUser, getUserAPIKeys, getWorkspace, getWorkspaceMembersList, getWorkspacesList, greaterEquals, greaterThan, greaterThanEquals, gt, gte, includes, includesAll, includesAny, includesNone, insertRecord, insertRecordWithID, inviteWorkspaceMember, is, isCursorPaginationOptions, isIdentifiable, isNot, isXataRecord, le, lessEquals, lessThan, lessThanEquals, listMigrationRequests, listMigrationRequestsCommits, lt, lte, mergeMigrationRequest, notExists, operationsByTag, pattern, previewBranchSchemaEdit, queryTable, removeGitBranchesEntry, removeWorkspaceMember, resendWorkspaceMemberInvite, resolveBranch, searchBranch, searchTable, serialize, setTableSchema, startsWith, summarizeTable, updateBranchMetadata, updateBranchSchema, updateColumn, updateDatabaseMetadata, updateMigrationRequest, updateRecordWithID, updateTable, updateUser, updateWorkspace, updateWorkspaceMemberInvite, updateWorkspaceMemberRole, upsertRecordWithID };
|
1807
2558
|
//# sourceMappingURL=index.mjs.map
|