@taruvi/refine-providers 1.1.3 → 1.1.6

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.cts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { DataProvider, AuthProvider, AccessControlProvider, MetaQuery, CrudFilter, CrudSort, Pagination } from '@refinedev/core';
2
- import { Client, UserGroup, UserPermission, UserRole } from '@taruvi/sdk';
3
- export { Analytics, AnalyticsRequest, AnalyticsResponse, App, Auth, Client, Functions, Policy, RoleResponse, TaruviConfig, User, UserDataResponse } from '@taruvi/sdk';
2
+ import { Client } from '@taruvi/sdk';
4
3
 
5
4
  /**
6
5
  * Creates a Refine DataProvider for Taruvi database operations.
@@ -64,7 +63,7 @@ declare function appDataProvider(client: Client): DataProvider;
64
63
  * Supported resources:
65
64
  * - "users" (getList): Fetch list of users with filtering/pagination
66
65
  * - "users" (getOne): Fetch a specific user by username/id
67
- * - "me" (getOne): Fetch current user details
66
+ * - "roles" (getList): Fetch roles for a specific user (requires meta.username)
68
67
  *
69
68
  * @example
70
69
  * ```typescript
@@ -87,11 +86,11 @@ declare function appDataProvider(client: Client): DataProvider;
87
86
  * id: "john_doe",
88
87
  * });
89
88
  *
90
- * // Get current user details
91
- * const { data } = useOne({
89
+ * // Get roles for a specific user
90
+ * const { data } = useList({
92
91
  * dataProviderName: "user",
93
- * resource: "me",
94
- * id: "", // id is ignored for "me" resource
92
+ * resource: "roles",
93
+ * meta: { username: "john_doe" },
95
94
  * });
96
95
  * ```
97
96
  */
@@ -106,28 +105,6 @@ interface AnalyticsMeta {
106
105
  }
107
106
  declare function analyticsDataProvider(client: Client): DataProvider;
108
107
 
109
- /**
110
- * User identity returned from getCurrentUser API
111
- */
112
- interface TaruviUser {
113
- id: number;
114
- username: string;
115
- email: string;
116
- first_name: string;
117
- last_name: string;
118
- full_name: string;
119
- is_active: boolean;
120
- is_staff: boolean;
121
- is_superuser: boolean;
122
- is_deleted: boolean;
123
- date_joined: string;
124
- last_login: string;
125
- groups: UserGroup[];
126
- user_permissions: UserPermission[];
127
- attributes: Record<string, unknown>;
128
- missing_attributes: string[];
129
- roles: UserRole[];
130
- }
131
108
  /**
132
109
  * Login params - supports both redirect flow and credentials flow
133
110
  */
@@ -280,4 +257,4 @@ declare function buildQueryString(params?: Record<string, unknown>): string;
280
257
  */
281
258
  declare function handleError(error: unknown): never;
282
259
 
283
- export { type AnalyticsMeta, type FunctionMeta, type LoginParams, type LogoutParams, REFINE_OPERATOR_MAP, type RegisterParams, type StorageUploadVariables, type TaruviListResponse, type TaruviMeta, type TaruviUser, accessControlProvider, analyticsDataProvider, appDataProvider, authProvider, buildQueryString, buildRefineQueryParams, convertRefineFilters, convertRefinePagination, convertRefineSorters, dataProvider, functionsDataProvider, handleError, storageDataProvider, userDataProvider };
260
+ export { type AnalyticsMeta, type FunctionMeta, type LoginParams, type LogoutParams, REFINE_OPERATOR_MAP, type RegisterParams, type StorageUploadVariables, type TaruviListResponse, type TaruviMeta, accessControlProvider, analyticsDataProvider, appDataProvider, authProvider, buildQueryString, buildRefineQueryParams, convertRefineFilters, convertRefinePagination, convertRefineSorters, dataProvider, functionsDataProvider, handleError, storageDataProvider, userDataProvider };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { DataProvider, AuthProvider, AccessControlProvider, MetaQuery, CrudFilter, CrudSort, Pagination } from '@refinedev/core';
2
- import { Client, UserGroup, UserPermission, UserRole } from '@taruvi/sdk';
3
- export { Analytics, AnalyticsRequest, AnalyticsResponse, App, Auth, Client, Functions, Policy, RoleResponse, TaruviConfig, User, UserDataResponse } from '@taruvi/sdk';
2
+ import { Client } from '@taruvi/sdk';
4
3
 
5
4
  /**
6
5
  * Creates a Refine DataProvider for Taruvi database operations.
@@ -64,7 +63,7 @@ declare function appDataProvider(client: Client): DataProvider;
64
63
  * Supported resources:
65
64
  * - "users" (getList): Fetch list of users with filtering/pagination
66
65
  * - "users" (getOne): Fetch a specific user by username/id
67
- * - "me" (getOne): Fetch current user details
66
+ * - "roles" (getList): Fetch roles for a specific user (requires meta.username)
68
67
  *
69
68
  * @example
70
69
  * ```typescript
@@ -87,11 +86,11 @@ declare function appDataProvider(client: Client): DataProvider;
87
86
  * id: "john_doe",
88
87
  * });
89
88
  *
90
- * // Get current user details
91
- * const { data } = useOne({
89
+ * // Get roles for a specific user
90
+ * const { data } = useList({
92
91
  * dataProviderName: "user",
93
- * resource: "me",
94
- * id: "", // id is ignored for "me" resource
92
+ * resource: "roles",
93
+ * meta: { username: "john_doe" },
95
94
  * });
96
95
  * ```
97
96
  */
@@ -106,28 +105,6 @@ interface AnalyticsMeta {
106
105
  }
107
106
  declare function analyticsDataProvider(client: Client): DataProvider;
108
107
 
109
- /**
110
- * User identity returned from getCurrentUser API
111
- */
112
- interface TaruviUser {
113
- id: number;
114
- username: string;
115
- email: string;
116
- first_name: string;
117
- last_name: string;
118
- full_name: string;
119
- is_active: boolean;
120
- is_staff: boolean;
121
- is_superuser: boolean;
122
- is_deleted: boolean;
123
- date_joined: string;
124
- last_login: string;
125
- groups: UserGroup[];
126
- user_permissions: UserPermission[];
127
- attributes: Record<string, unknown>;
128
- missing_attributes: string[];
129
- roles: UserRole[];
130
- }
131
108
  /**
132
109
  * Login params - supports both redirect flow and credentials flow
133
110
  */
@@ -280,4 +257,4 @@ declare function buildQueryString(params?: Record<string, unknown>): string;
280
257
  */
281
258
  declare function handleError(error: unknown): never;
282
259
 
283
- export { type AnalyticsMeta, type FunctionMeta, type LoginParams, type LogoutParams, REFINE_OPERATOR_MAP, type RegisterParams, type StorageUploadVariables, type TaruviListResponse, type TaruviMeta, type TaruviUser, accessControlProvider, analyticsDataProvider, appDataProvider, authProvider, buildQueryString, buildRefineQueryParams, convertRefineFilters, convertRefinePagination, convertRefineSorters, dataProvider, functionsDataProvider, handleError, storageDataProvider, userDataProvider };
260
+ export { type AnalyticsMeta, type FunctionMeta, type LoginParams, type LogoutParams, REFINE_OPERATOR_MAP, type RegisterParams, type StorageUploadVariables, type TaruviListResponse, type TaruviMeta, accessControlProvider, analyticsDataProvider, appDataProvider, authProvider, buildQueryString, buildRefineQueryParams, convertRefineFilters, convertRefinePagination, convertRefineSorters, dataProvider, functionsDataProvider, handleError, storageDataProvider, userDataProvider };
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { Database, Storage, Functions, App, User, Analytics, Auth, Policy } from '@taruvi/sdk';
2
- export { Analytics, App, Auth, Client, Functions, Policy, User } from '@taruvi/sdk';
3
2
  import DataLoader2 from 'dataloader';
4
3
 
5
4
  // src/dataProvider.ts
@@ -174,21 +173,26 @@ function dataProvider(client) {
174
173
  return { data };
175
174
  },
176
175
  custom: async (params) => {
177
- const { url, method, payload } = params;
178
- const fullUrl = url.startsWith("http") ? url : `${baseApiUrl}${url}`;
176
+ const { url, method, payload, query } = params;
179
177
  let data;
180
178
  switch (method.toLowerCase()) {
181
- case "get":
182
- data = await client.httpClient.get(fullUrl);
179
+ case "get": {
180
+ let requestUrl = url;
181
+ if (query && Object.keys(query).length > 0) {
182
+ const queryString = new URLSearchParams(query).toString();
183
+ requestUrl = `${url}${url.includes("?") ? "&" : "?"}${queryString}`;
184
+ }
185
+ data = await client.httpClient.get(requestUrl);
183
186
  break;
187
+ }
184
188
  case "post":
185
- data = await client.httpClient.post(fullUrl, payload);
189
+ data = await client.httpClient.post(url, payload);
186
190
  break;
187
191
  case "put":
188
- data = await client.httpClient.put(fullUrl, payload);
192
+ data = await client.httpClient.put(url, payload);
189
193
  break;
190
194
  case "delete":
191
- data = await client.httpClient.delete(fullUrl);
195
+ data = await client.httpClient.delete(url);
192
196
  break;
193
197
  default:
194
198
  throw new Error(`Unsupported HTTP method: ${method}`);
@@ -396,21 +400,26 @@ function storageDataProvider(client) {
396
400
  return { data: [data] };
397
401
  },
398
402
  custom: async (params) => {
399
- const { url, method, payload } = params;
400
- const fullUrl = url.startsWith("http") ? url : `${baseApiUrl}${url}`;
403
+ const { url, method, payload, query } = params;
401
404
  let data;
402
405
  switch (method.toLowerCase()) {
403
- case "get":
404
- data = await client.httpClient.get(fullUrl);
406
+ case "get": {
407
+ let requestUrl = url;
408
+ if (query && Object.keys(query).length > 0) {
409
+ const queryString = new URLSearchParams(query).toString();
410
+ requestUrl = `${url}${url.includes("?") ? "&" : "?"}${queryString}`;
411
+ }
412
+ data = await client.httpClient.get(requestUrl);
405
413
  break;
414
+ }
406
415
  case "post":
407
- data = await client.httpClient.post(fullUrl, payload);
416
+ data = await client.httpClient.post(url, payload);
408
417
  break;
409
418
  case "put":
410
- data = await client.httpClient.put(fullUrl, payload);
419
+ data = await client.httpClient.put(url, payload);
411
420
  break;
412
421
  case "delete":
413
- data = await client.httpClient.delete(fullUrl);
422
+ data = await client.httpClient.delete(url);
414
423
  break;
415
424
  default:
416
425
  throw new Error(`Unsupported HTTP method: ${method}`);
@@ -596,7 +605,7 @@ function userDataProvider(client) {
596
605
  const baseApiUrl = `${config.baseUrl}/api/apps/${config.appSlug}`;
597
606
  return {
598
607
  getList: async (params) => {
599
- const { resource, pagination, filters, sorters } = params;
608
+ const { resource, pagination, filters, sorters, meta } = params;
600
609
  if (resource === "users") {
601
610
  const user = new User(client);
602
611
  const userFilters = buildUserListFilters(filters, sorters, pagination);
@@ -606,18 +615,29 @@ function userDataProvider(client) {
606
615
  total: response.total
607
616
  };
608
617
  }
609
- throw new Error(`Unknown user resource for getList: ${resource}. Supported resources: users`);
618
+ if (resource === "roles") {
619
+ const username = meta?.username;
620
+ if (!username) {
621
+ throw new Error("roles resource requires meta.username");
622
+ }
623
+ const user = new User(client);
624
+ const response = await user.getUser(username);
625
+ const roles = response.roles || [];
626
+ return {
627
+ data: roles,
628
+ total: roles.length
629
+ };
630
+ }
631
+ throw new Error(`Unknown user resource for getList: ${resource}. Supported: users, roles`);
610
632
  },
611
633
  getOne: async (params) => {
612
634
  const { resource, id } = params;
613
635
  if (resource === "users") {
614
636
  const user = new User(client);
615
637
  const response = await user.getUser(String(id));
616
- return {
617
- data: response
618
- };
638
+ return { data: response };
619
639
  }
620
- throw new Error(`Unknown user resource for getOne: ${resource}. Supported resources: me, users`);
640
+ throw new Error(`Unknown user resource for getOne: ${resource}. Supported: users`);
621
641
  },
622
642
  getApiUrl: () => baseApiUrl,
623
643
  create: async (params) => {