@instockng/api-client 1.0.22 → 1.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend-types.d.ts +1 -1
- package/dist/fetchers/carts.d.ts +3663 -758
- package/dist/fetchers/orders.d.ts +1095 -227
- package/dist/fetchers/products.d.ts +613 -41
- package/dist/hooks/admin/abandoned-carts.d.ts +707 -125
- package/dist/hooks/admin/customers.d.ts +291 -0
- package/dist/hooks/admin/index.d.ts +8 -7
- package/dist/hooks/admin/index.js +8 -7
- package/dist/hooks/admin/media.d.ts +44 -0
- package/dist/hooks/admin/media.js +86 -0
- package/dist/hooks/admin/orders.d.ts +2531 -785
- package/dist/hooks/admin/products.d.ts +607 -35
- package/dist/hooks/admin/stats.d.ts +291 -0
- package/dist/hooks/admin/warehouses.d.ts +291 -0
- package/dist/hooks/public/carts.d.ts +3760 -855
- package/dist/hooks/public/orders.d.ts +1114 -246
- package/dist/hooks/public/products.d.ts +619 -47
- package/dist/rpc-client.d.ts +15482 -6425
- package/dist/rpc-client.js +1 -0
- package/dist/utils/query-keys.d.ts +4 -0
- package/dist/utils/query-keys.js +4 -0
- package/package.json +8 -7
|
@@ -231,6 +231,297 @@ export declare function useGetCustomerHistory(phone: string, options?: Omit<UseQ
|
|
|
231
231
|
flat?: boolean;
|
|
232
232
|
};
|
|
233
233
|
};
|
|
234
|
+
media: string | number | boolean | {
|
|
235
|
+
[x: string]: string | number | boolean | /*elided*/ any | {
|
|
236
|
+
[x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
|
|
237
|
+
length: number;
|
|
238
|
+
toString: never;
|
|
239
|
+
toLocaleString: never;
|
|
240
|
+
pop: never;
|
|
241
|
+
push: never;
|
|
242
|
+
concat: never;
|
|
243
|
+
join: never;
|
|
244
|
+
reverse: never;
|
|
245
|
+
shift: never;
|
|
246
|
+
slice: never;
|
|
247
|
+
sort: never;
|
|
248
|
+
splice: never;
|
|
249
|
+
unshift: never;
|
|
250
|
+
indexOf: never;
|
|
251
|
+
lastIndexOf: never;
|
|
252
|
+
every: never;
|
|
253
|
+
some: never;
|
|
254
|
+
forEach: never;
|
|
255
|
+
map: never;
|
|
256
|
+
filter: never;
|
|
257
|
+
reduce: never;
|
|
258
|
+
reduceRight: never;
|
|
259
|
+
find: never;
|
|
260
|
+
findIndex: never;
|
|
261
|
+
fill: never;
|
|
262
|
+
copyWithin: never;
|
|
263
|
+
entries: never;
|
|
264
|
+
keys: never;
|
|
265
|
+
values: never;
|
|
266
|
+
includes: never;
|
|
267
|
+
flatMap: never;
|
|
268
|
+
flat: never;
|
|
269
|
+
[Symbol.iterator]: never;
|
|
270
|
+
readonly [Symbol.unscopables]: {
|
|
271
|
+
[x: number]: boolean;
|
|
272
|
+
length?: boolean;
|
|
273
|
+
toString?: boolean;
|
|
274
|
+
toLocaleString?: boolean;
|
|
275
|
+
pop?: boolean;
|
|
276
|
+
push?: boolean;
|
|
277
|
+
concat?: boolean;
|
|
278
|
+
join?: boolean;
|
|
279
|
+
reverse?: boolean;
|
|
280
|
+
shift?: boolean;
|
|
281
|
+
slice?: boolean;
|
|
282
|
+
sort?: boolean;
|
|
283
|
+
splice?: boolean;
|
|
284
|
+
unshift?: boolean;
|
|
285
|
+
indexOf?: boolean;
|
|
286
|
+
lastIndexOf?: boolean;
|
|
287
|
+
every?: boolean;
|
|
288
|
+
some?: boolean;
|
|
289
|
+
forEach?: boolean;
|
|
290
|
+
map?: boolean;
|
|
291
|
+
filter?: boolean;
|
|
292
|
+
reduce?: boolean;
|
|
293
|
+
reduceRight?: boolean;
|
|
294
|
+
find?: boolean;
|
|
295
|
+
findIndex?: boolean;
|
|
296
|
+
fill?: boolean;
|
|
297
|
+
copyWithin?: boolean;
|
|
298
|
+
entries?: boolean;
|
|
299
|
+
keys?: boolean;
|
|
300
|
+
values?: boolean;
|
|
301
|
+
includes?: boolean;
|
|
302
|
+
flatMap?: boolean;
|
|
303
|
+
flat?: boolean;
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
} | {
|
|
307
|
+
[x: number]: string | number | boolean | {
|
|
308
|
+
[x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
|
|
309
|
+
} | /*elided*/ any;
|
|
310
|
+
length: number;
|
|
311
|
+
toString: never;
|
|
312
|
+
toLocaleString: never;
|
|
313
|
+
pop: never;
|
|
314
|
+
push: never;
|
|
315
|
+
concat: never;
|
|
316
|
+
join: never;
|
|
317
|
+
reverse: never;
|
|
318
|
+
shift: never;
|
|
319
|
+
slice: never;
|
|
320
|
+
sort: never;
|
|
321
|
+
splice: never;
|
|
322
|
+
unshift: never;
|
|
323
|
+
indexOf: never;
|
|
324
|
+
lastIndexOf: never;
|
|
325
|
+
every: never;
|
|
326
|
+
some: never;
|
|
327
|
+
forEach: never;
|
|
328
|
+
map: never;
|
|
329
|
+
filter: never;
|
|
330
|
+
reduce: never;
|
|
331
|
+
reduceRight: never;
|
|
332
|
+
find: never;
|
|
333
|
+
findIndex: never;
|
|
334
|
+
fill: never;
|
|
335
|
+
copyWithin: never;
|
|
336
|
+
entries: never;
|
|
337
|
+
keys: never;
|
|
338
|
+
values: never;
|
|
339
|
+
includes: never;
|
|
340
|
+
flatMap: never;
|
|
341
|
+
flat: never;
|
|
342
|
+
[Symbol.iterator]: never;
|
|
343
|
+
readonly [Symbol.unscopables]: {
|
|
344
|
+
[x: number]: boolean;
|
|
345
|
+
length?: boolean;
|
|
346
|
+
toString?: boolean;
|
|
347
|
+
toLocaleString?: boolean;
|
|
348
|
+
pop?: boolean;
|
|
349
|
+
push?: boolean;
|
|
350
|
+
concat?: boolean;
|
|
351
|
+
join?: boolean;
|
|
352
|
+
reverse?: boolean;
|
|
353
|
+
shift?: boolean;
|
|
354
|
+
slice?: boolean;
|
|
355
|
+
sort?: boolean;
|
|
356
|
+
splice?: boolean;
|
|
357
|
+
unshift?: boolean;
|
|
358
|
+
indexOf?: boolean;
|
|
359
|
+
lastIndexOf?: boolean;
|
|
360
|
+
every?: boolean;
|
|
361
|
+
some?: boolean;
|
|
362
|
+
forEach?: boolean;
|
|
363
|
+
map?: boolean;
|
|
364
|
+
filter?: boolean;
|
|
365
|
+
reduce?: boolean;
|
|
366
|
+
reduceRight?: boolean;
|
|
367
|
+
find?: boolean;
|
|
368
|
+
findIndex?: boolean;
|
|
369
|
+
fill?: boolean;
|
|
370
|
+
copyWithin?: boolean;
|
|
371
|
+
entries?: boolean;
|
|
372
|
+
keys?: boolean;
|
|
373
|
+
values?: boolean;
|
|
374
|
+
includes?: boolean;
|
|
375
|
+
flatMap?: boolean;
|
|
376
|
+
flat?: boolean;
|
|
377
|
+
};
|
|
378
|
+
};
|
|
379
|
+
features: string | null;
|
|
380
|
+
faqs: string | number | boolean | {
|
|
381
|
+
[x: string]: string | number | boolean | /*elided*/ any | {
|
|
382
|
+
[x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
|
|
383
|
+
length: number;
|
|
384
|
+
toString: never;
|
|
385
|
+
toLocaleString: never;
|
|
386
|
+
pop: never;
|
|
387
|
+
push: never;
|
|
388
|
+
concat: never;
|
|
389
|
+
join: never;
|
|
390
|
+
reverse: never;
|
|
391
|
+
shift: never;
|
|
392
|
+
slice: never;
|
|
393
|
+
sort: never;
|
|
394
|
+
splice: never;
|
|
395
|
+
unshift: never;
|
|
396
|
+
indexOf: never;
|
|
397
|
+
lastIndexOf: never;
|
|
398
|
+
every: never;
|
|
399
|
+
some: never;
|
|
400
|
+
forEach: never;
|
|
401
|
+
map: never;
|
|
402
|
+
filter: never;
|
|
403
|
+
reduce: never;
|
|
404
|
+
reduceRight: never;
|
|
405
|
+
find: never;
|
|
406
|
+
findIndex: never;
|
|
407
|
+
fill: never;
|
|
408
|
+
copyWithin: never;
|
|
409
|
+
entries: never;
|
|
410
|
+
keys: never;
|
|
411
|
+
values: never;
|
|
412
|
+
includes: never;
|
|
413
|
+
flatMap: never;
|
|
414
|
+
flat: never;
|
|
415
|
+
[Symbol.iterator]: never;
|
|
416
|
+
readonly [Symbol.unscopables]: {
|
|
417
|
+
[x: number]: boolean;
|
|
418
|
+
length?: boolean;
|
|
419
|
+
toString?: boolean;
|
|
420
|
+
toLocaleString?: boolean;
|
|
421
|
+
pop?: boolean;
|
|
422
|
+
push?: boolean;
|
|
423
|
+
concat?: boolean;
|
|
424
|
+
join?: boolean;
|
|
425
|
+
reverse?: boolean;
|
|
426
|
+
shift?: boolean;
|
|
427
|
+
slice?: boolean;
|
|
428
|
+
sort?: boolean;
|
|
429
|
+
splice?: boolean;
|
|
430
|
+
unshift?: boolean;
|
|
431
|
+
indexOf?: boolean;
|
|
432
|
+
lastIndexOf?: boolean;
|
|
433
|
+
every?: boolean;
|
|
434
|
+
some?: boolean;
|
|
435
|
+
forEach?: boolean;
|
|
436
|
+
map?: boolean;
|
|
437
|
+
filter?: boolean;
|
|
438
|
+
reduce?: boolean;
|
|
439
|
+
reduceRight?: boolean;
|
|
440
|
+
find?: boolean;
|
|
441
|
+
findIndex?: boolean;
|
|
442
|
+
fill?: boolean;
|
|
443
|
+
copyWithin?: boolean;
|
|
444
|
+
entries?: boolean;
|
|
445
|
+
keys?: boolean;
|
|
446
|
+
values?: boolean;
|
|
447
|
+
includes?: boolean;
|
|
448
|
+
flatMap?: boolean;
|
|
449
|
+
flat?: boolean;
|
|
450
|
+
};
|
|
451
|
+
};
|
|
452
|
+
} | {
|
|
453
|
+
[x: number]: string | number | boolean | {
|
|
454
|
+
[x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
|
|
455
|
+
} | /*elided*/ any;
|
|
456
|
+
length: number;
|
|
457
|
+
toString: never;
|
|
458
|
+
toLocaleString: never;
|
|
459
|
+
pop: never;
|
|
460
|
+
push: never;
|
|
461
|
+
concat: never;
|
|
462
|
+
join: never;
|
|
463
|
+
reverse: never;
|
|
464
|
+
shift: never;
|
|
465
|
+
slice: never;
|
|
466
|
+
sort: never;
|
|
467
|
+
splice: never;
|
|
468
|
+
unshift: never;
|
|
469
|
+
indexOf: never;
|
|
470
|
+
lastIndexOf: never;
|
|
471
|
+
every: never;
|
|
472
|
+
some: never;
|
|
473
|
+
forEach: never;
|
|
474
|
+
map: never;
|
|
475
|
+
filter: never;
|
|
476
|
+
reduce: never;
|
|
477
|
+
reduceRight: never;
|
|
478
|
+
find: never;
|
|
479
|
+
findIndex: never;
|
|
480
|
+
fill: never;
|
|
481
|
+
copyWithin: never;
|
|
482
|
+
entries: never;
|
|
483
|
+
keys: never;
|
|
484
|
+
values: never;
|
|
485
|
+
includes: never;
|
|
486
|
+
flatMap: never;
|
|
487
|
+
flat: never;
|
|
488
|
+
[Symbol.iterator]: never;
|
|
489
|
+
readonly [Symbol.unscopables]: {
|
|
490
|
+
[x: number]: boolean;
|
|
491
|
+
length?: boolean;
|
|
492
|
+
toString?: boolean;
|
|
493
|
+
toLocaleString?: boolean;
|
|
494
|
+
pop?: boolean;
|
|
495
|
+
push?: boolean;
|
|
496
|
+
concat?: boolean;
|
|
497
|
+
join?: boolean;
|
|
498
|
+
reverse?: boolean;
|
|
499
|
+
shift?: boolean;
|
|
500
|
+
slice?: boolean;
|
|
501
|
+
sort?: boolean;
|
|
502
|
+
splice?: boolean;
|
|
503
|
+
unshift?: boolean;
|
|
504
|
+
indexOf?: boolean;
|
|
505
|
+
lastIndexOf?: boolean;
|
|
506
|
+
every?: boolean;
|
|
507
|
+
some?: boolean;
|
|
508
|
+
forEach?: boolean;
|
|
509
|
+
map?: boolean;
|
|
510
|
+
filter?: boolean;
|
|
511
|
+
reduce?: boolean;
|
|
512
|
+
reduceRight?: boolean;
|
|
513
|
+
find?: boolean;
|
|
514
|
+
findIndex?: boolean;
|
|
515
|
+
fill?: boolean;
|
|
516
|
+
copyWithin?: boolean;
|
|
517
|
+
entries?: boolean;
|
|
518
|
+
keys?: boolean;
|
|
519
|
+
values?: boolean;
|
|
520
|
+
includes?: boolean;
|
|
521
|
+
flatMap?: boolean;
|
|
522
|
+
flat?: boolean;
|
|
523
|
+
};
|
|
524
|
+
};
|
|
234
525
|
};
|
|
235
526
|
id: string;
|
|
236
527
|
name: string | null;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type-safe admin RPC hooks
|
|
3
3
|
*
|
|
4
|
-
* Export all admin RPC hooks for use in
|
|
4
|
+
* Export all admin RPC hooks for use in applications
|
|
5
5
|
*/
|
|
6
|
-
export * from './orders';
|
|
7
6
|
export * from './brands';
|
|
7
|
+
export * from './customers';
|
|
8
|
+
export * from './delivery-zones';
|
|
9
|
+
export * from './discount-codes';
|
|
10
|
+
export * from './inventory';
|
|
11
|
+
export * from './orders';
|
|
8
12
|
export * from './products';
|
|
13
|
+
export * from './stats';
|
|
9
14
|
export * from './variants';
|
|
10
15
|
export * from './warehouses';
|
|
11
|
-
export * from './inventory';
|
|
12
|
-
export * from './customers';
|
|
13
|
-
export * from './stats';
|
|
14
16
|
export * from './abandoned-carts';
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './delivery-zones';
|
|
17
|
+
export * from './media';
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type-safe admin RPC hooks
|
|
3
3
|
*
|
|
4
|
-
* Export all admin RPC hooks for use in
|
|
4
|
+
* Export all admin RPC hooks for use in applications
|
|
5
5
|
*/
|
|
6
|
-
export * from './orders';
|
|
7
6
|
export * from './brands';
|
|
7
|
+
export * from './customers';
|
|
8
|
+
export * from './delivery-zones';
|
|
9
|
+
export * from './discount-codes';
|
|
10
|
+
export * from './inventory';
|
|
11
|
+
export * from './orders';
|
|
8
12
|
export * from './products';
|
|
13
|
+
export * from './stats';
|
|
9
14
|
export * from './variants';
|
|
10
15
|
export * from './warehouses';
|
|
11
|
-
export * from './inventory';
|
|
12
|
-
export * from './customers';
|
|
13
|
-
export * from './stats';
|
|
14
16
|
export * from './abandoned-carts';
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './delivery-zones';
|
|
17
|
+
export * from './media';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe admin RPC hooks for media management
|
|
3
|
+
*/
|
|
4
|
+
import { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
|
|
5
|
+
export interface MediaItem {
|
|
6
|
+
id: string;
|
|
7
|
+
url: string;
|
|
8
|
+
thumbnailUrl: string;
|
|
9
|
+
filename: string;
|
|
10
|
+
uploadedAt: string;
|
|
11
|
+
type: 'image' | 'video';
|
|
12
|
+
size: number;
|
|
13
|
+
}
|
|
14
|
+
export interface MediaListResponse {
|
|
15
|
+
media: MediaItem[];
|
|
16
|
+
}
|
|
17
|
+
export interface MediaUploadResponse {
|
|
18
|
+
media: Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
url: string;
|
|
21
|
+
thumbnailUrl: string;
|
|
22
|
+
filename: string;
|
|
23
|
+
type: 'image' | 'video';
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Hook to list media files from R2
|
|
28
|
+
*/
|
|
29
|
+
export declare function useListMedia(options?: {
|
|
30
|
+
type?: 'image' | 'video' | 'all';
|
|
31
|
+
} & Omit<UseQueryOptions<MediaListResponse, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<MediaListResponse, Error>;
|
|
32
|
+
/**
|
|
33
|
+
* Hook to upload media files to R2
|
|
34
|
+
* Note: File upload uses FormData, not JSON
|
|
35
|
+
*/
|
|
36
|
+
export declare function useUploadMedia(options?: UseMutationOptions<MediaUploadResponse, Error, any>): import("@tanstack/react-query").UseMutationResult<MediaUploadResponse, Error, any, unknown>;
|
|
37
|
+
/**
|
|
38
|
+
* Hook to delete media from R2
|
|
39
|
+
*/
|
|
40
|
+
export declare function useDeleteMedia(options?: UseMutationOptions<{
|
|
41
|
+
success: boolean;
|
|
42
|
+
}, Error, string>): import("@tanstack/react-query").UseMutationResult<{
|
|
43
|
+
success: boolean;
|
|
44
|
+
}, Error, string, unknown>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe admin RPC hooks for media management
|
|
3
|
+
*/
|
|
4
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
5
|
+
import { useQueryUnwrapped } from '../use-query-unwrapped';
|
|
6
|
+
import { createAdminRpcClients, authHeaders } from '../../rpc-client';
|
|
7
|
+
import { queryKeys } from '../../utils/query-keys';
|
|
8
|
+
import { useApiConfig } from '../useApiConfig';
|
|
9
|
+
/**
|
|
10
|
+
* Hook to list media files from R2
|
|
11
|
+
*/
|
|
12
|
+
export function useListMedia(options) {
|
|
13
|
+
const { baseURL, getAuthToken } = useApiConfig();
|
|
14
|
+
const { type, ...queryOptions } = options || {};
|
|
15
|
+
return useQueryUnwrapped({
|
|
16
|
+
queryKey: queryKeys.admin.media.list(type),
|
|
17
|
+
queryFn: async () => {
|
|
18
|
+
const token = await getAuthToken();
|
|
19
|
+
const clients = createAdminRpcClients(baseURL);
|
|
20
|
+
const queryParams = {};
|
|
21
|
+
if (type && type !== 'all') {
|
|
22
|
+
queryParams.type = type;
|
|
23
|
+
}
|
|
24
|
+
const res = await clients.media.index.$get({ query: queryParams }, authHeaders(token));
|
|
25
|
+
if (!res.ok)
|
|
26
|
+
throw new Error(`Failed to fetch media: ${res.statusText}`);
|
|
27
|
+
return res.json();
|
|
28
|
+
},
|
|
29
|
+
...queryOptions,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Hook to upload media files to R2
|
|
34
|
+
* Note: File upload uses FormData, not JSON
|
|
35
|
+
*/
|
|
36
|
+
export function useUploadMedia(options) {
|
|
37
|
+
const { baseURL, getAuthToken } = useApiConfig();
|
|
38
|
+
const queryClient = useQueryClient();
|
|
39
|
+
return useMutation({
|
|
40
|
+
mutationFn: async (files) => {
|
|
41
|
+
const token = await getAuthToken();
|
|
42
|
+
const formData = new FormData();
|
|
43
|
+
const fileArray = Array.isArray(files) ? files : Array.from(files);
|
|
44
|
+
for (const file of fileArray) {
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
formData.append('files', file);
|
|
47
|
+
}
|
|
48
|
+
// Direct fetch for file upload (FormData doesn't work well with hc client)
|
|
49
|
+
const res = await fetch(`${baseURL}/v1/admin/media/upload`, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: {
|
|
52
|
+
Authorization: `Bearer ${token}`,
|
|
53
|
+
},
|
|
54
|
+
body: formData,
|
|
55
|
+
});
|
|
56
|
+
if (!res.ok)
|
|
57
|
+
throw new Error(`Failed to upload media: ${res.statusText}`);
|
|
58
|
+
return res.json();
|
|
59
|
+
},
|
|
60
|
+
onSuccess: () => {
|
|
61
|
+
queryClient.invalidateQueries({ queryKey: queryKeys.admin.media.all });
|
|
62
|
+
},
|
|
63
|
+
...options,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Hook to delete media from R2
|
|
68
|
+
*/
|
|
69
|
+
export function useDeleteMedia(options) {
|
|
70
|
+
const { baseURL, getAuthToken } = useApiConfig();
|
|
71
|
+
const queryClient = useQueryClient();
|
|
72
|
+
return useMutation({
|
|
73
|
+
mutationFn: async (key) => {
|
|
74
|
+
const token = await getAuthToken();
|
|
75
|
+
const clients = createAdminRpcClients(baseURL);
|
|
76
|
+
const res = await clients.media[':key'].$delete({ param: { key } }, authHeaders(token));
|
|
77
|
+
if (!res.ok)
|
|
78
|
+
throw new Error(`Failed to delete media: ${res.statusText}`);
|
|
79
|
+
return res.json();
|
|
80
|
+
},
|
|
81
|
+
onSuccess: () => {
|
|
82
|
+
queryClient.invalidateQueries({ queryKey: queryKeys.admin.media.all });
|
|
83
|
+
},
|
|
84
|
+
...options,
|
|
85
|
+
});
|
|
86
|
+
}
|