@sales-planner/react 0.2.0 → 0.2.2

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 CHANGED
@@ -84,46 +84,183 @@ function ImportSuppliers() {
84
84
  }
85
85
  ```
86
86
 
87
- ## Available Hooks
87
+ ## API Reference
88
88
 
89
- ### Coded entities
89
+ ### Provider
90
+
91
+ | Export | Description |
92
+ | --- | --- |
93
+ | `SalesPlannerProvider` | React context provider — accepts `config` and `children` |
94
+ | `useSalesPlannerClient()` | Returns the underlying `SalesPlannerClient` for direct API access |
95
+ | `ClientConfig` | Type — `{ baseUrl: string; apiKey?: string }` |
96
+
97
+ ### Coded entity hooks
90
98
 
91
99
  `brands`, `categories`, `groups`, `statuses`, `suppliers`, `warehouses`, `marketplaces`, `skus` — each provides:
92
100
 
93
- - `.useList(ctx, query?)` paginated list
94
- - `.useById(ctx, id)` single entity
95
- - `.useByCode(ctx, code)` lookup by code
96
- - `.useCreate(ctx)` create mutation
97
- - `.useUpdate(ctx)` update mutation (`{ id, data }`)
98
- - `.useDelete(ctx)` delete mutation
99
- - `.useImportJson(ctx)` JSON import mutation
100
- - `.useImportCsv(ctx)` CSV import mutation
101
- - `.useExportJson(ctx)` JSON export (manual trigger)
102
- - `.useExportCsv(ctx)` CSV export (manual trigger)
101
+ | Hook | Kind | Description |
102
+ | --- | --- | --- |
103
+ | `.useList(ctx, query?)` | query | Paginated list |
104
+ | `.useById(ctx, id)` | query | Single entity by ID |
105
+ | `.useByCode(ctx, code)` | query | Lookup by code |
106
+ | `.useExportJson(ctx)` | query | JSON export (`enabled: false`, manual trigger) |
107
+ | `.useExportCsv(ctx)` | query | CSV export (`enabled: false`, manual trigger) |
108
+ | `.useExampleJson()` | query | Example JSON (public, `staleTime: Infinity`) |
109
+ | `.useExampleCsv()` | query | Example CSV (public, `staleTime: Infinity`) |
110
+ | `.useCreate(ctx)` | mutation | Create entity |
111
+ | `.useUpdate(ctx)` | mutation | Update entity (`{ id, data }`) |
112
+ | `.useDelete(ctx)` | mutation | Delete entity by ID |
113
+ | `.useImportJson(ctx)` | mutation | Bulk import from JSON |
114
+ | `.useImportCsv(ctx)` | mutation | Bulk import from CSV |
115
+
116
+ `ctx` is `ShopContext` — `{ shopId: number; tenantId: number }`.
117
+
118
+ ### Shop-scoped entity hooks
119
+
120
+ `salesHistory`, `leftovers`, `seasonalCoefficients`, `skuCompetitorMappings`, `competitorProducts`, `competitorSales` — same as coded entities **without** `.useByCode`.
121
+
122
+ ### Specialized hooks
123
+
124
+ | Hook | Kind | Description |
125
+ | --- | --- | --- |
126
+ | `useMe(options?)` | query | Current user with roles and tenants |
127
+ | `useEntitiesMetadata(options?)` | query | Entity field metadata (`staleTime: Infinity`) |
128
+ | `useSkuMetrics(ctx, query?, options?)` | query | Paginated SKU metrics |
129
+ | `useSkuMetricsById(ctx, id, options?)` | query | Single SKU metric |
130
+ | `useSkuMetricsByAbcClass(ctx, 'A'\|'B'\|'C', options?)` | query | SKU metrics filtered by ABC class |
131
+ | `useSkuMetricsExportCsv(ctx, options?)` | query | CSV export (`enabled: false`, manual trigger) |
132
+ | `useComputedViews(ctx, options?)` | query | List materialized views |
133
+ | `useRefreshAllViews(ctx, options?)` | mutation | Refresh all views (auto-invalidates `skuMetrics`) |
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
+
199
+ ### Utilities
200
+
201
+ | Export | Description |
202
+ | --- | --- |
203
+ | `queryKeys` | Query key factory for custom cache management |
204
+ | `ShopContext` | Type — `{ shopId: number; tenantId: number }` |
205
+ | `toShopContextParams(ctx)` | Converts `ShopContext` to `ShopContextParams` |
206
+ | `createCodedEntityHooks(name, accessor)` | Factory — build your own coded entity hook set |
207
+ | `createShopScopedHooks(name, accessor)` | Factory — build your own shop-scoped hook set |
208
+
209
+ ### Query keys
103
210
 
104
- ### Shop-scoped entities
211
+ All keys start with `'sales-planner'`. Use `queryKeys` for custom invalidation:
105
212
 
106
- `salesHistory`, `leftovers`, `seasonalCoefficients`, `skuCompetitorMappings`, `competitorProducts`, `competitorSales` — same as above minus `useByCode`.
213
+ ```tsx
214
+ import { queryKeys } from '@sales-planner/react';
215
+ import { useQueryClient } from '@tanstack/react-query';
216
+
217
+ const qc = useQueryClient();
107
218
 
108
- ### Specialized
219
+ // Invalidate all SKU queries
220
+ qc.invalidateQueries({ queryKey: queryKeys.entity('skus', ctx) });
221
+ ```
109
222
 
110
- - `useMe()` — current user
111
- - `useEntitiesMetadata()` — entity field metadata
112
- - `useSkuMetrics(ctx, query?)` paginated SKU metrics
113
- - `useSkuMetricsById(ctx, id)` single SKU metric
114
- - `useSkuMetricsByAbcClass(ctx, 'A' | 'B' | 'C')` filter by ABC class
115
- - `useSkuMetricsExportCsv(ctx)` — CSV export
116
- - `useComputedViews(ctx)` list materialized views
117
- - `useRefreshAllViews(ctx)` refresh all views mutation
223
+ Available keys:
224
+
225
+ | Key | Arguments | Purpose |
226
+ | --- | --- | --- |
227
+ | `queryKeys.me()` | | Current user |
228
+ | `queryKeys.metadata()` | | Entity metadata |
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 |
244
+ | `queryKeys.entityList(name, ctx, query?)` | entity, ctx, pagination | Paginated list |
245
+ | `queryKeys.entityDetail(name, ctx, id)` | entity, ctx, id | Single entity |
246
+ | `queryKeys.entityByCode(name, ctx, code)` | entity, ctx, code | Code lookup |
247
+ | `queryKeys.entityExport(name, ctx, format)` | entity, ctx, `'json'\|'csv'` | Export |
248
+ | `queryKeys.entityExample(name, format)` | entity, `'json'\|'csv'` | Example (no ctx — public) |
249
+ | `queryKeys.skuMetrics(ctx)` | ctx | SKU metrics root |
250
+ | `queryKeys.skuMetricsList(ctx, query?)` | ctx, pagination | SKU metrics list |
251
+ | `queryKeys.skuMetricsDetail(ctx, id)` | ctx, id | Single SKU metric |
252
+ | `queryKeys.skuMetricsAbc(ctx, class)` | ctx, `'A'\|'B'\|'C'` | ABC class filter |
253
+ | `queryKeys.computed(ctx)` | ctx | Computed views root |
118
254
 
119
255
  ## Cache Invalidation
120
256
 
121
- All mutations automatically invalidate related query caches. The `queryKeys` object is exported for custom cache management:
257
+ All mutations automatically invalidate their related query caches. `useRefreshAllViews` additionally invalidates `skuMetrics`.
122
258
 
123
- ```tsx
124
- import { queryKeys } from '@sales-planner/react';
125
- import { useQueryClient } from '@tanstack/react-query';
259
+ ## Related Packages
126
260
 
127
- const queryClient = useQueryClient();
128
- queryClient.invalidateQueries({ queryKey: queryKeys.entity('skus', ctx) });
129
- ```
261
+ - `@sales-planner/shared` TypeScript types
262
+ - `@sales-planner/http-client` — HTTP client (included as dependency)
263
+
264
+ ## License
265
+
266
+ MIT
@@ -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
+ }
@@ -5,6 +5,8 @@ export declare const brands: {
5
5
  useByCode: (ctx: import("./keys.js").ShopContext, code: string, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Brand, Error, Brand, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Brand, Error>;
6
6
  useExportJson: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
7
7
  useExportCsv: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
8
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
9
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
8
10
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Brand, Error, import("@sales-planner/shared").CodedTitledItem, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Brand, Error, import("@sales-planner/shared").CodedTitledItem, unknown>;
9
11
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Brand, Error, {
10
12
  id: number;
@@ -23,6 +25,8 @@ export declare const categories: {
23
25
  useByCode: (ctx: import("./keys.js").ShopContext, code: string, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Category, Error, Category, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Category, Error>;
24
26
  useExportJson: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
25
27
  useExportCsv: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
28
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
29
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
26
30
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Category, Error, import("@sales-planner/shared").CodedTitledItem, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Category, Error, import("@sales-planner/shared").CodedTitledItem, unknown>;
27
31
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Category, Error, {
28
32
  id: number;
@@ -41,6 +45,8 @@ export declare const groups: {
41
45
  useByCode: (ctx: import("./keys.js").ShopContext, code: string, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Group, Error, Group, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Group, Error>;
42
46
  useExportJson: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
43
47
  useExportCsv: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
48
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
49
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
44
50
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Group, Error, import("@sales-planner/shared").CodedTitledItem, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Group, Error, import("@sales-planner/shared").CodedTitledItem, unknown>;
45
51
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Group, Error, {
46
52
  id: number;
@@ -59,6 +65,8 @@ export declare const statuses: {
59
65
  useByCode: (ctx: import("./keys.js").ShopContext, code: string, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Status, Error, Status, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Status, Error>;
60
66
  useExportJson: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
61
67
  useExportCsv: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
68
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
69
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
62
70
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Status, Error, import("@sales-planner/shared").CodedTitledItem, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Status, Error, import("@sales-planner/shared").CodedTitledItem, unknown>;
63
71
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Status, Error, {
64
72
  id: number;
@@ -77,6 +85,8 @@ export declare const suppliers: {
77
85
  useByCode: (ctx: import("./keys.js").ShopContext, code: string, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Supplier, Error, Supplier, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Supplier, Error>;
78
86
  useExportJson: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
79
87
  useExportCsv: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
88
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
89
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
80
90
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Supplier, Error, import("@sales-planner/shared").CodedTitledItem, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Supplier, Error, import("@sales-planner/shared").CodedTitledItem, unknown>;
81
91
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Supplier, Error, {
82
92
  id: number;
@@ -95,6 +105,8 @@ export declare const warehouses: {
95
105
  useByCode: (ctx: import("./keys.js").ShopContext, code: string, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Warehouse, Error, Warehouse, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Warehouse, Error>;
96
106
  useExportJson: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
97
107
  useExportCsv: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
108
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
109
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
98
110
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Warehouse, Error, import("@sales-planner/shared").CodedTitledItem, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Warehouse, Error, import("@sales-planner/shared").CodedTitledItem, unknown>;
99
111
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Warehouse, Error, {
100
112
  id: number;
@@ -113,6 +125,8 @@ export declare const marketplaces: {
113
125
  useByCode: (ctx: import("./keys.js").ShopContext, code: string, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Marketplace, Error, Marketplace, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Marketplace, Error>;
114
126
  useExportJson: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
115
127
  useExportCsv: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
128
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<import("@sales-planner/shared").CodedTitledItem[], Error, import("@sales-planner/shared").CodedTitledItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<import("@sales-planner/shared").CodedTitledItem[], Error>;
129
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
116
130
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Marketplace, Error, import("@sales-planner/shared").CodedTitledItem, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Marketplace, Error, import("@sales-planner/shared").CodedTitledItem, unknown>;
117
131
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Marketplace, Error, {
118
132
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"coded-entities.d.ts","sourceRoot":"","sources":["../src/coded-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAKL,QAAQ,EAKR,KAAK,EAKL,MAAM,EAKN,QAAQ,EAKR,SAAS,EAKT,WAAW,EAKZ,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAMS,CAAC;AAE7B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;CAMa,CAAC;AAErC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAMS,CAAC;AAE7B,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;CAMW,CAAC;AAEjC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;CAMY,CAAC;AAEnC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;CAMa,CAAC;AAErC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;CAMe,CAAC"}
1
+ {"version":3,"file":"coded-entities.d.ts","sourceRoot":"","sources":["../src/coded-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAKL,QAAQ,EAKR,KAAK,EAKL,MAAM,EAKN,QAAQ,EAKR,SAAS,EAKT,WAAW,EAKZ,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAMS,CAAC;AAE7B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;CAMa,CAAC;AAErC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAMS,CAAC;AAE7B,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;CAMW,CAAC;AAEjC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;CAMY,CAAC;AAEnC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;CAMa,CAAC;AAErC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;CAMe,CAAC"}
@@ -13,6 +13,8 @@ type CodedEntityClientLike<TEntity, TCreate, TUpdate, TImport, TExport> = {
13
13
  importCsv(ctx: ShopContextParams, csvContent: string): Promise<ImportResult>;
14
14
  exportJson(ctx: ShopContextParams): Promise<TExport[]>;
15
15
  exportCsv(ctx: ShopContextParams): Promise<string>;
16
+ getExampleJson(): Promise<TImport[]>;
17
+ getExampleCsv(): Promise<string>;
16
18
  };
17
19
  /**
18
20
  * Creates a set of React Query hooks for a coded entity (brands, categories, etc.)
@@ -23,6 +25,8 @@ export declare function createCodedEntityHooks<TEntity, TCreate, TUpdate, TImpor
23
25
  useByCode: (ctx: ShopContext, code: string, options?: Omit<UseQueryOptions<TEntity>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<import("@tanstack/react-query").NoInfer<TEntity>, Error>;
24
26
  useExportJson: (ctx: ShopContext, options?: Omit<UseQueryOptions<TExport[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<TExport[], Error>;
25
27
  useExportCsv: (ctx: ShopContext, options?: Omit<UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
28
+ useExampleJson: (options?: Omit<UseQueryOptions<TImport[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<TImport[], Error>;
29
+ useExampleCsv: (options?: Omit<UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
26
30
  useCreate: (ctx: ShopContext, options?: Omit<UseMutationOptions<TEntity, Error, TCreate>, "mutationFn">) => import("@tanstack/react-query").UseMutationResult<TEntity, Error, TCreate, unknown>;
27
31
  useUpdate: (ctx: ShopContext, options?: Omit<UseMutationOptions<TEntity, Error, {
28
32
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"create-coded-entity-hooks.d.ts","sourceRoot":"","sources":["../src/create-coded-entity-hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-coded-entity-hooks.d.ts","sourceRoot":"","sources":["../src/create-coded-entity-hooks.ts"],"names":[],"mappings":"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"}
@@ -102,12 +102,32 @@ export function createCodedEntityHooks(entityName, getClient) {
102
102
  ...options,
103
103
  });
104
104
  }
105
+ function useExampleJson(options) {
106
+ const client = useSalesPlannerClient();
107
+ return useQuery({
108
+ queryKey: queryKeys.entityExample(entityName, 'json'),
109
+ queryFn: () => getClient(client).getExampleJson(),
110
+ staleTime: Number.POSITIVE_INFINITY,
111
+ ...options,
112
+ });
113
+ }
114
+ function useExampleCsv(options) {
115
+ const client = useSalesPlannerClient();
116
+ return useQuery({
117
+ queryKey: queryKeys.entityExample(entityName, 'csv'),
118
+ queryFn: () => getClient(client).getExampleCsv(),
119
+ staleTime: Number.POSITIVE_INFINITY,
120
+ ...options,
121
+ });
122
+ }
105
123
  return {
106
124
  useList,
107
125
  useById,
108
126
  useByCode,
109
127
  useExportJson,
110
128
  useExportCsv,
129
+ useExampleJson,
130
+ useExampleCsv,
111
131
  useCreate,
112
132
  useUpdate,
113
133
  useDelete,
@@ -12,6 +12,8 @@ type ShopScopedClientLike<TEntity, TCreate, TUpdate, TImport, TExport, TImportRe
12
12
  importCsv(ctx: ShopContextParams, csvContent: string): Promise<TImportResult>;
13
13
  exportJson(ctx: ShopContextParams, query?: TQuery): Promise<TExport[]>;
14
14
  exportCsv(ctx: ShopContextParams, query?: TQuery): Promise<string>;
15
+ getExampleJson(): Promise<TImport[]>;
16
+ getExampleCsv(): Promise<string>;
15
17
  };
16
18
  /**
17
19
  * Creates a set of React Query hooks for a shop-scoped entity
@@ -22,6 +24,8 @@ export declare function createShopScopedHooks<TEntity, TCreate, TUpdate, TImport
22
24
  useById: (ctx: ShopContext, id: number, options?: Omit<UseQueryOptions<TEntity>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<import("@tanstack/react-query").NoInfer<TEntity>, Error>;
23
25
  useExportJson: (ctx: ShopContext, query?: TQuery, options?: Omit<UseQueryOptions<TExport[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<TExport[], Error>;
24
26
  useExportCsv: (ctx: ShopContext, query?: TQuery, options?: Omit<UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
27
+ useExampleJson: (options?: Omit<UseQueryOptions<TImport[]>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<TImport[], Error>;
28
+ useExampleCsv: (options?: Omit<UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
25
29
  useCreate: (ctx: ShopContext, options?: Omit<UseMutationOptions<TEntity, Error, TCreate>, "mutationFn">) => import("@tanstack/react-query").UseMutationResult<TEntity, Error, TCreate, unknown>;
26
30
  useUpdate: (ctx: ShopContext, options?: Omit<UseMutationOptions<TEntity, Error, {
27
31
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"create-shop-scoped-hooks.d.ts","sourceRoot":"","sources":["../src/create-shop-scoped-hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,KAAK,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI;IAC9F,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/E,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,UAAU,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7E,SAAS,CAAC,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E,UAAU,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,SAAS,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,aAAa,EACb,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAE9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CACT,MAAM,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,KAC7C,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC;mBAGtF,WAAW,UACR,MAAM,YACJ,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;mBAW9E,WAAW,MACZ,MAAM,YACA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;yBAW3D,WAAW,UACR,MAAM,YACJ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;wBAY7D,WAAW,UACR,MAAM,YACJ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;qBAY1D,WAAW,YACN,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC;qBAcpE,WAAW,YACN,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,EAAE,YAAY,CAAC;YAK5D,MAAM;cAAQ,OAAO;;qBAUnD,WAAW,YACN,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC;yBAchE,WAAW,YACN,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC;wBAe5E,WAAW,YACN,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC;EAyBjF"}
1
+ {"version":3,"file":"create-shop-scoped-hooks.d.ts","sourceRoot":"","sources":["../src/create-shop-scoped-hooks.ts"],"names":[],"mappings":"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"}
@@ -95,11 +95,31 @@ export function createShopScopedHooks(entityName, getClient) {
95
95
  ...options,
96
96
  });
97
97
  }
98
+ function useExampleJson(options) {
99
+ const client = useSalesPlannerClient();
100
+ return useQuery({
101
+ queryKey: queryKeys.entityExample(entityName, 'json'),
102
+ queryFn: () => getClient(client).getExampleJson(),
103
+ staleTime: Number.POSITIVE_INFINITY,
104
+ ...options,
105
+ });
106
+ }
107
+ function useExampleCsv(options) {
108
+ const client = useSalesPlannerClient();
109
+ return useQuery({
110
+ queryKey: queryKeys.entityExample(entityName, 'csv'),
111
+ queryFn: () => getClient(client).getExampleCsv(),
112
+ staleTime: Number.POSITIVE_INFINITY,
113
+ ...options,
114
+ });
115
+ }
98
116
  return {
99
117
  useList,
100
118
  useById,
101
119
  useExportJson,
102
120
  useExportCsv,
121
+ useExampleJson,
122
+ useExampleCsv,
103
123
  useCreate,
104
124
  useUpdate,
105
125
  useDelete,
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
@@ -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,11 +13,26 @@ 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];
19
33
  readonly entityByCode: (entity: string, ctx: ShopContext, code: string) => readonly ["sales-planner", string, number, number, "code", string];
20
34
  readonly entityExport: (entity: string, ctx: ShopContext, format: "json" | "csv") => readonly ["sales-planner", string, number, number, "export", "json" | "csv"];
35
+ readonly entityExample: (entity: string, format: "json" | "csv") => readonly ["sales-planner", string, "example", "json" | "csv"];
21
36
  readonly skuMetrics: (ctx: ShopContext) => readonly ["sales-planner", "sku-metrics", number, number];
22
37
  readonly skuMetricsList: (ctx: ShopContext, query?: Record<string, unknown>) => readonly ["sales-planner", "sku-metrics", number, number, "list", Record<string, unknown>];
23
38
  readonly skuMetricsDetail: (ctx: ShopContext, id: number) => readonly ["sales-planner", "sku-metrics", number, number, number];
@@ -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;;;8BAIH,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;+BAGrD,WAAW;mCAEP,WAAW,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qCAE1C,WAAW,MAAM,MAAM;kCAC1B,WAAW,YAAY,MAAM;6BAGlC,WAAW;CACnB,CAAC"}
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,11 +7,28 @@ 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],
13
29
  entityByCode: (entity, ctx, code) => [...queryKeys.entity(entity, ctx), 'code', code],
14
30
  entityExport: (entity, ctx, format) => [...queryKeys.entity(entity, ctx), 'export', format],
31
+ entityExample: (entity, format) => ['sales-planner', entity, 'example', format],
15
32
  skuMetrics: (ctx) => ['sales-planner', 'sku-metrics', ctx.shopId, ctx.tenantId],
16
33
  skuMetricsList: (ctx, query) => [...queryKeys.skuMetrics(ctx), 'list', query ?? {}],
17
34
  skuMetricsDetail: (ctx, id) => [...queryKeys.skuMetrics(ctx), id],
@@ -5,6 +5,8 @@ export declare const skus: {
5
5
  useByCode: (ctx: import("./keys.js").ShopContext, code: string, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Sku, Error, Sku, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Sku, Error>;
6
6
  useExportJson: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<SkuExportItem[], Error, SkuExportItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<SkuExportItem[], Error>;
7
7
  useExportCsv: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
8
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<ImportSkuItem[], Error, ImportSkuItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<ImportSkuItem[], Error>;
9
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
8
10
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Sku, Error, CreateSkuRequest, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Sku, Error, CreateSkuRequest, unknown>;
9
11
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Sku, Error, {
10
12
  id: number;
@@ -22,6 +24,8 @@ export declare const salesHistory: {
22
24
  useById: (ctx: import("./keys.js").ShopContext, id: number, options?: Omit<import("@tanstack/react-query").UseQueryOptions<SalesHistory, Error, SalesHistory, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<SalesHistory, Error>;
23
25
  useExportJson: (ctx: import("./keys.js").ShopContext, query?: SalesHistoryQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<SalesHistoryExportItem[], Error, SalesHistoryExportItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<SalesHistoryExportItem[], Error>;
24
26
  useExportCsv: (ctx: import("./keys.js").ShopContext, query?: SalesHistoryQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
27
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<ImportSalesHistoryItem[], Error, ImportSalesHistoryItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<ImportSalesHistoryItem[], Error>;
28
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
25
29
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<SalesHistory, Error, CreateSalesHistoryRequest, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<SalesHistory, Error, CreateSalesHistoryRequest, unknown>;
26
30
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<SalesHistory, Error, {
27
31
  id: number;
@@ -39,6 +43,8 @@ export declare const leftovers: {
39
43
  useById: (ctx: import("./keys.js").ShopContext, id: number, options?: Omit<import("@tanstack/react-query").UseQueryOptions<Leftover, Error, Leftover, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<Leftover, Error>;
40
44
  useExportJson: (ctx: import("./keys.js").ShopContext, query?: LeftoverQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<LeftoverExportItem[], Error, LeftoverExportItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<LeftoverExportItem[], Error>;
41
45
  useExportCsv: (ctx: import("./keys.js").ShopContext, query?: LeftoverQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
46
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<ImportLeftoverItem[], Error, ImportLeftoverItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<ImportLeftoverItem[], Error>;
47
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
42
48
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Leftover, Error, CreateLeftoverRequest, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<Leftover, Error, CreateLeftoverRequest, unknown>;
43
49
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<Leftover, Error, {
44
50
  id: number;
@@ -56,6 +62,8 @@ export declare const seasonalCoefficients: {
56
62
  useById: (ctx: import("./keys.js").ShopContext, id: number, options?: Omit<import("@tanstack/react-query").UseQueryOptions<SeasonalCoefficient, Error, SeasonalCoefficient, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<SeasonalCoefficient, Error>;
57
63
  useExportJson: (ctx: import("./keys.js").ShopContext, query?: PaginationQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<SeasonalCoefficientExportItem[], Error, SeasonalCoefficientExportItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<SeasonalCoefficientExportItem[], Error>;
58
64
  useExportCsv: (ctx: import("./keys.js").ShopContext, query?: PaginationQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
65
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<ImportSeasonalCoefficientItem[], Error, ImportSeasonalCoefficientItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<ImportSeasonalCoefficientItem[], Error>;
66
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
59
67
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<SeasonalCoefficient, Error, CreateSeasonalCoefficientRequest, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<SeasonalCoefficient, Error, CreateSeasonalCoefficientRequest, unknown>;
60
68
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<SeasonalCoefficient, Error, {
61
69
  id: number;
@@ -73,6 +81,8 @@ export declare const skuCompetitorMappings: {
73
81
  useById: (ctx: import("./keys.js").ShopContext, id: number, options?: Omit<import("@tanstack/react-query").UseQueryOptions<SkuCompetitorMapping, Error, SkuCompetitorMapping, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<SkuCompetitorMapping, Error>;
74
82
  useExportJson: (ctx: import("./keys.js").ShopContext, query?: PaginationQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<SkuCompetitorMappingExportItem[], Error, SkuCompetitorMappingExportItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<SkuCompetitorMappingExportItem[], Error>;
75
83
  useExportCsv: (ctx: import("./keys.js").ShopContext, query?: PaginationQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
84
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<ImportSkuCompetitorMappingItem[], Error, ImportSkuCompetitorMappingItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<ImportSkuCompetitorMappingItem[], Error>;
85
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
76
86
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<SkuCompetitorMapping, Error, CreateSkuCompetitorMappingRequest, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<SkuCompetitorMapping, Error, CreateSkuCompetitorMappingRequest, unknown>;
77
87
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<SkuCompetitorMapping, Error, {
78
88
  id: number;
@@ -90,6 +100,8 @@ export declare const competitorProducts: {
90
100
  useById: (ctx: import("./keys.js").ShopContext, id: number, options?: Omit<import("@tanstack/react-query").UseQueryOptions<CompetitorProduct, Error, CompetitorProduct, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<CompetitorProduct, Error>;
91
101
  useExportJson: (ctx: import("./keys.js").ShopContext, query?: CompetitorProductQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<CompetitorProductExportItem[], Error, CompetitorProductExportItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<CompetitorProductExportItem[], Error>;
92
102
  useExportCsv: (ctx: import("./keys.js").ShopContext, query?: CompetitorProductQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
103
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<ImportCompetitorProductItem[], Error, ImportCompetitorProductItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<ImportCompetitorProductItem[], Error>;
104
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
93
105
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<CompetitorProduct, Error, CreateCompetitorProductRequest, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<CompetitorProduct, Error, CreateCompetitorProductRequest, unknown>;
94
106
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<CompetitorProduct, Error, {
95
107
  id: number;
@@ -107,6 +119,8 @@ export declare const competitorSales: {
107
119
  useById: (ctx: import("./keys.js").ShopContext, id: number, options?: Omit<import("@tanstack/react-query").UseQueryOptions<CompetitorSale, Error, CompetitorSale, readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<CompetitorSale, Error>;
108
120
  useExportJson: (ctx: import("./keys.js").ShopContext, query?: CompetitorSaleQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<CompetitorSaleExportItem[], Error, CompetitorSaleExportItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<CompetitorSaleExportItem[], Error>;
109
121
  useExportCsv: (ctx: import("./keys.js").ShopContext, query?: CompetitorSaleQuery | undefined, options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
122
+ useExampleJson: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<ImportCompetitorSaleItem[], Error, ImportCompetitorSaleItem[], readonly unknown[]>, "queryKey" | "queryFn"> | undefined) => import("@tanstack/react-query").UseQueryResult<ImportCompetitorSaleItem[], Error>;
123
+ useExampleCsv: (options?: Omit<import("@tanstack/react-query").UseQueryOptions<string>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<string, Error>;
110
124
  useCreate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<CompetitorSale, Error, CreateCompetitorSaleRequest, unknown>, "mutationFn"> | undefined) => import("@tanstack/react-query").UseMutationResult<CompetitorSale, Error, CreateCompetitorSaleRequest, unknown>;
111
125
  useUpdate: (ctx: import("./keys.js").ShopContext, options?: Omit<import("@tanstack/react-query").UseMutationOptions<CompetitorSale, Error, {
112
126
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"shop-scoped-entities.d.ts","sourceRoot":"","sources":["../src/shop-scoped-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,gBAAgB,EAEhB,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,yBAAyB,EAEzB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,QAAQ,EACR,qBAAqB,EAErB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,gCAAgC,EAEhC,6BAA6B,EAC7B,6BAA6B,EAC7B,oBAAoB,EACpB,iCAAiC,EAEjC,8BAA8B,EAC9B,8BAA8B,EAC9B,iBAAiB,EACjB,8BAA8B,EAE9B,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,2BAA2B,EAE3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;CAMO,CAAC;AAEzB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAQgB,CAAC;AAE1C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;CAQY,CAAC;AAEnC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CAQwB,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;CAQ0B,CAAC;AAE7D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAQsB,CAAC;AAEtD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAQmB,CAAC"}
1
+ {"version":3,"file":"shop-scoped-entities.d.ts","sourceRoot":"","sources":["../src/shop-scoped-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,gBAAgB,EAEhB,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,yBAAyB,EAEzB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,QAAQ,EACR,qBAAqB,EAErB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,gCAAgC,EAEhC,6BAA6B,EAC7B,6BAA6B,EAC7B,oBAAoB,EACpB,iCAAiC,EAEjC,8BAA8B,EAC9B,8BAA8B,EAC9B,iBAAiB,EACjB,8BAA8B,EAE9B,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,2BAA2B,EAE3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;CAMO,CAAC;AAEzB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;CAQgB,CAAC;AAE1C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;CAQY,CAAC;AAEnC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;CAQwB,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;CAQ0B,CAAC;AAE7D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;CAQsB,CAAC;AAEtD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;CAQmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sales-planner/react",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
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.2",
29
- "@sales-planner/shared": "0.17.2"
28
+ "@sales-planner/http-client": "0.19.3",
29
+ "@sales-planner/shared": "0.17.3"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "@tanstack/react-query": ">=5.0.0",