@turtleclub/hooks 0.5.0-beta.2 → 0.5.0-beta.4
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/index.cjs +187 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +169 -27
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/v2/incentives/api.ts +2 -2
- package/src/v2/index.ts +6 -3
- package/src/v2/lib/turtle-provider.tsx +3 -3
- package/src/v2/products/api.ts +7 -13
- package/src/v2/users/api.ts +48 -0
- package/src/v2/users/hooks.ts +32 -0
- package/src/v2/users/index.ts +13 -0
- package/src/v2/users/queries.ts +14 -0
- package/src/v2/users/schemas.ts +109 -0
package/dist/index.cjs
CHANGED
|
@@ -22,7 +22,7 @@ var index_exports = {};
|
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
ApiError: () => ApiError,
|
|
24
24
|
BalanceSourcePriority: () => BalanceSourcePriority,
|
|
25
|
-
|
|
25
|
+
TurtleHooksProvider: () => TurtleHooksProvider,
|
|
26
26
|
apiClient: () => apiClient,
|
|
27
27
|
approveStep: () => approveStep,
|
|
28
28
|
asset: () => asset,
|
|
@@ -66,8 +66,16 @@ __export(index_exports, {
|
|
|
66
66
|
getSourcePriority: () => getSourcePriority,
|
|
67
67
|
getSupportedChains: () => getSupportedChains,
|
|
68
68
|
getSupportedTokens: () => getSupportedTokens,
|
|
69
|
+
getUserById: () => getUserById,
|
|
70
|
+
getUserByIdInputSchema: () => getUserByIdInputSchema,
|
|
71
|
+
getUserByIdOutputSchema: () => getUserByIdOutputSchema,
|
|
72
|
+
getUserPortfolio: () => getUserPortfolio,
|
|
73
|
+
getUserTurtlePortfolioInputSchema: () => getUserTurtlePortfolioInputSchema,
|
|
74
|
+
getUserTurtlePortfolioOutputSchema: () => getUserTurtlePortfolioOutputSchema,
|
|
75
|
+
getUserTurtlePortfolioPathSchema: () => getUserTurtlePortfolioPathSchema,
|
|
69
76
|
getWalletBalances: () => getWalletBalances,
|
|
70
77
|
getWidgetOpportunities: () => getWidgetOpportunities,
|
|
78
|
+
holdingsDataSchema: () => holdingsDataSchema,
|
|
71
79
|
incentiveSchema: () => incentiveSchema,
|
|
72
80
|
lendingConfigSchema: () => lendingConfigSchema,
|
|
73
81
|
mergeBalancesByPriority: () => mergeBalancesByPriority,
|
|
@@ -77,6 +85,7 @@ __export(index_exports, {
|
|
|
77
85
|
paginationMetadataSchema: () => paginationMetadataSchema,
|
|
78
86
|
portfolioBalanceResponseSchema: () => portfolioBalanceResponseSchema,
|
|
79
87
|
portfolioHoldingsSchema: () => portfolioHoldingsSchema,
|
|
88
|
+
portfolioSchema: () => portfolioSchema,
|
|
80
89
|
portfolioTokenSchema: () => portfolioTokenSchema,
|
|
81
90
|
portfolioWalletSchema: () => portfolioWalletSchema,
|
|
82
91
|
processRouteDetails: () => processRouteDetails,
|
|
@@ -118,10 +127,16 @@ __export(index_exports, {
|
|
|
118
127
|
useTokenBalance: () => useTokenBalance,
|
|
119
128
|
useUpdateProduct: () => useUpdateProduct,
|
|
120
129
|
useUploadProductLogo: () => useUploadProductLogo,
|
|
130
|
+
useUserById: () => useUserById,
|
|
131
|
+
useUserPortfolio: () => useUserPortfolio,
|
|
121
132
|
useWidgetOpportunities: () => useWidgetOpportunities,
|
|
133
|
+
userEarningsSchema: () => userEarningsSchema,
|
|
134
|
+
userWithDetailsSchema: () => userWithDetailsSchema,
|
|
135
|
+
usersQueries: () => usersQueries,
|
|
122
136
|
vaultConfigSchema: () => vaultConfigSchema,
|
|
123
137
|
walletBalanceSchema: () => walletBalanceSchema,
|
|
124
138
|
walletBalancesResponseSchema: () => walletBalancesResponseSchema,
|
|
139
|
+
walletDataSchema: () => walletDataSchema,
|
|
125
140
|
walletEcosystemEnum: () => walletEcosystemEnum,
|
|
126
141
|
widgetOpportunitiesResponseSchema: () => widgetOpportunitiesResponseSchema,
|
|
127
142
|
widgetQueries: () => widgetQueries
|
|
@@ -129,7 +144,7 @@ __export(index_exports, {
|
|
|
129
144
|
module.exports = __toCommonJS(index_exports);
|
|
130
145
|
|
|
131
146
|
// src/v2/index.ts
|
|
132
|
-
var
|
|
147
|
+
var import_query_key_factory13 = require("@lukemorales/query-key-factory");
|
|
133
148
|
|
|
134
149
|
// src/v2/opportunities/queries.ts
|
|
135
150
|
var import_query_key_factory = require("@lukemorales/query-key-factory");
|
|
@@ -814,7 +829,7 @@ async function getProducts(filters) {
|
|
|
814
829
|
const params = new URLSearchParams();
|
|
815
830
|
if (filters?.organizationId) params.append("organizationId", filters.organizationId);
|
|
816
831
|
const queryString = params.toString();
|
|
817
|
-
const endpoint = `/
|
|
832
|
+
const endpoint = `/turtle/products${queryString ? `?${queryString}` : ""}`;
|
|
818
833
|
const data = await apiClient.fetch(endpoint, {
|
|
819
834
|
method: "GET"
|
|
820
835
|
});
|
|
@@ -826,7 +841,7 @@ async function getProducts(filters) {
|
|
|
826
841
|
return result.data;
|
|
827
842
|
}
|
|
828
843
|
async function getProduct(id) {
|
|
829
|
-
const endpoint = `/
|
|
844
|
+
const endpoint = `/turtle/products/${id}`;
|
|
830
845
|
const data = await apiClient.fetch(endpoint, {
|
|
831
846
|
method: "GET"
|
|
832
847
|
});
|
|
@@ -1067,6 +1082,114 @@ var supportedTokensQueries = (0, import_query_key_factory10.createQueryKeys)("su
|
|
|
1067
1082
|
})
|
|
1068
1083
|
});
|
|
1069
1084
|
|
|
1085
|
+
// src/v2/users/queries.ts
|
|
1086
|
+
var import_query_key_factory11 = require("@lukemorales/query-key-factory");
|
|
1087
|
+
|
|
1088
|
+
// src/v2/users/schemas.ts
|
|
1089
|
+
var import_zod12 = require("zod");
|
|
1090
|
+
var walletDataSchema = import_zod12.z.object({
|
|
1091
|
+
address: import_zod12.z.string(),
|
|
1092
|
+
totalAmountInUSD: import_zod12.z.string(),
|
|
1093
|
+
tokens: import_zod12.z.array(tokenSchema)
|
|
1094
|
+
});
|
|
1095
|
+
var holdingsDataSchema = import_zod12.z.object({
|
|
1096
|
+
totalAmountInUSD: import_zod12.z.string(),
|
|
1097
|
+
chains: import_zod12.z.array(chainSchema).nullish(),
|
|
1098
|
+
wallets: import_zod12.z.array(walletDataSchema).nullish()
|
|
1099
|
+
});
|
|
1100
|
+
var userEarningsSchema = import_zod12.z.object({
|
|
1101
|
+
productId: import_zod12.z.string().uuid(),
|
|
1102
|
+
value: import_zod12.z.number(),
|
|
1103
|
+
referralsEarnings: import_zod12.z.number().nullish(),
|
|
1104
|
+
rewardName: import_zod12.z.string().nullish(),
|
|
1105
|
+
rewardType: import_zod12.z.string().nullish()
|
|
1106
|
+
});
|
|
1107
|
+
var portfolioSchema = import_zod12.z.object({
|
|
1108
|
+
productsEarnings: import_zod12.z.array(userEarningsSchema),
|
|
1109
|
+
holdings: holdingsDataSchema.nullish()
|
|
1110
|
+
});
|
|
1111
|
+
var holdingInfoSchema = import_zod12.z.object({
|
|
1112
|
+
amount: import_zod12.z.number(),
|
|
1113
|
+
usdValue: import_zod12.z.number(),
|
|
1114
|
+
token: tokenSchema.nullish()
|
|
1115
|
+
});
|
|
1116
|
+
var walletInfoSchema = import_zod12.z.object({
|
|
1117
|
+
address: import_zod12.z.string().nullish(),
|
|
1118
|
+
ecosystem: import_zod12.z.string().nullish(),
|
|
1119
|
+
isMain: import_zod12.z.boolean().nullish(),
|
|
1120
|
+
holdings: import_zod12.z.array(holdingInfoSchema).nullish()
|
|
1121
|
+
});
|
|
1122
|
+
var userWithDetailsSchema = import_zod12.z.object({
|
|
1123
|
+
id: import_zod12.z.string(),
|
|
1124
|
+
email: import_zod12.z.string().nullable(),
|
|
1125
|
+
username: import_zod12.z.string().nullish(),
|
|
1126
|
+
firstName: import_zod12.z.string().nullish(),
|
|
1127
|
+
lastName: import_zod12.z.string().nullish(),
|
|
1128
|
+
avatarUrl: import_zod12.z.string().nullish(),
|
|
1129
|
+
telegramHandle: import_zod12.z.string().nullish(),
|
|
1130
|
+
xUsername: import_zod12.z.string().nullish(),
|
|
1131
|
+
role: import_zod12.z.string(),
|
|
1132
|
+
createdAt: import_zod12.z.string(),
|
|
1133
|
+
updatedAt: import_zod12.z.string(),
|
|
1134
|
+
tags: import_zod12.z.array(import_zod12.z.string()).nullish(),
|
|
1135
|
+
wallets: import_zod12.z.array(walletInfoSchema).nullish()
|
|
1136
|
+
});
|
|
1137
|
+
var getUserTurtlePortfolioInputSchema = import_zod12.z.object({
|
|
1138
|
+
userId: import_zod12.z.string().uuid()
|
|
1139
|
+
});
|
|
1140
|
+
var getUserTurtlePortfolioOutputSchema = import_zod12.z.object({
|
|
1141
|
+
portfolio: portfolioSchema
|
|
1142
|
+
});
|
|
1143
|
+
var getUserTurtlePortfolioPathSchema = import_zod12.z.object({
|
|
1144
|
+
userId: import_zod12.z.string().uuid()
|
|
1145
|
+
});
|
|
1146
|
+
var getUserByIdInputSchema = import_zod12.z.object({
|
|
1147
|
+
userId: import_zod12.z.string().uuid()
|
|
1148
|
+
});
|
|
1149
|
+
var getUserByIdOutputSchema = import_zod12.z.object({
|
|
1150
|
+
user: userWithDetailsSchema.nullable(),
|
|
1151
|
+
error: import_zod12.z.string().optional()
|
|
1152
|
+
});
|
|
1153
|
+
|
|
1154
|
+
// src/v2/users/api.ts
|
|
1155
|
+
async function getUserById(input) {
|
|
1156
|
+
console.log("input", input);
|
|
1157
|
+
const endpoint = `/admin/users/${input.userId}`;
|
|
1158
|
+
const data = await apiClient.fetch(endpoint, {
|
|
1159
|
+
method: "GET"
|
|
1160
|
+
});
|
|
1161
|
+
const result = getUserByIdOutputSchema.safeParse(data);
|
|
1162
|
+
if (result.success === false) {
|
|
1163
|
+
console.log("[ZOD ERROR]", result.error);
|
|
1164
|
+
throw new Error(`Failed to parse user: ${result.error.message}`);
|
|
1165
|
+
}
|
|
1166
|
+
return result.data;
|
|
1167
|
+
}
|
|
1168
|
+
async function getUserPortfolio(input) {
|
|
1169
|
+
const endpoint = `/admin/users/${input.userId}/portfolio`;
|
|
1170
|
+
const data = await apiClient.fetch(endpoint, {
|
|
1171
|
+
method: "GET"
|
|
1172
|
+
});
|
|
1173
|
+
const result = getUserTurtlePortfolioOutputSchema.safeParse(data);
|
|
1174
|
+
if (result.success === false) {
|
|
1175
|
+
console.log("[ZOD ERROR]", result.error);
|
|
1176
|
+
throw new Error(`Failed to parse user portfolio: ${result.error.message}`);
|
|
1177
|
+
}
|
|
1178
|
+
return result.data;
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
// src/v2/users/queries.ts
|
|
1182
|
+
var usersQueries = (0, import_query_key_factory11.createQueryKeys)("users", {
|
|
1183
|
+
byId: (input) => ({
|
|
1184
|
+
queryKey: [input.userId],
|
|
1185
|
+
queryFn: () => getUserById(input)
|
|
1186
|
+
}),
|
|
1187
|
+
portfolio: (input) => ({
|
|
1188
|
+
queryKey: ["portfolio", input.userId],
|
|
1189
|
+
queryFn: () => getUserPortfolio(input)
|
|
1190
|
+
})
|
|
1191
|
+
});
|
|
1192
|
+
|
|
1070
1193
|
// src/v2/earn-opportunities/hooks.ts
|
|
1071
1194
|
var import_react_query = require("@tanstack/react-query");
|
|
1072
1195
|
|
|
@@ -1312,33 +1435,33 @@ var BalanceSourcePriority = /* @__PURE__ */ ((BalanceSourcePriority2) => {
|
|
|
1312
1435
|
})(BalanceSourcePriority || {});
|
|
1313
1436
|
|
|
1314
1437
|
// src/v2/balance/schema.ts
|
|
1315
|
-
var
|
|
1316
|
-
var portfolioTokenSchema =
|
|
1317
|
-
id:
|
|
1318
|
-
address:
|
|
1319
|
-
name:
|
|
1320
|
-
symbol:
|
|
1321
|
-
decimals:
|
|
1322
|
-
isNative:
|
|
1323
|
-
logoUrl:
|
|
1324
|
-
amount:
|
|
1438
|
+
var import_zod13 = require("zod");
|
|
1439
|
+
var portfolioTokenSchema = import_zod13.z.object({
|
|
1440
|
+
id: import_zod13.z.string(),
|
|
1441
|
+
address: import_zod13.z.string(),
|
|
1442
|
+
name: import_zod13.z.string(),
|
|
1443
|
+
symbol: import_zod13.z.string(),
|
|
1444
|
+
decimals: import_zod13.z.number(),
|
|
1445
|
+
isNative: import_zod13.z.boolean(),
|
|
1446
|
+
logoUrl: import_zod13.z.string().nullable(),
|
|
1447
|
+
amount: import_zod13.z.string(),
|
|
1325
1448
|
// Portfolio-specific field (decimal format)
|
|
1326
|
-
price:
|
|
1449
|
+
price: import_zod13.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
|
|
1327
1450
|
// Portfolio-specific field
|
|
1328
1451
|
// Chain with optional fields to match Portfolio API response
|
|
1329
1452
|
chain: chainSchema.partial().required({ chainId: true })
|
|
1330
1453
|
});
|
|
1331
|
-
var portfolioWalletSchema =
|
|
1332
|
-
id:
|
|
1333
|
-
address:
|
|
1334
|
-
blockchain:
|
|
1335
|
-
tokens:
|
|
1454
|
+
var portfolioWalletSchema = import_zod13.z.object({
|
|
1455
|
+
id: import_zod13.z.string().optional(),
|
|
1456
|
+
address: import_zod13.z.string(),
|
|
1457
|
+
blockchain: import_zod13.z.string().optional(),
|
|
1458
|
+
tokens: import_zod13.z.array(portfolioTokenSchema)
|
|
1336
1459
|
});
|
|
1337
|
-
var portfolioHoldingsSchema =
|
|
1338
|
-
wallets:
|
|
1460
|
+
var portfolioHoldingsSchema = import_zod13.z.object({
|
|
1461
|
+
wallets: import_zod13.z.array(portfolioWalletSchema)
|
|
1339
1462
|
});
|
|
1340
|
-
var portfolioBalanceResponseSchema =
|
|
1341
|
-
portfolio:
|
|
1463
|
+
var portfolioBalanceResponseSchema = import_zod13.z.object({
|
|
1464
|
+
portfolio: import_zod13.z.object({
|
|
1342
1465
|
holdings: portfolioHoldingsSchema
|
|
1343
1466
|
})
|
|
1344
1467
|
});
|
|
@@ -1359,8 +1482,8 @@ async function getPortfolioBalance(address, options) {
|
|
|
1359
1482
|
}
|
|
1360
1483
|
|
|
1361
1484
|
// src/v2/balance/queries.ts
|
|
1362
|
-
var
|
|
1363
|
-
var balanceQueries = (0,
|
|
1485
|
+
var import_query_key_factory12 = require("@lukemorales/query-key-factory");
|
|
1486
|
+
var balanceQueries = (0, import_query_key_factory12.createQueryKeys)("balance", {
|
|
1364
1487
|
// Portfolio balance by address
|
|
1365
1488
|
portfolio: (address) => ({
|
|
1366
1489
|
queryKey: [address],
|
|
@@ -1906,10 +2029,28 @@ function useSwapRoute(isEnabled, userAddress, distributorId, options, referralCo
|
|
|
1906
2029
|
};
|
|
1907
2030
|
}
|
|
1908
2031
|
|
|
2032
|
+
// src/v2/users/hooks.ts
|
|
2033
|
+
var import_react_query13 = require("@tanstack/react-query");
|
|
2034
|
+
function useUserById({ userId, enabled = true }) {
|
|
2035
|
+
return (0, import_react_query13.useQuery)({
|
|
2036
|
+
...usersQueries.byId({ userId }),
|
|
2037
|
+
...queryDefaults,
|
|
2038
|
+
enabled
|
|
2039
|
+
});
|
|
2040
|
+
}
|
|
2041
|
+
function useUserPortfolio({ userId, enabled = true }) {
|
|
2042
|
+
const input = { userId };
|
|
2043
|
+
return (0, import_react_query13.useQuery)({
|
|
2044
|
+
...usersQueries.portfolio(input),
|
|
2045
|
+
...queryDefaults,
|
|
2046
|
+
enabled
|
|
2047
|
+
});
|
|
2048
|
+
}
|
|
2049
|
+
|
|
1909
2050
|
// src/v2/lib/turtle-provider.tsx
|
|
1910
2051
|
var import_react9 = require("react");
|
|
1911
2052
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
1912
|
-
function
|
|
2053
|
+
function TurtleHooksProvider({
|
|
1913
2054
|
children,
|
|
1914
2055
|
apiUrl,
|
|
1915
2056
|
earnUrl,
|
|
@@ -1927,7 +2068,7 @@ function TurtleProvider({
|
|
|
1927
2068
|
}
|
|
1928
2069
|
|
|
1929
2070
|
// src/v2/index.ts
|
|
1930
|
-
var queries = (0,
|
|
2071
|
+
var queries = (0, import_query_key_factory13.mergeQueryKeys)(
|
|
1931
2072
|
opportunitiesQueries,
|
|
1932
2073
|
earnOpportunitiesQueries,
|
|
1933
2074
|
earnRouteQueries,
|
|
@@ -1937,13 +2078,14 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
|
|
|
1937
2078
|
ensoBalancesQueries,
|
|
1938
2079
|
widgetQueries,
|
|
1939
2080
|
supportedChainsQueries,
|
|
1940
|
-
supportedTokensQueries
|
|
2081
|
+
supportedTokensQueries,
|
|
2082
|
+
usersQueries
|
|
1941
2083
|
);
|
|
1942
2084
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1943
2085
|
0 && (module.exports = {
|
|
1944
2086
|
ApiError,
|
|
1945
2087
|
BalanceSourcePriority,
|
|
1946
|
-
|
|
2088
|
+
TurtleHooksProvider,
|
|
1947
2089
|
apiClient,
|
|
1948
2090
|
approveStep,
|
|
1949
2091
|
asset,
|
|
@@ -1987,8 +2129,16 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
|
|
|
1987
2129
|
getSourcePriority,
|
|
1988
2130
|
getSupportedChains,
|
|
1989
2131
|
getSupportedTokens,
|
|
2132
|
+
getUserById,
|
|
2133
|
+
getUserByIdInputSchema,
|
|
2134
|
+
getUserByIdOutputSchema,
|
|
2135
|
+
getUserPortfolio,
|
|
2136
|
+
getUserTurtlePortfolioInputSchema,
|
|
2137
|
+
getUserTurtlePortfolioOutputSchema,
|
|
2138
|
+
getUserTurtlePortfolioPathSchema,
|
|
1990
2139
|
getWalletBalances,
|
|
1991
2140
|
getWidgetOpportunities,
|
|
2141
|
+
holdingsDataSchema,
|
|
1992
2142
|
incentiveSchema,
|
|
1993
2143
|
lendingConfigSchema,
|
|
1994
2144
|
mergeBalancesByPriority,
|
|
@@ -1998,6 +2148,7 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
|
|
|
1998
2148
|
paginationMetadataSchema,
|
|
1999
2149
|
portfolioBalanceResponseSchema,
|
|
2000
2150
|
portfolioHoldingsSchema,
|
|
2151
|
+
portfolioSchema,
|
|
2001
2152
|
portfolioTokenSchema,
|
|
2002
2153
|
portfolioWalletSchema,
|
|
2003
2154
|
processRouteDetails,
|
|
@@ -2039,10 +2190,16 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
|
|
|
2039
2190
|
useTokenBalance,
|
|
2040
2191
|
useUpdateProduct,
|
|
2041
2192
|
useUploadProductLogo,
|
|
2193
|
+
useUserById,
|
|
2194
|
+
useUserPortfolio,
|
|
2042
2195
|
useWidgetOpportunities,
|
|
2196
|
+
userEarningsSchema,
|
|
2197
|
+
userWithDetailsSchema,
|
|
2198
|
+
usersQueries,
|
|
2043
2199
|
vaultConfigSchema,
|
|
2044
2200
|
walletBalanceSchema,
|
|
2045
2201
|
walletBalancesResponseSchema,
|
|
2202
|
+
walletDataSchema,
|
|
2046
2203
|
walletEcosystemEnum,
|
|
2047
2204
|
widgetOpportunitiesResponseSchema,
|
|
2048
2205
|
widgetQueries
|