@instockng/api-client 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/enum-types.d.ts +8 -0
  2. package/dist/enum-types.js +5 -0
  3. package/dist/fetchers/carts.js +5 -0
  4. package/dist/hooks/admin/abandoned-carts.js +12 -8
  5. package/dist/hooks/admin/brands.js +15 -10
  6. package/dist/hooks/admin/customers.js +3 -2
  7. package/dist/hooks/admin/delivery-zones.js +24 -16
  8. package/dist/hooks/admin/discount-codes.js +24 -16
  9. package/dist/hooks/admin/inventory.js +15 -10
  10. package/dist/hooks/admin/orders.js +18 -12
  11. package/dist/hooks/admin/products.js +15 -10
  12. package/dist/hooks/admin/stats.js +3 -2
  13. package/dist/hooks/admin/variants.js +18 -12
  14. package/dist/hooks/admin/warehouses.js +15 -10
  15. package/dist/hooks/useApiConfig.d.ts +2 -1
  16. package/dist/hooks/useApiConfig.js +2 -2
  17. package/dist/provider.d.ts +7 -4
  18. package/dist/provider.js +5 -3
  19. package/dist/types.d.ts +1 -0
  20. package/package.json +1 -1
  21. package/dist/apps/backend/src/generated/zod/index.d.ts +0 -1114
  22. package/dist/apps/backend/src/generated/zod/index.js +0 -670
  23. package/dist/apps/backend/src/http-app.d.ts +0 -40
  24. package/dist/apps/backend/src/http-app.js +0 -106
  25. package/dist/apps/backend/src/lib/brand-response.d.ts +0 -14
  26. package/dist/apps/backend/src/lib/brand-response.js +0 -8
  27. package/dist/apps/backend/src/lib/cart-helpers.d.ts +0 -280
  28. package/dist/apps/backend/src/lib/cart-helpers.js +0 -93
  29. package/dist/apps/backend/src/lib/cart-recovery.d.ts +0 -30
  30. package/dist/apps/backend/src/lib/cart-recovery.js +0 -147
  31. package/dist/apps/backend/src/lib/cart-response.d.ts +0 -121
  32. package/dist/apps/backend/src/lib/cart-response.js +0 -150
  33. package/dist/apps/backend/src/lib/clerk.d.ts +0 -18
  34. package/dist/apps/backend/src/lib/clerk.js +0 -167
  35. package/dist/apps/backend/src/lib/delivery-zone-response.d.ts +0 -62
  36. package/dist/apps/backend/src/lib/delivery-zone-response.js +0 -24
  37. package/dist/apps/backend/src/lib/discount-code-response.d.ts +0 -42
  38. package/dist/apps/backend/src/lib/discount-code-response.js +0 -19
  39. package/dist/apps/backend/src/lib/discount.d.ts +0 -20
  40. package/dist/apps/backend/src/lib/discount.js +0 -35
  41. package/dist/apps/backend/src/lib/inventory.d.ts +0 -26
  42. package/dist/apps/backend/src/lib/inventory.js +0 -160
  43. package/dist/apps/backend/src/lib/meta-capi.d.ts +0 -48
  44. package/dist/apps/backend/src/lib/meta-capi.js +0 -120
  45. package/dist/apps/backend/src/lib/openapi.d.ts +0 -36
  46. package/dist/apps/backend/src/lib/openapi.js +0 -69
  47. package/dist/apps/backend/src/lib/order-recovery.d.ts +0 -367
  48. package/dist/apps/backend/src/lib/order-recovery.js +0 -373
  49. package/dist/apps/backend/src/lib/order-response.d.ts +0 -136
  50. package/dist/apps/backend/src/lib/order-response.js +0 -61
  51. package/dist/apps/backend/src/lib/pricing.d.ts +0 -39
  52. package/dist/apps/backend/src/lib/pricing.js +0 -62
  53. package/dist/apps/backend/src/lib/prisma.d.ts +0 -9
  54. package/dist/apps/backend/src/lib/prisma.js +0 -30
  55. package/dist/apps/backend/src/lib/product-response.d.ts +0 -82
  56. package/dist/apps/backend/src/lib/product-response.js +0 -29
  57. package/dist/apps/backend/src/lib/utils.d.ts +0 -32
  58. package/dist/apps/backend/src/lib/utils.js +0 -63
  59. package/dist/apps/backend/src/middleware/clerk-auth.d.ts +0 -8
  60. package/dist/apps/backend/src/middleware/clerk-auth.js +0 -89
  61. package/dist/apps/backend/src/middleware/cors.d.ts +0 -8
  62. package/dist/apps/backend/src/middleware/cors.js +0 -11
  63. package/dist/apps/backend/src/notifications/producers/meta-capi-producer.d.ts +0 -55
  64. package/dist/apps/backend/src/notifications/producers/meta-capi-producer.js +0 -125
  65. package/dist/apps/backend/src/notifications/producers/order-notification.d.ts +0 -9
  66. package/dist/apps/backend/src/notifications/producers/order-notification.js +0 -18
  67. package/dist/apps/backend/src/notifications/producers/prospect-recovery-notification.d.ts +0 -10
  68. package/dist/apps/backend/src/notifications/producers/prospect-recovery-notification.js +0 -11
  69. package/dist/apps/backend/src/routes/admin/abandoned-carts.d.ts +0 -605
  70. package/dist/apps/backend/src/routes/admin/abandoned-carts.js +0 -194
  71. package/dist/apps/backend/src/routes/admin/brands.d.ts +0 -175
  72. package/dist/apps/backend/src/routes/admin/brands.js +0 -118
  73. package/dist/apps/backend/src/routes/admin/customers.d.ts +0 -306
  74. package/dist/apps/backend/src/routes/admin/customers.js +0 -39
  75. package/dist/apps/backend/src/routes/admin/delivery-zones.d.ts +0 -438
  76. package/dist/apps/backend/src/routes/admin/delivery-zones.js +0 -300
  77. package/dist/apps/backend/src/routes/admin/discount-codes.d.ts +0 -478
  78. package/dist/apps/backend/src/routes/admin/discount-codes.js +0 -418
  79. package/dist/apps/backend/src/routes/admin/inventory.d.ts +0 -273
  80. package/dist/apps/backend/src/routes/admin/inventory.js +0 -189
  81. package/dist/apps/backend/src/routes/admin/orders.d.ts +0 -1478
  82. package/dist/apps/backend/src/routes/admin/orders.js +0 -503
  83. package/dist/apps/backend/src/routes/admin/products.d.ts +0 -860
  84. package/dist/apps/backend/src/routes/admin/products.js +0 -107
  85. package/dist/apps/backend/src/routes/admin/stats.d.ts +0 -288
  86. package/dist/apps/backend/src/routes/admin/stats.js +0 -55
  87. package/dist/apps/backend/src/routes/admin/variants.d.ts +0 -239
  88. package/dist/apps/backend/src/routes/admin/variants.js +0 -173
  89. package/dist/apps/backend/src/routes/admin/warehouses.d.ts +0 -373
  90. package/dist/apps/backend/src/routes/admin/warehouses.js +0 -123
  91. package/dist/apps/backend/src/routes/public/brands.d.ts +0 -40
  92. package/dist/apps/backend/src/routes/public/brands.js +0 -38
  93. package/dist/apps/backend/src/routes/public/carts.d.ts +0 -2655
  94. package/dist/apps/backend/src/routes/public/carts.js +0 -631
  95. package/dist/apps/backend/src/routes/public/delivery-zones.d.ts +0 -35
  96. package/dist/apps/backend/src/routes/public/delivery-zones.js +0 -62
  97. package/dist/apps/backend/src/routes/public/orders.d.ts +0 -323
  98. package/dist/apps/backend/src/routes/public/orders.js +0 -160
  99. package/dist/apps/backend/src/routes/public/products.d.ts +0 -449
  100. package/dist/apps/backend/src/routes/public/products.js +0 -133
  101. package/dist/apps/backend/src/types/index.d.ts +0 -42
  102. package/dist/apps/backend/src/types/index.js +0 -2
  103. package/dist/apps/backend/src/validators/brand.d.ts +0 -17
  104. package/dist/apps/backend/src/validators/brand.js +0 -15
  105. package/dist/apps/backend/src/validators/delivery-zone.d.ts +0 -31
  106. package/dist/apps/backend/src/validators/delivery-zone.js +0 -51
  107. package/dist/apps/backend/src/validators/discount-code.d.ts +0 -74
  108. package/dist/apps/backend/src/validators/discount-code.js +0 -50
  109. package/dist/apps/backend/src/validators/inventory.d.ts +0 -20
  110. package/dist/apps/backend/src/validators/inventory.js +0 -15
  111. package/dist/apps/backend/src/validators/order.d.ts +0 -87
  112. package/dist/apps/backend/src/validators/order.js +0 -61
  113. package/dist/apps/backend/src/validators/product.d.ts +0 -18
  114. package/dist/apps/backend/src/validators/product.js +0 -19
  115. package/dist/apps/backend/src/validators/variant.d.ts +0 -19
  116. package/dist/apps/backend/src/validators/variant.js +0 -19
  117. package/dist/apps/backend/src/validators/warehouse.d.ts +0 -15
  118. package/dist/apps/backend/src/validators/warehouse.js +0 -15
  119. package/dist/packages/api-client/src/backend-types.d.ts +0 -10
  120. package/dist/packages/api-client/src/backend-types.js +0 -10
  121. package/dist/packages/api-client/src/client.d.ts +0 -20
  122. package/dist/packages/api-client/src/client.js +0 -40
  123. package/dist/packages/api-client/src/fetchers/brands.d.ts +0 -25
  124. package/dist/packages/api-client/src/fetchers/brands.js +0 -26
  125. package/dist/packages/api-client/src/fetchers/carts.d.ts +0 -2335
  126. package/dist/packages/api-client/src/fetchers/carts.js +0 -169
  127. package/dist/packages/api-client/src/fetchers/delivery-zones.d.ts +0 -28
  128. package/dist/packages/api-client/src/fetchers/delivery-zones.js +0 -26
  129. package/dist/packages/api-client/src/fetchers/index.d.ts +0 -22
  130. package/dist/packages/api-client/src/fetchers/index.js +0 -22
  131. package/dist/packages/api-client/src/fetchers/orders.d.ts +0 -283
  132. package/dist/packages/api-client/src/fetchers/orders.js +0 -44
  133. package/dist/packages/api-client/src/fetchers/products.d.ts +0 -386
  134. package/dist/packages/api-client/src/fetchers/products.js +0 -42
  135. package/dist/packages/api-client/src/hooks/admin/abandoned-carts.d.ts +0 -535
  136. package/dist/packages/api-client/src/hooks/admin/abandoned-carts.js +0 -79
  137. package/dist/packages/api-client/src/hooks/admin/brands.d.ts +0 -79
  138. package/dist/packages/api-client/src/hooks/admin/brands.js +0 -103
  139. package/dist/packages/api-client/src/hooks/admin/customers.d.ts +0 -278
  140. package/dist/packages/api-client/src/hooks/admin/customers.js +0 -25
  141. package/dist/packages/api-client/src/hooks/admin/delivery-zones.d.ts +0 -270
  142. package/dist/packages/api-client/src/hooks/admin/delivery-zones.js +0 -168
  143. package/dist/packages/api-client/src/hooks/admin/discount-codes.d.ts +0 -299
  144. package/dist/packages/api-client/src/hooks/admin/discount-codes.js +0 -157
  145. package/dist/packages/api-client/src/hooks/admin/index.d.ts +0 -16
  146. package/dist/packages/api-client/src/hooks/admin/index.js +0 -16
  147. package/dist/packages/api-client/src/hooks/admin/inventory.d.ts +0 -224
  148. package/dist/packages/api-client/src/hooks/admin/inventory.js +0 -102
  149. package/dist/packages/api-client/src/hooks/admin/orders.d.ts +0 -1380
  150. package/dist/packages/api-client/src/hooks/admin/orders.js +0 -169
  151. package/dist/packages/api-client/src/hooks/admin/products.d.ts +0 -374
  152. package/dist/packages/api-client/src/hooks/admin/products.js +0 -84
  153. package/dist/packages/api-client/src/hooks/admin/stats.d.ts +0 -277
  154. package/dist/packages/api-client/src/hooks/admin/stats.js +0 -24
  155. package/dist/packages/api-client/src/hooks/admin/variants.d.ts +0 -115
  156. package/dist/packages/api-client/src/hooks/admin/variants.js +0 -121
  157. package/dist/packages/api-client/src/hooks/admin/warehouses.d.ts +0 -277
  158. package/dist/packages/api-client/src/hooks/admin/warehouses.js +0 -103
  159. package/dist/packages/api-client/src/hooks/public/brands.d.ts +0 -33
  160. package/dist/packages/api-client/src/hooks/public/brands.js +0 -30
  161. package/dist/packages/api-client/src/hooks/public/carts.d.ts +0 -2405
  162. package/dist/packages/api-client/src/hooks/public/carts.js +0 -213
  163. package/dist/packages/api-client/src/hooks/public/delivery-zones.d.ts +0 -34
  164. package/dist/packages/api-client/src/hooks/public/delivery-zones.js +0 -28
  165. package/dist/packages/api-client/src/hooks/public/index.d.ts +0 -10
  166. package/dist/packages/api-client/src/hooks/public/index.js +0 -10
  167. package/dist/packages/api-client/src/hooks/public/orders.d.ts +0 -302
  168. package/dist/packages/api-client/src/hooks/public/orders.js +0 -50
  169. package/dist/packages/api-client/src/hooks/public/products.d.ts +0 -398
  170. package/dist/packages/api-client/src/hooks/public/products.js +0 -47
  171. package/dist/packages/api-client/src/hooks/use-query-unwrapped.d.ts +0 -20
  172. package/dist/packages/api-client/src/hooks/use-query-unwrapped.js +0 -22
  173. package/dist/packages/api-client/src/hooks/useApiConfig.d.ts +0 -11
  174. package/dist/packages/api-client/src/hooks/useApiConfig.js +0 -14
  175. package/dist/packages/api-client/src/index.d.ts +0 -20
  176. package/dist/packages/api-client/src/index.js +0 -25
  177. package/dist/packages/api-client/src/provider.d.ts +0 -33
  178. package/dist/packages/api-client/src/provider.js +0 -52
  179. package/dist/packages/api-client/src/rpc-client.d.ts +0 -9035
  180. package/dist/packages/api-client/src/rpc-client.js +0 -78
  181. package/dist/packages/api-client/src/rpc-types.d.ts +0 -76
  182. package/dist/packages/api-client/src/rpc-types.js +0 -7
  183. package/dist/packages/api-client/src/types.d.ts +0 -33
  184. package/dist/packages/api-client/src/types.js +0 -16
  185. package/dist/packages/api-client/src/utils/query-keys.d.ts +0 -106
  186. package/dist/packages/api-client/src/utils/query-keys.js +0 -108
@@ -1,173 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { zValidator } from '@hono/zod-validator';
3
- import { z } from 'zod';
4
- import { createVariantSchema, updateVariantSchema } from '../../validators/variant';
5
- import { getPrismaClient } from '../../lib/prisma';
6
- import { formatProductVariantResponse } from '../../lib/product-response';
7
- const app = new Hono()
8
- // Search variants across all products (for order creation)
9
- .get('/', async (c) => {
10
- try {
11
- const prisma = getPrismaClient(c.env.DATABASE_URL);
12
- const query = c.req.query();
13
- const where = { deletedAt: null, isActive: true };
14
- // Filter by brand
15
- if (query.brandId) {
16
- where.product = { brandId: query.brandId };
17
- }
18
- // Search by SKU or product/variant name
19
- if (query.search) {
20
- where.OR = [
21
- { sku: { contains: query.search, mode: 'insensitive' } },
22
- { name: { contains: query.search, mode: 'insensitive' } },
23
- { product: { name: { contains: query.search, mode: 'insensitive' } } },
24
- ];
25
- }
26
- const variants = await prisma.productVariant.findMany({
27
- where,
28
- include: {
29
- product: {
30
- select: {
31
- id: true,
32
- name: true,
33
- thumbnailUrl: true,
34
- },
35
- },
36
- },
37
- take: 20, // Limit results
38
- orderBy: { sku: 'asc' },
39
- });
40
- return c.json(variants.map(formatProductVariantResponse));
41
- }
42
- catch (error) {
43
- return c.json({
44
- error: { code: 'INTERNAL_ERROR', message: 'Failed to search variants' },
45
- }, 500);
46
- }
47
- })
48
- // List variants for a product
49
- .get('/products/:productId/variants', zValidator('param', z.object({ productId: z.uuid() })), async (c) => {
50
- const { productId } = c.req.valid('param');
51
- try {
52
- const prisma = getPrismaClient(c.env.DATABASE_URL);
53
- const variants = await prisma.productVariant.findMany({
54
- where: { productId, deletedAt: null },
55
- include: {
56
- product: true,
57
- warehouseInventories: {
58
- include: {
59
- warehouse: true,
60
- },
61
- },
62
- },
63
- orderBy: { sku: 'asc' },
64
- });
65
- return c.json(variants.map(formatProductVariantResponse));
66
- }
67
- catch (error) {
68
- return c.json({
69
- error: { code: 'INTERNAL_ERROR', message: 'Failed to retrieve variants' },
70
- }, 500);
71
- }
72
- })
73
- // Create variant for a product
74
- .post('/products/:productId/variants', zValidator('param', z.object({ productId: z.uuid() })), zValidator('json', createVariantSchema), async (c) => {
75
- try {
76
- const { productId } = c.req.valid('param');
77
- const input = c.req.valid('json');
78
- const prisma = getPrismaClient(c.env.DATABASE_URL);
79
- const variant = await prisma.productVariant.create({
80
- data: {
81
- ...input,
82
- productId,
83
- },
84
- include: {
85
- product: true,
86
- },
87
- });
88
- return c.json(formatProductVariantResponse(variant), 201);
89
- }
90
- catch (error) {
91
- return c.json({
92
- error: { code: 'INTERNAL_ERROR', message: 'Failed to create variant' },
93
- }, 500);
94
- }
95
- })
96
- // Update variant
97
- .patch('/:id', zValidator('param', z.object({ id: z.uuid() })), zValidator('json', updateVariantSchema), async (c) => {
98
- try {
99
- const { id } = c.req.valid('param');
100
- const input = c.req.valid('json');
101
- const prisma = getPrismaClient(c.env.DATABASE_URL);
102
- const variant = await prisma.productVariant.update({
103
- where: { id },
104
- data: input,
105
- include: {
106
- product: true,
107
- },
108
- });
109
- return c.json(formatProductVariantResponse(variant));
110
- }
111
- catch (error) {
112
- return c.json({
113
- error: { code: 'INTERNAL_ERROR', message: 'Failed to update variant' },
114
- }, 500);
115
- }
116
- })
117
- // Get variant inventory across all warehouses
118
- .get('/:id/inventory', zValidator('param', z.object({ id: z.uuid() })), async (c) => {
119
- try {
120
- const { id } = c.req.valid('param');
121
- const prisma = getPrismaClient(c.env.DATABASE_URL);
122
- const variant = await prisma.productVariant.findFirst({
123
- where: { id, deletedAt: null },
124
- include: {
125
- product: {
126
- include: { brand: true },
127
- },
128
- warehouseInventories: {
129
- include: {
130
- warehouse: true,
131
- },
132
- },
133
- },
134
- });
135
- if (!variant) {
136
- return c.json({
137
- error: { code: 'VARIANT_NOT_FOUND', message: 'Variant not found' },
138
- }, 404);
139
- }
140
- const totalInventory = variant.warehouseInventories.reduce((sum, inv) => sum + inv.inventoryCount, 0);
141
- return c.json({
142
- variant: formatProductVariantResponse(variant),
143
- totalInventory,
144
- warehouses: variant.warehouseInventories.map((inv) => ({
145
- warehouseId: inv.warehouse.id,
146
- warehouseName: inv.warehouse.name,
147
- inventoryCount: inv.inventoryCount,
148
- })),
149
- });
150
- }
151
- catch (error) {
152
- return c.json({
153
- error: { code: 'INTERNAL_ERROR', message: 'Failed to retrieve variant inventory' },
154
- }, 500);
155
- }
156
- })
157
- // Soft delete variant
158
- .delete('/:id', zValidator('param', z.object({ id: z.uuid() })), async (c) => {
159
- try {
160
- const { id } = c.req.valid('param');
161
- const prisma = getPrismaClient(c.env.DATABASE_URL);
162
- await prisma.productVariant.delete({
163
- where: { id },
164
- });
165
- return c.status(204);
166
- }
167
- catch (error) {
168
- return c.json({
169
- error: { code: 'INTERNAL_ERROR', message: 'Failed to delete variant' },
170
- }, 500);
171
- }
172
- });
173
- export default app;
@@ -1,373 +0,0 @@
1
- import { AppContext } from '../../types';
2
- declare const app: import("hono/hono-base").HonoBase<AppContext, {
3
- "/": {
4
- $get: {
5
- input: {};
6
- output: {
7
- name: string;
8
- id: string;
9
- createdAt: string;
10
- updatedAt: string;
11
- deletedAt: string;
12
- isActive: boolean;
13
- address: string | null;
14
- city: string | null;
15
- state: string | null;
16
- }[];
17
- outputFormat: "json";
18
- status: import("hono/utils/http-status").ContentfulStatusCode;
19
- } | {
20
- input: {};
21
- output: {
22
- error: {
23
- code: string;
24
- message: string;
25
- };
26
- };
27
- outputFormat: "json";
28
- status: 500;
29
- };
30
- };
31
- } & {
32
- "/": {
33
- $post: {
34
- input: {};
35
- output: {
36
- name: string;
37
- id: string;
38
- createdAt: string;
39
- updatedAt: string;
40
- deletedAt: string;
41
- isActive: boolean;
42
- address: string | null;
43
- city: string | null;
44
- state: string | null;
45
- };
46
- outputFormat: "json";
47
- status: 201;
48
- } | {
49
- input: {};
50
- output: {
51
- error: {
52
- code: string;
53
- message: string;
54
- };
55
- };
56
- outputFormat: "json";
57
- status: 500;
58
- };
59
- };
60
- } & {
61
- "/:id": {
62
- $patch: {
63
- input: {
64
- param: {
65
- id: string;
66
- };
67
- };
68
- output: {
69
- name: string;
70
- id: string;
71
- createdAt: string;
72
- updatedAt: string;
73
- deletedAt: string;
74
- isActive: boolean;
75
- address: string | null;
76
- city: string | null;
77
- state: string | null;
78
- };
79
- outputFormat: "json";
80
- status: import("hono/utils/http-status").ContentfulStatusCode;
81
- } | {
82
- input: {
83
- param: {
84
- id: string;
85
- };
86
- };
87
- output: {
88
- error: {
89
- code: string;
90
- message: string;
91
- };
92
- };
93
- outputFormat: "json";
94
- status: 500;
95
- };
96
- };
97
- } & {
98
- "/:id/inventory": {
99
- $get: {
100
- input: {
101
- param: {
102
- id: string;
103
- };
104
- };
105
- output: {
106
- error: {
107
- code: string;
108
- message: string;
109
- };
110
- };
111
- outputFormat: "json";
112
- status: 404;
113
- } | {
114
- input: {
115
- param: {
116
- id: string;
117
- };
118
- };
119
- output: {
120
- warehouse: {
121
- inventories: {
122
- variant: {
123
- product: {
124
- brand: {
125
- name: string;
126
- id: string;
127
- slug: string;
128
- logoUrl: string | null;
129
- siteUrl: string;
130
- domain: string;
131
- metaPixelId: string | null;
132
- createdAt: string;
133
- updatedAt: string;
134
- deletedAt: string;
135
- };
136
- name: string;
137
- id: string;
138
- slug: string;
139
- createdAt: string;
140
- updatedAt: string;
141
- deletedAt: string;
142
- brandId: string;
143
- isActive: boolean;
144
- description: string | null;
145
- thumbnailUrl: string | null;
146
- quantityDiscounts: string | number | boolean | {
147
- [x: string]: string | number | boolean | /*elided*/ any | {
148
- [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
149
- length: number;
150
- toString: never;
151
- toLocaleString: never;
152
- pop: never;
153
- push: never;
154
- concat: never;
155
- join: never;
156
- reverse: never;
157
- shift: never;
158
- slice: never;
159
- sort: never;
160
- splice: never;
161
- unshift: never;
162
- indexOf: never;
163
- lastIndexOf: never;
164
- every: never;
165
- some: never;
166
- forEach: never;
167
- map: never;
168
- filter: never;
169
- reduce: never;
170
- reduceRight: never;
171
- find: never;
172
- findIndex: never;
173
- fill: never;
174
- copyWithin: never;
175
- entries: never;
176
- keys: never;
177
- values: never;
178
- includes: never;
179
- flatMap: never;
180
- flat: never;
181
- [Symbol.iterator]: never;
182
- readonly [Symbol.unscopables]: {
183
- [x: number]: boolean;
184
- length?: boolean;
185
- toString?: boolean;
186
- toLocaleString?: boolean;
187
- pop?: boolean;
188
- push?: boolean;
189
- concat?: boolean;
190
- join?: boolean;
191
- reverse?: boolean;
192
- shift?: boolean;
193
- slice?: boolean;
194
- sort?: boolean;
195
- splice?: boolean;
196
- unshift?: boolean;
197
- indexOf?: boolean;
198
- lastIndexOf?: boolean;
199
- every?: boolean;
200
- some?: boolean;
201
- forEach?: boolean;
202
- map?: boolean;
203
- filter?: boolean;
204
- reduce?: boolean;
205
- reduceRight?: boolean;
206
- find?: boolean;
207
- findIndex?: boolean;
208
- fill?: boolean;
209
- copyWithin?: boolean;
210
- entries?: boolean;
211
- keys?: boolean;
212
- values?: boolean;
213
- includes?: boolean;
214
- flatMap?: boolean;
215
- flat?: boolean;
216
- };
217
- };
218
- } | {
219
- [x: number]: string | number | boolean | {
220
- [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
221
- } | /*elided*/ any;
222
- length: number;
223
- toString: never;
224
- toLocaleString: never;
225
- pop: never;
226
- push: never;
227
- concat: never;
228
- join: never;
229
- reverse: never;
230
- shift: never;
231
- slice: never;
232
- sort: never;
233
- splice: never;
234
- unshift: never;
235
- indexOf: never;
236
- lastIndexOf: never;
237
- every: never;
238
- some: never;
239
- forEach: never;
240
- map: never;
241
- filter: never;
242
- reduce: never;
243
- reduceRight: never;
244
- find: never;
245
- findIndex: never;
246
- fill: never;
247
- copyWithin: never;
248
- entries: never;
249
- keys: never;
250
- values: never;
251
- includes: never;
252
- flatMap: never;
253
- flat: never;
254
- [Symbol.iterator]: never;
255
- readonly [Symbol.unscopables]: {
256
- [x: number]: boolean;
257
- length?: boolean;
258
- toString?: boolean;
259
- toLocaleString?: boolean;
260
- pop?: boolean;
261
- push?: boolean;
262
- concat?: boolean;
263
- join?: boolean;
264
- reverse?: boolean;
265
- shift?: boolean;
266
- slice?: boolean;
267
- sort?: boolean;
268
- splice?: boolean;
269
- unshift?: boolean;
270
- indexOf?: boolean;
271
- lastIndexOf?: boolean;
272
- every?: boolean;
273
- some?: boolean;
274
- forEach?: boolean;
275
- map?: boolean;
276
- filter?: boolean;
277
- reduce?: boolean;
278
- reduceRight?: boolean;
279
- find?: boolean;
280
- findIndex?: boolean;
281
- fill?: boolean;
282
- copyWithin?: boolean;
283
- entries?: boolean;
284
- keys?: boolean;
285
- values?: boolean;
286
- includes?: boolean;
287
- flatMap?: boolean;
288
- flat?: boolean;
289
- };
290
- };
291
- };
292
- name: string | null;
293
- id: string;
294
- createdAt: string;
295
- updatedAt: string;
296
- deletedAt: string;
297
- isActive: boolean;
298
- thumbnailUrl: string | null;
299
- productId: string;
300
- sku: string;
301
- price: string;
302
- trackInventory: boolean;
303
- lowStockThreshold: number | null;
304
- };
305
- id: string;
306
- updatedAt: string;
307
- variantId: string;
308
- warehouseId: string;
309
- inventoryCount: number;
310
- }[];
311
- name: string;
312
- id: string;
313
- createdAt: string;
314
- updatedAt: string;
315
- deletedAt: string;
316
- isActive: boolean;
317
- address: string | null;
318
- city: string | null;
319
- state: string | null;
320
- };
321
- inventory: {
322
- variantId: string;
323
- sku: string;
324
- productName: string;
325
- name: string;
326
- brandName: string;
327
- inventoryCount: number;
328
- lowStockThreshold: number;
329
- isLowStock: boolean;
330
- }[];
331
- };
332
- outputFormat: "json";
333
- status: import("hono/utils/http-status").ContentfulStatusCode;
334
- } | {
335
- input: {
336
- param: {
337
- id: string;
338
- };
339
- };
340
- output: {
341
- error: {
342
- code: string;
343
- message: string;
344
- };
345
- };
346
- outputFormat: "json";
347
- status: 500;
348
- };
349
- };
350
- } & {
351
- "/:id": {
352
- $delete: {
353
- input: {
354
- param: {
355
- id: string;
356
- };
357
- };
358
- output: {};
359
- outputFormat: string;
360
- status: import("hono/utils/http-status").StatusCode;
361
- } | {
362
- input: {
363
- param: {
364
- id: string;
365
- };
366
- };
367
- output: {};
368
- outputFormat: string;
369
- status: import("hono/utils/http-status").StatusCode;
370
- };
371
- };
372
- }, "/">;
373
- export default app;
@@ -1,123 +0,0 @@
1
- import { Hono } from 'hono';
2
- import { zValidator } from '@hono/zod-validator';
3
- import { z } from 'zod';
4
- import { createWarehouseSchema, updateWarehouseSchema } from '../../validators/warehouse';
5
- import { getPrismaClient } from '../../lib/prisma';
6
- const app = new Hono()
7
- // List all warehouses (shared across brands)
8
- .get('/', async (c) => {
9
- try {
10
- const prisma = getPrismaClient(c.env.DATABASE_URL);
11
- const warehouses = await prisma.warehouse.findMany({
12
- where: { deletedAt: null },
13
- orderBy: { name: 'asc' },
14
- });
15
- return c.json(warehouses);
16
- }
17
- catch (error) {
18
- return c.json({
19
- error: { code: 'INTERNAL_ERROR', message: 'Failed to retrieve warehouses' },
20
- }, 500);
21
- }
22
- })
23
- // Create warehouse
24
- .post('/', zValidator('json', createWarehouseSchema), async (c) => {
25
- try {
26
- const input = c.req.valid('json');
27
- const prisma = getPrismaClient(c.env.DATABASE_URL);
28
- const warehouse = await prisma.warehouse.create({
29
- data: input,
30
- });
31
- return c.json(warehouse, 201);
32
- }
33
- catch (error) {
34
- return c.json({
35
- error: { code: 'INTERNAL_ERROR', message: 'Failed to create warehouse' },
36
- }, 500);
37
- }
38
- })
39
- // Update warehouse
40
- .patch('/:id', zValidator('param', z.object({ id: z.uuid() })), zValidator('json', updateWarehouseSchema), async (c) => {
41
- try {
42
- const { id } = c.req.valid('param');
43
- const input = c.req.valid('json');
44
- const prisma = getPrismaClient(c.env.DATABASE_URL);
45
- const warehouse = await prisma.warehouse.update({
46
- where: { id },
47
- data: input,
48
- });
49
- return c.json(warehouse);
50
- }
51
- catch (error) {
52
- return c.json({
53
- error: { code: 'INTERNAL_ERROR', message: 'Failed to update warehouse' },
54
- }, 500);
55
- }
56
- })
57
- // Get warehouse inventory
58
- .get('/:id/inventory', zValidator('param', z.object({ id: z.uuid() })), async (c) => {
59
- try {
60
- const id = c.req.param('id');
61
- const prisma = getPrismaClient(c.env.DATABASE_URL);
62
- const warehouse = await prisma.warehouse.findFirst({
63
- where: { id, deletedAt: null },
64
- include: {
65
- inventories: {
66
- include: {
67
- variant: {
68
- include: {
69
- product: {
70
- include: {
71
- brand: true, // Include brand through product
72
- },
73
- },
74
- },
75
- },
76
- },
77
- },
78
- },
79
- });
80
- if (!warehouse) {
81
- return c.json({
82
- error: { code: 'WAREHOUSE_NOT_FOUND', message: 'Warehouse not found' },
83
- }, 404);
84
- }
85
- return c.json({
86
- warehouse,
87
- inventory: warehouse.inventories.map((inv) => ({
88
- variantId: inv.variantId,
89
- sku: inv.variant.sku,
90
- productName: inv.variant.product.name,
91
- name: inv.variant.name,
92
- brandName: inv.variant.product.brand.name, // Brand from product
93
- inventoryCount: inv.inventoryCount,
94
- lowStockThreshold: inv.variant.lowStockThreshold,
95
- isLowStock: inv.variant.lowStockThreshold
96
- ? inv.inventoryCount < inv.variant.lowStockThreshold
97
- : false,
98
- })),
99
- });
100
- }
101
- catch (error) {
102
- return c.json({
103
- error: { code: 'INTERNAL_ERROR', message: 'Failed to retrieve warehouse inventory' },
104
- }, 500);
105
- }
106
- })
107
- // Soft delete warehouse
108
- .delete('/:id', zValidator('param', z.object({ id: z.uuid() })), async (c) => {
109
- try {
110
- const { id } = c.req.valid('param');
111
- const prisma = getPrismaClient(c.env.DATABASE_URL);
112
- await prisma.warehouse.delete({
113
- where: { id },
114
- });
115
- return c.status(204);
116
- }
117
- catch (error) {
118
- return c.json({
119
- error: { code: 'INTERNAL_ERROR', message: 'Failed to delete warehouse' },
120
- }, 500);
121
- }
122
- });
123
- export default app;