@burdenoff/microfe-kadaikodi 2026.704.1 → 2026.704.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/dist/kadaikodi/hooks/useKadaikodiApi.js +77 -26
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +341 -461
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +115 -399
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +140 -283
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +282 -453
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminProfilePage.js +115 -242
- package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +2 -2
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +503 -627
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +339 -282
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +323 -422
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +374 -383
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +249 -208
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +1 -1
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +171 -627
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.js +331 -415
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js +18 -670
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +4 -2
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js +191 -369
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +233 -389
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js +76 -118
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js +135 -213
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +272 -774
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +232 -343
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +112 -600
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js +127 -294
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +204 -290
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +159 -500
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +399 -487
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +13 -13
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js +192 -296
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +245 -397
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +85 -117
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +177 -395
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -110,7 +110,17 @@ var o = async (e, t, n) => {
|
|
|
110
110
|
earnings: e.earnings ?? 0,
|
|
111
111
|
distance: e.distance ?? void 0,
|
|
112
112
|
notes: e.notes ?? void 0
|
|
113
|
-
}), m =
|
|
113
|
+
}), m = (e) => ({
|
|
114
|
+
id: e.id,
|
|
115
|
+
date: e.date,
|
|
116
|
+
startTime: e.startTime,
|
|
117
|
+
endTime: e.endTime ?? "",
|
|
118
|
+
cartId: e.providerId,
|
|
119
|
+
cartName: e.provider?.name ?? "Unknown Cart",
|
|
120
|
+
status: e.status.toLowerCase(),
|
|
121
|
+
tasksCompleted: e.tasksCompleted,
|
|
122
|
+
totalEarnings: e.totalEarnings
|
|
123
|
+
}), h = "\n id name slug category status ownerId rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n", g = "\n id orderNumber providerId customerId status paymentStatus fulfillmentType subtotal tax deliveryFee discount total notes timeline paymentMethod deliveryAddress createdAt\n provider { name }\n items { id offeringId name quantity unitPrice totalPrice customizations }\n", _ = "\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n", v = (t) => {
|
|
114
124
|
let { apiGatewayUrl: n } = e();
|
|
115
125
|
return r({
|
|
116
126
|
queryKey: [
|
|
@@ -120,11 +130,11 @@ var o = async (e, t, n) => {
|
|
|
120
130
|
],
|
|
121
131
|
queryFn: async () => (await o(`query Providers($filter: KadaikodiProviderFilterInput) {
|
|
122
132
|
kadaikodiListServiceProviders(filter: $filter, limit: 200) {
|
|
123
|
-
${
|
|
133
|
+
${h}
|
|
124
134
|
}
|
|
125
135
|
}`, { filter: t ? { query: t } : void 0 }, n)).kadaikodiListServiceProviders.map(l)
|
|
126
136
|
});
|
|
127
|
-
},
|
|
137
|
+
}, y = (t) => {
|
|
128
138
|
let { apiGatewayUrl: n } = e();
|
|
129
139
|
return r({
|
|
130
140
|
queryKey: [
|
|
@@ -135,14 +145,14 @@ var o = async (e, t, n) => {
|
|
|
135
145
|
queryFn: async () => {
|
|
136
146
|
let e = await o(`query Provider($id: ID!) {
|
|
137
147
|
kadaikodiServiceProvider(id: $id) {
|
|
138
|
-
${
|
|
148
|
+
${h}
|
|
139
149
|
}
|
|
140
150
|
}`, { id: t }, n);
|
|
141
151
|
return e.kadaikodiServiceProvider ? l(e.kadaikodiServiceProvider) : null;
|
|
142
152
|
},
|
|
143
153
|
enabled: !!t
|
|
144
154
|
});
|
|
145
|
-
},
|
|
155
|
+
}, b = (t) => {
|
|
146
156
|
let { apiGatewayUrl: n } = e();
|
|
147
157
|
return r({
|
|
148
158
|
queryKey: [
|
|
@@ -152,12 +162,12 @@ var o = async (e, t, n) => {
|
|
|
152
162
|
],
|
|
153
163
|
queryFn: async () => (await o(`query Offerings($providerId: String) {
|
|
154
164
|
kadaikodiListOfferings(providerId: $providerId, limit: 300) {
|
|
155
|
-
${
|
|
165
|
+
${_}
|
|
156
166
|
}
|
|
157
167
|
}`, { providerId: t }, n)).kadaikodiListOfferings,
|
|
158
168
|
enabled: !!t
|
|
159
169
|
});
|
|
160
|
-
},
|
|
170
|
+
}, x = (t = {}) => {
|
|
161
171
|
let { apiGatewayUrl: n } = e();
|
|
162
172
|
return r({
|
|
163
173
|
queryKey: [
|
|
@@ -168,11 +178,11 @@ var o = async (e, t, n) => {
|
|
|
168
178
|
],
|
|
169
179
|
queryFn: async () => (await o(`query Orders($providerId: String, $customerId: String) {
|
|
170
180
|
kadaikodiListOrders(providerId: $providerId, customerId: $customerId, limit: 200) {
|
|
171
|
-
${
|
|
181
|
+
${g}
|
|
172
182
|
}
|
|
173
183
|
}`, t, n)).kadaikodiListOrders.map(u)
|
|
174
184
|
});
|
|
175
|
-
},
|
|
185
|
+
}, S = (t) => {
|
|
176
186
|
let { apiGatewayUrl: n } = e();
|
|
177
187
|
return r({
|
|
178
188
|
queryKey: [
|
|
@@ -183,32 +193,32 @@ var o = async (e, t, n) => {
|
|
|
183
193
|
queryFn: async () => {
|
|
184
194
|
let e = await o(`query Order($id: ID!) {
|
|
185
195
|
kadaikodiOrder(id: $id) {
|
|
186
|
-
${
|
|
196
|
+
${g}
|
|
187
197
|
}
|
|
188
198
|
}`, { id: t }, n);
|
|
189
199
|
return e.kadaikodiOrder ? u(e.kadaikodiOrder) : null;
|
|
190
200
|
},
|
|
191
201
|
enabled: !!t
|
|
192
202
|
});
|
|
193
|
-
},
|
|
203
|
+
}, C = () => {
|
|
194
204
|
let { apiGatewayUrl: t } = e();
|
|
195
205
|
return r({
|
|
196
206
|
queryKey: ["kadaikodi", "dashboard-stats"],
|
|
197
207
|
queryFn: async () => (await o("query DashboardStats { kadaikodiDashboardStats { totalOrders totalRevenue activeProviders activeCustomers avgRating pendingOrders } }", {}, t)).kadaikodiDashboardStats
|
|
198
208
|
});
|
|
199
|
-
},
|
|
209
|
+
}, w = () => {
|
|
200
210
|
let { apiGatewayUrl: t } = e();
|
|
201
211
|
return r({
|
|
202
212
|
queryKey: ["kadaikodi", "admin-analytics"],
|
|
203
213
|
queryFn: async () => (await o("query AdminAnalytics { kadaikodiAdminAnalytics { revenueByCategory orderTrends topProviders customerGrowth categoryDistribution } }", {}, t)).kadaikodiAdminAnalytics
|
|
204
214
|
});
|
|
205
|
-
},
|
|
215
|
+
}, T = () => {
|
|
206
216
|
let { apiGatewayUrl: t } = e();
|
|
207
217
|
return r({
|
|
208
218
|
queryKey: ["kadaikodi", "investment-opportunities"],
|
|
209
219
|
queryFn: async () => (await o("query Opportunities {\n kadaikodiListInvestmentOpportunities(limit: 200) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }", {}, t)).kadaikodiListInvestmentOpportunities.map(d)
|
|
210
220
|
});
|
|
211
|
-
},
|
|
221
|
+
}, E = (t) => {
|
|
212
222
|
let { apiGatewayUrl: n } = e();
|
|
213
223
|
return r({
|
|
214
224
|
queryKey: [
|
|
@@ -219,7 +229,18 @@ var o = async (e, t, n) => {
|
|
|
219
229
|
queryFn: async () => (await o("query Investments($investorId: String!) {\n kadaikodiListInvestments(investorId: $investorId) {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }", { investorId: t }, n)).kadaikodiListInvestments.map(f),
|
|
220
230
|
enabled: !!t
|
|
221
231
|
});
|
|
222
|
-
},
|
|
232
|
+
}, D = (t) => {
|
|
233
|
+
let { apiGatewayUrl: n } = e();
|
|
234
|
+
return r({
|
|
235
|
+
queryKey: [
|
|
236
|
+
"kadaikodi",
|
|
237
|
+
"provider-workers",
|
|
238
|
+
t
|
|
239
|
+
],
|
|
240
|
+
queryFn: async () => (await o("query ProviderWorkers($providerId: String!) {\n kadaikodiListProviderWorkers(providerId: $providerId) {\n id providerId workerId name role status metadata\n }\n }", { providerId: t }, n)).kadaikodiListProviderWorkers,
|
|
241
|
+
enabled: !!t
|
|
242
|
+
});
|
|
243
|
+
}, O = (t) => {
|
|
223
244
|
let { apiGatewayUrl: n } = e();
|
|
224
245
|
return r({
|
|
225
246
|
queryKey: [
|
|
@@ -230,7 +251,7 @@ var o = async (e, t, n) => {
|
|
|
230
251
|
queryFn: async () => (await o("query WorkerTasks($workerId: String!) {\n kadaikodiWorkerTasks(workerId: $workerId, limit: 100) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n provider { name }\n order { deliveryAddress }\n }\n }", { workerId: t }, n)).kadaikodiWorkerTasks.map(p),
|
|
231
252
|
enabled: !!t
|
|
232
253
|
});
|
|
233
|
-
},
|
|
254
|
+
}, k = (t) => {
|
|
234
255
|
let { apiGatewayUrl: n } = e();
|
|
235
256
|
return r({
|
|
236
257
|
queryKey: [
|
|
@@ -241,7 +262,29 @@ var o = async (e, t, n) => {
|
|
|
241
262
|
queryFn: async () => (await o("query WorkerStats($workerId: String!) {\n kadaikodiWorkerStats(workerId: $workerId) {\n totalDeliveries totalEarnings averageRating completionRate todayTasks todayEarnings\n }\n }", { workerId: t }, n)).kadaikodiWorkerStats,
|
|
242
263
|
enabled: !!t
|
|
243
264
|
});
|
|
244
|
-
},
|
|
265
|
+
}, A = (t) => {
|
|
266
|
+
let { apiGatewayUrl: n } = e();
|
|
267
|
+
return r({
|
|
268
|
+
queryKey: [
|
|
269
|
+
"kadaikodi",
|
|
270
|
+
"worker-schedules",
|
|
271
|
+
t
|
|
272
|
+
],
|
|
273
|
+
queryFn: async () => (await o("query WorkerSchedules($workerId: String!) {\n kadaikodiListWorkerSchedules(workerId: $workerId) {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }", { workerId: t }, n)).kadaikodiListWorkerSchedules.map(m),
|
|
274
|
+
enabled: !!t
|
|
275
|
+
});
|
|
276
|
+
}, j = (t) => {
|
|
277
|
+
let { apiGatewayUrl: n } = e();
|
|
278
|
+
return r({
|
|
279
|
+
queryKey: [
|
|
280
|
+
"kadaikodi",
|
|
281
|
+
"reviews",
|
|
282
|
+
t
|
|
283
|
+
],
|
|
284
|
+
queryFn: async () => (await o("query Reviews($providerId: String!) {\n kadaikodiListReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }", { providerId: t }, n)).kadaikodiListReviews,
|
|
285
|
+
enabled: !!t
|
|
286
|
+
});
|
|
287
|
+
}, M = () => {
|
|
245
288
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
246
289
|
return n({
|
|
247
290
|
mutationFn: async (e) => (await o("mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }", { input: e }, r)).kadaikodiPlaceOrder,
|
|
@@ -249,7 +292,7 @@ var o = async (e, t, n) => {
|
|
|
249
292
|
t.invalidateQueries({ queryKey: ["kadaikodi", "orders"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
|
|
250
293
|
}
|
|
251
294
|
});
|
|
252
|
-
},
|
|
295
|
+
}, N = () => {
|
|
253
296
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
254
297
|
return n({
|
|
255
298
|
mutationFn: async ({ id: e, status: t }) => (await o("mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }", {
|
|
@@ -260,12 +303,12 @@ var o = async (e, t, n) => {
|
|
|
260
303
|
t.invalidateQueries({ queryKey: ["kadaikodi", "orders"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "order"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
|
|
261
304
|
}
|
|
262
305
|
});
|
|
263
|
-
},
|
|
306
|
+
}, P = () => {
|
|
264
307
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
265
308
|
return n({
|
|
266
309
|
mutationFn: async ({ id: e, input: t }) => (await o(`mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {
|
|
267
310
|
kadaikodiUpdateOffering(id: $id, input: $input) {
|
|
268
|
-
${
|
|
311
|
+
${_}
|
|
269
312
|
}
|
|
270
313
|
}`, {
|
|
271
314
|
id: e,
|
|
@@ -275,7 +318,7 @@ var o = async (e, t, n) => {
|
|
|
275
318
|
t.invalidateQueries({ queryKey: ["kadaikodi", "offerings"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "offering"] });
|
|
276
319
|
}
|
|
277
320
|
});
|
|
278
|
-
},
|
|
321
|
+
}, F = () => {
|
|
279
322
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
280
323
|
return n({
|
|
281
324
|
mutationFn: async (e) => (await o("mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }", { input: e }, r)).kadaikodiInvest,
|
|
@@ -283,7 +326,15 @@ var o = async (e, t, n) => {
|
|
|
283
326
|
t.invalidateQueries({ queryKey: ["kadaikodi", "investments"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "investment-opportunities"] });
|
|
284
327
|
}
|
|
285
328
|
});
|
|
286
|
-
},
|
|
329
|
+
}, I = () => {
|
|
330
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
331
|
+
return n({
|
|
332
|
+
mutationFn: async (e) => (await o("mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }", { input: e }, r)).kadaikodiCreateProviderWorker,
|
|
333
|
+
onSuccess: () => {
|
|
334
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "provider-workers"] });
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
}, L = () => {
|
|
287
338
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
288
339
|
return n({
|
|
289
340
|
mutationFn: async ({ taskId: e, status: t }) => (await o("mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }", {
|
|
@@ -294,7 +345,7 @@ var o = async (e, t, n) => {
|
|
|
294
345
|
t.invalidateQueries({ queryKey: ["kadaikodi", "worker-tasks"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "worker-stats"] });
|
|
295
346
|
}
|
|
296
347
|
});
|
|
297
|
-
},
|
|
348
|
+
}, R = () => {
|
|
298
349
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
299
350
|
return n({
|
|
300
351
|
mutationFn: async ({ workerId: e, action: t }) => (await o("mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }", {
|
|
@@ -305,8 +356,8 @@ var o = async (e, t, n) => {
|
|
|
305
356
|
t.invalidateQueries({ queryKey: ["kadaikodi", "worker-schedules"] });
|
|
306
357
|
}
|
|
307
358
|
});
|
|
308
|
-
},
|
|
309
|
-
let { currentUser: n } = e(), r =
|
|
359
|
+
}, z = () => {
|
|
360
|
+
let { currentUser: n } = e(), r = v(), i = x({ customerId: n?.id }), a = C(), o = T(), s = E(n?.id || "");
|
|
310
361
|
return t(() => ({
|
|
311
362
|
providers: r,
|
|
312
363
|
orders: i,
|
|
@@ -322,6 +373,6 @@ var o = async (e, t, n) => {
|
|
|
322
373
|
]);
|
|
323
374
|
};
|
|
324
375
|
//#endregion
|
|
325
|
-
export {
|
|
376
|
+
export { w as useAdminAnalytics, I as useCreateProviderWorker, C as useDashboardStats, F as useInvest, T as useInvestmentOpportunities, E as useInvestments, z as useKadaikodiApi, b as useOfferings, S as useOrder, x as useOrders, M as usePlaceOrder, y as useProvider, D as useProviderWorkers, v as useProviders, j as useReviews, P as useUpdateOffering, N as useUpdateOrderStatus, L as useUpdateWorkerTaskStatus, R as useWorkerClockInOut, A as useWorkerSchedules, k as useWorkerStats, O as useWorkerTasks };
|
|
326
377
|
|
|
327
378
|
//# sourceMappingURL=useKadaikodiApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKadaikodiApi.js","names":[],"sources":["../../../src/kadaikodi/hooks/useKadaikodiApi.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useKadaikodi } from '../context';\nimport type {\n MockCart,\n MockOrder,\n OrderItem,\n OrderStatus,\n PaymentStatus,\n OrderTimelineEvent,\n DeliveryAddress,\n InvestmentOpportunity,\n Investment,\n DashboardStats,\n AdminAnalytics,\n WorkerTask,\n WorkerSchedule,\n WorkerStats,\n} from '../types';\n\n// ============================================================================\n// Low-level fetch helper\n// ============================================================================\n\nconst kadaikodiQuery = async <TData>(\n query: string,\n variables: Record<string, unknown>,\n baseUrl?: string\n): Promise<TData> => {\n const response = await graphqlFetch<TData>({\n gateway: 'workspace',\n baseUrl,\n query,\n variables,\n workspaceToken: true,\n });\n\n if (response.errors?.length) {\n throw new Error(response.errors[0]?.message ?? 'GraphQL request failed');\n }\n\n if (!response.data) {\n throw new Error('GraphQL response did not include data');\n }\n\n return response.data;\n};\n\n// ============================================================================\n// Raw GraphQL row shapes (explicit — no `any`)\n// ============================================================================\n\ninterface RawLocation {\n address?: string | null;\n latitude?: number | null;\n longitude?: number | null;\n coordinates?: { lat?: number | null; lng?: number | null } | null;\n}\n\ninterface ProviderRow {\n id: string;\n name: string;\n slug: string;\n category: string;\n status: string;\n ownerId: string;\n rating: number;\n totalRatings: number;\n averageOrderValue: number;\n serviceTypes: string[];\n location: RawLocation | null;\n businessHours?: MockCart['businessHours'];\n createdAt: string;\n}\n\nexport interface KadaikodiOfferingRow {\n id: string;\n providerId: string;\n kind: string;\n name: string;\n slug: string;\n category: string;\n description?: string | null;\n price: number;\n originalPrice?: number | null;\n stock?: number | null;\n durationMinutes?: number | null;\n serviceType?: string | null;\n tags: string[];\n isAvailable: boolean;\n metadata?: Record<string, unknown> | null;\n media?: string[] | null;\n}\n\ninterface OrderItemRow {\n id: string;\n offeringId?: string | null;\n name: string;\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n customizations?: string[] | null;\n}\n\ninterface OrderRow {\n id: string;\n orderNumber: string;\n providerId: string;\n customerId: string;\n status: string;\n paymentStatus: string;\n fulfillmentType: string;\n subtotal: number;\n tax: number;\n deliveryFee: number;\n discount: number;\n total: number;\n notes?: string | null;\n timeline?: OrderTimelineEvent[] | null;\n paymentMethod?: string | null;\n deliveryAddress?: Partial<DeliveryAddress> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n items: OrderItemRow[];\n}\n\ninterface InvestmentOpportunityRow {\n id: string;\n providerId: string;\n title: string;\n description?: string | null;\n targetAmount: number;\n raisedAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel: string;\n status: string;\n expiresAt?: string | null;\n terms?: Record<string, unknown> | null;\n businessMetrics?: Record<string, unknown> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n}\n\ninterface InvestmentRow {\n id: string;\n opportunityId: string;\n amount: number;\n currentValue: number;\n expectedReturnsPct: number;\n status: string;\n investedAt: string;\n maturedAt?: string | null;\n realizedReturns: number;\n opportunity?: { provider?: { name?: string | null } | null } | null;\n}\n\nexport interface KadaikodiReviewRow {\n id: string;\n providerId: string;\n customerId: string;\n rating: number;\n review?: string | null;\n response?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface KadaikodiProviderWorkerRow {\n id: string;\n providerId: string;\n workerId: string;\n name: string;\n role: string;\n status: string;\n metadata?: Record<string, unknown> | null;\n}\n\ninterface WorkerTaskRow {\n id: string;\n orderId?: string | null;\n providerId?: string | null;\n type: string;\n description?: string | null;\n priority: string;\n status: string;\n assignedAt?: string | null;\n dueAt?: string | null;\n completedAt?: string | null;\n customerName?: string | null;\n customerPhone?: string | null;\n earnings?: number | null;\n distance?: number | null;\n notes?: string | null;\n provider?: { name?: string | null } | null;\n order?: { deliveryAddress?: Partial<DeliveryAddress> | null } | null;\n}\n\ninterface WorkerScheduleRow {\n id: string;\n date: string;\n startTime: string;\n endTime?: string | null;\n providerId: string;\n status: string;\n tasksCompleted: number;\n totalEarnings: number;\n provider?: { name?: string | null } | null;\n}\n\n// ============================================================================\n// Mappers\n// ============================================================================\n\nconst toCartLocation = (loc: RawLocation | null | undefined): MockCart['location'] => ({\n address: loc?.address ?? '',\n coordinates: {\n lat: loc?.coordinates?.lat ?? loc?.latitude ?? 0,\n lng: loc?.coordinates?.lng ?? loc?.longitude ?? 0,\n },\n});\n\nconst toDeliveryAddress = (raw: Partial<DeliveryAddress> | null | undefined): DeliveryAddress => ({\n street: raw?.street ?? '',\n area: raw?.area ?? '',\n city: raw?.city ?? '',\n pincode: raw?.pincode ?? '',\n landmark: raw?.landmark,\n});\n\nconst mapProvider = (p: ProviderRow): MockCart => ({\n id: p.id,\n name: p.name,\n category: p.category,\n ownerId: p.ownerId,\n rating: p.rating,\n totalRatings: p.totalRatings,\n isOpen: p.status === 'ACTIVE' || p.status === 'VERIFIED',\n isVerified: p.status === 'VERIFIED',\n location: toCartLocation(p.location),\n averageOrderValue: p.averageOrderValue,\n serviceTypes: p.serviceTypes,\n businessHours: p.businessHours,\n createdAt: p.createdAt,\n // image/images/distance/estimatedTime intentionally omitted — no fabricated data.\n});\n\nconst mapOrder = (o: OrderRow): MockOrder => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n // cartImage intentionally omitted — no fabricated data.\n items: o.items.map(\n (i): OrderItem => ({\n id: i.id,\n name: i.name,\n quantity: i.quantity,\n price: i.unitPrice,\n customizations: i.customizations ?? undefined,\n })\n ),\n total: o.total,\n subtotal: o.subtotal,\n taxes: o.tax,\n deliveryFee: o.deliveryFee,\n discount: o.discount,\n status: o.status.toLowerCase() as OrderStatus,\n orderDate: o.createdAt,\n deliveryAddress: toDeliveryAddress(o.deliveryAddress),\n paymentMethod: o.paymentMethod ?? 'Cash',\n paymentStatus: o.paymentStatus.toLowerCase() as PaymentStatus,\n timeline: o.timeline ?? [],\n});\n\nconst mapInvestmentOpportunity = (o: InvestmentOpportunityRow): InvestmentOpportunity => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n businessOwner: '',\n targetAmount: o.targetAmount,\n raisedAmount: o.raisedAmount,\n minimumInvestment: o.minimumInvestment,\n expectedReturns: o.expectedReturnsPct,\n investmentPeriod: o.lockInMonths,\n riskLevel: o.riskLevel.toLowerCase() as InvestmentOpportunity['riskLevel'],\n description: o.description ?? '',\n businessPlan: '',\n financialProjections: [],\n documents: [],\n investors: [],\n status: o.status.toLowerCase() as InvestmentOpportunity['status'],\n createdAt: o.createdAt,\n expiresAt: o.expiresAt ?? '',\n});\n\nconst mapInvestment = (i: InvestmentRow): Investment => ({\n id: i.id,\n opportunityId: i.opportunityId,\n cartName: i.opportunity?.provider?.name ?? 'Unknown Cart',\n investedAmount: i.amount,\n currentValue: i.currentValue,\n returns: i.realizedReturns,\n returnsPercentage: i.expectedReturnsPct,\n investmentDate: i.investedAt,\n status: i.status.toLowerCase() as Investment['status'],\n});\n\nconst mapWorkerTask = (t: WorkerTaskRow): WorkerTask => ({\n id: t.id,\n orderId: t.orderId ?? '',\n cartId: t.providerId ?? '',\n cartName: t.provider?.name ?? 'Unknown Cart',\n type: t.type.toLowerCase() as WorkerTask['type'],\n description: t.description ?? '',\n priority: t.priority.toLowerCase() as WorkerTask['priority'],\n status: t.status.toLowerCase() as WorkerTask['status'],\n assignedAt: t.assignedAt ?? '',\n dueAt: t.dueAt ?? '',\n completedAt: t.completedAt ?? undefined,\n customerName: t.customerName ?? '',\n customerPhone: t.customerPhone ?? '',\n deliveryAddress: t.order?.deliveryAddress ? toDeliveryAddress(t.order.deliveryAddress) : undefined,\n earnings: t.earnings ?? 0,\n distance: t.distance ?? undefined,\n notes: t.notes ?? undefined,\n});\n\nconst mapWorkerSchedule = (s: WorkerScheduleRow): WorkerSchedule => ({\n id: s.id,\n date: s.date,\n startTime: s.startTime,\n endTime: s.endTime ?? '',\n cartId: s.providerId,\n cartName: s.provider?.name ?? 'Unknown Cart',\n status: s.status.toLowerCase() as WorkerSchedule['status'],\n tasksCompleted: s.tasksCompleted,\n totalEarnings: s.totalEarnings,\n});\n\n// ============================================================================\n// GraphQL selection fragments (kept as string constants for reuse)\n// ============================================================================\n\nconst PROVIDER_FIELDS = `\n id name slug category status ownerId rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n`;\n\nconst ORDER_FIELDS = `\n id orderNumber providerId customerId status paymentStatus fulfillmentType subtotal tax deliveryFee discount total notes timeline paymentMethod deliveryAddress createdAt\n provider { name }\n items { id offeringId name quantity unitPrice totalPrice customizations }\n`;\n\nconst OFFERING_FIELDS = `\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n`;\n\n// ============================================================================\n// Service Providers (Carts)\n// ============================================================================\n\nexport const useProviders = (query?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'providers', query],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListServiceProviders: ProviderRow[] }>(\n `query Providers($filter: KadaikodiProviderFilterInput) {\n kadaikodiListServiceProviders(filter: $filter, limit: 200) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { filter: query ? { query } : undefined },\n apiGatewayUrl\n );\n return result.kadaikodiListServiceProviders.map(mapProvider);\n },\n });\n};\n\nexport const useProvider = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiServiceProvider: ProviderRow | null }>(\n `query Provider($id: ID!) {\n kadaikodiServiceProvider(id: $id) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiServiceProvider ? mapProvider(result.kadaikodiServiceProvider) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Offerings\n// ============================================================================\n\nexport const useOfferings = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offerings', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOfferings: KadaikodiOfferingRow[] }>(\n `query Offerings($providerId: String) {\n kadaikodiListOfferings(providerId: $providerId, limit: 300) {\n ${OFFERING_FIELDS}\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListOfferings;\n },\n enabled: Boolean(providerId),\n });\n};\n\nexport const useOffering = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offering', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOffering: KadaikodiOfferingRow | null }>(\n `query Offering($id: ID!) {\n kadaikodiOffering(id: $id) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOffering;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Orders\n// ============================================================================\n\nexport const useOrders = (input: { providerId?: string; customerId?: string } = {}) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'orders', input.providerId, input.customerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOrders: OrderRow[] }>(\n `query Orders($providerId: String, $customerId: String) {\n kadaikodiListOrders(providerId: $providerId, customerId: $customerId, limit: 200) {\n ${ORDER_FIELDS}\n }\n }`,\n input,\n apiGatewayUrl\n );\n return result.kadaikodiListOrders.map(mapOrder);\n },\n });\n};\n\nexport const useOrder = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'order', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOrder: OrderRow | null }>(\n `query Order($id: ID!) {\n kadaikodiOrder(id: $id) {\n ${ORDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOrder ? mapOrder(result.kadaikodiOrder) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Analytics & Stats\n// ============================================================================\n\nexport const useDashboardStats = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'dashboard-stats'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiDashboardStats: DashboardStats }>(\n `query DashboardStats { kadaikodiDashboardStats { totalOrders totalRevenue activeProviders activeCustomers avgRating pendingOrders } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiDashboardStats;\n },\n });\n};\n\nexport const useAdminAnalytics = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'admin-analytics'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiAdminAnalytics: AdminAnalytics }>(\n `query AdminAnalytics { kadaikodiAdminAnalytics { revenueByCategory orderTrends topProviders customerGrowth categoryDistribution } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiAdminAnalytics;\n },\n });\n};\n\n// ============================================================================\n// Investments\n// ============================================================================\n\nexport const useInvestmentOpportunities = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investment-opportunities'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListInvestmentOpportunities: InvestmentOpportunityRow[];\n }>(\n `query Opportunities {\n kadaikodiListInvestmentOpportunities(limit: 200) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListInvestmentOpportunities.map(mapInvestmentOpportunity);\n },\n });\n};\n\nexport const useInvestments = (investorId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investments', investorId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListInvestments: InvestmentRow[] }>(\n `query Investments($investorId: String!) {\n kadaikodiListInvestments(investorId: $investorId) {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }`,\n { investorId },\n apiGatewayUrl\n );\n return result.kadaikodiListInvestments.map(mapInvestment);\n },\n enabled: Boolean(investorId),\n });\n};\n\n// ============================================================================\n// Provider Workers\n// ============================================================================\n\nexport const useProviderWorkers = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider-workers', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListProviderWorkers: KadaikodiProviderWorkerRow[];\n }>(\n `query ProviderWorkers($providerId: String!) {\n kadaikodiListProviderWorkers(providerId: $providerId) {\n id providerId workerId name role status metadata\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListProviderWorkers;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Workers & Tasks\n// ============================================================================\n\nexport const useWorkerTasks = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-tasks', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiWorkerTasks: WorkerTaskRow[] }>(\n `query WorkerTasks($workerId: String!) {\n kadaikodiWorkerTasks(workerId: $workerId, limit: 100) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n provider { name }\n order { deliveryAddress }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerTasks.map(mapWorkerTask);\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerStats = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-stats', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiWorkerStats: WorkerStats }>(\n `query WorkerStats($workerId: String!) {\n kadaikodiWorkerStats(workerId: $workerId) {\n totalDeliveries totalEarnings averageRating completionRate todayTasks todayEarnings\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerStats;\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerSchedules = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-schedules', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListWorkerSchedules: WorkerScheduleRow[] }>(\n `query WorkerSchedules($workerId: String!) {\n kadaikodiListWorkerSchedules(workerId: $workerId) {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiListWorkerSchedules.map(mapWorkerSchedule);\n },\n enabled: Boolean(workerId),\n });\n};\n\n// ============================================================================\n// Reviews\n// ============================================================================\n\nexport const useReviews = (providerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'reviews', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListReviews: KadaikodiReviewRow[] }>(\n `query Reviews($providerId: String!) {\n kadaikodiListReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListReviews;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Mutations\n// ============================================================================\n\nexport const usePlaceOrder = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiPlaceOrder: { id: string; orderNumber: string; status: string; total: number; createdAt: string };\n }>(\n `mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiPlaceOrder;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useUpdateOrderStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, status }: { id: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateOrderStatus: { id: string; status: string };\n }>(\n `mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }`,\n { id, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOrderStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'order'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateOffering: KadaikodiOfferingRow }>(\n `mutation CreateOffering($input: KadaikodiCreateOfferingInput!) {\n kadaikodiCreateOffering(input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateOffering: KadaikodiOfferingRow }>(\n `mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {\n kadaikodiUpdateOffering(id: $id, input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offering'] });\n },\n });\n};\n\nexport const useInvest = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: { amount: number; investorId: string; opportunityId: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiInvest: { id: string; amount: number; currentValue: number; status: string; investedAt: string };\n }>(\n `mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiInvest;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investments'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateServiceProvider: { id: string; name: string; slug: string; status: string };\n }>(\n `mutation CreateProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n id name slug status category location rating\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateProviderWorker: KadaikodiProviderWorkerRow;\n }>(\n `mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n },\n });\n};\n\nexport const useCreateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateWorkerTask: WorkerTaskRow }>(\n `mutation CreateWorkerTask($input: KadaikodiCreateWorkerTaskInput!) {\n kadaikodiCreateWorkerTask(input: $input) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return mapWorkerTask(result.kadaikodiCreateWorkerTask);\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n },\n });\n};\n\nexport const useUpdateWorkerTaskStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ taskId, status }: { taskId: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTaskStatus: { id: string; status: string };\n }>(\n `mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }`,\n { taskId, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTaskStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useWorkerClockInOut = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({\n workerId,\n action,\n }: {\n workerId: string;\n action: 'CLOCK_IN' | 'CLOCK_OUT';\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiWorkerClockInOut: { success: boolean; message: string };\n }>(\n `mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }`,\n { workerId, action },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerClockInOut;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\n// ============================================================================\n// Main Hook\n// ============================================================================\n\nexport const useKadaikodiApi = () => {\n const { currentUser } = useKadaikodi();\n const providers = useProviders();\n const orders = useOrders({ customerId: currentUser?.id });\n const dashboardStats = useDashboardStats();\n const investmentOpportunities = useInvestmentOpportunities();\n const investments = useInvestments(currentUser?.id || '');\n\n return useMemo(\n () => ({\n providers,\n orders,\n dashboardStats,\n investmentOpportunities,\n investments,\n }),\n [providers, orders, dashboardStats, investmentOpportunities, investments]\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useKadaikodiApi.js","names":[],"sources":["../../../src/kadaikodi/hooks/useKadaikodiApi.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useKadaikodi } from '../context';\nimport type {\n MockCart,\n MockOrder,\n OrderItem,\n OrderStatus,\n PaymentStatus,\n OrderTimelineEvent,\n DeliveryAddress,\n InvestmentOpportunity,\n Investment,\n DashboardStats,\n AdminAnalytics,\n WorkerTask,\n WorkerSchedule,\n WorkerStats,\n} from '../types';\n\n// ============================================================================\n// Low-level fetch helper\n// ============================================================================\n\nconst kadaikodiQuery = async <TData>(\n query: string,\n variables: Record<string, unknown>,\n baseUrl?: string\n): Promise<TData> => {\n const response = await graphqlFetch<TData>({\n gateway: 'workspace',\n baseUrl,\n query,\n variables,\n workspaceToken: true,\n });\n\n if (response.errors?.length) {\n throw new Error(response.errors[0]?.message ?? 'GraphQL request failed');\n }\n\n if (!response.data) {\n throw new Error('GraphQL response did not include data');\n }\n\n return response.data;\n};\n\n// ============================================================================\n// Raw GraphQL row shapes (explicit — no `any`)\n// ============================================================================\n\ninterface RawLocation {\n address?: string | null;\n latitude?: number | null;\n longitude?: number | null;\n coordinates?: { lat?: number | null; lng?: number | null } | null;\n}\n\ninterface ProviderRow {\n id: string;\n name: string;\n slug: string;\n category: string;\n status: string;\n ownerId: string;\n rating: number;\n totalRatings: number;\n averageOrderValue: number;\n serviceTypes: string[];\n location: RawLocation | null;\n businessHours?: MockCart['businessHours'];\n createdAt: string;\n}\n\nexport interface KadaikodiOfferingRow {\n id: string;\n providerId: string;\n kind: string;\n name: string;\n slug: string;\n category: string;\n description?: string | null;\n price: number;\n originalPrice?: number | null;\n stock?: number | null;\n durationMinutes?: number | null;\n serviceType?: string | null;\n tags: string[];\n isAvailable: boolean;\n metadata?: Record<string, unknown> | null;\n media?: string[] | null;\n}\n\ninterface OrderItemRow {\n id: string;\n offeringId?: string | null;\n name: string;\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n customizations?: string[] | null;\n}\n\ninterface OrderRow {\n id: string;\n orderNumber: string;\n providerId: string;\n customerId: string;\n status: string;\n paymentStatus: string;\n fulfillmentType: string;\n subtotal: number;\n tax: number;\n deliveryFee: number;\n discount: number;\n total: number;\n notes?: string | null;\n timeline?: OrderTimelineEvent[] | null;\n paymentMethod?: string | null;\n deliveryAddress?: Partial<DeliveryAddress> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n items: OrderItemRow[];\n}\n\ninterface InvestmentOpportunityRow {\n id: string;\n providerId: string;\n title: string;\n description?: string | null;\n targetAmount: number;\n raisedAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel: string;\n status: string;\n expiresAt?: string | null;\n terms?: Record<string, unknown> | null;\n businessMetrics?: Record<string, unknown> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n}\n\ninterface InvestmentRow {\n id: string;\n opportunityId: string;\n amount: number;\n currentValue: number;\n expectedReturnsPct: number;\n status: string;\n investedAt: string;\n maturedAt?: string | null;\n realizedReturns: number;\n opportunity?: { provider?: { name?: string | null } | null } | null;\n}\n\nexport interface KadaikodiReviewRow {\n id: string;\n providerId: string;\n customerId: string;\n rating: number;\n review?: string | null;\n response?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface KadaikodiProviderWorkerRow {\n id: string;\n providerId: string;\n workerId: string;\n name: string;\n role: string;\n status: string;\n metadata?: Record<string, unknown> | null;\n}\n\ninterface WorkerTaskRow {\n id: string;\n orderId?: string | null;\n providerId?: string | null;\n type: string;\n description?: string | null;\n priority: string;\n status: string;\n assignedAt?: string | null;\n dueAt?: string | null;\n completedAt?: string | null;\n customerName?: string | null;\n customerPhone?: string | null;\n earnings?: number | null;\n distance?: number | null;\n notes?: string | null;\n provider?: { name?: string | null } | null;\n order?: { deliveryAddress?: Partial<DeliveryAddress> | null } | null;\n}\n\ninterface WorkerScheduleRow {\n id: string;\n date: string;\n startTime: string;\n endTime?: string | null;\n providerId: string;\n status: string;\n tasksCompleted: number;\n totalEarnings: number;\n provider?: { name?: string | null } | null;\n}\n\n// ============================================================================\n// Mappers\n// ============================================================================\n\nconst toCartLocation = (loc: RawLocation | null | undefined): MockCart['location'] => ({\n address: loc?.address ?? '',\n coordinates: {\n lat: loc?.coordinates?.lat ?? loc?.latitude ?? 0,\n lng: loc?.coordinates?.lng ?? loc?.longitude ?? 0,\n },\n});\n\nconst toDeliveryAddress = (raw: Partial<DeliveryAddress> | null | undefined): DeliveryAddress => ({\n street: raw?.street ?? '',\n area: raw?.area ?? '',\n city: raw?.city ?? '',\n pincode: raw?.pincode ?? '',\n landmark: raw?.landmark,\n});\n\nconst mapProvider = (p: ProviderRow): MockCart => ({\n id: p.id,\n name: p.name,\n category: p.category,\n ownerId: p.ownerId,\n rating: p.rating,\n totalRatings: p.totalRatings,\n isOpen: p.status === 'ACTIVE' || p.status === 'VERIFIED',\n isVerified: p.status === 'VERIFIED',\n location: toCartLocation(p.location),\n averageOrderValue: p.averageOrderValue,\n serviceTypes: p.serviceTypes,\n businessHours: p.businessHours,\n createdAt: p.createdAt,\n // image/images/distance/estimatedTime intentionally omitted — no fabricated data.\n});\n\nconst mapOrder = (o: OrderRow): MockOrder => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n // cartImage intentionally omitted — no fabricated data.\n items: o.items.map(\n (i): OrderItem => ({\n id: i.id,\n name: i.name,\n quantity: i.quantity,\n price: i.unitPrice,\n customizations: i.customizations ?? undefined,\n })\n ),\n total: o.total,\n subtotal: o.subtotal,\n taxes: o.tax,\n deliveryFee: o.deliveryFee,\n discount: o.discount,\n status: o.status.toLowerCase() as OrderStatus,\n orderDate: o.createdAt,\n deliveryAddress: toDeliveryAddress(o.deliveryAddress),\n paymentMethod: o.paymentMethod ?? 'Cash',\n paymentStatus: o.paymentStatus.toLowerCase() as PaymentStatus,\n timeline: o.timeline ?? [],\n});\n\nconst mapInvestmentOpportunity = (o: InvestmentOpportunityRow): InvestmentOpportunity => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n businessOwner: '',\n targetAmount: o.targetAmount,\n raisedAmount: o.raisedAmount,\n minimumInvestment: o.minimumInvestment,\n expectedReturns: o.expectedReturnsPct,\n investmentPeriod: o.lockInMonths,\n riskLevel: o.riskLevel.toLowerCase() as InvestmentOpportunity['riskLevel'],\n description: o.description ?? '',\n businessPlan: '',\n financialProjections: [],\n documents: [],\n investors: [],\n status: o.status.toLowerCase() as InvestmentOpportunity['status'],\n createdAt: o.createdAt,\n expiresAt: o.expiresAt ?? '',\n});\n\nconst mapInvestment = (i: InvestmentRow): Investment => ({\n id: i.id,\n opportunityId: i.opportunityId,\n cartName: i.opportunity?.provider?.name ?? 'Unknown Cart',\n investedAmount: i.amount,\n currentValue: i.currentValue,\n returns: i.realizedReturns,\n returnsPercentage: i.expectedReturnsPct,\n investmentDate: i.investedAt,\n status: i.status.toLowerCase() as Investment['status'],\n});\n\nconst mapWorkerTask = (t: WorkerTaskRow): WorkerTask => ({\n id: t.id,\n orderId: t.orderId ?? '',\n cartId: t.providerId ?? '',\n cartName: t.provider?.name ?? 'Unknown Cart',\n type: t.type.toLowerCase() as WorkerTask['type'],\n description: t.description ?? '',\n priority: t.priority.toLowerCase() as WorkerTask['priority'],\n status: t.status.toLowerCase() as WorkerTask['status'],\n assignedAt: t.assignedAt ?? '',\n dueAt: t.dueAt ?? '',\n completedAt: t.completedAt ?? undefined,\n customerName: t.customerName ?? '',\n customerPhone: t.customerPhone ?? '',\n deliveryAddress: t.order?.deliveryAddress\n ? toDeliveryAddress(t.order.deliveryAddress)\n : undefined,\n earnings: t.earnings ?? 0,\n distance: t.distance ?? undefined,\n notes: t.notes ?? undefined,\n});\n\nconst mapWorkerSchedule = (s: WorkerScheduleRow): WorkerSchedule => ({\n id: s.id,\n date: s.date,\n startTime: s.startTime,\n endTime: s.endTime ?? '',\n cartId: s.providerId,\n cartName: s.provider?.name ?? 'Unknown Cart',\n status: s.status.toLowerCase() as WorkerSchedule['status'],\n tasksCompleted: s.tasksCompleted,\n totalEarnings: s.totalEarnings,\n});\n\n// ============================================================================\n// GraphQL selection fragments (kept as string constants for reuse)\n// ============================================================================\n\nconst PROVIDER_FIELDS = `\n id name slug category status ownerId rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n`;\n\nconst ORDER_FIELDS = `\n id orderNumber providerId customerId status paymentStatus fulfillmentType subtotal tax deliveryFee discount total notes timeline paymentMethod deliveryAddress createdAt\n provider { name }\n items { id offeringId name quantity unitPrice totalPrice customizations }\n`;\n\nconst OFFERING_FIELDS = `\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n`;\n\n// ============================================================================\n// Service Providers (Carts)\n// ============================================================================\n\nexport const useProviders = (query?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'providers', query],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListServiceProviders: ProviderRow[] }>(\n `query Providers($filter: KadaikodiProviderFilterInput) {\n kadaikodiListServiceProviders(filter: $filter, limit: 200) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { filter: query ? { query } : undefined },\n apiGatewayUrl\n );\n return result.kadaikodiListServiceProviders.map(mapProvider);\n },\n });\n};\n\nexport const useProvider = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiServiceProvider: ProviderRow | null }>(\n `query Provider($id: ID!) {\n kadaikodiServiceProvider(id: $id) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiServiceProvider ? mapProvider(result.kadaikodiServiceProvider) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Offerings\n// ============================================================================\n\nexport const useOfferings = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offerings', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOfferings: KadaikodiOfferingRow[] }>(\n `query Offerings($providerId: String) {\n kadaikodiListOfferings(providerId: $providerId, limit: 300) {\n ${OFFERING_FIELDS}\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListOfferings;\n },\n enabled: Boolean(providerId),\n });\n};\n\nexport const useOffering = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offering', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOffering: KadaikodiOfferingRow | null }>(\n `query Offering($id: ID!) {\n kadaikodiOffering(id: $id) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOffering;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Orders\n// ============================================================================\n\nexport const useOrders = (input: { providerId?: string; customerId?: string } = {}) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'orders', input.providerId, input.customerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOrders: OrderRow[] }>(\n `query Orders($providerId: String, $customerId: String) {\n kadaikodiListOrders(providerId: $providerId, customerId: $customerId, limit: 200) {\n ${ORDER_FIELDS}\n }\n }`,\n input,\n apiGatewayUrl\n );\n return result.kadaikodiListOrders.map(mapOrder);\n },\n });\n};\n\nexport const useOrder = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'order', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOrder: OrderRow | null }>(\n `query Order($id: ID!) {\n kadaikodiOrder(id: $id) {\n ${ORDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOrder ? mapOrder(result.kadaikodiOrder) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Analytics & Stats\n// ============================================================================\n\nexport const useDashboardStats = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'dashboard-stats'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiDashboardStats: DashboardStats }>(\n `query DashboardStats { kadaikodiDashboardStats { totalOrders totalRevenue activeProviders activeCustomers avgRating pendingOrders } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiDashboardStats;\n },\n });\n};\n\nexport const useAdminAnalytics = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'admin-analytics'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiAdminAnalytics: AdminAnalytics }>(\n `query AdminAnalytics { kadaikodiAdminAnalytics { revenueByCategory orderTrends topProviders customerGrowth categoryDistribution } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiAdminAnalytics;\n },\n });\n};\n\n// ============================================================================\n// Investments\n// ============================================================================\n\nexport const useInvestmentOpportunities = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investment-opportunities'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListInvestmentOpportunities: InvestmentOpportunityRow[];\n }>(\n `query Opportunities {\n kadaikodiListInvestmentOpportunities(limit: 200) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListInvestmentOpportunities.map(mapInvestmentOpportunity);\n },\n });\n};\n\nexport const useInvestments = (investorId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investments', investorId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListInvestments: InvestmentRow[] }>(\n `query Investments($investorId: String!) {\n kadaikodiListInvestments(investorId: $investorId) {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }`,\n { investorId },\n apiGatewayUrl\n );\n return result.kadaikodiListInvestments.map(mapInvestment);\n },\n enabled: Boolean(investorId),\n });\n};\n\n// ============================================================================\n// Provider Workers\n// ============================================================================\n\nexport const useProviderWorkers = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider-workers', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListProviderWorkers: KadaikodiProviderWorkerRow[];\n }>(\n `query ProviderWorkers($providerId: String!) {\n kadaikodiListProviderWorkers(providerId: $providerId) {\n id providerId workerId name role status metadata\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListProviderWorkers;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Workers & Tasks\n// ============================================================================\n\nexport const useWorkerTasks = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-tasks', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiWorkerTasks: WorkerTaskRow[] }>(\n `query WorkerTasks($workerId: String!) {\n kadaikodiWorkerTasks(workerId: $workerId, limit: 100) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n provider { name }\n order { deliveryAddress }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerTasks.map(mapWorkerTask);\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerStats = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-stats', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiWorkerStats: WorkerStats }>(\n `query WorkerStats($workerId: String!) {\n kadaikodiWorkerStats(workerId: $workerId) {\n totalDeliveries totalEarnings averageRating completionRate todayTasks todayEarnings\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerStats;\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerSchedules = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-schedules', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListWorkerSchedules: WorkerScheduleRow[] }>(\n `query WorkerSchedules($workerId: String!) {\n kadaikodiListWorkerSchedules(workerId: $workerId) {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiListWorkerSchedules.map(mapWorkerSchedule);\n },\n enabled: Boolean(workerId),\n });\n};\n\n// ============================================================================\n// Reviews\n// ============================================================================\n\nexport const useReviews = (providerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'reviews', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListReviews: KadaikodiReviewRow[] }>(\n `query Reviews($providerId: String!) {\n kadaikodiListReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListReviews;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Mutations\n// ============================================================================\n\nexport const usePlaceOrder = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiPlaceOrder: {\n id: string;\n orderNumber: string;\n status: string;\n total: number;\n createdAt: string;\n };\n }>(\n `mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiPlaceOrder;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useUpdateOrderStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, status }: { id: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateOrderStatus: { id: string; status: string };\n }>(\n `mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }`,\n { id, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOrderStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'order'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateOffering: KadaikodiOfferingRow }>(\n `mutation CreateOffering($input: KadaikodiCreateOfferingInput!) {\n kadaikodiCreateOffering(input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateOffering: KadaikodiOfferingRow }>(\n `mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {\n kadaikodiUpdateOffering(id: $id, input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offering'] });\n },\n });\n};\n\nexport const useInvest = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: { amount: number; investorId: string; opportunityId: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiInvest: {\n id: string;\n amount: number;\n currentValue: number;\n status: string;\n investedAt: string;\n };\n }>(\n `mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiInvest;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investments'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateServiceProvider: { id: string; name: string; slug: string; status: string };\n }>(\n `mutation CreateProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n id name slug status category location rating\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateProviderWorker: KadaikodiProviderWorkerRow;\n }>(\n `mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n },\n });\n};\n\nexport const useCreateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateWorkerTask: WorkerTaskRow }>(\n `mutation CreateWorkerTask($input: KadaikodiCreateWorkerTaskInput!) {\n kadaikodiCreateWorkerTask(input: $input) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return mapWorkerTask(result.kadaikodiCreateWorkerTask);\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n },\n });\n};\n\nexport const useUpdateWorkerTaskStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ taskId, status }: { taskId: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTaskStatus: { id: string; status: string };\n }>(\n `mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }`,\n { taskId, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTaskStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useWorkerClockInOut = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({\n workerId,\n action,\n }: {\n workerId: string;\n action: 'CLOCK_IN' | 'CLOCK_OUT';\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiWorkerClockInOut: { success: boolean; message: string };\n }>(\n `mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }`,\n { workerId, action },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerClockInOut;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\n// ============================================================================\n// Main Hook\n// ============================================================================\n\nexport const useKadaikodiApi = () => {\n const { currentUser } = useKadaikodi();\n const providers = useProviders();\n const orders = useOrders({ customerId: currentUser?.id });\n const dashboardStats = useDashboardStats();\n const investmentOpportunities = useInvestmentOpportunities();\n const investments = useInvestments(currentUser?.id || '');\n\n return useMemo(\n () => ({\n providers,\n orders,\n dashboardStats,\n investmentOpportunities,\n investments,\n }),\n [providers, orders, dashboardStats, investmentOpportunities, investments]\n );\n};\n"],"mappings":";;;;;;AA2BA,IAAM,IAAiB,OACrB,GACA,GACA,MACmB;CACnB,IAAM,IAAW,MAAM,EAAoB;EACzC,SAAS;EACT;EACA;EACA;EACA,gBAAgB;EACjB,CAAC;AAEF,KAAI,EAAS,QAAQ,OACnB,OAAU,MAAM,EAAS,OAAO,IAAI,WAAW,yBAAyB;AAG1E,KAAI,CAAC,EAAS,KACZ,OAAU,MAAM,wCAAwC;AAG1D,QAAO,EAAS;GA0KZ,KAAkB,OAA+D;CACrF,SAAS,GAAK,WAAW;CACzB,aAAa;EACX,KAAK,GAAK,aAAa,OAAO,GAAK,YAAY;EAC/C,KAAK,GAAK,aAAa,OAAO,GAAK,aAAa;EACjD;CACF,GAEK,KAAqB,OAAuE;CAChG,QAAQ,GAAK,UAAU;CACvB,MAAM,GAAK,QAAQ;CACnB,MAAM,GAAK,QAAQ;CACnB,SAAS,GAAK,WAAW;CACzB,UAAU,GAAK;CAChB,GAEK,KAAe,OAA8B;CACjD,IAAI,EAAE;CACN,MAAM,EAAE;CACR,UAAU,EAAE;CACZ,SAAS,EAAE;CACX,QAAQ,EAAE;CACV,cAAc,EAAE;CAChB,QAAQ,EAAE,WAAW,YAAY,EAAE,WAAW;CAC9C,YAAY,EAAE,WAAW;CACzB,UAAU,EAAe,EAAE,SAAS;CACpC,mBAAmB,EAAE;CACrB,cAAc,EAAE;CAChB,eAAe,EAAE;CACjB,WAAW,EAAE;CAEd,GAEK,KAAY,OAA4B;CAC5C,IAAI,EAAE;CACN,QAAQ,EAAE;CACV,UAAU,EAAE,UAAU,QAAQ;CAE9B,OAAO,EAAE,MAAM,KACZ,OAAkB;EACjB,IAAI,EAAE;EACN,MAAM,EAAE;EACR,UAAU,EAAE;EACZ,OAAO,EAAE;EACT,gBAAgB,EAAE,kBAAkB,KAAA;EACrC,EACF;CACD,OAAO,EAAE;CACT,UAAU,EAAE;CACZ,OAAO,EAAE;CACT,aAAa,EAAE;CACf,UAAU,EAAE;CACZ,QAAQ,EAAE,OAAO,aAAa;CAC9B,WAAW,EAAE;CACb,iBAAiB,EAAkB,EAAE,gBAAgB;CACrD,eAAe,EAAE,iBAAiB;CAClC,eAAe,EAAE,cAAc,aAAa;CAC5C,UAAU,EAAE,YAAY,EAAE;CAC3B,GAEK,KAA4B,OAAwD;CACxF,IAAI,EAAE;CACN,QAAQ,EAAE;CACV,UAAU,EAAE,UAAU,QAAQ;CAC9B,eAAe;CACf,cAAc,EAAE;CAChB,cAAc,EAAE;CAChB,mBAAmB,EAAE;CACrB,iBAAiB,EAAE;CACnB,kBAAkB,EAAE;CACpB,WAAW,EAAE,UAAU,aAAa;CACpC,aAAa,EAAE,eAAe;CAC9B,cAAc;CACd,sBAAsB,EAAE;CACxB,WAAW,EAAE;CACb,WAAW,EAAE;CACb,QAAQ,EAAE,OAAO,aAAa;CAC9B,WAAW,EAAE;CACb,WAAW,EAAE,aAAa;CAC3B,GAEK,KAAiB,OAAkC;CACvD,IAAI,EAAE;CACN,eAAe,EAAE;CACjB,UAAU,EAAE,aAAa,UAAU,QAAQ;CAC3C,gBAAgB,EAAE;CAClB,cAAc,EAAE;CAChB,SAAS,EAAE;CACX,mBAAmB,EAAE;CACrB,gBAAgB,EAAE;CAClB,QAAQ,EAAE,OAAO,aAAa;CAC/B,GAEK,KAAiB,OAAkC;CACvD,IAAI,EAAE;CACN,SAAS,EAAE,WAAW;CACtB,QAAQ,EAAE,cAAc;CACxB,UAAU,EAAE,UAAU,QAAQ;CAC9B,MAAM,EAAE,KAAK,aAAa;CAC1B,aAAa,EAAE,eAAe;CAC9B,UAAU,EAAE,SAAS,aAAa;CAClC,QAAQ,EAAE,OAAO,aAAa;CAC9B,YAAY,EAAE,cAAc;CAC5B,OAAO,EAAE,SAAS;CAClB,aAAa,EAAE,eAAe,KAAA;CAC9B,cAAc,EAAE,gBAAgB;CAChC,eAAe,EAAE,iBAAiB;CAClC,iBAAiB,EAAE,OAAO,kBACtB,EAAkB,EAAE,MAAM,gBAAgB,GAC1C,KAAA;CACJ,UAAU,EAAE,YAAY;CACxB,UAAU,EAAE,YAAY,KAAA;CACxB,OAAO,EAAE,SAAS,KAAA;CACnB,GAEK,KAAqB,OAA0C;CACnE,IAAI,EAAE;CACN,MAAM,EAAE;CACR,WAAW,EAAE;CACb,SAAS,EAAE,WAAW;CACtB,QAAQ,EAAE;CACV,UAAU,EAAE,UAAU,QAAQ;CAC9B,QAAQ,EAAE,OAAO,aAAa;CAC9B,gBAAgB,EAAE;CAClB,eAAe,EAAE;CAClB,GAMK,IAAkB,kIAIlB,IAAe,oRAMf,IAAkB,iJAQX,KAAgB,MAAmB;CAC9C,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAa;GAAM;EAC3C,SAAS,aACQ,MAAM,EACnB;;cAEM,EAAgB;;YAGtB,EAAE,QAAQ,IAAQ,EAAE,UAAO,GAAG,KAAA,GAAW,EACzC,EACD,EACa,8BAA8B,IAAI,EAAY;EAE/D,CAAC;GAGS,KAAe,MAAgB;CAC1C,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAY;GAAG;EACvC,SAAS,YAAY;GACnB,IAAM,IAAS,MAAM,EACnB;;cAEM,EAAgB;;YAGtB,EAAE,OAAI,EACN,EACD;AACD,UAAO,EAAO,2BAA2B,EAAY,EAAO,yBAAyB,GAAG;;EAE1F,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAgB,MAAwB;CACnD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAa;GAAW;EAChD,SAAS,aACQ,MAAM,EACnB;;cAEM,EAAgB;;YAGtB,EAAE,eAAY,EACd,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GA2BS,KAAa,IAAsD,EAAE,KAAK;CACrF,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAU,EAAM;GAAY,EAAM;GAAW;EACrE,SAAS,aACQ,MAAM,EACnB;;cAEM,EAAa;;YAGnB,GACA,EACD,EACa,oBAAoB,IAAI,EAAS;EAElD,CAAC;GAGS,KAAY,MAAgB;CACvC,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAS;GAAG;EACpC,SAAS,YAAY;GACnB,IAAM,IAAS,MAAM,EACnB;;cAEM,EAAa;;YAGnB,EAAE,OAAI,EACN,EACD;AACD,UAAO,EAAO,iBAAiB,EAAS,EAAO,eAAe,GAAG;;EAEnE,SAAS,EAAQ;EAClB,CAAC;GAOS,UAA0B;CACrC,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,kBAAkB;EAC1C,SAAS,aACQ,MAAM,EACnB,yIACA,EAAE,EACF,EACD,EACa;EAEjB,CAAC;GAGS,UAA0B;CACrC,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,kBAAkB;EAC1C,SAAS,aACQ,MAAM,EACnB,uIACA,EAAE,EACF,EACD,EACa;EAEjB,CAAC;GAOS,UAAmC;CAC9C,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,2BAA2B;EACnD,SAAS,aACQ,MAAM,EAGnB,kUAMA,EAAE,EACF,EACD,EACa,qCAAqC,IAAI,EAAyB;EAEnF,CAAC;GAGS,KAAkB,MAAuB;CACpD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAe;GAAW;EAClD,SAAS,aACQ,MAAM,EACnB,oSAMA,EAAE,eAAY,EACd,EACD,EACa,yBAAyB,IAAI,EAAc;EAE3D,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAsB,MAAwB;CACzD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAoB;GAAW;EACvD,SAAS,aACQ,MAAM,EAGnB,0MAKA,EAAE,eAAY,EACd,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAkB,MAAqB;CAClD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAgB;GAAS;EACjD,SAAS,aACQ,MAAM,EACnB,gWAOA,EAAE,aAAU,EACZ,EACD,EACa,qBAAqB,IAAI,EAAc;EAEvD,SAAS,EAAQ;EAClB,CAAC;GAGS,KAAkB,MAAqB;CAClD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAgB;GAAS;EACjD,SAAS,aACQ,MAAM,EACnB,2NAKA,EAAE,aAAU,EACZ,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GAGS,KAAsB,MAAqB;CACtD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAoB;GAAS;EACrD,SAAS,aACQ,MAAM,EACnB,2PAMA,EAAE,aAAU,EACZ,EACD,EACa,6BAA6B,IAAI,EAAkB;EAEnE,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAc,MAAuB;CAChD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAW;GAAW;EAC9C,SAAS,aACQ,MAAM,EACnB,6MAKA,EAAE,eAAY,EACd,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GAOS,UAAsB;CACjC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EASnB,uLAKA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,SAAS,EAAE,CAAC,EACpE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,kBAAkB,EAAE,CAAC;;EAErF,CAAC;GAGS,UAA6B;CACxC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,OAAI,iBACR,MAAM,EAGnB,2LAKA;GAAE;GAAI;GAAQ,EACd,EACD,EACa;EAEhB,iBAAiB;AAGV,GAFA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,SAAS,EAAE,CAAC,EACpE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,QAAQ,EAAE,CAAC,EACnE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,kBAAkB,EAAE,CAAC;;EAErF,CAAC;GA0BS,UAA0B;CACrC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,OAAI,gBACR,MAAM,EACnB;;cAEM,EAAgB;;YAGtB;GAAE;GAAI;GAAO,EACb,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,YAAY,EAAE,CAAC,EACvE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,WAAW,EAAE,CAAC;;EAE9E,CAAC;GAGS,UAAkB;CAC7B,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EASnB,8KAKA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,cAAc,EAAE,CAAC,EACzE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,2BAA2B,EAAE,CAAC;;EAE9F,CAAC;GA6BS,UAAgC;CAC3C,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EAGnB,gOAKA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,mBAAmB,EAAE,CAAC;;EAEtF,CAAC;GA0BS,UAAkC;CAC7C,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,WAAQ,iBACZ,MAAM,EAGnB,oNAKA;GAAE;GAAQ;GAAQ,EAClB,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC,EAC1E,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC;;EAElF,CAAC;GAGS,UAA4B;CACvC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EACjB,aACA,iBAKe,MAAM,EAGnB,+MAKA;GAAE;GAAU;GAAQ,EACpB,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,mBAAmB,EAAE,CAAC;;EAEtF,CAAC;GAOS,UAAwB;CACnC,IAAM,EAAE,mBAAgB,GAAc,EAChC,IAAY,GAAc,EAC1B,IAAS,EAAU,EAAE,YAAY,GAAa,IAAI,CAAC,EACnD,IAAiB,GAAmB,EACpC,IAA0B,GAA4B,EACtD,IAAc,EAAe,GAAa,MAAM,GAAG;AAEzD,QAAO,SACE;EACL;EACA;EACA;EACA;EACA;EACD,GACD;EAAC;EAAW;EAAQ;EAAgB;EAAyB;EAAY,CAC1E"}
|