@xata.io/client 0.23.5 → 0.24.1

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/dist/index.mjs CHANGED
@@ -264,7 +264,7 @@ class ApiRequestPool {
264
264
  return __privateGet$8(this, _fetch);
265
265
  }
266
266
  request(url, options) {
267
- const start = new Date();
267
+ const start = /* @__PURE__ */ new Date();
268
268
  const fetch2 = this.getFetch();
269
269
  const runRequest = async (stalled = false) => {
270
270
  const response = await fetch2(url, options);
@@ -274,7 +274,7 @@ class ApiRequestPool {
274
274
  return await runRequest(true);
275
275
  }
276
276
  if (stalled) {
277
- const stalledTime = new Date().getTime() - start.getTime();
277
+ const stalledTime = (/* @__PURE__ */ new Date()).getTime() - start.getTime();
278
278
  console.warn(`A request to Xata hit your workspace limits, was retried and stalled for ${stalledTime}ms`);
279
279
  }
280
280
  return response;
@@ -490,7 +490,7 @@ function defaultOnOpen(response) {
490
490
  }
491
491
  }
492
492
 
493
- const VERSION = "0.23.5";
493
+ const VERSION = "0.24.1";
494
494
 
495
495
  class ErrorWithCause extends Error {
496
496
  constructor(message, options) {
@@ -862,6 +862,12 @@ const putFile = (variables, signal) => dataPlaneFetch({
862
862
  ...variables,
863
863
  signal
864
864
  });
865
+ const deleteFile = (variables, signal) => dataPlaneFetch({
866
+ url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}/column/{columnName}/file",
867
+ method: "delete",
868
+ ...variables,
869
+ signal
870
+ });
865
871
  const getRecord = (variables, signal) => dataPlaneFetch({
866
872
  url: "/db/{dbBranchName}/tables/{tableName}/data/{recordId}",
867
873
  method: "get",
@@ -906,6 +912,12 @@ const askTable = (variables, signal) => dataPlaneFetch({
906
912
  });
907
913
  const summarizeTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/summarize", method: "post", ...variables, signal });
908
914
  const aggregateTable = (variables, signal) => dataPlaneFetch({ url: "/db/{dbBranchName}/tables/{tableName}/aggregate", method: "post", ...variables, signal });
915
+ const fileAccess = (variables, signal) => dataPlaneFetch({
916
+ url: "/file/{fileId}",
917
+ method: "get",
918
+ ...variables,
919
+ signal
920
+ });
909
921
  const operationsByTag$2 = {
910
922
  branch: {
911
923
  getBranchList,
@@ -965,7 +977,7 @@ const operationsByTag$2 = {
965
977
  deleteRecord,
966
978
  bulkInsertTableRecords
967
979
  },
968
- files: { getFileItem, putFileItem, deleteFileItem, getFile, putFile },
980
+ files: { getFileItem, putFileItem, deleteFileItem, getFile, putFile, deleteFile, fileAccess },
969
981
  searchAndFilter: {
970
982
  queryTable,
971
983
  searchBranch,
@@ -1896,6 +1908,7 @@ class FilesApi {
1896
1908
  columnName: column,
1897
1909
  fileId
1898
1910
  },
1911
+ // @ts-ignore
1899
1912
  body: file,
1900
1913
  ...this.extraProps
1901
1914
  });
@@ -1967,6 +1980,43 @@ class FilesApi {
1967
1980
  ...this.extraProps
1968
1981
  });
1969
1982
  }
1983
+ deleteFile({
1984
+ workspace,
1985
+ region,
1986
+ database,
1987
+ branch,
1988
+ table,
1989
+ record,
1990
+ column
1991
+ }) {
1992
+ return operationsByTag.files.deleteFile({
1993
+ pathParams: {
1994
+ workspace,
1995
+ region,
1996
+ dbBranchName: `${database}:${branch}`,
1997
+ tableName: table,
1998
+ recordId: record,
1999
+ columnName: column
2000
+ },
2001
+ ...this.extraProps
2002
+ });
2003
+ }
2004
+ fileAccess({
2005
+ workspace,
2006
+ region,
2007
+ fileId,
2008
+ verify
2009
+ }) {
2010
+ return operationsByTag.files.fileAccess({
2011
+ pathParams: {
2012
+ workspace,
2013
+ region,
2014
+ fileId
2015
+ },
2016
+ queryParams: { verify },
2017
+ ...this.extraProps
2018
+ });
2019
+ }
1970
2020
  }
1971
2021
  class SearchAndFilterApi {
1972
2022
  constructor(extraProps) {
@@ -2477,18 +2527,46 @@ class Page {
2477
2527
  this.meta = meta;
2478
2528
  this.records = new RecordArray(this, records);
2479
2529
  }
2530
+ /**
2531
+ * Retrieves the next page of results.
2532
+ * @param size Maximum number of results to be retrieved.
2533
+ * @param offset Number of results to skip when retrieving the results.
2534
+ * @returns The next page or results.
2535
+ */
2480
2536
  async nextPage(size, offset) {
2481
2537
  return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, after: this.meta.page.cursor } });
2482
2538
  }
2539
+ /**
2540
+ * Retrieves the previous page of results.
2541
+ * @param size Maximum number of results to be retrieved.
2542
+ * @param offset Number of results to skip when retrieving the results.
2543
+ * @returns The previous page or results.
2544
+ */
2483
2545
  async previousPage(size, offset) {
2484
2546
  return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, before: this.meta.page.cursor } });
2485
2547
  }
2548
+ /**
2549
+ * Retrieves the start page of results.
2550
+ * @param size Maximum number of results to be retrieved.
2551
+ * @param offset Number of results to skip when retrieving the results.
2552
+ * @returns The start page or results.
2553
+ */
2486
2554
  async startPage(size, offset) {
2487
2555
  return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, start: this.meta.page.cursor } });
2488
2556
  }
2557
+ /**
2558
+ * Retrieves the end page of results.
2559
+ * @param size Maximum number of results to be retrieved.
2560
+ * @param offset Number of results to skip when retrieving the results.
2561
+ * @returns The end page or results.
2562
+ */
2489
2563
  async endPage(size, offset) {
2490
2564
  return __privateGet$6(this, _query).getPaginated({ pagination: { size, offset, end: this.meta.page.cursor } });
2491
2565
  }
2566
+ /**
2567
+ * Shortcut method to check if there will be additional results if the next page of results is retrieved.
2568
+ * @returns Whether or not there will be additional results in the next page of results.
2569
+ */
2492
2570
  hasNextPage() {
2493
2571
  return this.meta.page.more;
2494
2572
  }
@@ -2529,22 +2607,45 @@ const _RecordArray = class extends Array {
2529
2607
  map(callbackfn, thisArg) {
2530
2608
  return this.toArray().map(callbackfn, thisArg);
2531
2609
  }
2610
+ /**
2611
+ * Retrieve next page of records
2612
+ *
2613
+ * @returns A new array of objects
2614
+ */
2532
2615
  async nextPage(size, offset) {
2533
2616
  const newPage = await __privateGet$6(this, _page).nextPage(size, offset);
2534
2617
  return new _RecordArray(newPage);
2535
2618
  }
2619
+ /**
2620
+ * Retrieve previous page of records
2621
+ *
2622
+ * @returns A new array of objects
2623
+ */
2536
2624
  async previousPage(size, offset) {
2537
2625
  const newPage = await __privateGet$6(this, _page).previousPage(size, offset);
2538
2626
  return new _RecordArray(newPage);
2539
2627
  }
2628
+ /**
2629
+ * Retrieve start page of records
2630
+ *
2631
+ * @returns A new array of objects
2632
+ */
2540
2633
  async startPage(size, offset) {
2541
2634
  const newPage = await __privateGet$6(this, _page).startPage(size, offset);
2542
2635
  return new _RecordArray(newPage);
2543
2636
  }
2637
+ /**
2638
+ * Retrieve end page of records
2639
+ *
2640
+ * @returns A new array of objects
2641
+ */
2544
2642
  async endPage(size, offset) {
2545
2643
  const newPage = await __privateGet$6(this, _page).endPage(size, offset);
2546
2644
  return new _RecordArray(newPage);
2547
2645
  }
2646
+ /**
2647
+ * @returns Boolean indicating if there is a next page
2648
+ */
2548
2649
  hasNextPage() {
2549
2650
  return __privateGet$6(this, _page).meta.page.more;
2550
2651
  }
@@ -2581,6 +2682,7 @@ const _Query = class {
2581
2682
  __privateAdd$5(this, _table$1, void 0);
2582
2683
  __privateAdd$5(this, _repository, void 0);
2583
2684
  __privateAdd$5(this, _data, { filter: {} });
2685
+ // Implements pagination
2584
2686
  this.meta = { page: { cursor: "start", more: true, size: PAGINATION_DEFAULT_SIZE } };
2585
2687
  this.records = new RecordArray(this, []);
2586
2688
  __privateSet$5(this, _table$1, table);
@@ -2618,18 +2720,38 @@ const _Query = class {
2618
2720
  const key = JSON.stringify({ columns, filter, sort, pagination });
2619
2721
  return toBase64(key);
2620
2722
  }
2723
+ /**
2724
+ * Builds a new query object representing a logical OR between the given subqueries.
2725
+ * @param queries An array of subqueries.
2726
+ * @returns A new Query object.
2727
+ */
2621
2728
  any(...queries) {
2622
2729
  const $any = queries.map((query) => query.getQueryOptions().filter ?? {});
2623
2730
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $any } }, __privateGet$5(this, _data));
2624
2731
  }
2732
+ /**
2733
+ * Builds a new query object representing a logical AND between the given subqueries.
2734
+ * @param queries An array of subqueries.
2735
+ * @returns A new Query object.
2736
+ */
2625
2737
  all(...queries) {
2626
2738
  const $all = queries.map((query) => query.getQueryOptions().filter ?? {});
2627
2739
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $all } }, __privateGet$5(this, _data));
2628
2740
  }
2741
+ /**
2742
+ * Builds a new query object representing a logical OR negating each subquery. In pseudo-code: !q1 OR !q2
2743
+ * @param queries An array of subqueries.
2744
+ * @returns A new Query object.
2745
+ */
2629
2746
  not(...queries) {
2630
2747
  const $not = queries.map((query) => query.getQueryOptions().filter ?? {});
2631
2748
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $not } }, __privateGet$5(this, _data));
2632
2749
  }
2750
+ /**
2751
+ * Builds a new query object representing a logical AND negating each subquery. In pseudo-code: !q1 AND !q2
2752
+ * @param queries An array of subqueries.
2753
+ * @returns A new Query object.
2754
+ */
2633
2755
  none(...queries) {
2634
2756
  const $none = queries.map((query) => query.getQueryOptions().filter ?? {});
2635
2757
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { filter: { $none } }, __privateGet$5(this, _data));
@@ -2652,6 +2774,11 @@ const _Query = class {
2652
2774
  const sort = [...originalSort, { column, direction }];
2653
2775
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { sort }, __privateGet$5(this, _data));
2654
2776
  }
2777
+ /**
2778
+ * Builds a new query specifying the set of columns to be returned in the query response.
2779
+ * @param columns Array of column names to be returned by the query.
2780
+ * @returns A new Query object.
2781
+ */
2655
2782
  select(columns) {
2656
2783
  return new _Query(
2657
2784
  __privateGet$5(this, _repository),
@@ -2664,6 +2791,12 @@ const _Query = class {
2664
2791
  const query = new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), options, __privateGet$5(this, _data));
2665
2792
  return __privateGet$5(this, _repository).query(query);
2666
2793
  }
2794
+ /**
2795
+ * Get results in an iterator
2796
+ *
2797
+ * @async
2798
+ * @returns Async interable of results
2799
+ */
2667
2800
  async *[Symbol.asyncIterator]() {
2668
2801
  for await (const [record] of this.getIterator({ batchSize: 1 })) {
2669
2802
  yield record;
@@ -2724,21 +2857,49 @@ const _Query = class {
2724
2857
  );
2725
2858
  return __privateGet$5(this, _repository).summarizeTable(query, summaries, summariesFilter);
2726
2859
  }
2860
+ /**
2861
+ * Builds a new query object adding a cache TTL in milliseconds.
2862
+ * @param ttl The cache TTL in milliseconds.
2863
+ * @returns A new Query object.
2864
+ */
2727
2865
  cache(ttl) {
2728
2866
  return new _Query(__privateGet$5(this, _repository), __privateGet$5(this, _table$1), { cache: ttl }, __privateGet$5(this, _data));
2729
2867
  }
2868
+ /**
2869
+ * Retrieve next page of records
2870
+ *
2871
+ * @returns A new page object.
2872
+ */
2730
2873
  nextPage(size, offset) {
2731
2874
  return this.startPage(size, offset);
2732
2875
  }
2876
+ /**
2877
+ * Retrieve previous page of records
2878
+ *
2879
+ * @returns A new page object
2880
+ */
2733
2881
  previousPage(size, offset) {
2734
2882
  return this.startPage(size, offset);
2735
2883
  }
2884
+ /**
2885
+ * Retrieve start page of records
2886
+ *
2887
+ * @returns A new page object
2888
+ */
2736
2889
  startPage(size, offset) {
2737
2890
  return this.getPaginated({ pagination: { size, offset } });
2738
2891
  }
2892
+ /**
2893
+ * Retrieve last page of records
2894
+ *
2895
+ * @returns A new page object
2896
+ */
2739
2897
  endPage(size, offset) {
2740
2898
  return this.getPaginated({ pagination: { size, offset, before: "end" } });
2741
2899
  }
2900
+ /**
2901
+ * @returns Boolean indicating if there is a next page
2902
+ */
2742
2903
  hasNextPage() {
2743
2904
  return this.meta.page.more;
2744
2905
  }
@@ -3428,7 +3589,7 @@ deleteRecords_fn = async function(recordIds) {
3428
3589
  };
3429
3590
  _setCacheQuery = new WeakSet();
3430
3591
  setCacheQuery_fn = async function(query, meta, records) {
3431
- await __privateGet$4(this, _cache)?.set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: new Date(), meta, records });
3592
+ await __privateGet$4(this, _cache)?.set(`query_${__privateGet$4(this, _table)}:${query.key()}`, { date: /* @__PURE__ */ new Date(), meta, records });
3432
3593
  };
3433
3594
  _getCacheQuery = new WeakSet();
3434
3595
  getCacheQuery_fn = async function(query) {
@@ -3512,6 +3673,8 @@ const initObject = (db, schemaTables, table, object, selectedColumns) => {
3512
3673
  }
3513
3674
  }
3514
3675
  const record = { ...data };
3676
+ const serializable = { xata, ...transformObjectLinks(data) };
3677
+ const metadata = xata !== void 0 ? { ...xata, createdAt: new Date(xata.createdAt), updatedAt: new Date(xata.updatedAt) } : void 0;
3515
3678
  record.read = function(columns2) {
3516
3679
  return db[table].read(record["id"], columns2);
3517
3680
  };
@@ -3528,14 +3691,15 @@ const initObject = (db, schemaTables, table, object, selectedColumns) => {
3528
3691
  record.delete = function() {
3529
3692
  return db[table].delete(record["id"]);
3530
3693
  };
3694
+ record.xata = Object.freeze(metadata);
3531
3695
  record.getMetadata = function() {
3532
- return xata;
3696
+ return record.xata;
3533
3697
  };
3534
3698
  record.toSerializable = function() {
3535
- return JSON.parse(JSON.stringify(transformObjectLinks(data)));
3699
+ return JSON.parse(JSON.stringify(serializable));
3536
3700
  };
3537
3701
  record.toString = function() {
3538
- return JSON.stringify(transformObjectLinks(data));
3702
+ return JSON.stringify(transformObjectLinks(serializable));
3539
3703
  };
3540
3704
  for (const prop of ["read", "update", "replace", "delete", "getMetadata", "toSerializable", "toString"]) {
3541
3705
  Object.defineProperty(record, prop, { enumerable: false });
@@ -3754,6 +3918,7 @@ search_fn = async function(query, options, pluginOptions) {
3754
3918
  const { tables, fuzziness, highlight, prefix, page } = options ?? {};
3755
3919
  const { records } = await searchBranch({
3756
3920
  pathParams: { workspace: "{workspaceId}", dbBranchName: "{dbBranch}", region: "{region}" },
3921
+ // @ts-ignore https://github.com/xataio/client-ts/issues/313
3757
3922
  body: { tables, query, fuzziness, prefix, highlight, page },
3758
3923
  ...pluginOptions
3759
3924
  });
@@ -3908,6 +4073,7 @@ const buildClient = (plugins) => {
3908
4073
  fetch,
3909
4074
  apiKey,
3910
4075
  apiUrl: "",
4076
+ // Instead of using workspace and dbBranch, we inject a probably CNAME'd URL
3911
4077
  workspacesApiUrl: (path, params) => {
3912
4078
  const hasBranch = params.dbBranchName ?? params.branch;
3913
4079
  const newPath = path.replace(/^\/db\/[^/]+/, hasBranch !== void 0 ? `:${branch}` : "");
@@ -4012,5 +4178,5 @@ class XataError extends Error {
4012
4178
  }
4013
4179
  }
4014
4180
 
4015
- export { BaseClient, FetcherError, 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, aggregateTable, applyBranchSchemaEdit, askTable, branchTransaction, buildClient, buildPreviewBranchName, buildProviderString, buildWorkerRunner, bulkInsertTableRecords, cancelWorkspaceMemberInvite, compareBranchSchemas, compareBranchWithUserSchema, compareMigrationRequest, contains, copyBranch, createBranch, createDatabase, createMigrationRequest, createTable, createUserAPIKey, createWorkspace, deleteBranch, deleteColumn, deleteDatabase, deleteDatabaseGithubSettings, deleteFileItem, deleteRecord, deleteTable, deleteUser, deleteUserAPIKey, deleteWorkspace, deserialize, endsWith, equals, executeBranchMigrationPlan, exists, ge, getAPIKey, getBranch, getBranchDetails, getBranchList, getBranchMetadata, getBranchMigrationHistory, getBranchMigrationPlan, getBranchSchemaHistory, getBranchStats, getColumn, getDatabaseGithubSettings, getDatabaseList, getDatabaseMetadata, getDatabaseURL, getFile, getFileItem, getGitBranchesMapping, getHostUrl, getMigrationRequest, getMigrationRequestIsMerged, getPreviewBranch, getRecord, getTableColumns, getTableSchema, getUser, getUserAPIKeys, getWorkspace, getWorkspaceMembersList, getWorkspacesList, greaterEquals, greaterThan, greaterThanEquals, gt, gte, includes, includesAll, includesAny, includesNone, insertRecord, insertRecordWithID, inviteWorkspaceMember, is, isCursorPaginationOptions, isHostProviderAlias, isHostProviderBuilder, isIdentifiable, isNot, isXataRecord, le, lessEquals, lessThan, lessThanEquals, listMigrationRequestsCommits, listRegions, lt, lte, mergeMigrationRequest, notExists, operationsByTag, parseProviderString, parseWorkspacesUrlParts, pattern, previewBranchSchemaEdit, pushBranchMigrations, putFile, putFileItem, queryMigrationRequests, queryTable, removeGitBranchesEntry, removeWorkspaceMember, renameDatabase, resendWorkspaceMemberInvite, resolveBranch, searchBranch, searchTable, serialize, setTableSchema, sqlQuery, startsWith, summarizeTable, updateBranchMetadata, updateBranchSchema, updateColumn, updateDatabaseGithubSettings, updateDatabaseMetadata, updateMigrationRequest, updateRecordWithID, updateTable, updateUser, updateWorkspace, updateWorkspaceMemberInvite, updateWorkspaceMemberRole, upsertRecordWithID, vectorSearchTable };
4181
+ export { BaseClient, FetcherError, 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, aggregateTable, applyBranchSchemaEdit, askTable, branchTransaction, buildClient, buildPreviewBranchName, buildProviderString, buildWorkerRunner, bulkInsertTableRecords, cancelWorkspaceMemberInvite, compareBranchSchemas, compareBranchWithUserSchema, compareMigrationRequest, contains, copyBranch, createBranch, createDatabase, createMigrationRequest, createTable, createUserAPIKey, createWorkspace, deleteBranch, deleteColumn, deleteDatabase, deleteDatabaseGithubSettings, deleteFile, deleteFileItem, deleteRecord, deleteTable, deleteUser, deleteUserAPIKey, deleteWorkspace, deserialize, endsWith, equals, executeBranchMigrationPlan, exists, fileAccess, ge, getAPIKey, getBranch, getBranchDetails, getBranchList, getBranchMetadata, getBranchMigrationHistory, getBranchMigrationPlan, getBranchSchemaHistory, getBranchStats, getColumn, getDatabaseGithubSettings, getDatabaseList, getDatabaseMetadata, getDatabaseURL, getFile, getFileItem, getGitBranchesMapping, getHostUrl, getMigrationRequest, getMigrationRequestIsMerged, getPreviewBranch, getRecord, getTableColumns, getTableSchema, getUser, getUserAPIKeys, getWorkspace, getWorkspaceMembersList, getWorkspacesList, greaterEquals, greaterThan, greaterThanEquals, gt, gte, includes, includesAll, includesAny, includesNone, insertRecord, insertRecordWithID, inviteWorkspaceMember, is, isCursorPaginationOptions, isHostProviderAlias, isHostProviderBuilder, isIdentifiable, isNot, isXataRecord, le, lessEquals, lessThan, lessThanEquals, listMigrationRequestsCommits, listRegions, lt, lte, mergeMigrationRequest, notExists, operationsByTag, parseProviderString, parseWorkspacesUrlParts, pattern, previewBranchSchemaEdit, pushBranchMigrations, putFile, putFileItem, queryMigrationRequests, queryTable, removeGitBranchesEntry, removeWorkspaceMember, renameDatabase, resendWorkspaceMemberInvite, resolveBranch, searchBranch, searchTable, serialize, setTableSchema, sqlQuery, startsWith, summarizeTable, updateBranchMetadata, updateBranchSchema, updateColumn, updateDatabaseGithubSettings, updateDatabaseMetadata, updateMigrationRequest, updateRecordWithID, updateTable, updateUser, updateWorkspace, updateWorkspaceMemberInvite, updateWorkspaceMemberRole, upsertRecordWithID, vectorSearchTable };
4016
4182
  //# sourceMappingURL=index.mjs.map