@xata.io/client 0.0.0-alpha.vf4b92f1 → 0.0.0-alpha.vf6c3bd7

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.d.ts CHANGED
@@ -138,6 +138,12 @@ declare type ListBranchesResponse = {
138
138
  displayName: string;
139
139
  branches: Branch[];
140
140
  };
141
+ declare type ListGitBranchesResponse = {
142
+ mapping: {
143
+ gitBranch: string;
144
+ xataBranch: string;
145
+ }[];
146
+ };
141
147
  declare type Branch = {
142
148
  name: string;
143
149
  createdAt: DateTime;
@@ -186,7 +192,7 @@ declare type Table = {
186
192
  */
187
193
  declare type Column = {
188
194
  name: string;
189
- type: 'bool' | 'int' | 'float' | 'string' | 'text' | 'email' | 'multiple' | 'link' | 'object';
195
+ type: 'bool' | 'int' | 'float' | 'string' | 'text' | 'email' | 'multiple' | 'link' | 'object' | 'datetime';
190
196
  link?: {
191
197
  table: string;
192
198
  };
@@ -262,6 +268,17 @@ declare type SortExpression = string[] | {
262
268
  [key: string]: SortOrder;
263
269
  }[];
264
270
  declare type SortOrder = 'asc' | 'desc';
271
+ /**
272
+ * Maximum [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) for the search terms. The Levenshtein
273
+ * distance is the number of one charcter changes needed to make two strings equal. The default is 1, meaning that single
274
+ * character typos per word are tollerated by search. You can set it to 0 to remove the typo tollerance or set it to 2
275
+ * to allow two typos in a word.
276
+ *
277
+ * @default 1
278
+ * @maximum 2
279
+ * @minimum 0
280
+ */
281
+ declare type FuzzinessExpression = number;
265
282
  /**
266
283
  * @minProperties 1
267
284
  */
@@ -275,6 +292,10 @@ declare type FilterExpression = {
275
292
  } & {
276
293
  [key: string]: FilterColumn;
277
294
  };
295
+ declare type HighlightExpression = {
296
+ enabled?: boolean;
297
+ encodeHTML?: boolean;
298
+ };
278
299
  declare type FilterList = FilterExpression | FilterExpression[];
279
300
  declare type FilterColumn = FilterColumnIncludes | FilterPredicate | FilterList;
280
301
  /**
@@ -360,6 +381,11 @@ declare type XataRecord$1 = {
360
381
  xata: {
361
382
  version: number;
362
383
  table?: string;
384
+ highlight?: {
385
+ [key: string]: string[] | {
386
+ [key: string]: any;
387
+ };
388
+ };
363
389
  warnings?: string[];
364
390
  };
365
391
  } & {
@@ -382,6 +408,7 @@ type schemas_WorkspaceMembers = WorkspaceMembers;
382
408
  type schemas_InviteKey = InviteKey;
383
409
  type schemas_ListDatabasesResponse = ListDatabasesResponse;
384
410
  type schemas_ListBranchesResponse = ListBranchesResponse;
411
+ type schemas_ListGitBranchesResponse = ListGitBranchesResponse;
385
412
  type schemas_Branch = Branch;
386
413
  type schemas_BranchMetadata = BranchMetadata;
387
414
  type schemas_DBBranch = DBBranch;
@@ -402,7 +429,9 @@ type schemas_TableMigration = TableMigration;
402
429
  type schemas_ColumnMigration = ColumnMigration;
403
430
  type schemas_SortExpression = SortExpression;
404
431
  type schemas_SortOrder = SortOrder;
432
+ type schemas_FuzzinessExpression = FuzzinessExpression;
405
433
  type schemas_FilterExpression = FilterExpression;
434
+ type schemas_HighlightExpression = HighlightExpression;
406
435
  type schemas_FilterList = FilterList;
407
436
  type schemas_FilterColumn = FilterColumn;
408
437
  type schemas_FilterColumnIncludes = FilterColumnIncludes;
@@ -434,6 +463,7 @@ declare namespace schemas {
434
463
  schemas_InviteKey as InviteKey,
435
464
  schemas_ListDatabasesResponse as ListDatabasesResponse,
436
465
  schemas_ListBranchesResponse as ListBranchesResponse,
466
+ schemas_ListGitBranchesResponse as ListGitBranchesResponse,
437
467
  schemas_Branch as Branch,
438
468
  schemas_BranchMetadata as BranchMetadata,
439
469
  schemas_DBBranch as DBBranch,
@@ -454,7 +484,9 @@ declare namespace schemas {
454
484
  schemas_ColumnMigration as ColumnMigration,
455
485
  schemas_SortExpression as SortExpression,
456
486
  schemas_SortOrder as SortOrder,
487
+ schemas_FuzzinessExpression as FuzzinessExpression,
457
488
  schemas_FilterExpression as FilterExpression,
489
+ schemas_HighlightExpression as HighlightExpression,
458
490
  schemas_FilterList as FilterList,
459
491
  schemas_FilterColumn as FilterColumn,
460
492
  schemas_FilterColumnIncludes as FilterColumnIncludes,
@@ -1010,6 +1042,163 @@ declare type DeleteDatabaseVariables = {
1010
1042
  * Delete a database and all of its branches and tables permanently.
1011
1043
  */
1012
1044
  declare const deleteDatabase: (variables: DeleteDatabaseVariables) => Promise<undefined>;
1045
+ declare type GetGitBranchesMappingPathParams = {
1046
+ dbName: DBName;
1047
+ workspace: string;
1048
+ };
1049
+ declare type GetGitBranchesMappingError = ErrorWrapper<{
1050
+ status: 400;
1051
+ payload: BadRequestError;
1052
+ } | {
1053
+ status: 401;
1054
+ payload: AuthError;
1055
+ }>;
1056
+ declare type GetGitBranchesMappingVariables = {
1057
+ pathParams: GetGitBranchesMappingPathParams;
1058
+ } & FetcherExtraProps;
1059
+ /**
1060
+ * Lists all the git branches in the mapping, and their associated Xata branches.
1061
+ *
1062
+ * Example response:
1063
+ *
1064
+ * ```json
1065
+ * {
1066
+ * "mappings": [
1067
+ * {
1068
+ * "gitBranch": "main",
1069
+ * "xataBranch": "main"
1070
+ * },
1071
+ * {
1072
+ * "gitBranch": "gitBranch1",
1073
+ * "xataBranch": "xataBranch1"
1074
+ * }
1075
+ * {
1076
+ * "gitBranch": "xataBranch2",
1077
+ * "xataBranch": "xataBranch2"
1078
+ * }
1079
+ * ]
1080
+ * }
1081
+ * ```
1082
+ */
1083
+ declare const getGitBranchesMapping: (variables: GetGitBranchesMappingVariables) => Promise<ListGitBranchesResponse>;
1084
+ declare type AddGitBranchesEntryPathParams = {
1085
+ dbName: DBName;
1086
+ workspace: string;
1087
+ };
1088
+ declare type AddGitBranchesEntryError = ErrorWrapper<{
1089
+ status: 400;
1090
+ payload: BadRequestError;
1091
+ } | {
1092
+ status: 401;
1093
+ payload: AuthError;
1094
+ }>;
1095
+ declare type AddGitBranchesEntryResponse = {
1096
+ warning?: string;
1097
+ };
1098
+ declare type AddGitBranchesEntryRequestBody = {
1099
+ gitBranch: string;
1100
+ xataBranch: BranchName;
1101
+ };
1102
+ declare type AddGitBranchesEntryVariables = {
1103
+ body: AddGitBranchesEntryRequestBody;
1104
+ pathParams: AddGitBranchesEntryPathParams;
1105
+ } & FetcherExtraProps;
1106
+ /**
1107
+ * Adds an entry to the mapping of git branches to Xata branches. The git branch and the Xata branch must be present in the body of the request. If the Xata branch doesn't exist, a 400 error is returned.
1108
+ *
1109
+ * If the git branch is already present in the mapping, the old entry is overwritten, and a warning message is included in the response. If the git branch is added and didn't exist before, the response code is 204. If the git branch existed and it was overwritten, the response code is 201.
1110
+ *
1111
+ * Example request:
1112
+ *
1113
+ * ```json
1114
+ * // POST https://tutorial-ng7s8c.xata.sh/dbs/demo/gitBranches
1115
+ * {
1116
+ * "gitBranch": "fix/bug123",
1117
+ * "xataBranch": "fix_bug"
1118
+ * }
1119
+ * ```
1120
+ */
1121
+ declare const addGitBranchesEntry: (variables: AddGitBranchesEntryVariables) => Promise<AddGitBranchesEntryResponse>;
1122
+ declare type RemoveGitBranchesEntryPathParams = {
1123
+ dbName: DBName;
1124
+ workspace: string;
1125
+ };
1126
+ declare type RemoveGitBranchesEntryQueryParams = {
1127
+ gitBranch: string;
1128
+ };
1129
+ declare type RemoveGitBranchesEntryError = ErrorWrapper<{
1130
+ status: 400;
1131
+ payload: BadRequestError;
1132
+ } | {
1133
+ status: 401;
1134
+ payload: AuthError;
1135
+ }>;
1136
+ declare type RemoveGitBranchesEntryVariables = {
1137
+ pathParams: RemoveGitBranchesEntryPathParams;
1138
+ queryParams: RemoveGitBranchesEntryQueryParams;
1139
+ } & FetcherExtraProps;
1140
+ /**
1141
+ * Removes an entry from the mapping of git branches to Xata branches. The name of the git branch must be passed as a query parameter. If the git branch is not found, the endpoint returns a 404 status code.
1142
+ *
1143
+ * Example request:
1144
+ *
1145
+ * ```json
1146
+ * // DELETE https://tutorial-ng7s8c.xata.sh/dbs/demo/gitBranches?gitBranch=fix%2Fbug123
1147
+ * ```
1148
+ */
1149
+ declare const removeGitBranchesEntry: (variables: RemoveGitBranchesEntryVariables) => Promise<undefined>;
1150
+ declare type ResolveBranchPathParams = {
1151
+ dbName: DBName;
1152
+ workspace: string;
1153
+ };
1154
+ declare type ResolveBranchQueryParams = {
1155
+ gitBranch?: string;
1156
+ fallbackBranch?: string;
1157
+ };
1158
+ declare type ResolveBranchError = ErrorWrapper<{
1159
+ status: 400;
1160
+ payload: BadRequestError;
1161
+ } | {
1162
+ status: 401;
1163
+ payload: AuthError;
1164
+ }>;
1165
+ declare type ResolveBranchResponse = {
1166
+ branch: string;
1167
+ reason: {
1168
+ code: 'FOUND_IN_MAPPING' | 'BRANCH_EXISTS' | 'FALLBACK_BRANCH' | 'DEFAULT_BRANCH';
1169
+ message: string;
1170
+ };
1171
+ };
1172
+ declare type ResolveBranchVariables = {
1173
+ pathParams: ResolveBranchPathParams;
1174
+ queryParams?: ResolveBranchQueryParams;
1175
+ } & FetcherExtraProps;
1176
+ /**
1177
+ * In order to resolve the database branch, the following algorithm is used:
1178
+ * * if the `gitBranch` was provided and is found in the [git branches mapping](/api-reference/dbs/db_name/gitBranches), the associated Xata branch is returned
1179
+ * * else, if a Xata branch with the exact same name as `gitBranch` exists, return it
1180
+ * * else, if `fallbackBranch` is provided and a branch with that name exists, return it
1181
+ * * else, return the default branch of the DB (`main` or the first branch)
1182
+ *
1183
+ * Example call:
1184
+ *
1185
+ * ```json
1186
+ * // GET https://tutorial-ng7s8c.xata.sh/dbs/demo/dbs/demo/resolveBranch?gitBranch=test&fallbackBranch=tsg
1187
+ * ```
1188
+ *
1189
+ * Example response:
1190
+ *
1191
+ * ```json
1192
+ * {
1193
+ * "branch": "main",
1194
+ * "reason": {
1195
+ * "code": "DEFAULT_BRANCH",
1196
+ * "message": "Default branch for this database (main)"
1197
+ * }
1198
+ * }
1199
+ * ```
1200
+ */
1201
+ declare const resolveBranch: (variables: ResolveBranchVariables) => Promise<ResolveBranchResponse>;
1013
1202
  declare type GetBranchDetailsPathParams = {
1014
1203
  dbBranchName: DBBranchName;
1015
1204
  workspace: string;
@@ -1750,7 +1939,11 @@ declare type QueryTableVariables = {
1750
1939
  * "link": {
1751
1940
  * "table": "users"
1752
1941
  * }
1753
- * }
1942
+ * },
1943
+ * {
1944
+ * "name": "foundedDate",
1945
+ * "type": "datetime"
1946
+ * },
1754
1947
  * ]
1755
1948
  * },
1756
1949
  * {
@@ -1897,7 +2090,8 @@ declare type QueryTableVariables = {
1897
2090
  * "version": 0
1898
2091
  * },
1899
2092
  * "name": "first team",
1900
- * "code": "A1"
2093
+ * "code": "A1",
2094
+ * "foundedDate": "2020-03-04T10:43:54.32Z"
1901
2095
  * }
1902
2096
  * }
1903
2097
  * ```
@@ -1912,7 +2106,7 @@ declare type QueryTableVariables = {
1912
2106
  * `$none`, etc.
1913
2107
  *
1914
2108
  * All operators start with an `$` to differentiate them from column names
1915
- * (which are not allowed to start with an dollar sign).
2109
+ * (which are not allowed to start with a dollar sign).
1916
2110
  *
1917
2111
  * #### Exact matching and control operators
1918
2112
  *
@@ -2092,12 +2286,18 @@ declare type QueryTableVariables = {
2092
2286
  * {
2093
2287
  * "filter": {
2094
2288
  * "<column_name>": {
2095
- * "$pattern": "v*alue*"
2289
+ * "$pattern": "v*alu?"
2096
2290
  * }
2097
2291
  * }
2098
2292
  * }
2099
2293
  * ```
2100
2294
  *
2295
+ * The `$pattern` operator accepts two wildcard characters:
2296
+ * * `*` matches zero or more characters
2297
+ * * `?` matches exactly one character
2298
+ *
2299
+ * If you want to match a string that contains a wildcard character, you can escape them using a backslash (`\`). You can escape a backslash by usign another backslash.
2300
+ *
2101
2301
  * We could also have `$endsWith` and `$startsWith` operators:
2102
2302
  *
2103
2303
  * ```json
@@ -2113,7 +2313,7 @@ declare type QueryTableVariables = {
2113
2313
  * }
2114
2314
  * ```
2115
2315
  *
2116
- * #### Numeric ranges
2316
+ * #### Numeric or datetime ranges
2117
2317
  *
2118
2318
  * ```json
2119
2319
  * {
@@ -2125,7 +2325,18 @@ declare type QueryTableVariables = {
2125
2325
  * }
2126
2326
  * }
2127
2327
  * ```
2128
- *
2328
+ * Date ranges support the same operators, with the date using the format defined in
2329
+ * [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339):
2330
+ * ```json
2331
+ * {
2332
+ * "filter": {
2333
+ * "<column_name>": {
2334
+ * "$gt": "2019-10-12T07:20:50.52Z",
2335
+ * "$lt": "2021-10-12T07:20:50.52Z"
2336
+ * }
2337
+ * }
2338
+ * }
2339
+ * ```
2129
2340
  * The supported operators are `$gt`, `$lt`, `$ge`, `$le`.
2130
2341
  *
2131
2342
  * #### Negations
@@ -2393,6 +2604,39 @@ declare type QueryTableVariables = {
2393
2604
  * ```
2394
2605
  */
2395
2606
  declare const queryTable: (variables: QueryTableVariables) => Promise<QueryResponse>;
2607
+ declare type SearchTablePathParams = {
2608
+ dbBranchName: DBBranchName;
2609
+ tableName: TableName;
2610
+ workspace: string;
2611
+ };
2612
+ declare type SearchTableError = ErrorWrapper<{
2613
+ status: 400;
2614
+ payload: BadRequestError;
2615
+ } | {
2616
+ status: 401;
2617
+ payload: AuthError;
2618
+ } | {
2619
+ status: 404;
2620
+ payload: SimpleError;
2621
+ }>;
2622
+ declare type SearchTableRequestBody = {
2623
+ query: string;
2624
+ fuzziness?: FuzzinessExpression;
2625
+ filter?: FilterExpression;
2626
+ highlight?: HighlightExpression;
2627
+ };
2628
+ declare type SearchTableVariables = {
2629
+ body: SearchTableRequestBody;
2630
+ pathParams: SearchTablePathParams;
2631
+ } & FetcherExtraProps;
2632
+ /**
2633
+ * Run a free text search operation in a particular table.
2634
+ *
2635
+ * The endpoint accepts a `query` parameter that is used for the free text search and a set of structured filters (via the `filter` parameter) that are applied before the search. The `filter` parameter uses the same syntax as the [query endpoint](/api-reference/db/db_branch_name/tables/table_name/) with the following exceptions:
2636
+ * * filters `$contains`, `$startsWith`, `$endsWith` don't work on columns of type `text`
2637
+ * * filtering on columns of type `multiple` is currently unsupported
2638
+ */
2639
+ declare const searchTable: (variables: SearchTableVariables) => Promise<SearchResponse>;
2396
2640
  declare type SearchBranchPathParams = {
2397
2641
  dbBranchName: DBBranchName;
2398
2642
  workspace: string;
@@ -2408,9 +2652,13 @@ declare type SearchBranchError = ErrorWrapper<{
2408
2652
  payload: SimpleError;
2409
2653
  }>;
2410
2654
  declare type SearchBranchRequestBody = {
2411
- tables?: string[];
2655
+ tables?: (string | {
2656
+ table: string;
2657
+ filter?: FilterExpression;
2658
+ })[];
2412
2659
  query: string;
2413
- fuzziness?: number;
2660
+ fuzziness?: FuzzinessExpression;
2661
+ highlight?: HighlightExpression;
2414
2662
  };
2415
2663
  declare type SearchBranchVariables = {
2416
2664
  body: SearchBranchRequestBody;
@@ -2447,6 +2695,10 @@ declare const operationsByTag: {
2447
2695
  getDatabaseList: (variables: GetDatabaseListVariables) => Promise<ListDatabasesResponse>;
2448
2696
  createDatabase: (variables: CreateDatabaseVariables) => Promise<CreateDatabaseResponse>;
2449
2697
  deleteDatabase: (variables: DeleteDatabaseVariables) => Promise<undefined>;
2698
+ getGitBranchesMapping: (variables: GetGitBranchesMappingVariables) => Promise<ListGitBranchesResponse>;
2699
+ addGitBranchesEntry: (variables: AddGitBranchesEntryVariables) => Promise<AddGitBranchesEntryResponse>;
2700
+ removeGitBranchesEntry: (variables: RemoveGitBranchesEntryVariables) => Promise<undefined>;
2701
+ resolveBranch: (variables: ResolveBranchVariables) => Promise<ResolveBranchResponse>;
2450
2702
  };
2451
2703
  branch: {
2452
2704
  getBranchList: (variables: GetBranchListVariables) => Promise<ListBranchesResponse>;
@@ -2481,6 +2733,7 @@ declare const operationsByTag: {
2481
2733
  getRecord: (variables: GetRecordVariables) => Promise<XataRecord$1>;
2482
2734
  bulkInsertTableRecords: (variables: BulkInsertTableRecordsVariables) => Promise<BulkInsertTableRecordsResponse>;
2483
2735
  queryTable: (variables: QueryTableVariables) => Promise<QueryResponse>;
2736
+ searchTable: (variables: SearchTableVariables) => Promise<SearchResponse>;
2484
2737
  searchBranch: (variables: SearchBranchVariables) => Promise<SearchResponse>;
2485
2738
  };
2486
2739
  };
@@ -2542,6 +2795,10 @@ declare class DatabaseApi {
2542
2795
  getDatabaseList(workspace: WorkspaceID): Promise<ListDatabasesResponse>;
2543
2796
  createDatabase(workspace: WorkspaceID, dbName: DBName, options?: CreateDatabaseRequestBody): Promise<CreateDatabaseResponse>;
2544
2797
  deleteDatabase(workspace: WorkspaceID, dbName: DBName): Promise<void>;
2798
+ getGitBranchesMapping(workspace: WorkspaceID, dbName: DBName): Promise<ListGitBranchesResponse>;
2799
+ addGitBranchesEntry(workspace: WorkspaceID, dbName: DBName, body: AddGitBranchesEntryRequestBody): Promise<AddGitBranchesEntryResponse>;
2800
+ removeGitBranchesEntry(workspace: WorkspaceID, dbName: DBName, gitBranch: string): Promise<void>;
2801
+ resolveBranch(workspace: WorkspaceID, dbName: DBName, gitBranch: string): Promise<ResolveBranchResponse>;
2545
2802
  }
2546
2803
  declare class BranchApi {
2547
2804
  private extraProps;
@@ -2582,6 +2839,7 @@ declare class RecordsApi {
2582
2839
  getRecord(workspace: WorkspaceID, database: DBName, branch: BranchName, tableName: TableName, recordId: RecordID, options?: GetRecordRequestBody): Promise<XataRecord$1>;
2583
2840
  bulkInsertTableRecords(workspace: WorkspaceID, database: DBName, branch: BranchName, tableName: TableName, records: Record<string, any>[]): Promise<BulkInsertTableRecordsResponse>;
2584
2841
  queryTable(workspace: WorkspaceID, database: DBName, branch: BranchName, tableName: TableName, query: QueryTableRequestBody): Promise<QueryResponse>;
2842
+ searchTable(workspace: WorkspaceID, database: DBName, branch: BranchName, tableName: TableName, query: SearchTableRequestBody): Promise<SearchResponse>;
2585
2843
  searchBranch(workspace: WorkspaceID, database: DBName, branch: BranchName, query: SearchBranchRequestBody): Promise<SearchResponse>;
2586
2844
  }
2587
2845
 
@@ -2603,30 +2861,31 @@ declare type RequiredBy<T, K extends keyof T> = T & {
2603
2861
  };
2604
2862
  declare type GetArrayInnerType<T extends readonly any[]> = T[number];
2605
2863
  declare type SingleOrArray<T> = T | T[];
2606
- declare type Dictionary<T> = Record<string, T>;
2864
+ declare type OmitBy<T, K extends keyof T> = T extends any ? Omit<T, K> : never;
2607
2865
 
2608
2866
  declare type SelectableColumn<O, RecursivePath extends any[] = []> = '*' | 'id' | DataProps<O> | NestedColumns<O, RecursivePath>;
2609
2867
  declare type SelectedPick<O extends XataRecord, Key extends SelectableColumn<O>[]> = XataRecord & UnionToIntersection<Values<{
2610
2868
  [K in Key[number]]: NestedValueAtColumn<O, K> & XataRecord;
2611
2869
  }>>;
2612
- declare type ValueAtColumn<O, P extends SelectableColumn<O>> = P extends '*' ? Values<O> : P extends 'id' ? string : P extends keyof O ? O[P] : P extends `${infer K}.${infer V}` ? K extends keyof O ? Values<O[K] extends XataRecord ? (V extends SelectableColumn<O[K]> ? {
2613
- V: ValueAtColumn<O[K], V>;
2614
- } : never) : O[K]> : never : never;
2870
+ declare type ValueAtColumn<O, P extends SelectableColumn<O>> = P extends '*' ? Values<O> : P extends 'id' ? string : P extends keyof O ? O[P] : P extends `${infer K}.${infer V}` ? K extends keyof O ? Values<RemoveNullable<O[K]> extends Record<string, any> ? V extends SelectableColumn<RemoveNullable<O[K]>> ? {
2871
+ V: ValueAtColumn<RemoveNullable<O[K]>, V>;
2872
+ } : never : O[K]> : never : never;
2615
2873
  declare type MAX_RECURSION = 5;
2616
2874
  declare type NestedColumns<O, RecursivePath extends any[]> = RecursivePath['length'] extends MAX_RECURSION ? never : If<IsObject<O>, Values<{
2617
- [K in DataProps<O>]: If<IsArray<NonNullable<O[K]>>, K, // If the property is an array, we stop recursion. We don't support object arrays yet
2618
- If<IsObject<NonNullable<O[K]>>, NonNullable<O[K]> extends XataRecord ? SelectableColumn<NonNullable<O[K]>, [...RecursivePath, O[K]]> extends string ? K | `${K}.${SelectableColumn<NonNullable<O[K]>, [...RecursivePath, O[K]]>}` : never : `${K}.${StringKeys<NonNullable<O[K]>> | '*'}`, // This allows usage of objects that are not links
2875
+ [K in DataProps<O>]: If<IsArray<RemoveNullable<O[K]>>, K, // If the property is an array, we stop recursion. We don't support object arrays yet
2876
+ If<IsObject<RemoveNullable<O[K]>>, RemoveNullable<O[K]> extends XataRecord ? SelectableColumn<RemoveNullable<O[K]>, [...RecursivePath, O[K]]> extends string ? K | `${K}.${SelectableColumn<RemoveNullable<O[K]>, [...RecursivePath, O[K]]>}` : never : `${K}.${StringKeys<RemoveNullable<O[K]>> | '*'}`, // This allows usage of objects that are not links
2619
2877
  K>>;
2620
2878
  }>, never>;
2621
2879
  declare type DataProps<O> = Exclude<StringKeys<O>, StringKeys<XataRecord>>;
2622
2880
  declare type NestedValueAtColumn<O, Key extends SelectableColumn<O>> = Key extends `${infer N}.${infer M}` ? N extends DataProps<O> ? {
2623
- [K in N]: M extends SelectableColumn<NonNullable<O[K]>> ? NonNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], NestedValueAtColumn<NonNullable<O[K]>, M> & XataRecord> : ForwardNullable<O[K], NestedValueAtColumn<NonNullable<O[K]>, M>> : unknown;
2881
+ [K in N]: M extends SelectableColumn<RemoveNullable<O[K]>> ? RemoveNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], NestedValueAtColumn<RemoveNullable<O[K]>, M> & XataRecord> : ForwardNullable<O[K], NestedValueAtColumn<RemoveNullable<O[K]>, M>> : unknown;
2624
2882
  } : unknown : Key extends DataProps<O> ? {
2625
- [K in Key]: NonNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], SelectedPick<NonNullable<O[K]>, ['*']>> : O[K];
2883
+ [K in Key]: RemoveNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], SelectedPick<RemoveNullable<O[K]>, ['*']>> : O[K];
2626
2884
  } : Key extends '*' ? {
2627
- [K in StringKeys<O>]: NonNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], Link<NonNullable<O[K]>>> : O[K];
2885
+ [K in StringKeys<O>]: RemoveNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], Link<RemoveNullable<O[K]>>> : O[K];
2628
2886
  } : unknown;
2629
- declare type ForwardNullable<T, R> = T extends NonNullable<T> ? R : R | null;
2887
+ declare type RemoveNullable<T> = T extends null | undefined ? never : T;
2888
+ declare type ForwardNullable<T, R> = T extends RemoveNullable<T> ? R : R | null;
2630
2889
 
2631
2890
  /**
2632
2891
  * Represents an identifiable record from the database.
@@ -2767,8 +3026,8 @@ declare type ValueTypeFilters<T> = T | T extends string ? StringTypeFilter : T e
2767
3026
  ],
2768
3027
  }
2769
3028
  */
2770
- declare type AggregatorFilter<Record> = {
2771
- [key in '$all' | '$any' | '$not' | '$none']?: SingleOrArray<Filter<Record>>;
3029
+ declare type AggregatorFilter<T> = {
3030
+ [key in '$all' | '$any' | '$not' | '$none']?: SingleOrArray<Filter<T>>;
2772
3031
  };
2773
3032
  /**
2774
3033
  * Existance filter
@@ -2783,10 +3042,10 @@ declare type BaseApiFilter<Record> = PropertyAccessFilter<Record> | AggregatorFi
2783
3042
  * Injects the Api filters on nested properties
2784
3043
  * Example: { filter: { settings: { plan: { $any: ['free', 'trial'] } } } }
2785
3044
  */
2786
- declare type NestedApiFilter<T> = T extends Record<string, any> ? {
3045
+ declare type NestedApiFilter<T> = {
2787
3046
  [key in keyof T]?: T[key] extends Record<string, any> ? SingleOrArray<Filter<T[key]>> : PropertyFilter<T[key]>;
2788
- } : PropertyFilter<T>;
2789
- declare type Filter<Record> = BaseApiFilter<Record> | NestedApiFilter<Record>;
3047
+ };
3048
+ declare type Filter<T> = T extends Record<string, any> ? BaseApiFilter<T> | NestedApiFilter<T> : PropertyFilter<T>;
2790
3049
 
2791
3050
  declare type SortDirection = 'asc' | 'desc';
2792
3051
  declare type SortFilterExtended<T extends XataRecord> = {
@@ -2798,13 +3057,21 @@ declare type SortFilterBase<T extends XataRecord> = {
2798
3057
  [Key in StringKeys<T>]: SortDirection;
2799
3058
  };
2800
3059
 
2801
- declare type QueryOptions<T extends XataRecord> = {
2802
- page?: PaginationOptions;
3060
+ declare type BaseOptions<T extends XataRecord> = {
2803
3061
  columns?: NonEmptyArray<SelectableColumn<T>>;
3062
+ cache?: number;
3063
+ };
3064
+ declare type CursorQueryOptions = {
3065
+ pagination?: CursorNavigationOptions & OffsetNavigationOptions;
3066
+ filter?: never;
3067
+ sort?: never;
3068
+ };
3069
+ declare type OffsetQueryOptions<T extends XataRecord> = {
3070
+ pagination?: OffsetNavigationOptions;
2804
3071
  filter?: FilterExpression;
2805
3072
  sort?: SortFilter<T> | SortFilter<T>[];
2806
- cache?: number;
2807
3073
  };
3074
+ declare type QueryOptions<T extends XataRecord> = BaseOptions<T> & (CursorQueryOptions | OffsetQueryOptions<T>);
2808
3075
  /**
2809
3076
  * Query objects contain the information of all filters, sorting, etc. to be included in the database query.
2810
3077
  *
@@ -2815,7 +3082,7 @@ declare class Query<Record extends XataRecord, Result extends XataRecord = Recor
2815
3082
  #private;
2816
3083
  readonly meta: PaginationQueryMeta;
2817
3084
  readonly records: Result[];
2818
- constructor(repository: Repository<Record> | null, table: string, data: Partial<QueryOptions<Record>>, parent?: Partial<QueryOptions<Record>>);
3085
+ constructor(repository: Repository<Record> | null, table: string, data: Partial<QueryOptions<Record>>, rawParent?: Partial<QueryOptions<Record>>);
2819
3086
  getQueryOptions(): QueryOptions<Record>;
2820
3087
  key(): string;
2821
3088
  /**
@@ -2847,18 +3114,28 @@ declare class Query<Record extends XataRecord, Result extends XataRecord = Recor
2847
3114
  *
2848
3115
  * ```
2849
3116
  * query.filter("columnName", columnValue)
2850
- * query.filter({
2851
- * "columnName": columnValue
2852
- * })
3117
+ * query.filter("columnName", operator(columnValue)) // Use gt, gte, lt, lte, startsWith,...
3118
+ * ```
3119
+ *
3120
+ * @param column The name of the column to filter.
3121
+ * @param value The value to filter.
3122
+ * @returns A new Query object.
3123
+ */
3124
+ filter<F extends SelectableColumn<Record>>(column: F, value: Filter<ValueAtColumn<Record, F>>): Query<Record, Result>;
3125
+ /**
3126
+ * Builds a new query object adding one or more constraints. Examples:
3127
+ *
3128
+ * ```
3129
+ * query.filter({ "columnName": columnValue })
2853
3130
  * query.filter({
2854
3131
  * "columnName": operator(columnValue) // Use gt, gte, lt, lte, startsWith,...
2855
3132
  * })
2856
3133
  * ```
2857
3134
  *
3135
+ * @param filters A filter object
2858
3136
  * @returns A new Query object.
2859
3137
  */
2860
3138
  filter(filters: Filter<Record>): Query<Record, Result>;
2861
- filter<F extends SelectableColumn<Record>>(column: F, value: Filter<ValueAtColumn<Record, F>>): Query<Record, Result>;
2862
3139
  /**
2863
3140
  * Builds a new query with a new sort option.
2864
3141
  * @param column The column name.
@@ -2872,48 +3149,148 @@ declare class Query<Record extends XataRecord, Result extends XataRecord = Recor
2872
3149
  * @returns A new Query object.
2873
3150
  */
2874
3151
  select<K extends SelectableColumn<Record>>(columns: NonEmptyArray<K>): Query<Record, SelectedPick<Record, NonEmptyArray<K>>>;
3152
+ /**
3153
+ * Get paginated results
3154
+ *
3155
+ * @returns A page of results
3156
+ */
2875
3157
  getPaginated(): Promise<Page<Record, Result>>;
2876
- getPaginated(options: Omit<QueryOptions<Record>, 'columns'>): Promise<Page<Record, Result>>;
3158
+ /**
3159
+ * Get paginated results
3160
+ *
3161
+ * @param options Pagination options
3162
+ * @returns A page of results
3163
+ */
3164
+ getPaginated(options: OmitBy<QueryOptions<Record>, 'columns'>): Promise<Page<Record, Result>>;
3165
+ /**
3166
+ * Get paginated results
3167
+ *
3168
+ * @param options Pagination options
3169
+ * @returns A page of results
3170
+ */
2877
3171
  getPaginated<Options extends RequiredBy<QueryOptions<Record>, 'columns'>>(options: Options): Promise<Page<Record, SelectedPick<Record, typeof options['columns']>>>;
3172
+ /**
3173
+ * Get results in an iterator
3174
+ *
3175
+ * @async
3176
+ * @returns Async interable of results
3177
+ */
2878
3178
  [Symbol.asyncIterator](): AsyncIterableIterator<Result>;
2879
- getIterator(chunk: number): AsyncGenerator<Result[]>;
2880
- getIterator(chunk: number, options: Omit<QueryOptions<Record>, 'columns' | 'page'>): AsyncGenerator<Result[]>;
2881
- getIterator<Options extends RequiredBy<Omit<QueryOptions<Record>, 'page'>, 'columns'>>(chunk: number, options: Options): AsyncGenerator<SelectedPick<Record, typeof options['columns']>[]>;
3179
+ /**
3180
+ * Build an iterator of results
3181
+ *
3182
+ * @returns Async generator of results array
3183
+ */
3184
+ getIterator(): AsyncGenerator<Result[]>;
3185
+ /**
3186
+ * Build an iterator of results
3187
+ *
3188
+ * @param options Pagination options with batchSize
3189
+ * @returns Async generator of results array
3190
+ */
3191
+ getIterator(options: OmitBy<QueryOptions<Record>, 'columns' | 'pagination'> & {
3192
+ batchSize?: number;
3193
+ }): AsyncGenerator<Result[]>;
3194
+ /**
3195
+ * Build an iterator of results
3196
+ *
3197
+ * @param options Pagination options with batchSize
3198
+ * @returns Async generator of results array
3199
+ */
3200
+ getIterator<Options extends RequiredBy<OmitBy<QueryOptions<Record>, 'pagination'>, 'columns'> & {
3201
+ batchSize?: number;
3202
+ }>(options: Options): AsyncGenerator<SelectedPick<Record, typeof options['columns']>[]>;
2882
3203
  /**
2883
3204
  * Performs the query in the database and returns a set of results.
2884
- * @param options Additional options to be used when performing the query.
2885
3205
  * @returns An array of records from the database.
2886
3206
  */
2887
3207
  getMany(): Promise<Result[]>;
2888
- getMany(options: Omit<QueryOptions<Record>, 'columns'>): Promise<Result[]>;
3208
+ /**
3209
+ * Performs the query in the database and returns a set of results.
3210
+ * @param options Additional options to be used when performing the query.
3211
+ * @returns An array of records from the database.
3212
+ */
3213
+ getMany(options: OmitBy<QueryOptions<Record>, 'columns'>): Promise<Result[]>;
3214
+ /**
3215
+ * Performs the query in the database and returns a set of results.
3216
+ * @param options Additional options to be used when performing the query.
3217
+ * @returns An array of records from the database.
3218
+ */
2889
3219
  getMany<Options extends RequiredBy<QueryOptions<Record>, 'columns'>>(options: Options): Promise<SelectedPick<Record, typeof options['columns']>[]>;
3220
+ /**
3221
+ * Performs the query in the database and returns all the results.
3222
+ * Warning: If there are a large number of results, this method can have performance implications.
3223
+ * @returns An array of records from the database.
3224
+ */
3225
+ getAll(): Promise<Result[]>;
2890
3226
  /**
2891
3227
  * Performs the query in the database and returns all the results.
2892
3228
  * Warning: If there are a large number of results, this method can have performance implications.
2893
3229
  * @param options Additional options to be used when performing the query.
2894
3230
  * @returns An array of records from the database.
2895
3231
  */
2896
- getAll(chunk?: number): Promise<Result[]>;
2897
- getAll(chunk: number | undefined, options: Omit<QueryOptions<Record>, 'columns' | 'page'>): Promise<Result[]>;
2898
- getAll<Options extends RequiredBy<Omit<QueryOptions<Record>, 'page'>, 'columns'>>(chunk: number | undefined, options: Options): Promise<SelectedPick<Record, typeof options['columns']>[]>;
3232
+ getAll(options: OmitBy<QueryOptions<Record>, 'columns' | 'pagination'> & {
3233
+ batchSize?: number;
3234
+ }): Promise<Result[]>;
2899
3235
  /**
2900
- * Performs the query in the database and returns the first result.
3236
+ * Performs the query in the database and returns all the results.
3237
+ * Warning: If there are a large number of results, this method can have performance implications.
2901
3238
  * @param options Additional options to be used when performing the query.
3239
+ * @returns An array of records from the database.
3240
+ */
3241
+ getAll<Options extends RequiredBy<OmitBy<QueryOptions<Record>, 'pagination'>, 'columns'> & {
3242
+ batchSize?: number;
3243
+ }>(options: Options): Promise<SelectedPick<Record, typeof options['columns']>[]>;
3244
+ /**
3245
+ * Performs the query in the database and returns the first result.
2902
3246
  * @returns The first record that matches the query, or null if no record matched the query.
2903
3247
  */
2904
3248
  getFirst(): Promise<Result | null>;
2905
- getFirst(options: Omit<QueryOptions<Record>, 'columns' | 'page'>): Promise<Result | null>;
2906
- getFirst<Options extends RequiredBy<Omit<QueryOptions<Record>, 'page'>, 'columns'>>(options: Options): Promise<SelectedPick<Record, typeof options['columns']> | null>;
3249
+ /**
3250
+ * Performs the query in the database and returns the first result.
3251
+ * @param options Additional options to be used when performing the query.
3252
+ * @returns The first record that matches the query, or null if no record matched the query.
3253
+ */
3254
+ getFirst(options: OmitBy<QueryOptions<Record>, 'columns' | 'pagination'>): Promise<Result | null>;
3255
+ /**
3256
+ * Performs the query in the database and returns the first result.
3257
+ * @param options Additional options to be used when performing the query.
3258
+ * @returns The first record that matches the query, or null if no record matched the query.
3259
+ */
3260
+ getFirst<Options extends RequiredBy<OmitBy<QueryOptions<Record>, 'pagination'>, 'columns'>>(options: Options): Promise<SelectedPick<Record, typeof options['columns']> | null>;
2907
3261
  /**
2908
3262
  * Builds a new query object adding a cache TTL in milliseconds.
2909
3263
  * @param ttl The cache TTL in milliseconds.
2910
3264
  * @returns A new Query object.
2911
3265
  */
2912
3266
  cache(ttl: number): Query<Record, Result>;
3267
+ /**
3268
+ * Retrieve next page of records
3269
+ *
3270
+ * @returns A new page object.
3271
+ */
2913
3272
  nextPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3273
+ /**
3274
+ * Retrieve previous page of records
3275
+ *
3276
+ * @returns A new page object
3277
+ */
2914
3278
  previousPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3279
+ /**
3280
+ * Retrieve first page of records
3281
+ *
3282
+ * @returns A new page object
3283
+ */
2915
3284
  firstPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3285
+ /**
3286
+ * Retrieve last page of records
3287
+ *
3288
+ * @returns A new page object
3289
+ */
2916
3290
  lastPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3291
+ /**
3292
+ * @returns Boolean indicating if there is a next page
3293
+ */
2917
3294
  hasNextPage(): boolean;
2918
3295
  }
2919
3296
 
@@ -2993,14 +3370,12 @@ declare type OffsetNavigationOptions = {
2993
3370
  size?: number;
2994
3371
  offset?: number;
2995
3372
  };
2996
- declare type PaginationOptions = CursorNavigationOptions & OffsetNavigationOptions;
2997
3373
  declare const PAGINATION_MAX_SIZE = 200;
2998
3374
  declare const PAGINATION_DEFAULT_SIZE = 200;
2999
3375
  declare const PAGINATION_MAX_OFFSET = 800;
3000
3376
  declare const PAGINATION_DEFAULT_OFFSET = 0;
3377
+ declare function isCursorPaginationOptions(options: Record<string, unknown> | undefined | null): options is CursorNavigationOptions;
3001
3378
 
3002
- declare type TableLink = string[];
3003
- declare type LinkDictionary = Dictionary<TableLink[]>;
3004
3379
  /**
3005
3380
  * Common interface for performing operations on a table.
3006
3381
  */
@@ -3025,6 +3400,12 @@ declare abstract class Repository<Data extends BaseData, Record extends XataReco
3025
3400
  * @returns The persisted record for the given id or null if the record could not be found.
3026
3401
  */
3027
3402
  abstract read(id: string): Promise<Readonly<SelectedPick<Record, ['*']> | null>>;
3403
+ /**
3404
+ * Queries multiple records from the table given their unique id.
3405
+ * @param ids The unique ids array.
3406
+ * @returns The persisted records for the given ids (if a record could not be found it is not returned).
3407
+ */
3408
+ abstract read(ids: string[]): Promise<Array<Readonly<SelectedPick<Record, ['*']>>>>;
3028
3409
  /**
3029
3410
  * Partially update a single record.
3030
3411
  * @param object An object with its id and the columns to be updated.
@@ -3097,7 +3478,9 @@ declare abstract class Repository<Data extends BaseData, Record extends XataReco
3097
3478
  * @returns The found records.
3098
3479
  */
3099
3480
  abstract search(query: string, options?: {
3100
- fuzziness?: number;
3481
+ fuzziness?: FuzzinessExpression;
3482
+ highlight?: HighlightExpression;
3483
+ filter?: Filter<Record>;
3101
3484
  }): Promise<SelectedPick<Record, ['*']>[]>;
3102
3485
  abstract query<Result extends XataRecord>(query: Query<Record, Result>): Promise<Page<Record, Result>>;
3103
3486
  }
@@ -3106,7 +3489,6 @@ declare class RestRepository<Data extends BaseData, Record extends XataRecord =
3106
3489
  db: SchemaPluginResult<any>;
3107
3490
  constructor(options: {
3108
3491
  table: string;
3109
- links?: LinkDictionary;
3110
3492
  db: SchemaPluginResult<any>;
3111
3493
  pluginOptions: XataPluginOptions;
3112
3494
  });
@@ -3114,6 +3496,7 @@ declare class RestRepository<Data extends BaseData, Record extends XataRecord =
3114
3496
  create(recordId: string, object: EditableData<Data>): Promise<SelectedPick<Record, ['*']>>;
3115
3497
  create(objects: EditableData<Data>[]): Promise<SelectedPick<Record, ['*']>[]>;
3116
3498
  read(recordId: string): Promise<SelectedPick<Record, ['*']> | null>;
3499
+ read(recordIds: string[]): Promise<Array<Readonly<SelectedPick<Record, ['*']>>>>;
3117
3500
  update(object: Partial<EditableData<Data>> & Identifiable): Promise<SelectedPick<Record, ['*']>>;
3118
3501
  update(recordId: string, object: Partial<EditableData<Data>>): Promise<SelectedPick<Record, ['*']>>;
3119
3502
  update(objects: Array<Partial<EditableData<Data>> & Identifiable>): Promise<SelectedPick<Record, ['*']>[]>;
@@ -3122,7 +3505,9 @@ declare class RestRepository<Data extends BaseData, Record extends XataRecord =
3122
3505
  createOrUpdate(objects: EditableData<Data>[]): Promise<SelectedPick<Record, ['*']>[]>;
3123
3506
  delete(a: string | Identifiable | Array<string | Identifiable>): Promise<void>;
3124
3507
  search(query: string, options?: {
3125
- fuzziness?: number;
3508
+ fuzziness?: FuzzinessExpression;
3509
+ highlight?: HighlightExpression;
3510
+ filter?: Filter<Record>;
3126
3511
  }): Promise<SelectedPick<Record, ['*']>[]>;
3127
3512
  query<Result extends XataRecord>(query: Query<Record, Result>): Promise<Page<Record, Result>>;
3128
3513
  }
@@ -3202,7 +3587,6 @@ declare const includesAny: <T>(value: T) => ArrayFilter<T>;
3202
3587
 
3203
3588
  declare type SchemaDefinition = {
3204
3589
  table: string;
3205
- links?: LinkDictionary;
3206
3590
  };
3207
3591
  declare type SchemaPluginResult<Schemas extends Record<string, BaseData>> = {
3208
3592
  [Key in keyof Schemas]: Repository<Schemas[Key]>;
@@ -3211,39 +3595,52 @@ declare type SchemaPluginResult<Schemas extends Record<string, BaseData>> = {
3211
3595
  };
3212
3596
  declare class SchemaPlugin<Schemas extends Record<string, BaseData>> extends XataPlugin {
3213
3597
  #private;
3214
- private links?;
3215
3598
  private tableNames?;
3216
- constructor(links?: LinkDictionary | undefined, tableNames?: string[] | undefined);
3599
+ constructor(tableNames?: string[] | undefined);
3217
3600
  build(pluginOptions: XataPluginOptions): SchemaPluginResult<Schemas>;
3218
3601
  }
3219
3602
 
3220
3603
  declare type SearchOptions<Schemas extends Record<string, BaseData>, Tables extends StringKeys<Schemas>> = {
3221
- fuzziness?: number;
3222
- tables?: Tables[];
3604
+ fuzziness?: FuzzinessExpression;
3605
+ highlight?: HighlightExpression;
3606
+ tables?: Array<Tables | Values<{
3607
+ [Model in GetArrayInnerType<NonNullable<Tables[]>>]: {
3608
+ table: Model;
3609
+ filter?: Filter<SelectedPick<Schemas[Model] & SearchXataRecord, ['*']>>;
3610
+ };
3611
+ }>>;
3223
3612
  };
3224
3613
  declare type SearchPluginResult<Schemas extends Record<string, BaseData>> = {
3225
3614
  all: <Tables extends StringKeys<Schemas>>(query: string, options?: SearchOptions<Schemas, Tables>) => Promise<Values<{
3226
- [Model in GetArrayInnerType<NonNullable<NonNullable<typeof options>['tables']>>]: {
3615
+ [Model in ExtractTables<Schemas, Tables, GetArrayInnerType<NonNullable<NonNullable<typeof options>['tables']>>>]: {
3227
3616
  table: Model;
3228
3617
  record: Awaited<SelectedPick<Schemas[Model] & SearchXataRecord, ['*']>>;
3229
3618
  };
3230
3619
  }>[]>;
3231
3620
  byTable: <Tables extends StringKeys<Schemas>>(query: string, options?: SearchOptions<Schemas, Tables>) => Promise<{
3232
- [Model in GetArrayInnerType<NonNullable<NonNullable<typeof options>['tables']>>]?: Awaited<SelectedPick<Schemas[Model] & SearchXataRecord, ['*']>[]>;
3621
+ [Model in ExtractTables<Schemas, Tables, GetArrayInnerType<NonNullable<NonNullable<typeof options>['tables']>>>]?: Awaited<SelectedPick<Schemas[Model] & SearchXataRecord, ['*']>[]>;
3233
3622
  }>;
3234
3623
  };
3235
3624
  declare class SearchPlugin<Schemas extends Record<string, BaseData>> extends XataPlugin {
3236
3625
  #private;
3237
3626
  private db;
3238
- private links;
3239
- constructor(db: SchemaPluginResult<Schemas>, links: LinkDictionary);
3627
+ constructor(db: SchemaPluginResult<Schemas>);
3240
3628
  build({ getFetchProps }: XataPluginOptions): SearchPluginResult<Schemas>;
3241
3629
  }
3242
3630
  declare type SearchXataRecord = XataRecord & {
3243
3631
  xata: {
3244
- table: string;
3632
+ table?: string;
3633
+ highlight?: {
3634
+ [key: string]: string[] | {
3635
+ [key: string]: any;
3636
+ };
3637
+ };
3245
3638
  };
3246
3639
  };
3640
+ declare type ReturnTable<Table, Tables> = Table extends Tables ? Table : never;
3641
+ declare type ExtractTables<Schemas extends Record<string, BaseData>, Tables extends StringKeys<Schemas>, TableOptions extends GetArrayInnerType<NonNullable<NonNullable<SearchOptions<Schemas, Tables>>['tables']>>> = TableOptions extends `${infer Table}` ? ReturnTable<Table, Tables> : TableOptions extends {
3642
+ table: infer Table;
3643
+ } ? ReturnTable<Table, Tables> : never;
3247
3644
 
3248
3645
  declare type BranchStrategyValue = string | undefined | null;
3249
3646
  declare type BranchStrategyBuilder = () => BranchStrategyValue | Promise<BranchStrategyValue>;
@@ -3259,7 +3656,7 @@ declare type BaseClientOptions = {
3259
3656
  };
3260
3657
  declare const buildClient: <Plugins extends Record<string, XataPlugin> = {}>(plugins?: Plugins | undefined) => ClientConstructor<Plugins>;
3261
3658
  interface ClientConstructor<Plugins extends Record<string, XataPlugin>> {
3262
- new <Schemas extends Record<string, BaseData> = {}>(options?: Partial<BaseClientOptions>, links?: LinkDictionary): Omit<{
3659
+ new <Schemas extends Record<string, BaseData> = {}>(options?: Partial<BaseClientOptions>, tables?: string[]): Omit<{
3263
3660
  db: Awaited<ReturnType<SchemaPlugin<Schemas>['build']>>;
3264
3661
  search: Awaited<ReturnType<SearchPlugin<Schemas>['build']>>;
3265
3662
  }, keyof Plugins> & {
@@ -3286,4 +3683,4 @@ declare class XataError extends Error {
3286
3683
  constructor(message: string, status: number);
3287
3684
  }
3288
3685
 
3289
- export { AcceptWorkspaceMemberInviteError, AcceptWorkspaceMemberInvitePathParams, AcceptWorkspaceMemberInviteVariables, AddTableColumnError, AddTableColumnPathParams, AddTableColumnVariables, BaseClient, BaseClientOptions, BaseData, BulkInsertTableRecordsError, BulkInsertTableRecordsPathParams, BulkInsertTableRecordsRequestBody, BulkInsertTableRecordsResponse, BulkInsertTableRecordsVariables, CacheImpl, CancelWorkspaceMemberInviteError, CancelWorkspaceMemberInvitePathParams, CancelWorkspaceMemberInviteVariables, ClientConstructor, CreateBranchError, CreateBranchPathParams, CreateBranchQueryParams, CreateBranchRequestBody, CreateBranchVariables, CreateDatabaseError, CreateDatabasePathParams, CreateDatabaseRequestBody, CreateDatabaseResponse, CreateDatabaseVariables, CreateTableError, CreateTablePathParams, CreateTableVariables, CreateUserAPIKeyError, CreateUserAPIKeyPathParams, CreateUserAPIKeyResponse, CreateUserAPIKeyVariables, CreateWorkspaceError, CreateWorkspaceVariables, CursorNavigationOptions, DeleteBranchError, DeleteBranchPathParams, DeleteBranchVariables, DeleteColumnError, DeleteColumnPathParams, DeleteColumnVariables, DeleteDatabaseError, DeleteDatabasePathParams, DeleteDatabaseVariables, DeleteRecordError, DeleteRecordPathParams, DeleteRecordVariables, DeleteTableError, DeleteTablePathParams, DeleteTableVariables, DeleteUserAPIKeyError, DeleteUserAPIKeyPathParams, DeleteUserAPIKeyVariables, DeleteUserError, DeleteUserVariables, DeleteWorkspaceError, DeleteWorkspacePathParams, DeleteWorkspaceVariables, EditableData, ExecuteBranchMigrationPlanError, ExecuteBranchMigrationPlanPathParams, ExecuteBranchMigrationPlanRequestBody, ExecuteBranchMigrationPlanVariables, FetchImpl, FetcherExtraProps, GetBranchDetailsError, GetBranchDetailsPathParams, GetBranchDetailsVariables, GetBranchListError, GetBranchListPathParams, GetBranchListVariables, GetBranchMetadataError, GetBranchMetadataPathParams, GetBranchMetadataVariables, GetBranchMigrationHistoryError, GetBranchMigrationHistoryPathParams, GetBranchMigrationHistoryRequestBody, GetBranchMigrationHistoryResponse, GetBranchMigrationHistoryVariables, GetBranchMigrationPlanError, GetBranchMigrationPlanPathParams, GetBranchMigrationPlanVariables, GetBranchStatsError, GetBranchStatsPathParams, GetBranchStatsResponse, GetBranchStatsVariables, GetColumnError, GetColumnPathParams, GetColumnVariables, GetDatabaseListError, GetDatabaseListPathParams, GetDatabaseListVariables, GetRecordError, GetRecordPathParams, GetRecordRequestBody, GetRecordVariables, GetTableColumnsError, GetTableColumnsPathParams, GetTableColumnsResponse, GetTableColumnsVariables, GetTableSchemaError, GetTableSchemaPathParams, GetTableSchemaResponse, GetTableSchemaVariables, GetUserAPIKeysError, GetUserAPIKeysResponse, GetUserAPIKeysVariables, GetUserError, GetUserVariables, GetWorkspaceError, GetWorkspaceMembersListError, GetWorkspaceMembersListPathParams, GetWorkspaceMembersListVariables, GetWorkspacePathParams, GetWorkspaceVariables, GetWorkspacesListError, GetWorkspacesListResponse, GetWorkspacesListVariables, Identifiable, InsertRecordError, InsertRecordPathParams, InsertRecordResponse, InsertRecordVariables, InsertRecordWithIDError, InsertRecordWithIDPathParams, InsertRecordWithIDQueryParams, InsertRecordWithIDVariables, InviteWorkspaceMemberError, InviteWorkspaceMemberPathParams, InviteWorkspaceMemberRequestBody, InviteWorkspaceMemberVariables, LinkDictionary, OffsetNavigationOptions, operationsByTag as Operations, PAGINATION_DEFAULT_OFFSET, PAGINATION_DEFAULT_SIZE, PAGINATION_MAX_OFFSET, PAGINATION_MAX_SIZE, Page, Paginable, PaginationOptions, PaginationQueryMeta, Query, QueryTableError, QueryTablePathParams, QueryTableRequestBody, QueryTableVariables, RemoveWorkspaceMemberError, RemoveWorkspaceMemberPathParams, RemoveWorkspaceMemberVariables, Repository, ResendWorkspaceMemberInviteError, ResendWorkspaceMemberInvitePathParams, ResendWorkspaceMemberInviteVariables, responses as Responses, RestRepository, SchemaDefinition, SchemaPlugin, SchemaPluginResult, schemas as Schemas, SearchBranchError, SearchBranchPathParams, SearchBranchRequestBody, SearchBranchVariables, SearchOptions, SearchPlugin, SearchPluginResult, SelectableColumn, SelectedPick, SetTableSchemaError, SetTableSchemaPathParams, SetTableSchemaRequestBody, SetTableSchemaVariables, SimpleCache, SimpleCacheOptions, UpdateBranchMetadataError, UpdateBranchMetadataPathParams, UpdateBranchMetadataVariables, UpdateColumnError, UpdateColumnPathParams, UpdateColumnRequestBody, UpdateColumnVariables, UpdateRecordWithIDError, UpdateRecordWithIDPathParams, UpdateRecordWithIDQueryParams, UpdateRecordWithIDVariables, UpdateTableError, UpdateTablePathParams, UpdateTableRequestBody, UpdateTableVariables, UpdateUserError, UpdateUserVariables, UpdateWorkspaceError, UpdateWorkspaceMemberRoleError, UpdateWorkspaceMemberRolePathParams, UpdateWorkspaceMemberRoleRequestBody, UpdateWorkspaceMemberRoleVariables, UpdateWorkspacePathParams, UpdateWorkspaceVariables, UpsertRecordWithIDError, UpsertRecordWithIDPathParams, UpsertRecordWithIDQueryParams, UpsertRecordWithIDVariables, ValueAtColumn, XataApiClient, XataApiClientOptions, XataApiPlugin, XataError, XataPlugin, XataPluginOptions, XataRecord, 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 };
3686
+ export { AcceptWorkspaceMemberInviteError, AcceptWorkspaceMemberInvitePathParams, AcceptWorkspaceMemberInviteVariables, AddGitBranchesEntryError, AddGitBranchesEntryPathParams, AddGitBranchesEntryRequestBody, AddGitBranchesEntryResponse, AddGitBranchesEntryVariables, AddTableColumnError, AddTableColumnPathParams, AddTableColumnVariables, BaseClient, BaseClientOptions, BaseData, BulkInsertTableRecordsError, BulkInsertTableRecordsPathParams, BulkInsertTableRecordsRequestBody, BulkInsertTableRecordsResponse, BulkInsertTableRecordsVariables, CacheImpl, CancelWorkspaceMemberInviteError, CancelWorkspaceMemberInvitePathParams, CancelWorkspaceMemberInviteVariables, ClientConstructor, CreateBranchError, CreateBranchPathParams, CreateBranchQueryParams, CreateBranchRequestBody, CreateBranchVariables, CreateDatabaseError, CreateDatabasePathParams, CreateDatabaseRequestBody, CreateDatabaseResponse, CreateDatabaseVariables, CreateTableError, CreateTablePathParams, CreateTableVariables, CreateUserAPIKeyError, CreateUserAPIKeyPathParams, CreateUserAPIKeyResponse, CreateUserAPIKeyVariables, CreateWorkspaceError, CreateWorkspaceVariables, CursorNavigationOptions, DeleteBranchError, DeleteBranchPathParams, DeleteBranchVariables, DeleteColumnError, DeleteColumnPathParams, DeleteColumnVariables, DeleteDatabaseError, DeleteDatabasePathParams, DeleteDatabaseVariables, DeleteRecordError, DeleteRecordPathParams, DeleteRecordVariables, DeleteTableError, DeleteTablePathParams, DeleteTableVariables, DeleteUserAPIKeyError, DeleteUserAPIKeyPathParams, DeleteUserAPIKeyVariables, DeleteUserError, DeleteUserVariables, DeleteWorkspaceError, DeleteWorkspacePathParams, DeleteWorkspaceVariables, EditableData, ExecuteBranchMigrationPlanError, ExecuteBranchMigrationPlanPathParams, ExecuteBranchMigrationPlanRequestBody, ExecuteBranchMigrationPlanVariables, FetchImpl, FetcherExtraProps, GetBranchDetailsError, GetBranchDetailsPathParams, GetBranchDetailsVariables, GetBranchListError, GetBranchListPathParams, GetBranchListVariables, GetBranchMetadataError, GetBranchMetadataPathParams, GetBranchMetadataVariables, GetBranchMigrationHistoryError, GetBranchMigrationHistoryPathParams, GetBranchMigrationHistoryRequestBody, GetBranchMigrationHistoryResponse, GetBranchMigrationHistoryVariables, GetBranchMigrationPlanError, GetBranchMigrationPlanPathParams, GetBranchMigrationPlanVariables, GetBranchStatsError, GetBranchStatsPathParams, GetBranchStatsResponse, GetBranchStatsVariables, GetColumnError, GetColumnPathParams, GetColumnVariables, GetDatabaseListError, GetDatabaseListPathParams, GetDatabaseListVariables, GetGitBranchesMappingError, GetGitBranchesMappingPathParams, GetGitBranchesMappingVariables, GetRecordError, GetRecordPathParams, GetRecordRequestBody, GetRecordVariables, GetTableColumnsError, GetTableColumnsPathParams, GetTableColumnsResponse, GetTableColumnsVariables, GetTableSchemaError, GetTableSchemaPathParams, GetTableSchemaResponse, GetTableSchemaVariables, GetUserAPIKeysError, GetUserAPIKeysResponse, GetUserAPIKeysVariables, GetUserError, GetUserVariables, GetWorkspaceError, GetWorkspaceMembersListError, GetWorkspaceMembersListPathParams, GetWorkspaceMembersListVariables, GetWorkspacePathParams, GetWorkspaceVariables, GetWorkspacesListError, GetWorkspacesListResponse, GetWorkspacesListVariables, Identifiable, InsertRecordError, InsertRecordPathParams, InsertRecordResponse, InsertRecordVariables, InsertRecordWithIDError, InsertRecordWithIDPathParams, InsertRecordWithIDQueryParams, InsertRecordWithIDVariables, InviteWorkspaceMemberError, InviteWorkspaceMemberPathParams, InviteWorkspaceMemberRequestBody, InviteWorkspaceMemberVariables, OffsetNavigationOptions, operationsByTag as Operations, PAGINATION_DEFAULT_OFFSET, PAGINATION_DEFAULT_SIZE, PAGINATION_MAX_OFFSET, PAGINATION_MAX_SIZE, Page, Paginable, PaginationQueryMeta, Query, QueryTableError, QueryTablePathParams, QueryTableRequestBody, QueryTableVariables, RemoveGitBranchesEntryError, RemoveGitBranchesEntryPathParams, RemoveGitBranchesEntryQueryParams, RemoveGitBranchesEntryVariables, RemoveWorkspaceMemberError, RemoveWorkspaceMemberPathParams, RemoveWorkspaceMemberVariables, Repository, ResendWorkspaceMemberInviteError, ResendWorkspaceMemberInvitePathParams, ResendWorkspaceMemberInviteVariables, ResolveBranchError, ResolveBranchPathParams, ResolveBranchQueryParams, ResolveBranchResponse, ResolveBranchVariables, responses as Responses, RestRepository, SchemaDefinition, SchemaPlugin, SchemaPluginResult, schemas as Schemas, SearchBranchError, SearchBranchPathParams, SearchBranchRequestBody, SearchBranchVariables, SearchOptions, SearchPlugin, SearchPluginResult, SearchTableError, SearchTablePathParams, SearchTableRequestBody, SearchTableVariables, SelectableColumn, SelectedPick, SetTableSchemaError, SetTableSchemaPathParams, SetTableSchemaRequestBody, SetTableSchemaVariables, SimpleCache, SimpleCacheOptions, UpdateBranchMetadataError, UpdateBranchMetadataPathParams, UpdateBranchMetadataVariables, UpdateColumnError, UpdateColumnPathParams, UpdateColumnRequestBody, UpdateColumnVariables, UpdateRecordWithIDError, UpdateRecordWithIDPathParams, UpdateRecordWithIDQueryParams, UpdateRecordWithIDVariables, UpdateTableError, UpdateTablePathParams, UpdateTableRequestBody, UpdateTableVariables, UpdateUserError, UpdateUserVariables, UpdateWorkspaceError, UpdateWorkspaceMemberRoleError, UpdateWorkspaceMemberRolePathParams, UpdateWorkspaceMemberRoleRequestBody, UpdateWorkspaceMemberRoleVariables, UpdateWorkspacePathParams, UpdateWorkspaceVariables, UpsertRecordWithIDError, UpsertRecordWithIDPathParams, UpsertRecordWithIDQueryParams, UpsertRecordWithIDVariables, ValueAtColumn, XataApiClient, XataApiClientOptions, XataApiPlugin, XataError, XataPlugin, XataPluginOptions, XataRecord, acceptWorkspaceMemberInvite, addGitBranchesEntry, 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, getGitBranchesMapping, getRecord, getTableColumns, getTableSchema, getUser, getUserAPIKeys, getWorkspace, getWorkspaceMembersList, getWorkspacesList, gt, gte, includes, includesAll, includesAny, includesNone, insertRecord, insertRecordWithID, inviteWorkspaceMember, is, isCursorPaginationOptions, isIdentifiable, isNot, isXataRecord, le, lt, lte, notExists, operationsByTag, pattern, queryTable, removeGitBranchesEntry, removeWorkspaceMember, resendWorkspaceMemberInvite, resolveBranch, searchBranch, searchTable, setTableSchema, startsWith, updateBranchMetadata, updateColumn, updateRecordWithID, updateTable, updateUser, updateWorkspace, updateWorkspaceMemberRole, upsertRecordWithID };