@xata.io/client 0.10.2 → 0.13.0

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
@@ -292,6 +292,10 @@ declare type FilterExpression = {
292
292
  } & {
293
293
  [key: string]: FilterColumn;
294
294
  };
295
+ declare type HighlightExpression = {
296
+ enabled?: boolean;
297
+ encodeHTML?: boolean;
298
+ };
295
299
  declare type FilterList = FilterExpression | FilterExpression[];
296
300
  declare type FilterColumn = FilterColumnIncludes | FilterPredicate | FilterList;
297
301
  /**
@@ -377,6 +381,11 @@ declare type XataRecord$1 = {
377
381
  xata: {
378
382
  version: number;
379
383
  table?: string;
384
+ highlight?: {
385
+ [key: string]: string[] | {
386
+ [key: string]: any;
387
+ };
388
+ };
380
389
  warnings?: string[];
381
390
  };
382
391
  } & {
@@ -422,6 +431,7 @@ type schemas_SortExpression = SortExpression;
422
431
  type schemas_SortOrder = SortOrder;
423
432
  type schemas_FuzzinessExpression = FuzzinessExpression;
424
433
  type schemas_FilterExpression = FilterExpression;
434
+ type schemas_HighlightExpression = HighlightExpression;
425
435
  type schemas_FilterList = FilterList;
426
436
  type schemas_FilterColumn = FilterColumn;
427
437
  type schemas_FilterColumnIncludes = FilterColumnIncludes;
@@ -476,6 +486,7 @@ declare namespace schemas {
476
486
  schemas_SortOrder as SortOrder,
477
487
  schemas_FuzzinessExpression as FuzzinessExpression,
478
488
  schemas_FilterExpression as FilterExpression,
489
+ schemas_HighlightExpression as HighlightExpression,
479
490
  schemas_FilterList as FilterList,
480
491
  schemas_FilterColumn as FilterColumn,
481
492
  schemas_FilterColumnIncludes as FilterColumnIncludes,
@@ -2612,6 +2623,7 @@ declare type SearchTableRequestBody = {
2612
2623
  query: string;
2613
2624
  fuzziness?: FuzzinessExpression;
2614
2625
  filter?: FilterExpression;
2626
+ highlight?: HighlightExpression;
2615
2627
  };
2616
2628
  declare type SearchTableVariables = {
2617
2629
  body: SearchTableRequestBody;
@@ -2640,9 +2652,13 @@ declare type SearchBranchError = ErrorWrapper<{
2640
2652
  payload: SimpleError;
2641
2653
  }>;
2642
2654
  declare type SearchBranchRequestBody = {
2643
- tables?: string[];
2655
+ tables?: (string | {
2656
+ table: string;
2657
+ filter?: FilterExpression;
2658
+ })[];
2644
2659
  query: string;
2645
2660
  fuzziness?: FuzzinessExpression;
2661
+ highlight?: HighlightExpression;
2646
2662
  };
2647
2663
  declare type SearchBranchVariables = {
2648
2664
  body: SearchBranchRequestBody;
@@ -2851,24 +2867,25 @@ declare type SelectableColumn<O, RecursivePath extends any[] = []> = '*' | 'id'
2851
2867
  declare type SelectedPick<O extends XataRecord, Key extends SelectableColumn<O>[]> = XataRecord & UnionToIntersection<Values<{
2852
2868
  [K in Key[number]]: NestedValueAtColumn<O, K> & XataRecord;
2853
2869
  }>>;
2854
- 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]> ? {
2855
- V: ValueAtColumn<O[K], V>;
2856
- } : 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;
2857
2873
  declare type MAX_RECURSION = 5;
2858
2874
  declare type NestedColumns<O, RecursivePath extends any[]> = RecursivePath['length'] extends MAX_RECURSION ? never : If<IsObject<O>, Values<{
2859
- [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
2860
- 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 infer Column ? Column extends string ? K | `${K}.${Column}` : never : never : `${K}.${StringKeys<RemoveNullable<O[K]>> | '*'}`, // This allows usage of objects that are not links
2861
2877
  K>>;
2862
2878
  }>, never>;
2863
2879
  declare type DataProps<O> = Exclude<StringKeys<O>, StringKeys<XataRecord>>;
2864
2880
  declare type NestedValueAtColumn<O, Key extends SelectableColumn<O>> = Key extends `${infer N}.${infer M}` ? N extends DataProps<O> ? {
2865
- [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;
2866
2882
  } : unknown : Key extends DataProps<O> ? {
2867
- [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];
2868
2884
  } : Key extends '*' ? {
2869
- [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];
2870
2886
  } : unknown;
2871
- 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;
2872
2889
 
2873
2890
  /**
2874
2891
  * Represents an identifiable record from the database.
@@ -2885,16 +2902,11 @@ interface BaseData {
2885
2902
  /**
2886
2903
  * Represents a persisted record from the database.
2887
2904
  */
2888
- interface XataRecord extends Identifiable {
2905
+ interface XataRecord<ExtraMetadata extends Record<string, unknown> = Record<string, unknown>> extends Identifiable {
2889
2906
  /**
2890
- * Metadata of this record.
2907
+ * Get metadata of this record.
2891
2908
  */
2892
- xata: {
2893
- /**
2894
- * Number that is increased every time the record is updated.
2895
- */
2896
- version: number;
2897
- };
2909
+ getMetadata(): XataRecordMetadata & ExtraMetadata;
2898
2910
  /**
2899
2911
  * Retrieves a refreshed copy of the current record from the database.
2900
2912
  */
@@ -2902,7 +2914,7 @@ interface XataRecord extends Identifiable {
2902
2914
  /**
2903
2915
  * Performs a partial update of the current record. On success a new object is
2904
2916
  * returned and the current object is not mutated.
2905
- * @param data The columns and their values that have to be updated.
2917
+ * @param partialUpdate The columns and their values that have to be updated.
2906
2918
  * @returns A new record containing the latest values for all the columns of the current record.
2907
2919
  */
2908
2920
  update(partialUpdate: Partial<EditableData<Omit<this, keyof XataRecord>>>): Promise<Readonly<SelectedPick<this, ['*']>>>;
@@ -2921,11 +2933,18 @@ declare type Link<Record extends XataRecord> = Omit<XataRecord, 'read' | 'update
2921
2933
  /**
2922
2934
  * Performs a partial update of the current record. On success a new object is
2923
2935
  * returned and the current object is not mutated.
2924
- * @param data The columns and their values that have to be updated.
2936
+ * @param partialUpdate The columns and their values that have to be updated.
2925
2937
  * @returns A new record containing the latest values for all the columns of the current record.
2926
2938
  */
2927
2939
  update(partialUpdate: Partial<EditableData<Omit<Record, keyof XataRecord>>>): Promise<Readonly<SelectedPick<Record, ['*']>>>;
2928
2940
  };
2941
+ declare type XataRecordMetadata = {
2942
+ /**
2943
+ * Number that is increased every time the record is updated.
2944
+ */
2945
+ version: number;
2946
+ warnings?: string[];
2947
+ };
2929
2948
  declare function isIdentifiable(x: any): x is Identifiable & Record<string, unknown>;
2930
2949
  declare function isXataRecord(x: any): x is XataRecord & Record<string, unknown>;
2931
2950
  declare type EditableData<O extends BaseData> = {
@@ -3009,8 +3028,8 @@ declare type ValueTypeFilters<T> = T | T extends string ? StringTypeFilter : T e
3009
3028
  ],
3010
3029
  }
3011
3030
  */
3012
- declare type AggregatorFilter<Record> = {
3013
- [key in '$all' | '$any' | '$not' | '$none']?: SingleOrArray<Filter<Record>>;
3031
+ declare type AggregatorFilter<T> = {
3032
+ [key in '$all' | '$any' | '$not' | '$none']?: SingleOrArray<Filter<T>>;
3014
3033
  };
3015
3034
  /**
3016
3035
  * Existance filter
@@ -3025,10 +3044,10 @@ declare type BaseApiFilter<Record> = PropertyAccessFilter<Record> | AggregatorFi
3025
3044
  * Injects the Api filters on nested properties
3026
3045
  * Example: { filter: { settings: { plan: { $any: ['free', 'trial'] } } } }
3027
3046
  */
3028
- declare type NestedApiFilter<T> = T extends Record<string, any> ? {
3047
+ declare type NestedApiFilter<T> = {
3029
3048
  [key in keyof T]?: T[key] extends Record<string, any> ? SingleOrArray<Filter<T[key]>> : PropertyFilter<T[key]>;
3030
- } : PropertyFilter<T>;
3031
- declare type Filter<Record> = BaseApiFilter<Record> | NestedApiFilter<Record>;
3049
+ };
3050
+ declare type Filter<T> = T extends Record<string, any> ? BaseApiFilter<T> | NestedApiFilter<T> : PropertyFilter<T>;
3032
3051
 
3033
3052
  declare type SortDirection = 'asc' | 'desc';
3034
3053
  declare type SortFilterExtended<T extends XataRecord> = {
@@ -3064,8 +3083,8 @@ declare type QueryOptions<T extends XataRecord> = BaseOptions<T> & (CursorQueryO
3064
3083
  declare class Query<Record extends XataRecord, Result extends XataRecord = Record> implements Paginable<Record, Result> {
3065
3084
  #private;
3066
3085
  readonly meta: PaginationQueryMeta;
3067
- readonly records: Result[];
3068
- constructor(repository: Repository<Record> | null, table: string, data: Partial<QueryOptions<Record>>, parent?: Partial<QueryOptions<Record>>);
3086
+ readonly records: RecordArray<Result>;
3087
+ constructor(repository: Repository<Record> | null, table: string, data: Partial<QueryOptions<Record>>, rawParent?: Partial<QueryOptions<Record>>);
3069
3088
  getQueryOptions(): QueryOptions<Record>;
3070
3089
  key(): string;
3071
3090
  /**
@@ -3097,18 +3116,28 @@ declare class Query<Record extends XataRecord, Result extends XataRecord = Recor
3097
3116
  *
3098
3117
  * ```
3099
3118
  * query.filter("columnName", columnValue)
3100
- * query.filter({
3101
- * "columnName": columnValue
3102
- * })
3119
+ * query.filter("columnName", operator(columnValue)) // Use gt, gte, lt, lte, startsWith,...
3120
+ * ```
3121
+ *
3122
+ * @param column The name of the column to filter.
3123
+ * @param value The value to filter.
3124
+ * @returns A new Query object.
3125
+ */
3126
+ filter<F extends SelectableColumn<Record>>(column: F, value: Filter<ValueAtColumn<Record, F>>): Query<Record, Result>;
3127
+ /**
3128
+ * Builds a new query object adding one or more constraints. Examples:
3129
+ *
3130
+ * ```
3131
+ * query.filter({ "columnName": columnValue })
3103
3132
  * query.filter({
3104
3133
  * "columnName": operator(columnValue) // Use gt, gte, lt, lte, startsWith,...
3105
3134
  * })
3106
3135
  * ```
3107
3136
  *
3137
+ * @param filters A filter object
3108
3138
  * @returns A new Query object.
3109
3139
  */
3110
3140
  filter(filters: Filter<Record>): Query<Record, Result>;
3111
- filter<F extends SelectableColumn<Record>>(column: F, value: Filter<ValueAtColumn<Record, F>>): Query<Record, Result>;
3112
3141
  /**
3113
3142
  * Builds a new query with a new sort option.
3114
3143
  * @param column The column name.
@@ -3122,45 +3151,114 @@ declare class Query<Record extends XataRecord, Result extends XataRecord = Recor
3122
3151
  * @returns A new Query object.
3123
3152
  */
3124
3153
  select<K extends SelectableColumn<Record>>(columns: NonEmptyArray<K>): Query<Record, SelectedPick<Record, NonEmptyArray<K>>>;
3154
+ /**
3155
+ * Get paginated results
3156
+ *
3157
+ * @returns A page of results
3158
+ */
3125
3159
  getPaginated(): Promise<Page<Record, Result>>;
3160
+ /**
3161
+ * Get paginated results
3162
+ *
3163
+ * @param options Pagination options
3164
+ * @returns A page of results
3165
+ */
3126
3166
  getPaginated(options: OmitBy<QueryOptions<Record>, 'columns'>): Promise<Page<Record, Result>>;
3167
+ /**
3168
+ * Get paginated results
3169
+ *
3170
+ * @param options Pagination options
3171
+ * @returns A page of results
3172
+ */
3127
3173
  getPaginated<Options extends RequiredBy<QueryOptions<Record>, 'columns'>>(options: Options): Promise<Page<Record, SelectedPick<Record, typeof options['columns']>>>;
3174
+ /**
3175
+ * Get results in an iterator
3176
+ *
3177
+ * @async
3178
+ * @returns Async interable of results
3179
+ */
3128
3180
  [Symbol.asyncIterator](): AsyncIterableIterator<Result>;
3181
+ /**
3182
+ * Build an iterator of results
3183
+ *
3184
+ * @returns Async generator of results array
3185
+ */
3129
3186
  getIterator(): AsyncGenerator<Result[]>;
3187
+ /**
3188
+ * Build an iterator of results
3189
+ *
3190
+ * @param options Pagination options with batchSize
3191
+ * @returns Async generator of results array
3192
+ */
3130
3193
  getIterator(options: OmitBy<QueryOptions<Record>, 'columns' | 'pagination'> & {
3131
3194
  batchSize?: number;
3132
3195
  }): AsyncGenerator<Result[]>;
3196
+ /**
3197
+ * Build an iterator of results
3198
+ *
3199
+ * @param options Pagination options with batchSize
3200
+ * @returns Async generator of results array
3201
+ */
3133
3202
  getIterator<Options extends RequiredBy<OmitBy<QueryOptions<Record>, 'pagination'>, 'columns'> & {
3134
3203
  batchSize?: number;
3135
3204
  }>(options: Options): AsyncGenerator<SelectedPick<Record, typeof options['columns']>[]>;
3205
+ /**
3206
+ * Performs the query in the database and returns a set of results.
3207
+ * @returns An array of records from the database.
3208
+ */
3209
+ getMany(): Promise<RecordArray<Result>>;
3210
+ /**
3211
+ * Performs the query in the database and returns a set of results.
3212
+ * @param options Additional options to be used when performing the query.
3213
+ * @returns An array of records from the database.
3214
+ */
3215
+ getMany(options: OmitBy<QueryOptions<Record>, 'columns'>): Promise<RecordArray<Result>>;
3136
3216
  /**
3137
3217
  * Performs the query in the database and returns a set of results.
3138
3218
  * @param options Additional options to be used when performing the query.
3139
3219
  * @returns An array of records from the database.
3140
3220
  */
3141
- getMany(): Promise<Result[]>;
3142
- getMany(options: OmitBy<QueryOptions<Record>, 'columns'>): Promise<Result[]>;
3143
- getMany<Options extends RequiredBy<QueryOptions<Record>, 'columns'>>(options: Options): Promise<SelectedPick<Record, typeof options['columns']>[]>;
3221
+ getMany<Options extends RequiredBy<QueryOptions<Record>, 'columns'>>(options: Options): Promise<RecordArray<SelectedPick<Record, typeof options['columns']>>>;
3144
3222
  /**
3145
3223
  * Performs the query in the database and returns all the results.
3146
3224
  * Warning: If there are a large number of results, this method can have performance implications.
3147
- * @param options Additional options to be used when performing the query.
3148
3225
  * @returns An array of records from the database.
3149
3226
  */
3150
3227
  getAll(): Promise<Result[]>;
3228
+ /**
3229
+ * Performs the query in the database and returns all the results.
3230
+ * Warning: If there are a large number of results, this method can have performance implications.
3231
+ * @param options Additional options to be used when performing the query.
3232
+ * @returns An array of records from the database.
3233
+ */
3151
3234
  getAll(options: OmitBy<QueryOptions<Record>, 'columns' | 'pagination'> & {
3152
3235
  batchSize?: number;
3153
3236
  }): Promise<Result[]>;
3237
+ /**
3238
+ * Performs the query in the database and returns all the results.
3239
+ * Warning: If there are a large number of results, this method can have performance implications.
3240
+ * @param options Additional options to be used when performing the query.
3241
+ * @returns An array of records from the database.
3242
+ */
3154
3243
  getAll<Options extends RequiredBy<OmitBy<QueryOptions<Record>, 'pagination'>, 'columns'> & {
3155
3244
  batchSize?: number;
3156
3245
  }>(options: Options): Promise<SelectedPick<Record, typeof options['columns']>[]>;
3157
3246
  /**
3158
3247
  * Performs the query in the database and returns the first result.
3159
- * @param options Additional options to be used when performing the query.
3160
3248
  * @returns The first record that matches the query, or null if no record matched the query.
3161
3249
  */
3162
3250
  getFirst(): Promise<Result | null>;
3251
+ /**
3252
+ * Performs the query in the database and returns the first result.
3253
+ * @param options Additional options to be used when performing the query.
3254
+ * @returns The first record that matches the query, or null if no record matched the query.
3255
+ */
3163
3256
  getFirst(options: OmitBy<QueryOptions<Record>, 'columns' | 'pagination'>): Promise<Result | null>;
3257
+ /**
3258
+ * Performs the query in the database and returns the first result.
3259
+ * @param options Additional options to be used when performing the query.
3260
+ * @returns The first record that matches the query, or null if no record matched the query.
3261
+ */
3164
3262
  getFirst<Options extends RequiredBy<OmitBy<QueryOptions<Record>, 'pagination'>, 'columns'>>(options: Options): Promise<SelectedPick<Record, typeof options['columns']> | null>;
3165
3263
  /**
3166
3264
  * Builds a new query object adding a cache TTL in milliseconds.
@@ -3168,10 +3266,33 @@ declare class Query<Record extends XataRecord, Result extends XataRecord = Recor
3168
3266
  * @returns A new Query object.
3169
3267
  */
3170
3268
  cache(ttl: number): Query<Record, Result>;
3269
+ /**
3270
+ * Retrieve next page of records
3271
+ *
3272
+ * @returns A new page object.
3273
+ */
3171
3274
  nextPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3275
+ /**
3276
+ * Retrieve previous page of records
3277
+ *
3278
+ * @returns A new page object
3279
+ */
3172
3280
  previousPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3281
+ /**
3282
+ * Retrieve first page of records
3283
+ *
3284
+ * @returns A new page object
3285
+ */
3173
3286
  firstPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3287
+ /**
3288
+ * Retrieve last page of records
3289
+ *
3290
+ * @returns A new page object
3291
+ */
3174
3292
  lastPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3293
+ /**
3294
+ * @returns Boolean indicating if there is a next page
3295
+ */
3175
3296
  hasNextPage(): boolean;
3176
3297
  }
3177
3298
 
@@ -3183,7 +3304,7 @@ declare type PaginationQueryMeta = {
3183
3304
  };
3184
3305
  interface Paginable<Record extends XataRecord, Result extends XataRecord = Record> {
3185
3306
  meta: PaginationQueryMeta;
3186
- records: Result[];
3307
+ records: RecordArray<Result>;
3187
3308
  nextPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3188
3309
  previousPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
3189
3310
  firstPage(size?: number, offset?: number): Promise<Page<Record, Result>>;
@@ -3203,7 +3324,7 @@ declare class Page<Record extends XataRecord, Result extends XataRecord = Record
3203
3324
  /**
3204
3325
  * The set of results for this page.
3205
3326
  */
3206
- readonly records: Result[];
3327
+ readonly records: RecordArray<Result>;
3207
3328
  constructor(query: Query<Record, Result>, meta: PaginationQueryMeta, records?: Result[]);
3208
3329
  /**
3209
3330
  * Retrieves the next page of results.
@@ -3252,9 +3373,42 @@ declare type OffsetNavigationOptions = {
3252
3373
  offset?: number;
3253
3374
  };
3254
3375
  declare const PAGINATION_MAX_SIZE = 200;
3255
- declare const PAGINATION_DEFAULT_SIZE = 200;
3376
+ declare const PAGINATION_DEFAULT_SIZE = 20;
3256
3377
  declare const PAGINATION_MAX_OFFSET = 800;
3257
3378
  declare const PAGINATION_DEFAULT_OFFSET = 0;
3379
+ declare function isCursorPaginationOptions(options: Record<string, unknown> | undefined | null): options is CursorNavigationOptions;
3380
+ declare class RecordArray<Result extends XataRecord> extends Array<Result> {
3381
+ #private;
3382
+ constructor(page: Paginable<any, Result>, overrideRecords?: Result[]);
3383
+ /**
3384
+ * Retrieve next page of records
3385
+ *
3386
+ * @returns A new array of objects
3387
+ */
3388
+ nextPage(size?: number, offset?: number): Promise<RecordArray<Result>>;
3389
+ /**
3390
+ * Retrieve previous page of records
3391
+ *
3392
+ * @returns A new array of objects
3393
+ */
3394
+ previousPage(size?: number, offset?: number): Promise<RecordArray<Result>>;
3395
+ /**
3396
+ * Retrieve first page of records
3397
+ *
3398
+ * @returns A new array of objects
3399
+ */
3400
+ firstPage(size?: number, offset?: number): Promise<RecordArray<Result>>;
3401
+ /**
3402
+ * Retrieve last page of records
3403
+ *
3404
+ * @returns A new array of objects
3405
+ */
3406
+ lastPage(size?: number, offset?: number): Promise<RecordArray<Result>>;
3407
+ /**
3408
+ * @returns Boolean indicating if there is a next page
3409
+ */
3410
+ hasNextPage(): boolean;
3411
+ }
3258
3412
 
3259
3413
  /**
3260
3414
  * Common interface for performing operations on a table.
@@ -3280,6 +3434,12 @@ declare abstract class Repository<Data extends BaseData, Record extends XataReco
3280
3434
  * @returns The persisted record for the given id or null if the record could not be found.
3281
3435
  */
3282
3436
  abstract read(id: string): Promise<Readonly<SelectedPick<Record, ['*']> | null>>;
3437
+ /**
3438
+ * Queries multiple records from the table given their unique id.
3439
+ * @param ids The unique ids array.
3440
+ * @returns The persisted records for the given ids (if a record could not be found it is not returned).
3441
+ */
3442
+ abstract read(ids: string[]): Promise<Array<Readonly<SelectedPick<Record, ['*']>>>>;
3283
3443
  /**
3284
3444
  * Partially update a single record.
3285
3445
  * @param object An object with its id and the columns to be updated.
@@ -3352,7 +3512,8 @@ declare abstract class Repository<Data extends BaseData, Record extends XataReco
3352
3512
  * @returns The found records.
3353
3513
  */
3354
3514
  abstract search(query: string, options?: {
3355
- fuzziness?: number;
3515
+ fuzziness?: FuzzinessExpression;
3516
+ highlight?: HighlightExpression;
3356
3517
  filter?: Filter<Record>;
3357
3518
  }): Promise<SelectedPick<Record, ['*']>[]>;
3358
3519
  abstract query<Result extends XataRecord>(query: Query<Record, Result>): Promise<Page<Record, Result>>;
@@ -3369,6 +3530,7 @@ declare class RestRepository<Data extends BaseData, Record extends XataRecord =
3369
3530
  create(recordId: string, object: EditableData<Data>): Promise<SelectedPick<Record, ['*']>>;
3370
3531
  create(objects: EditableData<Data>[]): Promise<SelectedPick<Record, ['*']>[]>;
3371
3532
  read(recordId: string): Promise<SelectedPick<Record, ['*']> | null>;
3533
+ read(recordIds: string[]): Promise<Array<Readonly<SelectedPick<Record, ['*']>>>>;
3372
3534
  update(object: Partial<EditableData<Data>> & Identifiable): Promise<SelectedPick<Record, ['*']>>;
3373
3535
  update(recordId: string, object: Partial<EditableData<Data>>): Promise<SelectedPick<Record, ['*']>>;
3374
3536
  update(objects: Array<Partial<EditableData<Data>> & Identifiable>): Promise<SelectedPick<Record, ['*']>[]>;
@@ -3377,7 +3539,8 @@ declare class RestRepository<Data extends BaseData, Record extends XataRecord =
3377
3539
  createOrUpdate(objects: EditableData<Data>[]): Promise<SelectedPick<Record, ['*']>[]>;
3378
3540
  delete(a: string | Identifiable | Array<string | Identifiable>): Promise<void>;
3379
3541
  search(query: string, options?: {
3380
- fuzziness?: number;
3542
+ fuzziness?: FuzzinessExpression;
3543
+ highlight?: HighlightExpression;
3381
3544
  filter?: Filter<Record>;
3382
3545
  }): Promise<SelectedPick<Record, ['*']>[]>;
3383
3546
  query<Result extends XataRecord>(query: Query<Record, Result>): Promise<Page<Record, Result>>;
@@ -3472,18 +3635,24 @@ declare class SchemaPlugin<Schemas extends Record<string, BaseData>> extends Xat
3472
3635
  }
3473
3636
 
3474
3637
  declare type SearchOptions<Schemas extends Record<string, BaseData>, Tables extends StringKeys<Schemas>> = {
3475
- fuzziness?: number;
3476
- tables?: Tables[];
3638
+ fuzziness?: FuzzinessExpression;
3639
+ highlight?: HighlightExpression;
3640
+ tables?: Array<Tables | Values<{
3641
+ [Model in GetArrayInnerType<NonNullable<Tables[]>>]: {
3642
+ table: Model;
3643
+ filter?: Filter<SelectedPick<Schemas[Model] & SearchXataRecord, ['*']>>;
3644
+ };
3645
+ }>>;
3477
3646
  };
3478
3647
  declare type SearchPluginResult<Schemas extends Record<string, BaseData>> = {
3479
3648
  all: <Tables extends StringKeys<Schemas>>(query: string, options?: SearchOptions<Schemas, Tables>) => Promise<Values<{
3480
- [Model in GetArrayInnerType<NonNullable<NonNullable<typeof options>['tables']>>]: {
3649
+ [Model in ExtractTables<Schemas, Tables, GetArrayInnerType<NonNullable<NonNullable<typeof options>['tables']>>>]: {
3481
3650
  table: Model;
3482
3651
  record: Awaited<SelectedPick<Schemas[Model] & SearchXataRecord, ['*']>>;
3483
3652
  };
3484
3653
  }>[]>;
3485
3654
  byTable: <Tables extends StringKeys<Schemas>>(query: string, options?: SearchOptions<Schemas, Tables>) => Promise<{
3486
- [Model in GetArrayInnerType<NonNullable<NonNullable<typeof options>['tables']>>]?: Awaited<SelectedPick<Schemas[Model] & SearchXataRecord, ['*']>[]>;
3655
+ [Model in ExtractTables<Schemas, Tables, GetArrayInnerType<NonNullable<NonNullable<typeof options>['tables']>>>]?: Awaited<SelectedPick<Schemas[Model] & SearchXataRecord, ['*']>[]>;
3487
3656
  }>;
3488
3657
  };
3489
3658
  declare class SearchPlugin<Schemas extends Record<string, BaseData>> extends XataPlugin {
@@ -3492,11 +3661,19 @@ declare class SearchPlugin<Schemas extends Record<string, BaseData>> extends Xat
3492
3661
  constructor(db: SchemaPluginResult<Schemas>);
3493
3662
  build({ getFetchProps }: XataPluginOptions): SearchPluginResult<Schemas>;
3494
3663
  }
3495
- declare type SearchXataRecord = XataRecord & {
3496
- xata: {
3497
- table: string;
3664
+ declare type SearchXataRecord = XataRecord<SearchExtraProperties>;
3665
+ declare type SearchExtraProperties = {
3666
+ table: string;
3667
+ highlight?: {
3668
+ [key: string]: string[] | {
3669
+ [key: string]: any;
3670
+ };
3498
3671
  };
3499
3672
  };
3673
+ declare type ReturnTable<Table, Tables> = Table extends Tables ? Table : never;
3674
+ 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 {
3675
+ table: infer Table;
3676
+ } ? ReturnTable<Table, Tables> : never;
3500
3677
 
3501
3678
  declare type BranchStrategyValue = string | undefined | null;
3502
3679
  declare type BranchStrategyBuilder = () => BranchStrategyValue | Promise<BranchStrategyValue>;
@@ -3539,4 +3716,4 @@ declare class XataError extends Error {
3539
3716
  constructor(message: string, status: number);
3540
3717
  }
3541
3718
 
3542
- 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, 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 };
3719
+ 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, RecordArray, 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 };