@exyconn/common 2.3.2 → 2.3.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/README.md +117 -12
- package/dist/client/http/index.d.mts +280 -49
- package/dist/client/http/index.d.ts +280 -49
- package/dist/client/http/index.js +564 -90
- package/dist/client/http/index.js.map +1 -1
- package/dist/client/http/index.mjs +520 -80
- package/dist/client/http/index.mjs.map +1 -1
- package/dist/client/index.d.mts +3 -3
- package/dist/client/index.d.ts +3 -3
- package/dist/client/index.js +573 -316
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +529 -287
- package/dist/client/index.mjs.map +1 -1
- package/dist/client/utils/index.d.mts +3 -279
- package/dist/client/utils/index.d.ts +3 -279
- package/dist/{index-D9a9oxQy.d.ts → index-CdbQ8YPt.d.ts} +51 -39
- package/dist/{index-D3yCCjBZ.d.mts → index-Ckhm_HaX.d.mts} +21 -2
- package/dist/{index-01hoqibP.d.ts → index-br6POSyA.d.ts} +21 -2
- package/dist/{index-DuxL84IW.d.mts → index-guYdqefq.d.mts} +51 -39
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1214 -326
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1226 -338
- package/dist/index.mjs.map +1 -1
- package/dist/packageCheck-B_qfsD6R.d.ts +280 -0
- package/dist/packageCheck-C2_FT_Rl.d.mts +280 -0
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +631 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +625 -2
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/middleware/index.d.mts +283 -2
- package/dist/server/middleware/index.d.ts +283 -2
- package/dist/server/middleware/index.js +761 -0
- package/dist/server/middleware/index.js.map +1 -1
- package/dist/server/middleware/index.mjs +751 -1
- package/dist/server/middleware/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/client/index.mjs
CHANGED
|
@@ -4,108 +4,548 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
4
4
|
import * as Yup from 'yup';
|
|
5
5
|
import { Formik, Form, Field, ErrorMessage } from 'formik';
|
|
6
6
|
|
|
7
|
-
// src/client/http/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
headers: {
|
|
22
|
-
"Content-Type": "application/json"
|
|
7
|
+
// src/client/http/http.ts
|
|
8
|
+
|
|
9
|
+
// src/client/http/logger.ts
|
|
10
|
+
var Logger = class {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.isDevelopment = typeof window !== "undefined" && window.location.hostname === "localhost";
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Log informational messages
|
|
16
|
+
*/
|
|
17
|
+
info(message, data, options) {
|
|
18
|
+
if (this.isDevelopment) {
|
|
19
|
+
const prefix = options?.context ? `[${options.context}]` : "";
|
|
20
|
+
console.log(`${prefix} ${message}`, data ?? "");
|
|
23
21
|
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Log warning messages
|
|
25
|
+
*/
|
|
26
|
+
warn(message, data, options) {
|
|
27
|
+
if (this.isDevelopment) {
|
|
28
|
+
const prefix = options?.context ? `[${options.context}]` : "";
|
|
29
|
+
console.warn(`${prefix} ${message}`, data ?? "");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Log error messages
|
|
34
|
+
*/
|
|
35
|
+
error(message, error, options) {
|
|
36
|
+
const prefix = options?.context ? `[${options.context}]` : "";
|
|
37
|
+
if (this.isDevelopment) {
|
|
38
|
+
console.error(`${prefix} ${message}`, error, options?.metadata || "");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Log debug messages (only in development)
|
|
43
|
+
*/
|
|
44
|
+
debug(message, data, options) {
|
|
45
|
+
if (this.isDevelopment) {
|
|
46
|
+
const prefix = options?.context ? `[${options.context}]` : "";
|
|
47
|
+
console.debug(`${prefix} ${message}`, data || "");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Log API errors with structured information
|
|
52
|
+
*/
|
|
53
|
+
apiError(endpoint, error, metadata) {
|
|
54
|
+
this.error(`API Error: ${endpoint}`, error, {
|
|
55
|
+
context: "API",
|
|
56
|
+
metadata: {
|
|
57
|
+
endpoint,
|
|
58
|
+
...metadata
|
|
32
59
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var logger = new Logger();
|
|
64
|
+
|
|
65
|
+
// src/client/http/response-parser.ts
|
|
66
|
+
var STATUS_CODES = {
|
|
67
|
+
SUCCESS: 200,
|
|
68
|
+
CREATED: 201,
|
|
69
|
+
NO_CONTENT: 204,
|
|
70
|
+
BAD_REQUEST: 400,
|
|
71
|
+
UNAUTHORIZED: 401,
|
|
72
|
+
FORBIDDEN: 403,
|
|
73
|
+
NOT_FOUND: 404,
|
|
74
|
+
CONFLICT: 409,
|
|
75
|
+
ERROR: 500
|
|
76
|
+
};
|
|
77
|
+
var STATUS_MESSAGES = {
|
|
78
|
+
SUCCESS: "success",
|
|
79
|
+
CREATED: "created",
|
|
80
|
+
NO_CONTENT: "no_content",
|
|
81
|
+
BAD_REQUEST: "bad_request",
|
|
82
|
+
UNAUTHORIZED: "unauthorized",
|
|
83
|
+
FORBIDDEN: "forbidden",
|
|
84
|
+
NOT_FOUND: "not_found",
|
|
85
|
+
CONFLICT: "conflict",
|
|
86
|
+
ERROR: "error"
|
|
87
|
+
};
|
|
88
|
+
var SUCCESS_CODES = [200, 201, 204];
|
|
89
|
+
var ERROR_CODES = [400, 401, 403, 404, 409, 500];
|
|
90
|
+
var parseResponseData = (response, fallback = null) => {
|
|
91
|
+
try {
|
|
92
|
+
if (!response || typeof response !== "object") {
|
|
93
|
+
return fallback;
|
|
94
|
+
}
|
|
95
|
+
const resp = response;
|
|
96
|
+
if ("data" in resp) {
|
|
97
|
+
return resp["data"] ?? fallback;
|
|
98
|
+
}
|
|
99
|
+
return response;
|
|
100
|
+
} catch (error) {
|
|
101
|
+
logger.error("Error parsing response data", error);
|
|
102
|
+
return fallback;
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
var parseResponseMessage = (response, fallback = "") => {
|
|
106
|
+
try {
|
|
107
|
+
if (!response || typeof response !== "object") {
|
|
108
|
+
return fallback;
|
|
109
|
+
}
|
|
110
|
+
const resp = response;
|
|
111
|
+
if ("message" in resp && typeof resp["message"] === "string") {
|
|
112
|
+
return resp["message"];
|
|
113
|
+
}
|
|
114
|
+
return fallback;
|
|
115
|
+
} catch (error) {
|
|
116
|
+
logger.error("Error parsing response message", error);
|
|
117
|
+
return fallback;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
var parseResponseStatus = (response) => {
|
|
121
|
+
try {
|
|
122
|
+
if (!response || typeof response !== "object") {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const resp = response;
|
|
126
|
+
if ("statusCode" in resp && typeof resp["statusCode"] === "number") {
|
|
127
|
+
return resp["statusCode"];
|
|
128
|
+
}
|
|
129
|
+
if ("status" in resp && typeof resp["status"] === "number") {
|
|
130
|
+
return resp["status"];
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
} catch (error) {
|
|
134
|
+
logger.error("Error parsing response status", error);
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
var parseResponseStatusMessage = (response, fallback = "") => {
|
|
139
|
+
try {
|
|
140
|
+
if (!response || typeof response !== "object") {
|
|
141
|
+
return fallback;
|
|
142
|
+
}
|
|
143
|
+
const resp = response;
|
|
144
|
+
if ("status" in resp && typeof resp["status"] === "string") {
|
|
145
|
+
return resp["status"];
|
|
146
|
+
}
|
|
147
|
+
return fallback;
|
|
148
|
+
} catch (error) {
|
|
149
|
+
logger.error("Error parsing response status message", error);
|
|
150
|
+
return fallback;
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
var isSuccessResponse = (response) => {
|
|
154
|
+
try {
|
|
155
|
+
const statusCode = parseResponseStatus(response);
|
|
156
|
+
if (statusCode !== null) {
|
|
157
|
+
return SUCCESS_CODES.includes(statusCode);
|
|
158
|
+
}
|
|
159
|
+
const status = parseResponseStatusMessage(response);
|
|
160
|
+
return [STATUS_MESSAGES.SUCCESS, STATUS_MESSAGES.CREATED, STATUS_MESSAGES.NO_CONTENT].includes(
|
|
161
|
+
status
|
|
162
|
+
);
|
|
163
|
+
} catch (error) {
|
|
164
|
+
logger.error("Error checking response success", error);
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
var isErrorResponse = (response) => {
|
|
169
|
+
try {
|
|
170
|
+
const statusCode = parseResponseStatus(response);
|
|
171
|
+
if (statusCode !== null) {
|
|
172
|
+
return ERROR_CODES.includes(statusCode);
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
} catch (error) {
|
|
176
|
+
logger.error("Error checking response error", error);
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
var parsePaginatedResponse = (response) => {
|
|
181
|
+
try {
|
|
182
|
+
if (!response || typeof response !== "object") {
|
|
183
|
+
return { items: [], total: 0, page: 1, limit: 10 };
|
|
184
|
+
}
|
|
185
|
+
const resp = response;
|
|
186
|
+
let items = [];
|
|
187
|
+
if ("data" in resp && Array.isArray(resp["data"])) {
|
|
188
|
+
items = resp["data"];
|
|
189
|
+
}
|
|
190
|
+
let total = items.length;
|
|
191
|
+
let page = 1;
|
|
192
|
+
let limit = 10;
|
|
193
|
+
let totalPages;
|
|
194
|
+
if ("paginationData" in resp && resp["paginationData"] && typeof resp["paginationData"] === "object") {
|
|
195
|
+
const paginationData = resp["paginationData"];
|
|
196
|
+
if ("total" in paginationData && typeof paginationData["total"] === "number") {
|
|
197
|
+
total = paginationData["total"];
|
|
198
|
+
}
|
|
199
|
+
if ("page" in paginationData && typeof paginationData["page"] === "number") {
|
|
200
|
+
page = paginationData["page"];
|
|
201
|
+
}
|
|
202
|
+
if ("limit" in paginationData && typeof paginationData["limit"] === "number") {
|
|
203
|
+
limit = paginationData["limit"];
|
|
204
|
+
}
|
|
205
|
+
if ("totalPages" in paginationData && typeof paginationData["totalPages"] === "number") {
|
|
206
|
+
totalPages = paginationData["totalPages"];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
let columns;
|
|
210
|
+
if ("columns" in resp && Array.isArray(resp["columns"])) {
|
|
211
|
+
columns = resp["columns"];
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
items,
|
|
215
|
+
total,
|
|
216
|
+
page,
|
|
217
|
+
limit,
|
|
218
|
+
...totalPages !== void 0 && { totalPages },
|
|
219
|
+
...columns !== void 0 && { columns }
|
|
220
|
+
};
|
|
221
|
+
} catch (error) {
|
|
222
|
+
logger.error("Error parsing paginated response", error);
|
|
223
|
+
return { items: [], total: 0, page: 1, limit: 10 };
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
var extractNestedData = (response, path, fallback = null) => {
|
|
227
|
+
try {
|
|
228
|
+
const keys = path.split(".");
|
|
229
|
+
let current = response;
|
|
230
|
+
for (const key of keys) {
|
|
231
|
+
if (current && typeof current === "object" && key in current) {
|
|
232
|
+
current = current[key];
|
|
233
|
+
} else {
|
|
234
|
+
return fallback;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return current;
|
|
238
|
+
} catch (error) {
|
|
239
|
+
logger.error("Error extracting nested data", error);
|
|
240
|
+
return fallback;
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
var safeJsonParse = (json, fallback = null) => {
|
|
244
|
+
try {
|
|
245
|
+
return JSON.parse(json);
|
|
246
|
+
} catch (error) {
|
|
247
|
+
logger.error("Error parsing JSON", error);
|
|
248
|
+
return fallback;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
var parseAxiosErrorMessage = (error) => {
|
|
252
|
+
try {
|
|
253
|
+
if (!error || typeof error !== "object") {
|
|
254
|
+
return "An unexpected error occurred";
|
|
255
|
+
}
|
|
256
|
+
const err = error;
|
|
257
|
+
if ("response" in err && err["response"] && typeof err["response"] === "object") {
|
|
258
|
+
const response = err["response"];
|
|
259
|
+
if ("data" in response && response["data"] && typeof response["data"] === "object") {
|
|
260
|
+
const data = response["data"];
|
|
261
|
+
if ("data" in data && data["data"] && typeof data["data"] === "object") {
|
|
262
|
+
const nestedData = data["data"];
|
|
263
|
+
if ("message" in nestedData && typeof nestedData["message"] === "string") {
|
|
264
|
+
return nestedData["message"];
|
|
265
|
+
}
|
|
44
266
|
}
|
|
45
|
-
if (
|
|
46
|
-
|
|
267
|
+
if ("message" in data && typeof data["message"] === "string") {
|
|
268
|
+
return data["message"];
|
|
269
|
+
}
|
|
270
|
+
if ("error" in data && typeof data["error"] === "string") {
|
|
271
|
+
return data["error"];
|
|
47
272
|
}
|
|
48
273
|
}
|
|
49
|
-
return Promise.reject(error);
|
|
50
274
|
}
|
|
51
|
-
|
|
52
|
-
|
|
275
|
+
if ("message" in err && typeof err["message"] === "string") {
|
|
276
|
+
return err["message"];
|
|
277
|
+
}
|
|
278
|
+
if (typeof error === "string") {
|
|
279
|
+
return error;
|
|
280
|
+
}
|
|
281
|
+
return "An unexpected error occurred";
|
|
282
|
+
} catch (parseError2) {
|
|
283
|
+
logger.error("Error parsing axios error message", parseError2);
|
|
284
|
+
return "An unexpected error occurred";
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
var parseError = (error) => {
|
|
288
|
+
try {
|
|
289
|
+
if (!error || typeof error !== "object") {
|
|
290
|
+
return {
|
|
291
|
+
message: "An unexpected error occurred",
|
|
292
|
+
statusCode: null,
|
|
293
|
+
data: null
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
const err = error;
|
|
297
|
+
let statusCode = null;
|
|
298
|
+
let data = null;
|
|
299
|
+
let status;
|
|
300
|
+
if ("response" in err && err["response"] && typeof err["response"] === "object") {
|
|
301
|
+
const response = err["response"];
|
|
302
|
+
if ("status" in response && typeof response["status"] === "number") {
|
|
303
|
+
statusCode = response["status"];
|
|
304
|
+
}
|
|
305
|
+
if ("data" in response && response["data"] !== void 0) {
|
|
306
|
+
data = response["data"];
|
|
307
|
+
if (data && typeof data === "object" && "status" in data) {
|
|
308
|
+
const dataObj = data;
|
|
309
|
+
if (typeof dataObj["status"] === "string") {
|
|
310
|
+
status = dataObj["status"];
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
if (statusCode === null && "statusCode" in err && typeof err["statusCode"] === "number") {
|
|
316
|
+
statusCode = err["statusCode"];
|
|
317
|
+
}
|
|
318
|
+
if (data === null && "data" in err && err["data"] !== void 0) {
|
|
319
|
+
data = err["data"];
|
|
320
|
+
}
|
|
321
|
+
if (!status && "status" in err && typeof err["status"] === "string") {
|
|
322
|
+
status = err["status"];
|
|
323
|
+
}
|
|
324
|
+
return {
|
|
325
|
+
message: parseAxiosErrorMessage(error),
|
|
326
|
+
statusCode,
|
|
327
|
+
data,
|
|
328
|
+
...status !== void 0 && { status }
|
|
329
|
+
};
|
|
330
|
+
} catch (err) {
|
|
331
|
+
logger.error("Error parsing error object", err);
|
|
332
|
+
return {
|
|
333
|
+
message: "An unexpected error occurred",
|
|
334
|
+
statusCode: null,
|
|
335
|
+
data: null
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
var simpleParseResponse = (response) => {
|
|
340
|
+
return response?.data?.data?.data;
|
|
341
|
+
};
|
|
342
|
+
var simpleMetaParseResponse = (response) => {
|
|
343
|
+
return response?.data?.data?.meta;
|
|
53
344
|
};
|
|
54
|
-
var
|
|
345
|
+
var simpleParseDualDataResponse = (response) => {
|
|
346
|
+
return response?.data?.data;
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
// src/client/http/http.ts
|
|
350
|
+
var defaultConfig = {
|
|
351
|
+
baseUrl: typeof window !== "undefined" && window.location.hostname === "localhost" ? "http://localhost:4002" : "https://service-api.exyconn.com",
|
|
352
|
+
apiPrefix: "/v1/api",
|
|
353
|
+
timeout: 3e4,
|
|
354
|
+
defaultHeaders: {}
|
|
355
|
+
};
|
|
356
|
+
var currentConfig = { ...defaultConfig };
|
|
357
|
+
var axiosInstance = axios.create({
|
|
358
|
+
baseURL: defaultConfig.baseUrl,
|
|
359
|
+
timeout: defaultConfig.timeout,
|
|
55
360
|
headers: {
|
|
56
|
-
"Content-Type": "
|
|
361
|
+
"Content-Type": "application/json"
|
|
57
362
|
}
|
|
58
363
|
});
|
|
59
|
-
var
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
|
|
364
|
+
var getApiBaseUrl = () => {
|
|
365
|
+
return currentConfig.baseUrl || defaultConfig.baseUrl;
|
|
366
|
+
};
|
|
367
|
+
var setApiBaseUrl = (baseUrl) => {
|
|
368
|
+
currentConfig.baseUrl = baseUrl;
|
|
369
|
+
axiosInstance.defaults.baseURL = baseUrl;
|
|
370
|
+
logger.info(`API Base URL updated to: ${baseUrl}`);
|
|
371
|
+
};
|
|
372
|
+
var getApiPrefix = () => {
|
|
373
|
+
return currentConfig.apiPrefix || defaultConfig.apiPrefix;
|
|
374
|
+
};
|
|
375
|
+
var setApiPrefix = (prefix) => {
|
|
376
|
+
currentConfig.apiPrefix = prefix;
|
|
377
|
+
logger.info(`API Prefix updated to: ${prefix}`);
|
|
378
|
+
};
|
|
379
|
+
var getCustomHeaders = () => {
|
|
380
|
+
return { ...currentConfig.defaultHeaders };
|
|
381
|
+
};
|
|
382
|
+
var setCustomHeader = (key, value) => {
|
|
383
|
+
if (!currentConfig.defaultHeaders) {
|
|
384
|
+
currentConfig.defaultHeaders = {};
|
|
70
385
|
}
|
|
71
|
-
|
|
386
|
+
currentConfig.defaultHeaders[key] = value;
|
|
387
|
+
axiosInstance.defaults.headers.common[key] = value;
|
|
388
|
+
logger.info(`Custom header added: ${key}`);
|
|
72
389
|
};
|
|
73
|
-
var
|
|
74
|
-
|
|
390
|
+
var removeCustomHeader = (key) => {
|
|
391
|
+
if (currentConfig.defaultHeaders) {
|
|
392
|
+
delete currentConfig.defaultHeaders[key];
|
|
393
|
+
}
|
|
394
|
+
delete axiosInstance.defaults.headers.common[key];
|
|
395
|
+
logger.info(`Custom header removed: ${key}`);
|
|
75
396
|
};
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
397
|
+
var setCustomHeaders = (headers) => {
|
|
398
|
+
currentConfig.defaultHeaders = { ...currentConfig.defaultHeaders, ...headers };
|
|
399
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
400
|
+
axiosInstance.defaults.headers.common[key] = value;
|
|
401
|
+
});
|
|
402
|
+
logger.info(`Multiple custom headers added: ${Object.keys(headers).join(", ")}`);
|
|
403
|
+
};
|
|
404
|
+
var clearCustomHeaders = () => {
|
|
405
|
+
if (currentConfig.defaultHeaders) {
|
|
406
|
+
Object.keys(currentConfig.defaultHeaders).forEach((key) => {
|
|
407
|
+
delete axiosInstance.defaults.headers.common[key];
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
currentConfig.defaultHeaders = {};
|
|
411
|
+
logger.info("All custom headers cleared");
|
|
412
|
+
};
|
|
413
|
+
var configureHttp = (config) => {
|
|
414
|
+
if (config.baseUrl) {
|
|
415
|
+
setApiBaseUrl(config.baseUrl);
|
|
79
416
|
}
|
|
80
|
-
if (
|
|
81
|
-
|
|
417
|
+
if (config.apiPrefix) {
|
|
418
|
+
setApiPrefix(config.apiPrefix);
|
|
82
419
|
}
|
|
83
|
-
if (
|
|
84
|
-
|
|
420
|
+
if (config.timeout !== void 0) {
|
|
421
|
+
currentConfig.timeout = config.timeout;
|
|
422
|
+
axiosInstance.defaults.timeout = config.timeout;
|
|
85
423
|
}
|
|
86
|
-
if (
|
|
87
|
-
|
|
424
|
+
if (config.defaultHeaders) {
|
|
425
|
+
setCustomHeaders(config.defaultHeaders);
|
|
88
426
|
}
|
|
89
|
-
|
|
427
|
+
logger.info("HTTP client configured successfully");
|
|
90
428
|
};
|
|
91
|
-
var
|
|
92
|
-
return
|
|
429
|
+
var getHttpConfig = () => {
|
|
430
|
+
return { ...currentConfig };
|
|
93
431
|
};
|
|
94
|
-
var
|
|
95
|
-
|
|
432
|
+
var resetHttpConfig = () => {
|
|
433
|
+
currentConfig = { ...defaultConfig };
|
|
434
|
+
axiosInstance.defaults.baseURL = defaultConfig.baseUrl;
|
|
435
|
+
axiosInstance.defaults.timeout = defaultConfig.timeout;
|
|
436
|
+
clearCustomHeaders();
|
|
437
|
+
logger.info("HTTP configuration reset to defaults");
|
|
96
438
|
};
|
|
97
|
-
var
|
|
98
|
-
|
|
439
|
+
var API_BASE_URL = getApiBaseUrl();
|
|
440
|
+
var API_PREFIX = getApiPrefix();
|
|
441
|
+
axiosInstance.interceptors.request.use(
|
|
442
|
+
(config) => {
|
|
443
|
+
try {
|
|
444
|
+
if (typeof window !== "undefined" && window.localStorage) {
|
|
445
|
+
const selectedOrg = localStorage.getItem("selectedOrganization");
|
|
446
|
+
if (selectedOrg) {
|
|
447
|
+
const org = JSON.parse(selectedOrg);
|
|
448
|
+
if (org && org._id) {
|
|
449
|
+
config.headers["x-organization-id"] = org._id;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
} catch (error) {
|
|
454
|
+
logger.warn("Failed to read organization from localStorage", error);
|
|
455
|
+
}
|
|
456
|
+
return config;
|
|
457
|
+
},
|
|
458
|
+
(error) => {
|
|
459
|
+
return Promise.reject(error);
|
|
460
|
+
}
|
|
461
|
+
);
|
|
462
|
+
axiosInstance.interceptors.response.use(
|
|
463
|
+
(response) => response,
|
|
464
|
+
(error) => {
|
|
465
|
+
const parsedError = parseError(error);
|
|
466
|
+
logger.error("API Error", parsedError);
|
|
467
|
+
return Promise.reject(parsedError);
|
|
468
|
+
}
|
|
469
|
+
);
|
|
470
|
+
var buildHeaders = (customHeaders) => {
|
|
471
|
+
const headers = {
|
|
472
|
+
"Content-Type": "application/json",
|
|
473
|
+
...currentConfig.defaultHeaders,
|
|
474
|
+
// Add global custom headers
|
|
475
|
+
...customHeaders
|
|
476
|
+
// Request-specific headers override global ones
|
|
477
|
+
};
|
|
478
|
+
return headers;
|
|
479
|
+
};
|
|
480
|
+
var buildConfig = (params, customHeaders) => {
|
|
481
|
+
const config = {
|
|
482
|
+
headers: buildHeaders(customHeaders)
|
|
483
|
+
};
|
|
484
|
+
if (params) {
|
|
485
|
+
config.params = params;
|
|
486
|
+
}
|
|
487
|
+
return config;
|
|
99
488
|
};
|
|
100
|
-
var
|
|
101
|
-
|
|
489
|
+
var getRequest = async (url, params, customHeaders) => {
|
|
490
|
+
const config = buildConfig(params, customHeaders);
|
|
491
|
+
return axiosInstance.get(url, config);
|
|
102
492
|
};
|
|
103
|
-
var
|
|
104
|
-
|
|
493
|
+
var postRequest = async (url, data, customHeaders) => {
|
|
494
|
+
const config = buildConfig(void 0, customHeaders);
|
|
495
|
+
return axiosInstance.post(url, data, config);
|
|
105
496
|
};
|
|
106
|
-
var
|
|
107
|
-
const
|
|
108
|
-
return
|
|
497
|
+
var putRequest = async (url, data, customHeaders) => {
|
|
498
|
+
const config = buildConfig(void 0, customHeaders);
|
|
499
|
+
return axiosInstance.put(url, data, config);
|
|
500
|
+
};
|
|
501
|
+
var patchRequest = async (url, data, customHeaders) => {
|
|
502
|
+
const config = buildConfig(void 0, customHeaders);
|
|
503
|
+
return axiosInstance.patch(url, data, config);
|
|
504
|
+
};
|
|
505
|
+
var deleteRequest = async (url, params, customHeaders) => {
|
|
506
|
+
const config = buildConfig(params, customHeaders);
|
|
507
|
+
return axiosInstance.delete(url, config);
|
|
508
|
+
};
|
|
509
|
+
var uploadFile = async (url, file, additionalData) => {
|
|
510
|
+
const formData = new FormData();
|
|
511
|
+
formData.append("file", file);
|
|
512
|
+
if (additionalData) {
|
|
513
|
+
Object.entries(additionalData).forEach(([key, value]) => {
|
|
514
|
+
formData.append(key, String(value));
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
const config = {
|
|
518
|
+
headers: {
|
|
519
|
+
"Content-Type": "multipart/form-data"
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
return axiosInstance.post(url, formData, config);
|
|
523
|
+
};
|
|
524
|
+
var extractData = (response) => {
|
|
525
|
+
return parseResponseData(response.data);
|
|
526
|
+
};
|
|
527
|
+
var extractMessage = (response) => {
|
|
528
|
+
return parseResponseMessage(response, "");
|
|
529
|
+
};
|
|
530
|
+
var isSuccess = (response) => {
|
|
531
|
+
return response.status >= 200 && response.status < 300;
|
|
532
|
+
};
|
|
533
|
+
var extractPaginatedData = (response) => {
|
|
534
|
+
return parsePaginatedResponse(response.data);
|
|
535
|
+
};
|
|
536
|
+
|
|
537
|
+
// src/client/http/slug.ts
|
|
538
|
+
var generateSlug = (text) => {
|
|
539
|
+
if (!text) return "";
|
|
540
|
+
return text.trim().replace(/[^\w\s]/g, "").replace(/\s+(.)/g, (_, char) => char.toUpperCase()).replace(/\s+/g, "").replace(/^(.)/, (_, char) => char.toLowerCase());
|
|
541
|
+
};
|
|
542
|
+
var generateUrlSlug = (text) => {
|
|
543
|
+
if (!text) return "";
|
|
544
|
+
return text.trim().toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
545
|
+
};
|
|
546
|
+
var generateSnakeSlug = (text) => {
|
|
547
|
+
if (!text) return "";
|
|
548
|
+
return text.trim().toLowerCase().replace(/[^\w\s]/g, "").replace(/\s+/g, "_").replace(/_+/g, "_").replace(/^_|_$/g, "");
|
|
109
549
|
};
|
|
110
550
|
|
|
111
551
|
// src/client/logger/client-logger.ts
|
|
@@ -261,40 +701,6 @@ var formatRelativeTime = (date) => {
|
|
|
261
701
|
}
|
|
262
702
|
return "just now";
|
|
263
703
|
};
|
|
264
|
-
var formatDateForInput = (date) => {
|
|
265
|
-
const dateObj = new Date(date);
|
|
266
|
-
return dateObj.toISOString().split("T")[0];
|
|
267
|
-
};
|
|
268
|
-
var formatDateTimeForInput = (date) => {
|
|
269
|
-
const dateObj = new Date(date);
|
|
270
|
-
return dateObj.toISOString().slice(0, 16);
|
|
271
|
-
};
|
|
272
|
-
var isToday = (date) => {
|
|
273
|
-
const dateObj = new Date(date);
|
|
274
|
-
const today = /* @__PURE__ */ new Date();
|
|
275
|
-
return dateObj.getDate() === today.getDate() && dateObj.getMonth() === today.getMonth() && dateObj.getFullYear() === today.getFullYear();
|
|
276
|
-
};
|
|
277
|
-
var isPast = (date) => {
|
|
278
|
-
return new Date(date).getTime() < Date.now();
|
|
279
|
-
};
|
|
280
|
-
var isFuture = (date) => {
|
|
281
|
-
return new Date(date).getTime() > Date.now();
|
|
282
|
-
};
|
|
283
|
-
var addDays = (date, days) => {
|
|
284
|
-
const dateObj = new Date(date);
|
|
285
|
-
dateObj.setDate(dateObj.getDate() + days);
|
|
286
|
-
return dateObj;
|
|
287
|
-
};
|
|
288
|
-
var startOfDay = (date) => {
|
|
289
|
-
const dateObj = new Date(date);
|
|
290
|
-
dateObj.setHours(0, 0, 0, 0);
|
|
291
|
-
return dateObj;
|
|
292
|
-
};
|
|
293
|
-
var endOfDay = (date) => {
|
|
294
|
-
const dateObj = new Date(date);
|
|
295
|
-
dateObj.setHours(23, 59, 59, 999);
|
|
296
|
-
return dateObj;
|
|
297
|
-
};
|
|
298
704
|
|
|
299
705
|
// src/client/utils/clipboard.ts
|
|
300
706
|
var copyToClipboard = async (text) => {
|
|
@@ -319,20 +725,6 @@ var copyToClipboard = async (text) => {
|
|
|
319
725
|
return false;
|
|
320
726
|
}
|
|
321
727
|
};
|
|
322
|
-
var readFromClipboard = async () => {
|
|
323
|
-
try {
|
|
324
|
-
if (navigator.clipboard && window.isSecureContext) {
|
|
325
|
-
return await navigator.clipboard.readText();
|
|
326
|
-
}
|
|
327
|
-
return null;
|
|
328
|
-
} catch (error) {
|
|
329
|
-
console.error("Failed to read from clipboard:", error);
|
|
330
|
-
return null;
|
|
331
|
-
}
|
|
332
|
-
};
|
|
333
|
-
var isClipboardAvailable = () => {
|
|
334
|
-
return !!(navigator.clipboard && window.isSecureContext);
|
|
335
|
-
};
|
|
336
728
|
|
|
337
729
|
// src/client/utils/slug.ts
|
|
338
730
|
var slugify = (text) => {
|
|
@@ -369,165 +761,15 @@ var kebabToCamel = (text) => {
|
|
|
369
761
|
return text.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
|
|
370
762
|
};
|
|
371
763
|
|
|
372
|
-
// src/client/utils/events.ts
|
|
373
|
-
var EventEmitter = class {
|
|
374
|
-
constructor() {
|
|
375
|
-
this.handlers = /* @__PURE__ */ new Map();
|
|
376
|
-
}
|
|
377
|
-
/**
|
|
378
|
-
* Subscribe to an event
|
|
379
|
-
* @returns Unsubscribe function
|
|
380
|
-
*/
|
|
381
|
-
on(event, handler) {
|
|
382
|
-
if (!this.handlers.has(event)) {
|
|
383
|
-
this.handlers.set(event, /* @__PURE__ */ new Set());
|
|
384
|
-
}
|
|
385
|
-
this.handlers.get(event).add(handler);
|
|
386
|
-
return () => this.off(event, handler);
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* Subscribe to an event once
|
|
390
|
-
*/
|
|
391
|
-
once(event, handler) {
|
|
392
|
-
const wrappedHandler = (data) => {
|
|
393
|
-
this.off(event, wrappedHandler);
|
|
394
|
-
handler(data);
|
|
395
|
-
};
|
|
396
|
-
return this.on(event, wrappedHandler);
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
|
-
* Unsubscribe from an event
|
|
400
|
-
*/
|
|
401
|
-
off(event, handler) {
|
|
402
|
-
const eventHandlers = this.handlers.get(event);
|
|
403
|
-
if (eventHandlers) {
|
|
404
|
-
eventHandlers.delete(handler);
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
/**
|
|
408
|
-
* Emit an event
|
|
409
|
-
*/
|
|
410
|
-
emit(event, data) {
|
|
411
|
-
const eventHandlers = this.handlers.get(event);
|
|
412
|
-
if (eventHandlers) {
|
|
413
|
-
eventHandlers.forEach((handler) => {
|
|
414
|
-
try {
|
|
415
|
-
handler(data);
|
|
416
|
-
} catch (error) {
|
|
417
|
-
console.error(`Error in event handler for "${String(event)}":`, error);
|
|
418
|
-
}
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* Remove all handlers for an event (or all events)
|
|
424
|
-
*/
|
|
425
|
-
removeAllListeners(event) {
|
|
426
|
-
if (event) {
|
|
427
|
-
this.handlers.delete(event);
|
|
428
|
-
} else {
|
|
429
|
-
this.handlers.clear();
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
/**
|
|
433
|
-
* Get count of listeners for an event
|
|
434
|
-
*/
|
|
435
|
-
listenerCount(event) {
|
|
436
|
-
return this.handlers.get(event)?.size ?? 0;
|
|
437
|
-
}
|
|
438
|
-
};
|
|
439
|
-
var createEventEmitter = () => {
|
|
440
|
-
return new EventEmitter();
|
|
441
|
-
};
|
|
442
|
-
var appEvents = new EventEmitter();
|
|
443
|
-
|
|
444
|
-
// src/client/utils/api-urls.ts
|
|
445
|
-
var ApiUrlBuilder = class {
|
|
446
|
-
constructor(config) {
|
|
447
|
-
this.baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
448
|
-
this.version = config.version || "";
|
|
449
|
-
}
|
|
450
|
-
/**
|
|
451
|
-
* Build full URL from path
|
|
452
|
-
*/
|
|
453
|
-
build(path) {
|
|
454
|
-
const normalizedPath = path.startsWith("/") ? path : `/${path}`;
|
|
455
|
-
const versionPath = this.version ? `/${this.version}` : "";
|
|
456
|
-
return `${this.baseUrl}${versionPath}${normalizedPath}`;
|
|
457
|
-
}
|
|
458
|
-
/**
|
|
459
|
-
* Build URL with query parameters
|
|
460
|
-
*/
|
|
461
|
-
buildWithParams(path, params) {
|
|
462
|
-
const url = this.build(path);
|
|
463
|
-
const filteredParams = Object.entries(params).filter(([, value]) => value !== void 0).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`).join("&");
|
|
464
|
-
return filteredParams ? `${url}?${filteredParams}` : url;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Build URL with path parameters
|
|
468
|
-
*/
|
|
469
|
-
buildWithPathParams(template, params) {
|
|
470
|
-
let path = template;
|
|
471
|
-
Object.entries(params).forEach(([key, value]) => {
|
|
472
|
-
path = path.replace(`:${key}`, String(value));
|
|
473
|
-
path = path.replace(`{${key}}`, String(value));
|
|
474
|
-
});
|
|
475
|
-
return this.build(path);
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
* Get base URL
|
|
479
|
-
*/
|
|
480
|
-
getBaseUrl() {
|
|
481
|
-
return this.baseUrl;
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Set new base URL
|
|
485
|
-
*/
|
|
486
|
-
setBaseUrl(baseUrl) {
|
|
487
|
-
this.baseUrl = baseUrl.replace(/\/$/, "");
|
|
488
|
-
}
|
|
489
|
-
};
|
|
490
|
-
var createApiUrlBuilder = (config) => {
|
|
491
|
-
return new ApiUrlBuilder(config);
|
|
492
|
-
};
|
|
493
|
-
var createApiEndpoints = (builder) => ({
|
|
494
|
-
// Auth endpoints
|
|
495
|
-
auth: {
|
|
496
|
-
login: () => builder.build("/auth/login"),
|
|
497
|
-
register: () => builder.build("/auth/register"),
|
|
498
|
-
logout: () => builder.build("/auth/logout"),
|
|
499
|
-
refresh: () => builder.build("/auth/refresh"),
|
|
500
|
-
me: () => builder.build("/auth/me"),
|
|
501
|
-
forgotPassword: () => builder.build("/auth/forgot-password"),
|
|
502
|
-
resetPassword: () => builder.build("/auth/reset-password")
|
|
503
|
-
},
|
|
504
|
-
// User endpoints
|
|
505
|
-
users: {
|
|
506
|
-
list: () => builder.build("/users"),
|
|
507
|
-
get: (id) => builder.buildWithPathParams("/users/:id", { id }),
|
|
508
|
-
create: () => builder.build("/users"),
|
|
509
|
-
update: (id) => builder.buildWithPathParams("/users/:id", { id }),
|
|
510
|
-
delete: (id) => builder.buildWithPathParams("/users/:id", { id })
|
|
511
|
-
},
|
|
512
|
-
// Generic CRUD factory
|
|
513
|
-
crud: (resource) => ({
|
|
514
|
-
list: () => builder.build(`/${resource}`),
|
|
515
|
-
get: (id) => builder.buildWithPathParams(`/${resource}/:id`, { id }),
|
|
516
|
-
create: () => builder.build(`/${resource}`),
|
|
517
|
-
update: (id) => builder.buildWithPathParams(`/${resource}/:id`, { id }),
|
|
518
|
-
delete: (id) => builder.buildWithPathParams(`/${resource}/:id`, { id })
|
|
519
|
-
})
|
|
520
|
-
});
|
|
521
|
-
|
|
522
764
|
// src/client/utils/response-parser.ts
|
|
523
|
-
var
|
|
765
|
+
var isSuccessResponse2 = (response) => {
|
|
524
766
|
return response.success === true;
|
|
525
767
|
};
|
|
526
|
-
var
|
|
768
|
+
var isErrorResponse2 = (response) => {
|
|
527
769
|
return response.success === false;
|
|
528
770
|
};
|
|
529
771
|
var getResponseData = (response, defaultValue) => {
|
|
530
|
-
if (
|
|
772
|
+
if (isSuccessResponse2(response) && response.data !== void 0) {
|
|
531
773
|
return response.data;
|
|
532
774
|
}
|
|
533
775
|
return defaultValue;
|
|
@@ -2768,18 +3010,18 @@ function useLogger(componentName, props, options = {}) {
|
|
|
2768
3010
|
const {
|
|
2769
3011
|
logProps = true,
|
|
2770
3012
|
logLifecycle = true,
|
|
2771
|
-
logger = console.log
|
|
3013
|
+
logger: logger2 = console.log
|
|
2772
3014
|
} = options;
|
|
2773
3015
|
const previousProps = useRef(props);
|
|
2774
3016
|
const renderCount = useRef(0);
|
|
2775
3017
|
renderCount.current++;
|
|
2776
3018
|
useEffect(() => {
|
|
2777
3019
|
if (logLifecycle) {
|
|
2778
|
-
|
|
3020
|
+
logger2(`[${componentName}] Mounted`);
|
|
2779
3021
|
}
|
|
2780
3022
|
return () => {
|
|
2781
3023
|
if (logLifecycle) {
|
|
2782
|
-
|
|
3024
|
+
logger2(`[${componentName}] Unmounted (rendered ${renderCount.current} times)`);
|
|
2783
3025
|
}
|
|
2784
3026
|
};
|
|
2785
3027
|
}, []);
|
|
@@ -2811,12 +3053,12 @@ function useLogger(componentName, props, options = {}) {
|
|
|
2811
3053
|
});
|
|
2812
3054
|
}
|
|
2813
3055
|
if (hasChanges) {
|
|
2814
|
-
|
|
3056
|
+
logger2(`[${componentName}] Props changed:`, changedProps);
|
|
2815
3057
|
}
|
|
2816
3058
|
previousProps.current = props;
|
|
2817
|
-
}, [componentName, props, logProps,
|
|
3059
|
+
}, [componentName, props, logProps, logger2]);
|
|
2818
3060
|
if (process.env.NODE_ENV === "development") {
|
|
2819
|
-
|
|
3061
|
+
logger2(`[${componentName}] Render #${renderCount.current}`);
|
|
2820
3062
|
}
|
|
2821
3063
|
}
|
|
2822
3064
|
var useLogger_default = useLogger;
|
|
@@ -5603,6 +5845,6 @@ function RegisterForm({
|
|
|
5603
5845
|
) });
|
|
5604
5846
|
}
|
|
5605
5847
|
|
|
5606
|
-
export {
|
|
5848
|
+
export { API_BASE_URL, API_PREFIX, ClientLogger, ContactForm, ERROR_CODES, LoginForm, NewsletterForm, RegisterForm, STATUS_CODES, STATUS_MESSAGES, SUCCESS_CODES, ThemeContext, ThemeProvider, ThemeToggle, VALIDATION_MESSAGES, adjustColor, axiosInstance as axios, camelToKebab, capitalize, capitalizeWords, clearCustomHeaders, clientLogger, configureHttp, contactFormSchema, copyToClipboard, createClientLogger, createEmptyPaginationMeta, createErrorResponse, createRegisterFormSchema, createSuccessResponse, createTheme, createThemeFromBrand, cssVar, deepMerge, defaultDarkTheme, defaultLightTheme, deleteRequest, dummyBannerData, dummyFaqItems, dummyFeatures, dummyFooterData, dummyHeaderData, dummyImage, dummyPricingPlans, dummyTestimonials, extractData, extractMessage, extractNestedData, extractPaginatedData, flattenToCssVars, formatDate, formatDateTime, formatRelativeTime, generateCssVars, generateSlug, generateSnakeSlug, generateUrlSlug, getApiBaseUrl, getApiPrefix, getContrastColor, getCustomHeaders, getErrorMessage, getHttpConfig, getNextPage, getPrevPage, getRequest, getResponseData, getSystemColorScheme, hasData, hasMorePages, hexToRgba, injectCssVars, isErrorResponse, isSuccess, isSuccessResponse, isErrorResponse2 as isUtilErrorResponse, isSuccessResponse2 as isUtilSuccessResponse, kebabToCamel, loadThemeFromUrl, loadThemeMode, logger, loginFormSchema, loremIpsum, newsletterFormSchema, packageCheck, parseAxiosErrorMessage, parseError, parsePaginatedResponse, parseResponseData, parseResponseMessage, parseResponseStatus, parseResponseStatusMessage, patchRequest, postRequest, putRequest, registerFormSchema, removeCssVars, removeCustomHeader, resetHttpConfig, resolveThemeMode, safeJsonParse, saveThemeMode, setApiBaseUrl, setApiPrefix, setCustomHeader, setCustomHeaders, simpleMetaParseResponse, simpleParseDualDataResponse, simpleParseResponse, slugify, slugifyUnique, truncate, truncateWords, unslugify, uploadFile, useBattery_default as useBattery, useClickAway_default as useClickAway, useContinuousRetry_default as useContinuousRetry, useCopyToClipboard_default as useCopyToClipboard, useCountdown_default as useCountdown, useCounter_default as useCounter, useDebounce_default as useDebounce, useDefault_default as useDefault, useDocumentTitle_default as useDocumentTitle, useEventListener_default as useEventListener, useFavicon_default as useFavicon, useFetch_default as useFetch, useGeolocation_default as useGeolocation, useHistoryState_default as useHistoryState, useHover_default as useHover, useIdle_default as useIdle, useIntersectionObserver_default as useIntersectionObserver, useInterval_default as useInterval, useIntervalWhen_default as useIntervalWhen, useIsClient_default as useIsClient, useIsDesktop, useIsFirstRender_default as useIsFirstRender, useIsMobile, useIsMobileOrTablet, useIsTablet, useKeyPress_default as useKeyPress, useList_default as useList, useLocalStorage_default as useLocalStorage, useLockBodyScroll_default as useLockBodyScroll, useLogger_default as useLogger, useLongPress_default as useLongPress, useMap_default as useMap, useMeasure_default as useMeasure, useMediaQuery_default as useMediaQuery, useMouse_default as useMouse, useNetworkState_default as useNetworkState, useObjectState_default as useObjectState, useOnClickOutside_default as useOnClickOutside, useOrientation_default as useOrientation, usePageLeave_default as usePageLeave, usePageTitle_default as usePageTitle, usePreferredLanguage_default as usePreferredLanguage, usePrevious_default as usePrevious, useQueue_default as useQueue, useRandomInterval_default as useRandomInterval, useRenderCount_default as useRenderCount, useRenderInfo_default as useRenderInfo, useScript_default as useScript, useSessionStorage_default as useSessionStorage, useSet_default as useSet, useSnackbar_default as useSnackbar, useTheme, useThemeDetector_default as useThemeDetector, useThemeValue, useThrottle_default as useThrottle, useTimeout_default as useTimeout, useToggle_default as useToggle, useVisibilityChange_default as useVisibilityChange, useWindowScroll_default as useWindowScroll, useWindowSize_default as useWindowSize };
|
|
5607
5849
|
//# sourceMappingURL=index.mjs.map
|
|
5608
5850
|
//# sourceMappingURL=index.mjs.map
|