@xata.io/client 0.13.1 → 0.13.4

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
@@ -6,6 +6,9 @@ declare type FetchImpl = (url: string, init?: {
6
6
  ok: boolean;
7
7
  status: number;
8
8
  json(): Promise<any>;
9
+ headers?: {
10
+ get(name: string): string | null;
11
+ };
9
12
  }>;
10
13
  declare type WorkspaceApiUrlBuilder = (path: string, pathParams: Record<string, string>) => string;
11
14
  declare type FetcherExtraProps = {
@@ -2867,25 +2870,24 @@ declare type SelectableColumn<O, RecursivePath extends any[] = []> = '*' | 'id'
2867
2870
  declare type SelectedPick<O extends XataRecord, Key extends SelectableColumn<O>[]> = XataRecord & UnionToIntersection<Values<{
2868
2871
  [K in Key[number]]: NestedValueAtColumn<O, K> & XataRecord;
2869
2872
  }>>;
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;
2873
+ 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<NonNullable<O[K]> extends infer Item ? Item extends Record<string, any> ? V extends SelectableColumn<Item> ? {
2874
+ V: ValueAtColumn<Item, V>;
2875
+ } : never : O[K] : never> : never : never;
2873
2876
  declare type MAX_RECURSION = 5;
2874
2877
  declare type NestedColumns<O, RecursivePath extends any[]> = RecursivePath['length'] extends MAX_RECURSION ? never : If<IsObject<O>, Values<{
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 : RemoveNullable<O[K]> extends Date ? K : `${K}.${StringKeys<RemoveNullable<O[K]>> | '*'}`, // This allows usage of objects that are not links
2877
- K>>;
2878
+ [K in DataProps<O>]: NonNullable<O[K]> extends infer Item ? If<IsArray<Item>, K, // If the property is an array, we stop recursion. We don't support object arrays yet
2879
+ If<IsObject<Item>, Item extends XataRecord ? SelectableColumn<Item, [...RecursivePath, Item]> extends infer Column ? Column extends string ? K | `${K}.${Column}` : never : never : Item extends Date ? K : `${K}.${StringKeys<Item> | '*'}`, // This allows usage of objects that are not links
2880
+ K>> : never;
2878
2881
  }>, never>;
2879
2882
  declare type DataProps<O> = Exclude<StringKeys<O>, StringKeys<XataRecord>>;
2880
2883
  declare type NestedValueAtColumn<O, Key extends SelectableColumn<O>> = Key extends `${infer N}.${infer M}` ? N extends DataProps<O> ? {
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;
2884
+ [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;
2882
2885
  } : unknown : Key extends DataProps<O> ? {
2883
- [K in Key]: RemoveNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], SelectedPick<RemoveNullable<O[K]>, ['*']>> : O[K];
2886
+ [K in Key]: NonNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], SelectedPick<NonNullable<O[K]>, ['*']>> : O[K];
2884
2887
  } : Key extends '*' ? {
2885
- [K in StringKeys<O>]: RemoveNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], Link<RemoveNullable<O[K]>>> : O[K];
2888
+ [K in StringKeys<O>]: NonNullable<O[K]> extends XataRecord ? ForwardNullable<O[K], Link<NonNullable<O[K]>>> : O[K];
2886
2889
  } : unknown;
2887
- declare type RemoveNullable<T> = T extends null | undefined ? never : T;
2888
- declare type ForwardNullable<T, R> = T extends RemoveNullable<T> ? R : R | null;
2890
+ declare type ForwardNullable<T, R> = T extends NonNullable<T> ? R : R | null;
2889
2891
 
2890
2892
  /**
2891
2893
  * Represents an identifiable record from the database.
@@ -3380,6 +3382,7 @@ declare function isCursorPaginationOptions(options: Record<string, unknown> | un
3380
3382
  declare class RecordArray<Result extends XataRecord> extends Array<Result> {
3381
3383
  #private;
3382
3384
  constructor(page: Paginable<any, Result>, overrideRecords?: Result[]);
3385
+ static parseConstructorParams(...args: any[]): any[];
3383
3386
  /**
3384
3387
  * Retrieve next page of records
3385
3388
  *
package/dist/index.mjs CHANGED
@@ -17,7 +17,8 @@ function toBase64(value) {
17
17
  try {
18
18
  return btoa(value);
19
19
  } catch (err) {
20
- return Buffer.from(value).toString("base64");
20
+ const buf = Buffer;
21
+ return buf.from(value).toString("base64");
21
22
  }
22
23
  }
23
24
 
@@ -73,7 +74,7 @@ function getFetchImplementation(userFetch) {
73
74
  return fetchImpl;
74
75
  }
75
76
 
76
- const VERSION = "0.13.1";
77
+ const VERSION = "0.13.4";
77
78
 
78
79
  class ErrorWithCause extends Error {
79
80
  constructor(message, options) {
@@ -81,15 +82,20 @@ class ErrorWithCause extends Error {
81
82
  }
82
83
  }
83
84
  class FetcherError extends ErrorWithCause {
84
- constructor(status, data) {
85
+ constructor(status, data, requestId) {
85
86
  super(getMessage(data));
86
87
  this.status = status;
87
88
  this.errors = isBulkError(data) ? data.errors : void 0;
89
+ this.requestId = requestId;
88
90
  if (data instanceof Error) {
89
91
  this.stack = data.stack;
90
92
  this.cause = data.cause;
91
93
  }
92
94
  }
95
+ toString() {
96
+ const error = super.toString();
97
+ return `[${this.status}] (${this.requestId ?? "Unknown"}): ${error}`;
98
+ }
93
99
  }
94
100
  function isBulkError(error) {
95
101
  return isObject(error) && Array.isArray(error.errors);
@@ -166,14 +172,15 @@ async function fetch$1({
166
172
  if (response.status === 204) {
167
173
  return {};
168
174
  }
175
+ const requestId = response.headers?.get("x-request-id") ?? void 0;
169
176
  try {
170
177
  const jsonResponse = await response.json();
171
178
  if (response.ok) {
172
179
  return jsonResponse;
173
180
  }
174
- throw new FetcherError(response.status, jsonResponse);
181
+ throw new FetcherError(response.status, jsonResponse, requestId);
175
182
  } catch (error) {
176
- throw new FetcherError(response.status, error);
183
+ throw new FetcherError(response.status, error, requestId);
177
184
  }
178
185
  }
179
186
 
@@ -984,10 +991,20 @@ function isCursorPaginationOptions(options) {
984
991
  }
985
992
  const _RecordArray = class extends Array {
986
993
  constructor(page, overrideRecords) {
987
- super(...overrideRecords ?? page.records);
994
+ super(..._RecordArray.parseConstructorParams(page, overrideRecords));
988
995
  __privateAdd$6(this, _page, void 0);
989
996
  __privateSet$5(this, _page, page);
990
997
  }
998
+ static parseConstructorParams(...args) {
999
+ if (args.length === 1 && typeof args[0] === "number") {
1000
+ return new Array(args[0]);
1001
+ }
1002
+ if (args.length <= 2 && isObject(args[0]?.meta) && Array.isArray(args[1] ?? [])) {
1003
+ const result = args[1] ?? args[0].records ?? [];
1004
+ return new Array(...result);
1005
+ }
1006
+ return new Array(...args);
1007
+ }
991
1008
  async nextPage(size, offset) {
992
1009
  const newPage = await __privateGet$6(this, _page).nextPage(size, offset);
993
1010
  return new _RecordArray(newPage);