@rebasepro/client 0.2.3 → 0.2.5

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/admin.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Transport } from "./transport";
1
+ import type { Transport } from "./transport";
2
2
  export interface AdminUser {
3
3
  uid: string;
4
4
  email: string;
@@ -9,13 +9,6 @@ export interface AdminUser {
9
9
  createdAt: string;
10
10
  updatedAt: string;
11
11
  }
12
- export interface RebaseRole {
13
- id: string;
14
- name: string;
15
- isAdmin: boolean;
16
- defaultPermissions: Record<string, unknown> | null;
17
- config: Record<string, unknown> | null;
18
- }
19
12
  export interface CreateAdminOptions {
20
13
  adminPath?: string;
21
14
  }
@@ -57,32 +50,6 @@ export declare function createAdmin(transport: Transport, options?: CreateAdminO
57
50
  deleteUser: (userId: string) => Promise<{
58
51
  success: boolean;
59
52
  }>;
60
- listRoles: () => Promise<{
61
- roles: RebaseRole[];
62
- }>;
63
- getRole: (roleId: string) => Promise<{
64
- role: RebaseRole;
65
- }>;
66
- createRole: (data: {
67
- id: string;
68
- name: string;
69
- isAdmin?: boolean;
70
- defaultPermissions?: Record<string, unknown>;
71
- config?: Record<string, unknown>;
72
- }) => Promise<{
73
- role: RebaseRole;
74
- }>;
75
- updateRole: (roleId: string, data: {
76
- name?: string;
77
- isAdmin?: boolean;
78
- defaultPermissions?: Record<string, unknown>;
79
- config?: Record<string, unknown>;
80
- }) => Promise<{
81
- role: RebaseRole;
82
- }>;
83
- deleteRole: (roleId: string) => Promise<{
84
- success: boolean;
85
- }>;
86
53
  bootstrap: () => Promise<{
87
54
  success: boolean;
88
55
  message: string;
package/dist/auth.d.ts CHANGED
@@ -24,7 +24,9 @@ export type AuthChangeEvent = "SIGNED_IN" | "SIGNED_OUT" | "TOKEN_REFRESHED" | "
24
24
  export interface AuthConfig {
25
25
  needsSetup: boolean;
26
26
  registrationEnabled: boolean;
27
- emailServiceEnabled: boolean;
27
+ emailServiceEnabled?: boolean;
28
+ passwordReset?: boolean;
29
+ emailVerification?: boolean;
28
30
  enabledProviders: string[];
29
31
  }
30
32
  export interface AuthStorage {
package/dist/index.d.ts CHANGED
@@ -21,7 +21,9 @@ export interface CreateRebaseClientOptions extends RebaseClientConfig {
21
21
  }
22
22
  import { RebaseWebSocketClient } from "./websocket";
23
23
  import { RebaseClient as BaseRebaseClient, RebaseData, StorageSource } from "@rebasepro/types";
24
- export type RebaseClient<DB = Record<string, unknown>> = BaseRebaseClient<DB> & {
24
+ export type { Entity, FindResponse } from "@rebasepro/types";
25
+ type KebabToCamelCase<S extends string> = S extends `${infer T}-${infer U}` ? `${T}${Capitalize<KebabToCamelCase<U>>}` : S;
26
+ export type RebaseClient<DB = Record<string, unknown>> = Omit<BaseRebaseClient<DB>, "data"> & {
25
27
  setToken: (token: string | null) => void;
26
28
  setAuthTokenGetter: (getter: () => Promise<string | null>) => void;
27
29
  setOnUnauthorized: (handler: () => Promise<boolean>) => void;
@@ -33,14 +35,14 @@ export type RebaseClient<DB = Record<string, unknown>> = BaseRebaseClient<DB> &
33
35
  ws?: RebaseWebSocketClient;
34
36
  storage?: StorageSource;
35
37
  call: <T = unknown>(endpoint: string, payload?: unknown) => Promise<T>;
36
- data: RebaseData & {
37
- collection<K extends keyof DB>(slug: Extract<K, string>): CollectionClient<DB[K] extends {
38
+ data: {
39
+ collection<S extends string>(slug: S): CollectionClient<KebabToCamelCase<S> extends keyof DB ? (DB[KebabToCamelCase<S>] extends {
38
40
  Row: infer R extends Record<string, unknown>;
39
- } ? R : Record<string, unknown>>;
41
+ } ? R : Record<string, unknown>) : Record<string, unknown>>;
40
42
  } & {
41
43
  [K in keyof DB]: CollectionClient<DB[K] extends {
42
44
  Row: infer R extends Record<string, unknown>;
43
45
  } ? R : Record<string, unknown>>;
44
- };
46
+ } & RebaseData;
45
47
  };
46
48
  export declare function createRebaseClient<DB = Record<string, unknown>>(options: CreateRebaseClientOptions): RebaseClient<DB>;
package/dist/index.es.js CHANGED
@@ -141,6 +141,13 @@ function createTransport(config) {
141
141
  } catch (e) {
142
142
  }
143
143
  }
144
+ const getErrorField = (obj, field) => {
145
+ const err = obj?.error;
146
+ if (err && typeof err === "object" && err !== null && field in err) {
147
+ return err[field];
148
+ }
149
+ return obj?.[field];
150
+ };
144
151
  if (res.status === 401 && onUnauthorizedHandler) {
145
152
  const retried = await onUnauthorizedHandler();
146
153
  if (retried) {
@@ -176,9 +183,9 @@ function createTransport(config) {
176
183
  }
177
184
  throw new RebaseApiError(
178
185
  retryRes.status,
179
- retryBody?.error?.message || retryBody?.message || fallbackMessage || `Request failed with status ${retryRes.status}`,
180
- retryBody?.error?.code || retryBody?.code,
181
- retryBody?.error?.details || retryBody?.details
186
+ String(getErrorField(retryBody, "message") || fallbackMessage || `Request failed with status ${retryRes.status}`),
187
+ getErrorField(retryBody, "code"),
188
+ getErrorField(retryBody, "details")
182
189
  );
183
190
  }
184
191
  return retryBody;
@@ -192,9 +199,9 @@ function createTransport(config) {
192
199
  }
193
200
  throw new RebaseApiError(
194
201
  res.status,
195
- body?.error?.message || body?.message || fallbackMessage || `Request failed with status ${res.status}`,
196
- body?.error?.code || body?.code,
197
- body?.error?.details || body?.details
202
+ String(getErrorField(body, "message") || fallbackMessage || `Request failed with status ${res.status}`),
203
+ getErrorField(body, "code"),
204
+ getErrorField(body, "details")
198
205
  );
199
206
  }
200
207
  return body;
@@ -735,29 +742,6 @@ function createAdmin(transport, options) {
735
742
  method: "DELETE"
736
743
  });
737
744
  }
738
- async function listRoles() {
739
- return transport.request(adminPath + "/roles", { method: "GET" });
740
- }
741
- async function getRole(roleId) {
742
- return transport.request(adminPath + "/roles/" + encodeURIComponent(roleId), { method: "GET" });
743
- }
744
- async function createRole(data) {
745
- return transport.request(adminPath + "/roles", {
746
- method: "POST",
747
- body: JSON.stringify(data)
748
- });
749
- }
750
- async function updateRole(roleId, data) {
751
- return transport.request(adminPath + "/roles/" + encodeURIComponent(roleId), {
752
- method: "PUT",
753
- body: JSON.stringify(data)
754
- });
755
- }
756
- async function deleteRole(roleId) {
757
- return transport.request(adminPath + "/roles/" + encodeURIComponent(roleId), {
758
- method: "DELETE"
759
- });
760
- }
761
745
  async function bootstrap() {
762
746
  return transport.request(adminPath + "/bootstrap", {
763
747
  method: "POST"
@@ -770,11 +754,6 @@ function createAdmin(transport, options) {
770
754
  createUser,
771
755
  updateUser,
772
756
  deleteUser,
773
- listRoles,
774
- getRole,
775
- createRole,
776
- updateRole,
777
- deleteRole,
778
757
  bootstrap
779
758
  };
780
759
  }