@sales-planner/react 0.2.1 → 0.2.3
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/README.md +88 -1
- package/dist/admin.d.ts +57 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +266 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/keys.d.ts +14 -0
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +16 -0
- package/dist/specialized.js +7 -7
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -132,6 +132,70 @@ function ImportSuppliers() {
|
|
|
132
132
|
| `useComputedViews(ctx, options?)` | query | List materialized views |
|
|
133
133
|
| `useRefreshAllViews(ctx, options?)` | mutation | Refresh all views (auto-invalidates `skuMetrics`) |
|
|
134
134
|
|
|
135
|
+
### Admin hooks
|
|
136
|
+
|
|
137
|
+
#### Tenants
|
|
138
|
+
|
|
139
|
+
| Hook | Kind | Description |
|
|
140
|
+
| --- | --- | --- |
|
|
141
|
+
| `useTenants(query?)` | query | Paginated list (filterable by `owner_id`) |
|
|
142
|
+
| `useTenantById(id)` | query | Single tenant |
|
|
143
|
+
| `useCreateTenant()` | mutation | Create tenant (SysAdmin) |
|
|
144
|
+
| `useCreateTenantWithShopAndUser()` | mutation | Create tenant + shop + user + API key (SysAdmin) |
|
|
145
|
+
| `useUpdateTenant()` | mutation | Update tenant (`{ id, data }`) |
|
|
146
|
+
| `useDeleteTenant()` | mutation | Delete tenant (SysAdmin) |
|
|
147
|
+
|
|
148
|
+
#### Users
|
|
149
|
+
|
|
150
|
+
| Hook | Kind | Description |
|
|
151
|
+
| --- | --- | --- |
|
|
152
|
+
| `useUsers(query?)` | query | Paginated list (filterable by `tenantId`) |
|
|
153
|
+
| `useUserById(id)` | query | Single user |
|
|
154
|
+
| `useCreateUser()` | mutation | Create user |
|
|
155
|
+
| `useDeleteUser()` | mutation | Delete user |
|
|
156
|
+
|
|
157
|
+
#### Shops
|
|
158
|
+
|
|
159
|
+
| Hook | Kind | Description |
|
|
160
|
+
| --- | --- | --- |
|
|
161
|
+
| `useShops(query?)` | query | Paginated list (filterable by `tenantId`) |
|
|
162
|
+
| `useShopById(id)` | query | Single shop |
|
|
163
|
+
| `useCreateShop()` | mutation | Create shop |
|
|
164
|
+
| `useUpdateShop()` | mutation | Update shop (`{ id, data }`) |
|
|
165
|
+
|
|
166
|
+
#### Roles (predefined, read-only)
|
|
167
|
+
|
|
168
|
+
| Hook | Kind | Description |
|
|
169
|
+
| --- | --- | --- |
|
|
170
|
+
| `useRoles(query?)` | query | Paginated list |
|
|
171
|
+
| `useRoleById(id)` | query | Single role |
|
|
172
|
+
|
|
173
|
+
#### User Roles
|
|
174
|
+
|
|
175
|
+
| Hook | Kind | Description |
|
|
176
|
+
| --- | --- | --- |
|
|
177
|
+
| `useUserRoles(query?)` | query | Paginated list (filterable by `userId`, `roleId`, `tenantId`) |
|
|
178
|
+
| `useUserRoleById(id)` | query | Single user-role assignment |
|
|
179
|
+
| `useCreateUserRole()` | mutation | Assign role to user |
|
|
180
|
+
| `useDeleteUserRole()` | mutation | Remove role from user |
|
|
181
|
+
|
|
182
|
+
#### User Shops
|
|
183
|
+
|
|
184
|
+
| Hook | Kind | Description |
|
|
185
|
+
| --- | --- | --- |
|
|
186
|
+
| `useUserShops(query?)` | query | List (filterable by `userId`, `shopId`, `tenantId`) |
|
|
187
|
+
| `useUserShopById(id)` | query | Single user-shop assignment |
|
|
188
|
+
| `useCreateUserShop()` | mutation | Assign user to shop |
|
|
189
|
+
| `useDeleteUserShop()` | mutation | Remove user from shop |
|
|
190
|
+
|
|
191
|
+
#### API Keys
|
|
192
|
+
|
|
193
|
+
| Hook | Kind | Description |
|
|
194
|
+
| --- | --- | --- |
|
|
195
|
+
| `useApiKeys(query?)` | query | Paginated list (filterable by `user_id`) |
|
|
196
|
+
| `useCreateApiKey()` | mutation | Create API key |
|
|
197
|
+
| `useRevokeApiKey()` | mutation | Revoke (delete) API key |
|
|
198
|
+
|
|
135
199
|
### Utilities
|
|
136
200
|
|
|
137
201
|
| Export | Description |
|
|
@@ -162,7 +226,21 @@ Available keys:
|
|
|
162
226
|
| --- | --- | --- |
|
|
163
227
|
| `queryKeys.me()` | — | Current user |
|
|
164
228
|
| `queryKeys.metadata()` | — | Entity metadata |
|
|
165
|
-
| `queryKeys.
|
|
229
|
+
| `queryKeys.tenants(query?)` | pagination + owner_id | Tenants list |
|
|
230
|
+
| `queryKeys.tenantDetail(id)` | id | Single tenant |
|
|
231
|
+
| `queryKeys.users(query?)` | pagination + tenantId | Users list |
|
|
232
|
+
| `queryKeys.userDetail(id)` | id | Single user |
|
|
233
|
+
| `queryKeys.shops(query?)` | pagination + tenantId | Shops list |
|
|
234
|
+
| `queryKeys.shopDetail(id)` | id | Single shop |
|
|
235
|
+
| `queryKeys.roles(query?)` | pagination | Roles list |
|
|
236
|
+
| `queryKeys.roleDetail(id)` | id | Single role |
|
|
237
|
+
| `queryKeys.userRoles(query?)` | userId, roleId, tenantId | User-role assignments |
|
|
238
|
+
| `queryKeys.userRoleDetail(id)` | id | Single user-role |
|
|
239
|
+
| `queryKeys.userShops(query?)` | userId, shopId, tenantId | User-shop assignments |
|
|
240
|
+
| `queryKeys.userShopDetail(id)` | id | Single user-shop |
|
|
241
|
+
| `queryKeys.apiKeys(query?)` | pagination + user_id | API keys list |
|
|
242
|
+
| `queryKeys.apiKeyDetail(id)` | id | Single API key |
|
|
243
|
+
| `queryKeys.entity(name, ctx)` | entity name, shop context | Root key for a data entity |
|
|
166
244
|
| `queryKeys.entityList(name, ctx, query?)` | entity, ctx, pagination | Paginated list |
|
|
167
245
|
| `queryKeys.entityDetail(name, ctx, id)` | entity, ctx, id | Single entity |
|
|
168
246
|
| `queryKeys.entityByCode(name, ctx, code)` | entity, ctx, code | Code lookup |
|
|
@@ -177,3 +255,12 @@ Available keys:
|
|
|
177
255
|
## Cache Invalidation
|
|
178
256
|
|
|
179
257
|
All mutations automatically invalidate their related query caches. `useRefreshAllViews` additionally invalidates `skuMetrics`.
|
|
258
|
+
|
|
259
|
+
## Related Packages
|
|
260
|
+
|
|
261
|
+
- `@sales-planner/shared` — TypeScript types
|
|
262
|
+
- `@sales-planner/http-client` — HTTP client (included as dependency)
|
|
263
|
+
|
|
264
|
+
## License
|
|
265
|
+
|
|
266
|
+
MIT
|
package/dist/admin.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { Tenant, CreateTenantRequest, UpdateTenantRequest, CreateTenantWithShopRequest, TenantWithShopAndApiKey, PaginatedResponse, PaginationQuery, User, CreateUserRequest, Shop, CreateShopRequest, UpdateShopRequest, Role, UserRoleResponse, CreateUserRoleRequest, GetUserRolesQuery, UserShop, CreateUserShopRequest, GetUserShopsQuery, ApiKey, CreateApiKeyRequest } from '@sales-planner/shared';
|
|
3
|
+
interface GetTenantsQuery extends PaginationQuery {
|
|
4
|
+
owner_id?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function useTenants(query?: GetTenantsQuery, options?: Omit<UseQueryOptions<PaginatedResponse<Tenant>>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedResponse<Tenant>, Error>;
|
|
7
|
+
export declare function useTenantById(id: number, options?: Omit<UseQueryOptions<Tenant>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<Tenant, Error>;
|
|
8
|
+
export declare function useCreateTenant(options?: Omit<UseMutationOptions<Tenant, Error, CreateTenantRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<Tenant, Error, CreateTenantRequest, unknown>;
|
|
9
|
+
export declare function useCreateTenantWithShopAndUser(options?: Omit<UseMutationOptions<TenantWithShopAndApiKey, Error, CreateTenantWithShopRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<TenantWithShopAndApiKey, Error, import("@sales-planner/shared").CreateTenantWithShopDto, unknown>;
|
|
10
|
+
export declare function useUpdateTenant(options?: Omit<UseMutationOptions<Tenant, Error, {
|
|
11
|
+
id: number;
|
|
12
|
+
data: UpdateTenantRequest;
|
|
13
|
+
}>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<Tenant, Error, {
|
|
14
|
+
id: number;
|
|
15
|
+
data: UpdateTenantRequest;
|
|
16
|
+
}, unknown>;
|
|
17
|
+
export declare function useDeleteTenant(options?: Omit<UseMutationOptions<void, Error, number>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, number, unknown>;
|
|
18
|
+
interface GetUsersQuery extends PaginationQuery {
|
|
19
|
+
tenantId?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function useUsers(query?: GetUsersQuery, options?: Omit<UseQueryOptions<PaginatedResponse<User>>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedResponse<User>, Error>;
|
|
22
|
+
export declare function useUserById(id: number, options?: Omit<UseQueryOptions<User>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<User, Error>;
|
|
23
|
+
export declare function useCreateUser(options?: Omit<UseMutationOptions<User, Error, CreateUserRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<User, Error, import("@sales-planner/shared").CreateUserDto, unknown>;
|
|
24
|
+
export declare function useDeleteUser(options?: Omit<UseMutationOptions<void, Error, number>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, number, unknown>;
|
|
25
|
+
interface GetShopsQuery extends PaginationQuery {
|
|
26
|
+
tenantId?: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function useShops(query?: GetShopsQuery, options?: Omit<UseQueryOptions<PaginatedResponse<Shop>>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedResponse<Shop>, Error>;
|
|
29
|
+
export declare function useShopById(id: number, options?: Omit<UseQueryOptions<Shop>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<Shop, Error>;
|
|
30
|
+
export declare function useCreateShop(options?: Omit<UseMutationOptions<Shop, Error, CreateShopRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<Shop, Error, import("@sales-planner/shared").CreateShopDto, unknown>;
|
|
31
|
+
export declare function useUpdateShop(options?: Omit<UseMutationOptions<Shop, Error, {
|
|
32
|
+
id: number;
|
|
33
|
+
data: UpdateShopRequest;
|
|
34
|
+
}>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<Shop, Error, {
|
|
35
|
+
id: number;
|
|
36
|
+
data: UpdateShopRequest;
|
|
37
|
+
}, unknown>;
|
|
38
|
+
export declare function useRoles(query?: PaginationQuery, options?: Omit<UseQueryOptions<PaginatedResponse<Role>>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedResponse<Role>, Error>;
|
|
39
|
+
export declare function useRoleById(id: number, options?: Omit<UseQueryOptions<Role>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<Role, Error>;
|
|
40
|
+
interface GetUserRolesQueryWithPagination extends GetUserRolesQuery, PaginationQuery {
|
|
41
|
+
}
|
|
42
|
+
export declare function useUserRoles(query?: GetUserRolesQueryWithPagination, options?: Omit<UseQueryOptions<PaginatedResponse<UserRoleResponse>>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedResponse<UserRoleResponse>, Error>;
|
|
43
|
+
export declare function useUserRoleById(id: number, options?: Omit<UseQueryOptions<UserRoleResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<UserRoleResponse, Error>;
|
|
44
|
+
export declare function useCreateUserRole(options?: Omit<UseMutationOptions<UserRoleResponse, Error, CreateUserRoleRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<UserRoleResponse, Error, import("@sales-planner/shared").CreateUserRoleDto, unknown>;
|
|
45
|
+
export declare function useDeleteUserRole(options?: Omit<UseMutationOptions<void, Error, number>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, number, unknown>;
|
|
46
|
+
export declare function useUserShops(query?: GetUserShopsQuery, options?: Omit<UseQueryOptions<UserShop[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<UserShop[], Error>;
|
|
47
|
+
export declare function useUserShopById(id: number, options?: Omit<UseQueryOptions<UserShop>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<UserShop, Error>;
|
|
48
|
+
export declare function useCreateUserShop(options?: Omit<UseMutationOptions<UserShop, Error, CreateUserShopRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<UserShop, Error, import("@sales-planner/shared").CreateUserShopDto, unknown>;
|
|
49
|
+
export declare function useDeleteUserShop(options?: Omit<UseMutationOptions<void, Error, number>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, number, unknown>;
|
|
50
|
+
interface GetApiKeysQuery extends PaginationQuery {
|
|
51
|
+
user_id?: number;
|
|
52
|
+
}
|
|
53
|
+
export declare function useApiKeys(query?: GetApiKeysQuery, options?: Omit<UseQueryOptions<PaginatedResponse<ApiKey>>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedResponse<ApiKey>, Error>;
|
|
54
|
+
export declare function useCreateApiKey(options?: Omit<UseMutationOptions<ApiKey, Error, CreateApiKeyRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<ApiKey, Error, import("@sales-planner/shared").CreateApiKeyDto, unknown>;
|
|
55
|
+
export declare function useRevokeApiKey(options?: Omit<UseMutationOptions<void, Error, number>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, number, unknown>;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EACV,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,IAAI,EACJ,iBAAiB,EACjB,IAAI,EACJ,iBAAiB,EACjB,iBAAiB,EACjB,IAAI,EACJ,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,EACN,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAM/B,UAAU,eAAgB,SAAQ,eAAe;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CACxB,KAAK,CAAC,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,oFAQnF;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,iEAQhE;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,kGAWrF;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAAC,uBAAuB,EAAE,KAAK,EAAE,2BAA2B,CAAC,EAC/E,YAAY,CACb,uJAeF;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC,EAC5E,YAAY,CACb;QAKkC,MAAM;UAAQ,mBAAmB;YAOrE;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,mFAWtE;AAID,UAAU,aAAc,SAAQ,eAAe;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CACtB,KAAK,CAAC,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,kFAQjF;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,+DAQ9D;AAED,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE,YAAY,CAAC,0HAWjF;AAED,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,mFAWtE;AAID,UAAU,aAAc,SAAQ,eAAe;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CACtB,KAAK,CAAC,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,kFAQjF;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,+DAQ9D;AAED,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE,YAAY,CAAC,0HAWjF;AAED,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC,EACxE,YAAY,CACb;QAKkC,MAAM;UAAQ,iBAAiB;YAOnE;AAID,wBAAgB,QAAQ,CACtB,KAAK,CAAC,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,kFAQjF;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,+DAQ9D;AAID,UAAU,+BAAgC,SAAQ,iBAAiB,EAAE,eAAe;CAAG;AAEvF,wBAAgB,YAAY,CAC1B,KAAK,CAAC,EAAE,+BAA+B,EACvC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,8FAQ7F;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,2EAQ1E;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,KAAK,EAAE,qBAAqB,CAAC,EAAE,YAAY,CAAC,0IAWjG;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,mFAWtE;AAID,wBAAgB,YAAY,CAC1B,KAAK,CAAC,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,qEAQpE;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,mEAQlE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,qBAAqB,CAAC,EAAE,YAAY,CAAC,kIAWzF;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,mFAWtE;AAID,UAAU,eAAgB,SAAQ,eAAe;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,UAAU,CACxB,KAAK,CAAC,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,oFAQnF;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,8HAWrF;AAED,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,mFAWtE"}
|
package/dist/admin.js
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { useSalesPlannerClient } from './provider.js';
|
|
3
|
+
import { queryKeys } from './keys.js';
|
|
4
|
+
export function useTenants(query, options) {
|
|
5
|
+
const client = useSalesPlannerClient();
|
|
6
|
+
return useQuery({
|
|
7
|
+
queryKey: queryKeys.tenants(query),
|
|
8
|
+
queryFn: () => client.tenants.getAll(query),
|
|
9
|
+
...options,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export function useTenantById(id, options) {
|
|
13
|
+
const client = useSalesPlannerClient();
|
|
14
|
+
return useQuery({
|
|
15
|
+
queryKey: queryKeys.tenantDetail(id),
|
|
16
|
+
queryFn: () => client.tenants.getById(id),
|
|
17
|
+
...options,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export function useCreateTenant(options) {
|
|
21
|
+
const client = useSalesPlannerClient();
|
|
22
|
+
const qc = useQueryClient();
|
|
23
|
+
return useMutation({
|
|
24
|
+
mutationFn: (request) => client.tenants.create(request),
|
|
25
|
+
onSuccess: () => {
|
|
26
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'tenants'] });
|
|
27
|
+
},
|
|
28
|
+
...options,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function useCreateTenantWithShopAndUser(options) {
|
|
32
|
+
const client = useSalesPlannerClient();
|
|
33
|
+
const qc = useQueryClient();
|
|
34
|
+
return useMutation({
|
|
35
|
+
mutationFn: (request) => client.tenants.createWithShopAndUser(request),
|
|
36
|
+
onSuccess: () => {
|
|
37
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'tenants'] });
|
|
38
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'shops'] });
|
|
39
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'users'] });
|
|
40
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'api-keys'] });
|
|
41
|
+
},
|
|
42
|
+
...options,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export function useUpdateTenant(options) {
|
|
46
|
+
const client = useSalesPlannerClient();
|
|
47
|
+
const qc = useQueryClient();
|
|
48
|
+
return useMutation({
|
|
49
|
+
mutationFn: ({ id, data }) => client.tenants.update(id, data),
|
|
50
|
+
onSuccess: () => {
|
|
51
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'tenants'] });
|
|
52
|
+
},
|
|
53
|
+
...options,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export function useDeleteTenant(options) {
|
|
57
|
+
const client = useSalesPlannerClient();
|
|
58
|
+
const qc = useQueryClient();
|
|
59
|
+
return useMutation({
|
|
60
|
+
mutationFn: (id) => client.tenants.delete(id),
|
|
61
|
+
onSuccess: () => {
|
|
62
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'tenants'] });
|
|
63
|
+
},
|
|
64
|
+
...options,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export function useUsers(query, options) {
|
|
68
|
+
const client = useSalesPlannerClient();
|
|
69
|
+
return useQuery({
|
|
70
|
+
queryKey: queryKeys.users(query),
|
|
71
|
+
queryFn: () => client.users.getAll(query),
|
|
72
|
+
...options,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
export function useUserById(id, options) {
|
|
76
|
+
const client = useSalesPlannerClient();
|
|
77
|
+
return useQuery({
|
|
78
|
+
queryKey: queryKeys.userDetail(id),
|
|
79
|
+
queryFn: () => client.users.getById(id),
|
|
80
|
+
...options,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export function useCreateUser(options) {
|
|
84
|
+
const client = useSalesPlannerClient();
|
|
85
|
+
const qc = useQueryClient();
|
|
86
|
+
return useMutation({
|
|
87
|
+
mutationFn: (request) => client.users.create(request),
|
|
88
|
+
onSuccess: () => {
|
|
89
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'users'] });
|
|
90
|
+
},
|
|
91
|
+
...options,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
export function useDeleteUser(options) {
|
|
95
|
+
const client = useSalesPlannerClient();
|
|
96
|
+
const qc = useQueryClient();
|
|
97
|
+
return useMutation({
|
|
98
|
+
mutationFn: (id) => client.users.delete(id),
|
|
99
|
+
onSuccess: () => {
|
|
100
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'users'] });
|
|
101
|
+
},
|
|
102
|
+
...options,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
export function useShops(query, options) {
|
|
106
|
+
const client = useSalesPlannerClient();
|
|
107
|
+
return useQuery({
|
|
108
|
+
queryKey: queryKeys.shops(query),
|
|
109
|
+
queryFn: () => client.shops.getAll(query),
|
|
110
|
+
...options,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
export function useShopById(id, options) {
|
|
114
|
+
const client = useSalesPlannerClient();
|
|
115
|
+
return useQuery({
|
|
116
|
+
queryKey: queryKeys.shopDetail(id),
|
|
117
|
+
queryFn: () => client.shops.getById(id),
|
|
118
|
+
...options,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
export function useCreateShop(options) {
|
|
122
|
+
const client = useSalesPlannerClient();
|
|
123
|
+
const qc = useQueryClient();
|
|
124
|
+
return useMutation({
|
|
125
|
+
mutationFn: (request) => client.shops.create(request),
|
|
126
|
+
onSuccess: () => {
|
|
127
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'shops'] });
|
|
128
|
+
},
|
|
129
|
+
...options,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
export function useUpdateShop(options) {
|
|
133
|
+
const client = useSalesPlannerClient();
|
|
134
|
+
const qc = useQueryClient();
|
|
135
|
+
return useMutation({
|
|
136
|
+
mutationFn: ({ id, data }) => client.shops.update(id, data),
|
|
137
|
+
onSuccess: () => {
|
|
138
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'shops'] });
|
|
139
|
+
},
|
|
140
|
+
...options,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
// ── Roles ──
|
|
144
|
+
export function useRoles(query, options) {
|
|
145
|
+
const client = useSalesPlannerClient();
|
|
146
|
+
return useQuery({
|
|
147
|
+
queryKey: queryKeys.roles(query),
|
|
148
|
+
queryFn: () => client.roles.getAll(query),
|
|
149
|
+
...options,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
export function useRoleById(id, options) {
|
|
153
|
+
const client = useSalesPlannerClient();
|
|
154
|
+
return useQuery({
|
|
155
|
+
queryKey: queryKeys.roleDetail(id),
|
|
156
|
+
queryFn: () => client.roles.getById(id),
|
|
157
|
+
...options,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
export function useUserRoles(query, options) {
|
|
161
|
+
const client = useSalesPlannerClient();
|
|
162
|
+
return useQuery({
|
|
163
|
+
queryKey: queryKeys.userRoles(query),
|
|
164
|
+
queryFn: () => client.userRoles.getAll(query),
|
|
165
|
+
...options,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
export function useUserRoleById(id, options) {
|
|
169
|
+
const client = useSalesPlannerClient();
|
|
170
|
+
return useQuery({
|
|
171
|
+
queryKey: queryKeys.userRoleDetail(id),
|
|
172
|
+
queryFn: () => client.userRoles.getById(id),
|
|
173
|
+
...options,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
export function useCreateUserRole(options) {
|
|
177
|
+
const client = useSalesPlannerClient();
|
|
178
|
+
const qc = useQueryClient();
|
|
179
|
+
return useMutation({
|
|
180
|
+
mutationFn: (request) => client.userRoles.create(request),
|
|
181
|
+
onSuccess: () => {
|
|
182
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'user-roles'] });
|
|
183
|
+
},
|
|
184
|
+
...options,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
export function useDeleteUserRole(options) {
|
|
188
|
+
const client = useSalesPlannerClient();
|
|
189
|
+
const qc = useQueryClient();
|
|
190
|
+
return useMutation({
|
|
191
|
+
mutationFn: (id) => client.userRoles.delete(id),
|
|
192
|
+
onSuccess: () => {
|
|
193
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'user-roles'] });
|
|
194
|
+
},
|
|
195
|
+
...options,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
// ── User Shops ──
|
|
199
|
+
export function useUserShops(query, options) {
|
|
200
|
+
const client = useSalesPlannerClient();
|
|
201
|
+
return useQuery({
|
|
202
|
+
queryKey: queryKeys.userShops(query),
|
|
203
|
+
queryFn: () => client.userShops.getAll(query),
|
|
204
|
+
...options,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
export function useUserShopById(id, options) {
|
|
208
|
+
const client = useSalesPlannerClient();
|
|
209
|
+
return useQuery({
|
|
210
|
+
queryKey: queryKeys.userShopDetail(id),
|
|
211
|
+
queryFn: () => client.userShops.getById(id),
|
|
212
|
+
...options,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
export function useCreateUserShop(options) {
|
|
216
|
+
const client = useSalesPlannerClient();
|
|
217
|
+
const qc = useQueryClient();
|
|
218
|
+
return useMutation({
|
|
219
|
+
mutationFn: (request) => client.userShops.create(request),
|
|
220
|
+
onSuccess: () => {
|
|
221
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'user-shops'] });
|
|
222
|
+
},
|
|
223
|
+
...options,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
export function useDeleteUserShop(options) {
|
|
227
|
+
const client = useSalesPlannerClient();
|
|
228
|
+
const qc = useQueryClient();
|
|
229
|
+
return useMutation({
|
|
230
|
+
mutationFn: (id) => client.userShops.delete(id),
|
|
231
|
+
onSuccess: () => {
|
|
232
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'user-shops'] });
|
|
233
|
+
},
|
|
234
|
+
...options,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
export function useApiKeys(query, options) {
|
|
238
|
+
const client = useSalesPlannerClient();
|
|
239
|
+
return useQuery({
|
|
240
|
+
queryKey: queryKeys.apiKeys(query),
|
|
241
|
+
queryFn: () => client.apiKeys.getAll(query),
|
|
242
|
+
...options,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
export function useCreateApiKey(options) {
|
|
246
|
+
const client = useSalesPlannerClient();
|
|
247
|
+
const qc = useQueryClient();
|
|
248
|
+
return useMutation({
|
|
249
|
+
mutationFn: (request) => client.apiKeys.create(request),
|
|
250
|
+
onSuccess: () => {
|
|
251
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'api-keys'] });
|
|
252
|
+
},
|
|
253
|
+
...options,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
export function useRevokeApiKey(options) {
|
|
257
|
+
const client = useSalesPlannerClient();
|
|
258
|
+
const qc = useQueryClient();
|
|
259
|
+
return useMutation({
|
|
260
|
+
mutationFn: (id) => client.apiKeys.delete(id),
|
|
261
|
+
onSuccess: () => {
|
|
262
|
+
qc.invalidateQueries({ queryKey: ['sales-planner', 'api-keys'] });
|
|
263
|
+
},
|
|
264
|
+
...options,
|
|
265
|
+
});
|
|
266
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,4 +19,5 @@ export { skuCompetitorMappings } from './shop-scoped-entities.js';
|
|
|
19
19
|
export { competitorProducts } from './shop-scoped-entities.js';
|
|
20
20
|
export { competitorSales } from './shop-scoped-entities.js';
|
|
21
21
|
export { useMe, useEntitiesMetadata, useSkuMetrics, useSkuMetricsById, useSkuMetricsByAbcClass, useSkuMetricsExportCsv, useComputedViews, useRefreshAllViews, } from './specialized.js';
|
|
22
|
+
export { useTenants, useTenantById, useCreateTenant, useCreateTenantWithShopAndUser, useUpdateTenant, useDeleteTenant, useUsers, useUserById, useCreateUser, useDeleteUser, useShops, useShopById, useCreateShop, useUpdateShop, useRoles, useRoleById, useUserRoles, useUserRoleById, useCreateUserRole, useDeleteUserRole, useUserShops, useUserShopById, useCreateUserShop, useDeleteUserShop, useApiKeys, useCreateApiKey, useRevokeApiKey, } from './admin.js';
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC5E,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC5E,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAEL,UAAU,EACV,aAAa,EACb,eAAe,EACf,8BAA8B,EAC9B,eAAe,EACf,eAAe,EAEf,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EAEb,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EAEb,QAAQ,EACR,WAAW,EAEX,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EAEjB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EAEjB,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,3 +23,19 @@ export { competitorProducts } from './shop-scoped-entities.js';
|
|
|
23
23
|
export { competitorSales } from './shop-scoped-entities.js';
|
|
24
24
|
// ── Specialized hooks ──
|
|
25
25
|
export { useMe, useEntitiesMetadata, useSkuMetrics, useSkuMetricsById, useSkuMetricsByAbcClass, useSkuMetricsExportCsv, useComputedViews, useRefreshAllViews, } from './specialized.js';
|
|
26
|
+
// ── Admin hooks ──
|
|
27
|
+
export {
|
|
28
|
+
// Tenants
|
|
29
|
+
useTenants, useTenantById, useCreateTenant, useCreateTenantWithShopAndUser, useUpdateTenant, useDeleteTenant,
|
|
30
|
+
// Users
|
|
31
|
+
useUsers, useUserById, useCreateUser, useDeleteUser,
|
|
32
|
+
// Shops
|
|
33
|
+
useShops, useShopById, useCreateShop, useUpdateShop,
|
|
34
|
+
// Roles
|
|
35
|
+
useRoles, useRoleById,
|
|
36
|
+
// User Roles
|
|
37
|
+
useUserRoles, useUserRoleById, useCreateUserRole, useDeleteUserRole,
|
|
38
|
+
// User Shops
|
|
39
|
+
useUserShops, useUserShopById, useCreateUserShop, useDeleteUserShop,
|
|
40
|
+
// API Keys
|
|
41
|
+
useApiKeys, useCreateApiKey, useRevokeApiKey, } from './admin.js';
|
package/dist/keys.d.ts
CHANGED
|
@@ -13,6 +13,20 @@ export declare function toShopContextParams(ctx: ShopContext): ShopContextParams
|
|
|
13
13
|
export declare const queryKeys: {
|
|
14
14
|
readonly me: () => readonly ["sales-planner", "me"];
|
|
15
15
|
readonly metadata: () => readonly ["sales-planner", "metadata"];
|
|
16
|
+
readonly tenants: (query?: Record<string, unknown>) => readonly ["sales-planner", "tenants", Record<string, unknown>];
|
|
17
|
+
readonly tenantDetail: (id: number) => readonly ["sales-planner", "tenants", number];
|
|
18
|
+
readonly users: (query?: Record<string, unknown>) => readonly ["sales-planner", "users", Record<string, unknown>];
|
|
19
|
+
readonly userDetail: (id: number) => readonly ["sales-planner", "users", number];
|
|
20
|
+
readonly shops: (query?: Record<string, unknown>) => readonly ["sales-planner", "shops", Record<string, unknown>];
|
|
21
|
+
readonly shopDetail: (id: number) => readonly ["sales-planner", "shops", number];
|
|
22
|
+
readonly roles: (query?: Record<string, unknown>) => readonly ["sales-planner", "roles", Record<string, unknown>];
|
|
23
|
+
readonly roleDetail: (id: number) => readonly ["sales-planner", "roles", number];
|
|
24
|
+
readonly userRoles: (query?: Record<string, unknown>) => readonly ["sales-planner", "user-roles", Record<string, unknown>];
|
|
25
|
+
readonly userRoleDetail: (id: number) => readonly ["sales-planner", "user-roles", number];
|
|
26
|
+
readonly userShops: (query?: Record<string, unknown>) => readonly ["sales-planner", "user-shops", Record<string, unknown>];
|
|
27
|
+
readonly userShopDetail: (id: number) => readonly ["sales-planner", "user-shops", number];
|
|
28
|
+
readonly apiKeys: (query?: Record<string, unknown>) => readonly ["sales-planner", "api-keys", Record<string, unknown>];
|
|
29
|
+
readonly apiKeyDetail: (id: number) => readonly ["sales-planner", "api-keys", number];
|
|
16
30
|
readonly entity: (entity: string, ctx: ShopContext) => readonly ["sales-planner", string, number, number];
|
|
17
31
|
readonly entityList: (entity: string, ctx: ShopContext, query?: Record<string, unknown>) => readonly ["sales-planner", string, number, number, "list", Record<string, unknown>];
|
|
18
32
|
readonly entityDetail: (entity: string, ctx: ShopContext, id: number) => readonly ["sales-planner", string, number, number, number];
|
package/dist/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB,CAEvE;AAED;;GAEG;AACH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB,CAEvE;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;;;+BAKF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gCACtB,MAAM;6BAET,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;8BACtB,MAAM;6BAEP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;8BACtB,MAAM;6BAEP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;8BACtB,MAAM;iCAEH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;kCAEtB,MAAM;iCAEP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;kCAEtB,MAAM;+BAET,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gCACtB,MAAM;8BAGR,MAAM,OAAO,WAAW;kCAGpB,MAAM,OAAO,WAAW,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oCAGvD,MAAM,OAAO,WAAW,MAAM,MAAM;oCAGpC,MAAM,OAAO,WAAW,QAAQ,MAAM;oCAGtC,MAAM,OAAO,WAAW,UAAU,MAAM,GAAG,KAAK;qCAG/C,MAAM,UAAU,MAAM,GAAG,KAAK;+BAGpC,WAAW;mCAEP,WAAW,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qCAE1C,WAAW,MAAM,MAAM;kCAC1B,WAAW,YAAY,MAAM;6BAGlC,WAAW;CACnB,CAAC"}
|
package/dist/keys.js
CHANGED
|
@@ -7,6 +7,22 @@ export function toShopContextParams(ctx) {
|
|
|
7
7
|
export const queryKeys = {
|
|
8
8
|
me: () => ['sales-planner', 'me'],
|
|
9
9
|
metadata: () => ['sales-planner', 'metadata'],
|
|
10
|
+
// ── Admin resources (no shop context) ──
|
|
11
|
+
tenants: (query) => ['sales-planner', 'tenants', query ?? {}],
|
|
12
|
+
tenantDetail: (id) => ['sales-planner', 'tenants', id],
|
|
13
|
+
users: (query) => ['sales-planner', 'users', query ?? {}],
|
|
14
|
+
userDetail: (id) => ['sales-planner', 'users', id],
|
|
15
|
+
shops: (query) => ['sales-planner', 'shops', query ?? {}],
|
|
16
|
+
shopDetail: (id) => ['sales-planner', 'shops', id],
|
|
17
|
+
roles: (query) => ['sales-planner', 'roles', query ?? {}],
|
|
18
|
+
roleDetail: (id) => ['sales-planner', 'roles', id],
|
|
19
|
+
userRoles: (query) => ['sales-planner', 'user-roles', query ?? {}],
|
|
20
|
+
userRoleDetail: (id) => ['sales-planner', 'user-roles', id],
|
|
21
|
+
userShops: (query) => ['sales-planner', 'user-shops', query ?? {}],
|
|
22
|
+
userShopDetail: (id) => ['sales-planner', 'user-shops', id],
|
|
23
|
+
apiKeys: (query) => ['sales-planner', 'api-keys', query ?? {}],
|
|
24
|
+
apiKeyDetail: (id) => ['sales-planner', 'api-keys', id],
|
|
25
|
+
// ── Data entities (shop-scoped) ──
|
|
10
26
|
entity: (entity, ctx) => ['sales-planner', entity, ctx.shopId, ctx.tenantId],
|
|
11
27
|
entityList: (entity, ctx, query) => [...queryKeys.entity(entity, ctx), 'list', query ?? {}],
|
|
12
28
|
entityDetail: (entity, ctx, id) => [...queryKeys.entity(entity, ctx), id],
|
package/dist/specialized.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
2
|
import { useSalesPlannerClient } from './provider.js';
|
|
3
|
-
import { queryKeys } from './keys.js';
|
|
3
|
+
import { queryKeys, toShopContextParams } from './keys.js';
|
|
4
4
|
// ── Me ──
|
|
5
5
|
export function useMe(options) {
|
|
6
6
|
const client = useSalesPlannerClient();
|
|
@@ -25,7 +25,7 @@ export function useSkuMetrics(ctx, query, options) {
|
|
|
25
25
|
const client = useSalesPlannerClient();
|
|
26
26
|
return useQuery({
|
|
27
27
|
queryKey: queryKeys.skuMetricsList(ctx, query),
|
|
28
|
-
queryFn: () => client.skuMetrics.list(ctx
|
|
28
|
+
queryFn: () => client.skuMetrics.list(toShopContextParams(ctx), query),
|
|
29
29
|
...options,
|
|
30
30
|
});
|
|
31
31
|
}
|
|
@@ -33,7 +33,7 @@ export function useSkuMetricsById(ctx, id, options) {
|
|
|
33
33
|
const client = useSalesPlannerClient();
|
|
34
34
|
return useQuery({
|
|
35
35
|
queryKey: queryKeys.skuMetricsDetail(ctx, id),
|
|
36
|
-
queryFn: () => client.skuMetrics.get(
|
|
36
|
+
queryFn: () => client.skuMetrics.get(toShopContextParams(ctx), id),
|
|
37
37
|
...options,
|
|
38
38
|
});
|
|
39
39
|
}
|
|
@@ -41,7 +41,7 @@ export function useSkuMetricsByAbcClass(ctx, abcClass, options) {
|
|
|
41
41
|
const client = useSalesPlannerClient();
|
|
42
42
|
return useQuery({
|
|
43
43
|
queryKey: queryKeys.skuMetricsAbc(ctx, abcClass),
|
|
44
|
-
queryFn: () => client.skuMetrics.getByAbcClass(
|
|
44
|
+
queryFn: () => client.skuMetrics.getByAbcClass(toShopContextParams(ctx), abcClass),
|
|
45
45
|
...options,
|
|
46
46
|
});
|
|
47
47
|
}
|
|
@@ -49,7 +49,7 @@ export function useSkuMetricsExportCsv(ctx, options) {
|
|
|
49
49
|
const client = useSalesPlannerClient();
|
|
50
50
|
return useQuery({
|
|
51
51
|
queryKey: [...queryKeys.skuMetrics(ctx), 'export', 'csv'],
|
|
52
|
-
queryFn: () => client.skuMetrics.exportCsv(ctx
|
|
52
|
+
queryFn: () => client.skuMetrics.exportCsv(toShopContextParams(ctx)),
|
|
53
53
|
enabled: false,
|
|
54
54
|
...options,
|
|
55
55
|
});
|
|
@@ -59,7 +59,7 @@ export function useComputedViews(ctx, options) {
|
|
|
59
59
|
const client = useSalesPlannerClient();
|
|
60
60
|
return useQuery({
|
|
61
61
|
queryKey: [...queryKeys.computed(ctx), 'views'],
|
|
62
|
-
queryFn: () => client.computed.getViews(ctx
|
|
62
|
+
queryFn: () => client.computed.getViews(toShopContextParams(ctx)),
|
|
63
63
|
...options,
|
|
64
64
|
});
|
|
65
65
|
}
|
|
@@ -67,7 +67,7 @@ export function useRefreshAllViews(ctx, options) {
|
|
|
67
67
|
const client = useSalesPlannerClient();
|
|
68
68
|
const queryClient = useQueryClient();
|
|
69
69
|
return useMutation({
|
|
70
|
-
mutationFn: () => client.computed.refreshAll(ctx
|
|
70
|
+
mutationFn: () => client.computed.refreshAll(toShopContextParams(ctx)),
|
|
71
71
|
onSuccess: () => {
|
|
72
72
|
// Refresh sku-metrics cache since views were refreshed
|
|
73
73
|
queryClient.invalidateQueries({ queryKey: queryKeys.skuMetrics(ctx) });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sales-planner/react",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "React hooks for Sales Planner API powered by TanStack Query",
|
|
5
5
|
"author": "Damir Manapov",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"README.md"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@sales-planner/http-client": "0.19.
|
|
29
|
-
"@sales-planner/shared": "0.17.
|
|
28
|
+
"@sales-planner/http-client": "0.19.4",
|
|
29
|
+
"@sales-planner/shared": "0.17.4"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"@tanstack/react-query": ">=5.0.0",
|