@exyconn/common 1.0.0
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 +259 -0
- package/dist/client/http/index.d.mts +85 -0
- package/dist/client/http/index.d.ts +85 -0
- package/dist/client/http/index.js +127 -0
- package/dist/client/http/index.js.map +1 -0
- package/dist/client/http/index.mjs +109 -0
- package/dist/client/http/index.mjs.map +1 -0
- package/dist/client/index.d.mts +7 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.js +964 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/index.mjs +889 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/client/logger/index.d.mts +53 -0
- package/dist/client/logger/index.d.ts +53 -0
- package/dist/client/logger/index.js +120 -0
- package/dist/client/logger/index.js.map +1 -0
- package/dist/client/logger/index.mjs +116 -0
- package/dist/client/logger/index.mjs.map +1 -0
- package/dist/client/utils/index.d.mts +285 -0
- package/dist/client/utils/index.d.ts +285 -0
- package/dist/client/utils/index.js +403 -0
- package/dist/client/utils/index.js.map +1 -0
- package/dist/client/utils/index.mjs +362 -0
- package/dist/client/utils/index.mjs.map +1 -0
- package/dist/index-BNdT-2X4.d.ts +229 -0
- package/dist/index-CcrANHAQ.d.mts +59 -0
- package/dist/index-ClWtDfwk.d.ts +833 -0
- package/dist/index-DSW6JfD-.d.mts +833 -0
- package/dist/index-Du0LLt9f.d.mts +229 -0
- package/dist/index-iTKxFa78.d.ts +59 -0
- package/dist/index.d.mts +171 -0
- package/dist/index.d.ts +171 -0
- package/dist/index.js +3806 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3792 -0
- package/dist/index.mjs.map +1 -0
- package/dist/response.types-D--UhLJq.d.mts +67 -0
- package/dist/response.types-D--UhLJq.d.ts +67 -0
- package/dist/server/db/index.d.mts +38 -0
- package/dist/server/db/index.d.ts +38 -0
- package/dist/server/db/index.js +68 -0
- package/dist/server/db/index.js.map +1 -0
- package/dist/server/db/index.mjs +60 -0
- package/dist/server/db/index.mjs.map +1 -0
- package/dist/server/enums/index.d.mts +46 -0
- package/dist/server/enums/index.d.ts +46 -0
- package/dist/server/enums/index.js +48 -0
- package/dist/server/enums/index.js.map +1 -0
- package/dist/server/enums/index.mjs +43 -0
- package/dist/server/enums/index.mjs.map +1 -0
- package/dist/server/index.d.mts +9 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +569 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +523 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/logger/index.d.mts +34 -0
- package/dist/server/logger/index.d.ts +34 -0
- package/dist/server/logger/index.js +125 -0
- package/dist/server/logger/index.js.map +1 -0
- package/dist/server/logger/index.mjs +113 -0
- package/dist/server/logger/index.mjs.map +1 -0
- package/dist/server/middleware/index.d.mts +56 -0
- package/dist/server/middleware/index.d.ts +56 -0
- package/dist/server/middleware/index.js +128 -0
- package/dist/server/middleware/index.js.map +1 -0
- package/dist/server/middleware/index.mjs +118 -0
- package/dist/server/middleware/index.mjs.map +1 -0
- package/dist/server/response/index.d.mts +86 -0
- package/dist/server/response/index.d.ts +86 -0
- package/dist/server/response/index.js +140 -0
- package/dist/server/response/index.js.map +1 -0
- package/dist/server/response/index.mjs +126 -0
- package/dist/server/response/index.mjs.map +1 -0
- package/dist/server/utils/index.d.mts +69 -0
- package/dist/server/utils/index.d.ts +69 -0
- package/dist/server/utils/index.js +114 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/index.mjs +106 -0
- package/dist/server/utils/index.mjs.map +1 -0
- package/dist/shared/index.d.mts +4 -0
- package/dist/shared/index.d.ts +4 -0
- package/dist/shared/index.js +933 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/index.mjs +612 -0
- package/dist/shared/index.mjs.map +1 -0
- package/package.json +202 -0
|
@@ -0,0 +1,933 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var dateFns = require('date-fns');
|
|
4
|
+
var dateFnsTz = require('date-fns-tz');
|
|
5
|
+
|
|
6
|
+
// src/shared/config/env.ts
|
|
7
|
+
var getEnv = (key, defaultValue) => {
|
|
8
|
+
const value = process.env[key];
|
|
9
|
+
if (value === void 0) {
|
|
10
|
+
if (defaultValue !== void 0) {
|
|
11
|
+
return defaultValue;
|
|
12
|
+
}
|
|
13
|
+
throw new Error(`Environment variable ${key} is required but not defined`);
|
|
14
|
+
}
|
|
15
|
+
if (typeof defaultValue === "number") {
|
|
16
|
+
return Number(value);
|
|
17
|
+
}
|
|
18
|
+
if (typeof defaultValue === "boolean") {
|
|
19
|
+
return value === "true" || value === "1";
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var getEnvOptional = (key, defaultValue) => {
|
|
24
|
+
const value = process.env[key];
|
|
25
|
+
if (value === void 0) {
|
|
26
|
+
return defaultValue;
|
|
27
|
+
}
|
|
28
|
+
if (typeof defaultValue === "number") {
|
|
29
|
+
return Number(value);
|
|
30
|
+
}
|
|
31
|
+
if (typeof defaultValue === "boolean") {
|
|
32
|
+
return value === "true" || value === "1";
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
};
|
|
36
|
+
var isProd = () => {
|
|
37
|
+
return process.env.NODE_ENV === "production";
|
|
38
|
+
};
|
|
39
|
+
var isDev = () => {
|
|
40
|
+
return process.env.NODE_ENV === "development";
|
|
41
|
+
};
|
|
42
|
+
var isTest = () => {
|
|
43
|
+
return process.env.NODE_ENV === "test";
|
|
44
|
+
};
|
|
45
|
+
var validateEnv = (requiredVars) => {
|
|
46
|
+
const missing = requiredVars.filter((key) => !process.env[key]);
|
|
47
|
+
if (missing.length > 0) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
`Missing required environment variables: ${missing.join(", ")}`
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// src/shared/constants/status-codes.ts
|
|
55
|
+
var HTTP_STATUS = {
|
|
56
|
+
// Success
|
|
57
|
+
OK: 200,
|
|
58
|
+
CREATED: 201,
|
|
59
|
+
ACCEPTED: 202,
|
|
60
|
+
NO_CONTENT: 204,
|
|
61
|
+
// Redirection
|
|
62
|
+
MOVED_PERMANENTLY: 301,
|
|
63
|
+
FOUND: 302,
|
|
64
|
+
NOT_MODIFIED: 304,
|
|
65
|
+
TEMPORARY_REDIRECT: 307,
|
|
66
|
+
PERMANENT_REDIRECT: 308,
|
|
67
|
+
// Client Errors
|
|
68
|
+
BAD_REQUEST: 400,
|
|
69
|
+
UNAUTHORIZED: 401,
|
|
70
|
+
FORBIDDEN: 403,
|
|
71
|
+
NOT_FOUND: 404,
|
|
72
|
+
METHOD_NOT_ALLOWED: 405,
|
|
73
|
+
CONFLICT: 409,
|
|
74
|
+
GONE: 410,
|
|
75
|
+
UNPROCESSABLE_ENTITY: 422,
|
|
76
|
+
TOO_MANY_REQUESTS: 429,
|
|
77
|
+
// Server Errors
|
|
78
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
79
|
+
NOT_IMPLEMENTED: 501,
|
|
80
|
+
BAD_GATEWAY: 502,
|
|
81
|
+
SERVICE_UNAVAILABLE: 503,
|
|
82
|
+
GATEWAY_TIMEOUT: 504
|
|
83
|
+
};
|
|
84
|
+
var HTTP_STATUS_MESSAGES = {
|
|
85
|
+
[HTTP_STATUS.OK]: "OK",
|
|
86
|
+
[HTTP_STATUS.CREATED]: "Created",
|
|
87
|
+
[HTTP_STATUS.ACCEPTED]: "Accepted",
|
|
88
|
+
[HTTP_STATUS.NO_CONTENT]: "No Content",
|
|
89
|
+
[HTTP_STATUS.BAD_REQUEST]: "Bad Request",
|
|
90
|
+
[HTTP_STATUS.UNAUTHORIZED]: "Unauthorized",
|
|
91
|
+
[HTTP_STATUS.FORBIDDEN]: "Forbidden",
|
|
92
|
+
[HTTP_STATUS.NOT_FOUND]: "Not Found",
|
|
93
|
+
[HTTP_STATUS.METHOD_NOT_ALLOWED]: "Method Not Allowed",
|
|
94
|
+
[HTTP_STATUS.CONFLICT]: "Conflict",
|
|
95
|
+
[HTTP_STATUS.UNPROCESSABLE_ENTITY]: "Unprocessable Entity",
|
|
96
|
+
[HTTP_STATUS.TOO_MANY_REQUESTS]: "Too Many Requests",
|
|
97
|
+
[HTTP_STATUS.INTERNAL_SERVER_ERROR]: "Internal Server Error",
|
|
98
|
+
[HTTP_STATUS.SERVICE_UNAVAILABLE]: "Service Unavailable"
|
|
99
|
+
};
|
|
100
|
+
var STATUS = {
|
|
101
|
+
ACTIVE: "active",
|
|
102
|
+
INACTIVE: "inactive",
|
|
103
|
+
PENDING: "pending",
|
|
104
|
+
APPROVED: "approved",
|
|
105
|
+
REJECTED: "rejected",
|
|
106
|
+
DELETED: "deleted",
|
|
107
|
+
ARCHIVED: "archived",
|
|
108
|
+
DRAFT: "draft",
|
|
109
|
+
PUBLISHED: "published",
|
|
110
|
+
SUSPENDED: "suspended"
|
|
111
|
+
};
|
|
112
|
+
var USER_STATUS = {
|
|
113
|
+
ACTIVE: "active",
|
|
114
|
+
INACTIVE: "inactive",
|
|
115
|
+
PENDING: "pending",
|
|
116
|
+
SUSPENDED: "suspended",
|
|
117
|
+
BANNED: "banned"
|
|
118
|
+
};
|
|
119
|
+
var ROLES = {
|
|
120
|
+
ADMIN: "admin",
|
|
121
|
+
USER: "user",
|
|
122
|
+
MODERATOR: "moderator",
|
|
123
|
+
GUEST: "guest",
|
|
124
|
+
SUPER_ADMIN: "super_admin"
|
|
125
|
+
};
|
|
126
|
+
var PAGINATION = {
|
|
127
|
+
DEFAULT_PAGE: 1,
|
|
128
|
+
DEFAULT_LIMIT: 10,
|
|
129
|
+
MAX_LIMIT: 100
|
|
130
|
+
};
|
|
131
|
+
var TOKEN_TYPES = {
|
|
132
|
+
ACCESS: "access",
|
|
133
|
+
REFRESH: "refresh",
|
|
134
|
+
RESET_PASSWORD: "reset_password",
|
|
135
|
+
EMAIL_VERIFICATION: "email_verification"
|
|
136
|
+
};
|
|
137
|
+
var parseDate = (date) => {
|
|
138
|
+
if (date instanceof Date) return date;
|
|
139
|
+
if (typeof date === "string") return dateFns.parseISO(date);
|
|
140
|
+
return new Date(date);
|
|
141
|
+
};
|
|
142
|
+
var isValidDate = (date) => {
|
|
143
|
+
const parsed = parseDate(date);
|
|
144
|
+
return dateFns.isValid(parsed);
|
|
145
|
+
};
|
|
146
|
+
var DATE_FORMATS = {
|
|
147
|
+
// Date only
|
|
148
|
+
DATE_SHORT: "MM/dd/yyyy",
|
|
149
|
+
// 01/15/2026
|
|
150
|
+
DATE_MEDIUM: "MMM d, yyyy",
|
|
151
|
+
// Jan 15, 2026
|
|
152
|
+
DATE_LONG: "MMMM d, yyyy",
|
|
153
|
+
// January 15, 2026
|
|
154
|
+
DATE_FULL: "EEEE, MMMM d, yyyy",
|
|
155
|
+
// Friday, January 15, 2026
|
|
156
|
+
DATE_ISO: "yyyy-MM-dd",
|
|
157
|
+
// 2026-01-15
|
|
158
|
+
// Time only
|
|
159
|
+
TIME_SHORT: "h:mm a",
|
|
160
|
+
// 3:30 PM
|
|
161
|
+
TIME_MEDIUM: "h:mm:ss a",
|
|
162
|
+
// 3:30:45 PM
|
|
163
|
+
TIME_24H: "HH:mm",
|
|
164
|
+
// 15:30
|
|
165
|
+
TIME_24H_FULL: "HH:mm:ss",
|
|
166
|
+
// 15:30:45
|
|
167
|
+
// Date and time
|
|
168
|
+
DATETIME_SHORT: "MM/dd/yyyy h:mm a",
|
|
169
|
+
// 01/15/2026 3:30 PM
|
|
170
|
+
DATETIME_MEDIUM: "MMM d, yyyy h:mm a",
|
|
171
|
+
// Jan 15, 2026 3:30 PM
|
|
172
|
+
DATETIME_LONG: "MMMM d, yyyy h:mm a",
|
|
173
|
+
// January 15, 2026 3:30 PM
|
|
174
|
+
DATETIME_FULL: "EEEE, MMMM d, yyyy h:mm a",
|
|
175
|
+
// Friday, January 15, 2026 3:30 PM
|
|
176
|
+
DATETIME_ISO: "yyyy-MM-dd'T'HH:mm:ss",
|
|
177
|
+
// 2026-01-15T15:30:45
|
|
178
|
+
// Special formats
|
|
179
|
+
MONTH_YEAR: "MMMM yyyy",
|
|
180
|
+
// January 2026
|
|
181
|
+
MONTH_DAY: "MMM d",
|
|
182
|
+
// Jan 15
|
|
183
|
+
DAY_MONTH: "d MMM",
|
|
184
|
+
// 15 Jan
|
|
185
|
+
WEEKDAY: "EEEE",
|
|
186
|
+
// Friday
|
|
187
|
+
WEEKDAY_SHORT: "EEE"
|
|
188
|
+
// Fri
|
|
189
|
+
};
|
|
190
|
+
var formatDate = (date, formatStr = DATE_FORMATS.DATE_MEDIUM) => {
|
|
191
|
+
return dateFns.format(parseDate(date), formatStr);
|
|
192
|
+
};
|
|
193
|
+
var formatDateTime = (date, formatStr = DATE_FORMATS.DATETIME_MEDIUM) => {
|
|
194
|
+
return dateFns.format(parseDate(date), formatStr);
|
|
195
|
+
};
|
|
196
|
+
var formatDateInTimezone = (date, timezone, formatStr = DATE_FORMATS.DATETIME_MEDIUM) => {
|
|
197
|
+
return dateFnsTz.formatInTimeZone(parseDate(date), timezone, formatStr);
|
|
198
|
+
};
|
|
199
|
+
var formatRelativeTime = (date, baseDate) => {
|
|
200
|
+
const parsed = parseDate(date);
|
|
201
|
+
if (baseDate) {
|
|
202
|
+
return dateFns.formatDistance(parsed, parseDate(baseDate), { addSuffix: true });
|
|
203
|
+
}
|
|
204
|
+
return dateFns.formatDistanceToNow(parsed, { addSuffix: true });
|
|
205
|
+
};
|
|
206
|
+
var formatSmartDate = (date) => {
|
|
207
|
+
const parsed = parseDate(date);
|
|
208
|
+
if (dateFns.isToday(parsed)) {
|
|
209
|
+
return `Today at ${dateFns.format(parsed, DATE_FORMATS.TIME_SHORT)}`;
|
|
210
|
+
}
|
|
211
|
+
if (dateFns.isYesterday(parsed)) {
|
|
212
|
+
return `Yesterday at ${dateFns.format(parsed, DATE_FORMATS.TIME_SHORT)}`;
|
|
213
|
+
}
|
|
214
|
+
if (dateFns.isTomorrow(parsed)) {
|
|
215
|
+
return `Tomorrow at ${dateFns.format(parsed, DATE_FORMATS.TIME_SHORT)}`;
|
|
216
|
+
}
|
|
217
|
+
if (dateFns.isThisWeek(parsed)) {
|
|
218
|
+
return dateFns.format(parsed, "EEEE 'at' h:mm a");
|
|
219
|
+
}
|
|
220
|
+
if (dateFns.isThisYear(parsed)) {
|
|
221
|
+
return dateFns.format(parsed, "MMM d 'at' h:mm a");
|
|
222
|
+
}
|
|
223
|
+
return dateFns.format(parsed, DATE_FORMATS.DATETIME_MEDIUM);
|
|
224
|
+
};
|
|
225
|
+
var formatDateRange = (start, end) => {
|
|
226
|
+
const duration = dateFns.intervalToDuration({
|
|
227
|
+
start: parseDate(start),
|
|
228
|
+
end: parseDate(end)
|
|
229
|
+
});
|
|
230
|
+
return dateFns.formatDuration(duration, {
|
|
231
|
+
format: ["years", "months", "days", "hours", "minutes"]
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
var toTimezone = (date, timezone) => {
|
|
235
|
+
return dateFnsTz.toZonedTime(parseDate(date), timezone);
|
|
236
|
+
};
|
|
237
|
+
var fromTimezone = (date, timezone) => {
|
|
238
|
+
return dateFnsTz.fromZonedTime(parseDate(date), timezone);
|
|
239
|
+
};
|
|
240
|
+
var nowInTimezone = (timezone) => {
|
|
241
|
+
return dateFnsTz.toZonedTime(/* @__PURE__ */ new Date(), timezone);
|
|
242
|
+
};
|
|
243
|
+
var getTimezoneDifference = (timezone1, timezone2) => {
|
|
244
|
+
const now = /* @__PURE__ */ new Date();
|
|
245
|
+
const time1 = dateFnsTz.toZonedTime(now, timezone1);
|
|
246
|
+
const time2 = dateFnsTz.toZonedTime(now, timezone2);
|
|
247
|
+
const diffMinutes = dateFns.differenceInMinutes(time1, time2);
|
|
248
|
+
const hours = Math.floor(Math.abs(diffMinutes) / 60);
|
|
249
|
+
const minutes = Math.abs(diffMinutes) % 60;
|
|
250
|
+
const sign = diffMinutes >= 0 ? "+" : "-";
|
|
251
|
+
if (minutes === 0) {
|
|
252
|
+
return `${sign}${hours}h`;
|
|
253
|
+
}
|
|
254
|
+
return `${sign}${hours}h ${minutes}m`;
|
|
255
|
+
};
|
|
256
|
+
var addTime = (date, amount, unit) => {
|
|
257
|
+
const parsed = parseDate(date);
|
|
258
|
+
switch (unit) {
|
|
259
|
+
case "minutes":
|
|
260
|
+
return dateFns.addMinutes(parsed, amount);
|
|
261
|
+
case "hours":
|
|
262
|
+
return dateFns.addHours(parsed, amount);
|
|
263
|
+
case "days":
|
|
264
|
+
return dateFns.addDays(parsed, amount);
|
|
265
|
+
case "weeks":
|
|
266
|
+
return dateFns.addWeeks(parsed, amount);
|
|
267
|
+
case "months":
|
|
268
|
+
return dateFns.addMonths(parsed, amount);
|
|
269
|
+
case "years":
|
|
270
|
+
return dateFns.addYears(parsed, amount);
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
var subtractTime = (date, amount, unit) => {
|
|
274
|
+
const parsed = parseDate(date);
|
|
275
|
+
switch (unit) {
|
|
276
|
+
case "minutes":
|
|
277
|
+
return dateFns.subMinutes(parsed, amount);
|
|
278
|
+
case "hours":
|
|
279
|
+
return dateFns.subHours(parsed, amount);
|
|
280
|
+
case "days":
|
|
281
|
+
return dateFns.subDays(parsed, amount);
|
|
282
|
+
case "weeks":
|
|
283
|
+
return dateFns.subWeeks(parsed, amount);
|
|
284
|
+
case "months":
|
|
285
|
+
return dateFns.subMonths(parsed, amount);
|
|
286
|
+
case "years":
|
|
287
|
+
return dateFns.subYears(parsed, amount);
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
var getDateDifference = (date1, date2, unit) => {
|
|
291
|
+
const d1 = parseDate(date1);
|
|
292
|
+
const d2 = parseDate(date2);
|
|
293
|
+
switch (unit) {
|
|
294
|
+
case "seconds":
|
|
295
|
+
return dateFns.differenceInSeconds(d1, d2);
|
|
296
|
+
case "minutes":
|
|
297
|
+
return dateFns.differenceInMinutes(d1, d2);
|
|
298
|
+
case "hours":
|
|
299
|
+
return dateFns.differenceInHours(d1, d2);
|
|
300
|
+
case "days":
|
|
301
|
+
return dateFns.differenceInDays(d1, d2);
|
|
302
|
+
case "weeks":
|
|
303
|
+
return dateFns.differenceInWeeks(d1, d2);
|
|
304
|
+
case "months":
|
|
305
|
+
return dateFns.differenceInMonths(d1, d2);
|
|
306
|
+
case "years":
|
|
307
|
+
return dateFns.differenceInYears(d1, d2);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
var getDaysInRange = (start, end) => {
|
|
311
|
+
return dateFns.eachDayOfInterval({
|
|
312
|
+
start: parseDate(start),
|
|
313
|
+
end: parseDate(end)
|
|
314
|
+
});
|
|
315
|
+
};
|
|
316
|
+
var getWeeksInRange = (start, end) => {
|
|
317
|
+
return dateFns.eachWeekOfInterval({
|
|
318
|
+
start: parseDate(start),
|
|
319
|
+
end: parseDate(end)
|
|
320
|
+
});
|
|
321
|
+
};
|
|
322
|
+
var getMonthsInRange = (start, end) => {
|
|
323
|
+
return dateFns.eachMonthOfInterval({
|
|
324
|
+
start: parseDate(start),
|
|
325
|
+
end: parseDate(end)
|
|
326
|
+
});
|
|
327
|
+
};
|
|
328
|
+
var getDayBoundaries = (date) => {
|
|
329
|
+
const parsed = parseDate(date);
|
|
330
|
+
return {
|
|
331
|
+
start: dateFns.startOfDay(parsed),
|
|
332
|
+
end: dateFns.endOfDay(parsed)
|
|
333
|
+
};
|
|
334
|
+
};
|
|
335
|
+
var getWeekBoundaries = (date, weekStartsOn = 0) => {
|
|
336
|
+
const parsed = parseDate(date);
|
|
337
|
+
return {
|
|
338
|
+
start: dateFns.startOfWeek(parsed, { weekStartsOn }),
|
|
339
|
+
end: dateFns.endOfWeek(parsed, { weekStartsOn })
|
|
340
|
+
};
|
|
341
|
+
};
|
|
342
|
+
var getMonthBoundaries = (date) => {
|
|
343
|
+
const parsed = parseDate(date);
|
|
344
|
+
return {
|
|
345
|
+
start: dateFns.startOfMonth(parsed),
|
|
346
|
+
end: dateFns.endOfMonth(parsed)
|
|
347
|
+
};
|
|
348
|
+
};
|
|
349
|
+
var getYearBoundaries = (date) => {
|
|
350
|
+
const parsed = parseDate(date);
|
|
351
|
+
return {
|
|
352
|
+
start: dateFns.startOfYear(parsed),
|
|
353
|
+
end: dateFns.endOfYear(parsed)
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
var isDateBetween = (date, start, end) => {
|
|
357
|
+
const d = parseDate(date);
|
|
358
|
+
const s = parseDate(start);
|
|
359
|
+
const e = parseDate(end);
|
|
360
|
+
return (dateFns.isAfter(d, s) || dateFns.isEqual(d, s)) && (dateFns.isBefore(d, e) || dateFns.isEqual(d, e));
|
|
361
|
+
};
|
|
362
|
+
var doDateRangesOverlap = (range1Start, range1End, range2Start, range2End) => {
|
|
363
|
+
const r1s = parseDate(range1Start);
|
|
364
|
+
const r1e = parseDate(range1End);
|
|
365
|
+
const r2s = parseDate(range2Start);
|
|
366
|
+
const r2e = parseDate(range2End);
|
|
367
|
+
return dateFns.isBefore(r1s, r2e) && dateFns.isAfter(r1e, r2s);
|
|
368
|
+
};
|
|
369
|
+
var getAge = (birthDate) => {
|
|
370
|
+
return dateFns.differenceInYears(/* @__PURE__ */ new Date(), parseDate(birthDate));
|
|
371
|
+
};
|
|
372
|
+
var isWeekend = (date) => {
|
|
373
|
+
const day = dateFns.getDay(parseDate(date));
|
|
374
|
+
return day === 0 || day === 6;
|
|
375
|
+
};
|
|
376
|
+
var isWeekday = (date) => {
|
|
377
|
+
return !isWeekend(date);
|
|
378
|
+
};
|
|
379
|
+
var daysUntil = (date) => {
|
|
380
|
+
return dateFns.differenceInDays(parseDate(date), /* @__PURE__ */ new Date());
|
|
381
|
+
};
|
|
382
|
+
var daysSince = (date) => {
|
|
383
|
+
return dateFns.differenceInDays(/* @__PURE__ */ new Date(), parseDate(date));
|
|
384
|
+
};
|
|
385
|
+
var toDateInputValue = (date) => {
|
|
386
|
+
return dateFns.format(parseDate(date), DATE_FORMATS.DATE_ISO);
|
|
387
|
+
};
|
|
388
|
+
var toDateTimeInputValue = (date) => {
|
|
389
|
+
return dateFns.format(parseDate(date), "yyyy-MM-dd'T'HH:mm");
|
|
390
|
+
};
|
|
391
|
+
var toTimeInputValue = (date) => {
|
|
392
|
+
return dateFns.format(parseDate(date), DATE_FORMATS.TIME_24H);
|
|
393
|
+
};
|
|
394
|
+
var setTime = (date, hours, minutes, seconds = 0) => {
|
|
395
|
+
let result = parseDate(date);
|
|
396
|
+
result = dateFns.setHours(result, hours);
|
|
397
|
+
result = dateFns.setMinutes(result, minutes);
|
|
398
|
+
result = dateFns.setSeconds(result, seconds);
|
|
399
|
+
return result;
|
|
400
|
+
};
|
|
401
|
+
var combineDateAndTime = (dateInput, timeInput) => {
|
|
402
|
+
const date = parseDate(dateInput);
|
|
403
|
+
const time = parseDate(timeInput);
|
|
404
|
+
return setTime(date, dateFns.getHours(time), dateFns.getMinutes(time), dateFns.getSeconds(time));
|
|
405
|
+
};
|
|
406
|
+
var date_time_default = {
|
|
407
|
+
// Core
|
|
408
|
+
parseDate,
|
|
409
|
+
isValidDate,
|
|
410
|
+
DATE_FORMATS,
|
|
411
|
+
// Format
|
|
412
|
+
formatDate,
|
|
413
|
+
formatDateTime,
|
|
414
|
+
formatDateInTimezone,
|
|
415
|
+
formatRelativeTime,
|
|
416
|
+
formatSmartDate,
|
|
417
|
+
formatDateRange,
|
|
418
|
+
// Timezone
|
|
419
|
+
toTimezone,
|
|
420
|
+
fromTimezone,
|
|
421
|
+
nowInTimezone,
|
|
422
|
+
getTimezoneDifference,
|
|
423
|
+
// Arithmetic
|
|
424
|
+
addTime,
|
|
425
|
+
subtractTime,
|
|
426
|
+
getDateDifference,
|
|
427
|
+
// Ranges
|
|
428
|
+
getDaysInRange,
|
|
429
|
+
getWeeksInRange,
|
|
430
|
+
getMonthsInRange,
|
|
431
|
+
// Boundaries
|
|
432
|
+
getDayBoundaries,
|
|
433
|
+
getWeekBoundaries,
|
|
434
|
+
getMonthBoundaries,
|
|
435
|
+
getYearBoundaries,
|
|
436
|
+
// Comparison
|
|
437
|
+
isDateBetween,
|
|
438
|
+
doDateRangesOverlap,
|
|
439
|
+
// Utilities
|
|
440
|
+
getAge,
|
|
441
|
+
isWeekend,
|
|
442
|
+
isWeekday,
|
|
443
|
+
daysUntil,
|
|
444
|
+
daysSince,
|
|
445
|
+
toDateInputValue,
|
|
446
|
+
toDateTimeInputValue,
|
|
447
|
+
toTimeInputValue,
|
|
448
|
+
setTime,
|
|
449
|
+
combineDateAndTime
|
|
450
|
+
};
|
|
451
|
+
|
|
452
|
+
// src/shared/validation/index.ts
|
|
453
|
+
var VALIDATION_PATTERNS = {
|
|
454
|
+
/** Email pattern (RFC 5322 simplified) */
|
|
455
|
+
EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
|
|
456
|
+
/** Strong password: min 8 chars, uppercase, lowercase, number, special char */
|
|
457
|
+
PASSWORD_STRONG: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,
|
|
458
|
+
/** Medium password: min 8 chars, uppercase, lowercase, number */
|
|
459
|
+
PASSWORD_MEDIUM: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d@$!%*?&]{8,}$/,
|
|
460
|
+
/** Basic password: min 8 chars */
|
|
461
|
+
PASSWORD_BASIC: /^.{8,}$/,
|
|
462
|
+
/** Phone number (international) */
|
|
463
|
+
PHONE_INTERNATIONAL: /^\+?[\d\s\-().]{10,}$/,
|
|
464
|
+
/** Phone number (US) */
|
|
465
|
+
PHONE_US: /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/,
|
|
466
|
+
/** Phone number (India) */
|
|
467
|
+
PHONE_INDIA: /^[6-9]\d{9}$/,
|
|
468
|
+
/** URL pattern */
|
|
469
|
+
URL: /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/,
|
|
470
|
+
/** URL with required protocol */
|
|
471
|
+
URL_STRICT: /^https?:\/\/([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/,
|
|
472
|
+
/** Alphanumeric only */
|
|
473
|
+
ALPHANUMERIC: /^[a-zA-Z0-9]+$/,
|
|
474
|
+
/** Letters only */
|
|
475
|
+
LETTERS_ONLY: /^[a-zA-Z]+$/,
|
|
476
|
+
/** Numbers only */
|
|
477
|
+
NUMBERS_ONLY: /^\d+$/,
|
|
478
|
+
/** Slug pattern (kebab-case) */
|
|
479
|
+
SLUG: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,
|
|
480
|
+
/** Username pattern (alphanumeric, underscore, hyphen) */
|
|
481
|
+
USERNAME: /^[a-zA-Z0-9_-]{3,30}$/,
|
|
482
|
+
/** Credit card (basic validation) */
|
|
483
|
+
CREDIT_CARD: /^\d{13,19}$/,
|
|
484
|
+
/** CVV (3 or 4 digits) */
|
|
485
|
+
CVV: /^\d{3,4}$/,
|
|
486
|
+
/** ZIP code (US) */
|
|
487
|
+
ZIP_US: /^\d{5}(-\d{4})?$/,
|
|
488
|
+
/** Postal code (India) */
|
|
489
|
+
POSTAL_INDIA: /^\d{6}$/,
|
|
490
|
+
/** IP Address (IPv4) */
|
|
491
|
+
IPV4: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
|
|
492
|
+
/** Hex color */
|
|
493
|
+
HEX_COLOR: /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,
|
|
494
|
+
/** Date (YYYY-MM-DD) */
|
|
495
|
+
DATE_ISO: /^\d{4}-\d{2}-\d{2}$/,
|
|
496
|
+
/** Time (HH:MM or HH:MM:SS) */
|
|
497
|
+
TIME: /^([01]\d|2[0-3]):([0-5]\d)(:[0-5]\d)?$/
|
|
498
|
+
};
|
|
499
|
+
var isValidEmail = (email) => {
|
|
500
|
+
return VALIDATION_PATTERNS.EMAIL.test(email.trim());
|
|
501
|
+
};
|
|
502
|
+
var isValidPassword = (password, strength = "medium") => {
|
|
503
|
+
switch (strength) {
|
|
504
|
+
case "strong":
|
|
505
|
+
return VALIDATION_PATTERNS.PASSWORD_STRONG.test(password);
|
|
506
|
+
case "medium":
|
|
507
|
+
return VALIDATION_PATTERNS.PASSWORD_MEDIUM.test(password);
|
|
508
|
+
case "basic":
|
|
509
|
+
default:
|
|
510
|
+
return VALIDATION_PATTERNS.PASSWORD_BASIC.test(password);
|
|
511
|
+
}
|
|
512
|
+
};
|
|
513
|
+
var isValidPhone = (phone, format2 = "international") => {
|
|
514
|
+
const cleaned = phone.replace(/\s/g, "");
|
|
515
|
+
switch (format2) {
|
|
516
|
+
case "us":
|
|
517
|
+
return VALIDATION_PATTERNS.PHONE_US.test(cleaned);
|
|
518
|
+
case "india":
|
|
519
|
+
return VALIDATION_PATTERNS.PHONE_INDIA.test(cleaned);
|
|
520
|
+
case "international":
|
|
521
|
+
default:
|
|
522
|
+
return VALIDATION_PATTERNS.PHONE_INTERNATIONAL.test(cleaned);
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
var isValidUrl = (url, requireProtocol = false) => {
|
|
526
|
+
if (requireProtocol) {
|
|
527
|
+
return VALIDATION_PATTERNS.URL_STRICT.test(url);
|
|
528
|
+
}
|
|
529
|
+
return VALIDATION_PATTERNS.URL.test(url);
|
|
530
|
+
};
|
|
531
|
+
var isValidUsername = (username) => {
|
|
532
|
+
return VALIDATION_PATTERNS.USERNAME.test(username);
|
|
533
|
+
};
|
|
534
|
+
var isValidSlug = (slug) => {
|
|
535
|
+
return VALIDATION_PATTERNS.SLUG.test(slug);
|
|
536
|
+
};
|
|
537
|
+
var VALIDATION_MESSAGES = {
|
|
538
|
+
// Required fields
|
|
539
|
+
REQUIRED: "This field is required",
|
|
540
|
+
REQUIRED_FIELD: (field) => `${field} is required`,
|
|
541
|
+
// Email
|
|
542
|
+
EMAIL_INVALID: "Please enter a valid email address",
|
|
543
|
+
EMAIL_REQUIRED: "Email is required",
|
|
544
|
+
// Password
|
|
545
|
+
PASSWORD_REQUIRED: "Password is required",
|
|
546
|
+
PASSWORD_MIN_LENGTH: (length) => `Password must be at least ${length} characters`,
|
|
547
|
+
PASSWORD_WEAK: "Password is too weak",
|
|
548
|
+
PASSWORD_MEDIUM: "Password must contain uppercase, lowercase, and number",
|
|
549
|
+
PASSWORD_STRONG: "Password must contain uppercase, lowercase, number, and special character",
|
|
550
|
+
PASSWORD_MISMATCH: "Passwords do not match",
|
|
551
|
+
// Name
|
|
552
|
+
NAME_REQUIRED: "Name is required",
|
|
553
|
+
FIRST_NAME_REQUIRED: "First name is required",
|
|
554
|
+
LAST_NAME_REQUIRED: "Last name is required",
|
|
555
|
+
NAME_MIN_LENGTH: (length) => `Name must be at least ${length} characters`,
|
|
556
|
+
NAME_MAX_LENGTH: (length) => `Name must be at most ${length} characters`,
|
|
557
|
+
// Phone
|
|
558
|
+
PHONE_INVALID: "Please enter a valid phone number",
|
|
559
|
+
PHONE_REQUIRED: "Phone number is required",
|
|
560
|
+
// URL
|
|
561
|
+
URL_INVALID: "Please enter a valid URL",
|
|
562
|
+
// Username
|
|
563
|
+
USERNAME_INVALID: "Username can only contain letters, numbers, underscores, and hyphens",
|
|
564
|
+
USERNAME_MIN_LENGTH: "Username must be at least 3 characters",
|
|
565
|
+
USERNAME_MAX_LENGTH: "Username must be at most 30 characters",
|
|
566
|
+
USERNAME_TAKEN: "This username is already taken",
|
|
567
|
+
// General
|
|
568
|
+
MIN_LENGTH: (field, length) => `${field} must be at least ${length} characters`,
|
|
569
|
+
MAX_LENGTH: (field, length) => `${field} must be at most ${length} characters`,
|
|
570
|
+
MIN_VALUE: (field, value) => `${field} must be at least ${value}`,
|
|
571
|
+
MAX_VALUE: (field, value) => `${field} must be at most ${value}`,
|
|
572
|
+
INVALID_FORMAT: "Invalid format",
|
|
573
|
+
TERMS_REQUIRED: "You must accept the terms and conditions"
|
|
574
|
+
};
|
|
575
|
+
var VALIDATION_RULES = {
|
|
576
|
+
email: {
|
|
577
|
+
pattern: VALIDATION_PATTERNS.EMAIL,
|
|
578
|
+
message: VALIDATION_MESSAGES.EMAIL_INVALID
|
|
579
|
+
},
|
|
580
|
+
password: {
|
|
581
|
+
minLength: 8,
|
|
582
|
+
pattern: VALIDATION_PATTERNS.PASSWORD_MEDIUM,
|
|
583
|
+
message: VALIDATION_MESSAGES.PASSWORD_MEDIUM
|
|
584
|
+
},
|
|
585
|
+
passwordStrong: {
|
|
586
|
+
minLength: 8,
|
|
587
|
+
pattern: VALIDATION_PATTERNS.PASSWORD_STRONG,
|
|
588
|
+
message: VALIDATION_MESSAGES.PASSWORD_STRONG
|
|
589
|
+
},
|
|
590
|
+
name: {
|
|
591
|
+
minLength: 2,
|
|
592
|
+
maxLength: 50
|
|
593
|
+
},
|
|
594
|
+
username: {
|
|
595
|
+
minLength: 3,
|
|
596
|
+
maxLength: 30,
|
|
597
|
+
pattern: VALIDATION_PATTERNS.USERNAME,
|
|
598
|
+
message: VALIDATION_MESSAGES.USERNAME_INVALID
|
|
599
|
+
},
|
|
600
|
+
phone: {
|
|
601
|
+
pattern: VALIDATION_PATTERNS.PHONE_INTERNATIONAL,
|
|
602
|
+
message: VALIDATION_MESSAGES.PHONE_INVALID
|
|
603
|
+
},
|
|
604
|
+
url: {
|
|
605
|
+
pattern: VALIDATION_PATTERNS.URL,
|
|
606
|
+
message: VALIDATION_MESSAGES.URL_INVALID
|
|
607
|
+
}
|
|
608
|
+
};
|
|
609
|
+
|
|
610
|
+
Object.defineProperty(exports, "addDays", {
|
|
611
|
+
enumerable: true,
|
|
612
|
+
get: function () { return dateFns.addDays; }
|
|
613
|
+
});
|
|
614
|
+
Object.defineProperty(exports, "addHours", {
|
|
615
|
+
enumerable: true,
|
|
616
|
+
get: function () { return dateFns.addHours; }
|
|
617
|
+
});
|
|
618
|
+
Object.defineProperty(exports, "addMinutes", {
|
|
619
|
+
enumerable: true,
|
|
620
|
+
get: function () { return dateFns.addMinutes; }
|
|
621
|
+
});
|
|
622
|
+
Object.defineProperty(exports, "addMonths", {
|
|
623
|
+
enumerable: true,
|
|
624
|
+
get: function () { return dateFns.addMonths; }
|
|
625
|
+
});
|
|
626
|
+
Object.defineProperty(exports, "addWeeks", {
|
|
627
|
+
enumerable: true,
|
|
628
|
+
get: function () { return dateFns.addWeeks; }
|
|
629
|
+
});
|
|
630
|
+
Object.defineProperty(exports, "addYears", {
|
|
631
|
+
enumerable: true,
|
|
632
|
+
get: function () { return dateFns.addYears; }
|
|
633
|
+
});
|
|
634
|
+
Object.defineProperty(exports, "differenceInDays", {
|
|
635
|
+
enumerable: true,
|
|
636
|
+
get: function () { return dateFns.differenceInDays; }
|
|
637
|
+
});
|
|
638
|
+
Object.defineProperty(exports, "differenceInHours", {
|
|
639
|
+
enumerable: true,
|
|
640
|
+
get: function () { return dateFns.differenceInHours; }
|
|
641
|
+
});
|
|
642
|
+
Object.defineProperty(exports, "differenceInMinutes", {
|
|
643
|
+
enumerable: true,
|
|
644
|
+
get: function () { return dateFns.differenceInMinutes; }
|
|
645
|
+
});
|
|
646
|
+
Object.defineProperty(exports, "differenceInMonths", {
|
|
647
|
+
enumerable: true,
|
|
648
|
+
get: function () { return dateFns.differenceInMonths; }
|
|
649
|
+
});
|
|
650
|
+
Object.defineProperty(exports, "differenceInSeconds", {
|
|
651
|
+
enumerable: true,
|
|
652
|
+
get: function () { return dateFns.differenceInSeconds; }
|
|
653
|
+
});
|
|
654
|
+
Object.defineProperty(exports, "differenceInWeeks", {
|
|
655
|
+
enumerable: true,
|
|
656
|
+
get: function () { return dateFns.differenceInWeeks; }
|
|
657
|
+
});
|
|
658
|
+
Object.defineProperty(exports, "differenceInYears", {
|
|
659
|
+
enumerable: true,
|
|
660
|
+
get: function () { return dateFns.differenceInYears; }
|
|
661
|
+
});
|
|
662
|
+
Object.defineProperty(exports, "eachDayOfInterval", {
|
|
663
|
+
enumerable: true,
|
|
664
|
+
get: function () { return dateFns.eachDayOfInterval; }
|
|
665
|
+
});
|
|
666
|
+
Object.defineProperty(exports, "eachMonthOfInterval", {
|
|
667
|
+
enumerable: true,
|
|
668
|
+
get: function () { return dateFns.eachMonthOfInterval; }
|
|
669
|
+
});
|
|
670
|
+
Object.defineProperty(exports, "eachWeekOfInterval", {
|
|
671
|
+
enumerable: true,
|
|
672
|
+
get: function () { return dateFns.eachWeekOfInterval; }
|
|
673
|
+
});
|
|
674
|
+
Object.defineProperty(exports, "endOfDay", {
|
|
675
|
+
enumerable: true,
|
|
676
|
+
get: function () { return dateFns.endOfDay; }
|
|
677
|
+
});
|
|
678
|
+
Object.defineProperty(exports, "endOfMonth", {
|
|
679
|
+
enumerable: true,
|
|
680
|
+
get: function () { return dateFns.endOfMonth; }
|
|
681
|
+
});
|
|
682
|
+
Object.defineProperty(exports, "endOfWeek", {
|
|
683
|
+
enumerable: true,
|
|
684
|
+
get: function () { return dateFns.endOfWeek; }
|
|
685
|
+
});
|
|
686
|
+
Object.defineProperty(exports, "endOfYear", {
|
|
687
|
+
enumerable: true,
|
|
688
|
+
get: function () { return dateFns.endOfYear; }
|
|
689
|
+
});
|
|
690
|
+
Object.defineProperty(exports, "format", {
|
|
691
|
+
enumerable: true,
|
|
692
|
+
get: function () { return dateFns.format; }
|
|
693
|
+
});
|
|
694
|
+
Object.defineProperty(exports, "formatDistance", {
|
|
695
|
+
enumerable: true,
|
|
696
|
+
get: function () { return dateFns.formatDistance; }
|
|
697
|
+
});
|
|
698
|
+
Object.defineProperty(exports, "formatDistanceToNow", {
|
|
699
|
+
enumerable: true,
|
|
700
|
+
get: function () { return dateFns.formatDistanceToNow; }
|
|
701
|
+
});
|
|
702
|
+
Object.defineProperty(exports, "formatDuration", {
|
|
703
|
+
enumerable: true,
|
|
704
|
+
get: function () { return dateFns.formatDuration; }
|
|
705
|
+
});
|
|
706
|
+
Object.defineProperty(exports, "formatRelative", {
|
|
707
|
+
enumerable: true,
|
|
708
|
+
get: function () { return dateFns.formatRelative; }
|
|
709
|
+
});
|
|
710
|
+
Object.defineProperty(exports, "getDate", {
|
|
711
|
+
enumerable: true,
|
|
712
|
+
get: function () { return dateFns.getDate; }
|
|
713
|
+
});
|
|
714
|
+
Object.defineProperty(exports, "getDay", {
|
|
715
|
+
enumerable: true,
|
|
716
|
+
get: function () { return dateFns.getDay; }
|
|
717
|
+
});
|
|
718
|
+
Object.defineProperty(exports, "getHours", {
|
|
719
|
+
enumerable: true,
|
|
720
|
+
get: function () { return dateFns.getHours; }
|
|
721
|
+
});
|
|
722
|
+
Object.defineProperty(exports, "getMinutes", {
|
|
723
|
+
enumerable: true,
|
|
724
|
+
get: function () { return dateFns.getMinutes; }
|
|
725
|
+
});
|
|
726
|
+
Object.defineProperty(exports, "getMonth", {
|
|
727
|
+
enumerable: true,
|
|
728
|
+
get: function () { return dateFns.getMonth; }
|
|
729
|
+
});
|
|
730
|
+
Object.defineProperty(exports, "getSeconds", {
|
|
731
|
+
enumerable: true,
|
|
732
|
+
get: function () { return dateFns.getSeconds; }
|
|
733
|
+
});
|
|
734
|
+
Object.defineProperty(exports, "getYear", {
|
|
735
|
+
enumerable: true,
|
|
736
|
+
get: function () { return dateFns.getYear; }
|
|
737
|
+
});
|
|
738
|
+
Object.defineProperty(exports, "intervalToDuration", {
|
|
739
|
+
enumerable: true,
|
|
740
|
+
get: function () { return dateFns.intervalToDuration; }
|
|
741
|
+
});
|
|
742
|
+
Object.defineProperty(exports, "isAfter", {
|
|
743
|
+
enumerable: true,
|
|
744
|
+
get: function () { return dateFns.isAfter; }
|
|
745
|
+
});
|
|
746
|
+
Object.defineProperty(exports, "isBefore", {
|
|
747
|
+
enumerable: true,
|
|
748
|
+
get: function () { return dateFns.isBefore; }
|
|
749
|
+
});
|
|
750
|
+
Object.defineProperty(exports, "isEqual", {
|
|
751
|
+
enumerable: true,
|
|
752
|
+
get: function () { return dateFns.isEqual; }
|
|
753
|
+
});
|
|
754
|
+
Object.defineProperty(exports, "isFuture", {
|
|
755
|
+
enumerable: true,
|
|
756
|
+
get: function () { return dateFns.isFuture; }
|
|
757
|
+
});
|
|
758
|
+
Object.defineProperty(exports, "isPast", {
|
|
759
|
+
enumerable: true,
|
|
760
|
+
get: function () { return dateFns.isPast; }
|
|
761
|
+
});
|
|
762
|
+
Object.defineProperty(exports, "isSameDay", {
|
|
763
|
+
enumerable: true,
|
|
764
|
+
get: function () { return dateFns.isSameDay; }
|
|
765
|
+
});
|
|
766
|
+
Object.defineProperty(exports, "isSameMonth", {
|
|
767
|
+
enumerable: true,
|
|
768
|
+
get: function () { return dateFns.isSameMonth; }
|
|
769
|
+
});
|
|
770
|
+
Object.defineProperty(exports, "isSameWeek", {
|
|
771
|
+
enumerable: true,
|
|
772
|
+
get: function () { return dateFns.isSameWeek; }
|
|
773
|
+
});
|
|
774
|
+
Object.defineProperty(exports, "isSameYear", {
|
|
775
|
+
enumerable: true,
|
|
776
|
+
get: function () { return dateFns.isSameYear; }
|
|
777
|
+
});
|
|
778
|
+
Object.defineProperty(exports, "isThisMonth", {
|
|
779
|
+
enumerable: true,
|
|
780
|
+
get: function () { return dateFns.isThisMonth; }
|
|
781
|
+
});
|
|
782
|
+
Object.defineProperty(exports, "isThisWeek", {
|
|
783
|
+
enumerable: true,
|
|
784
|
+
get: function () { return dateFns.isThisWeek; }
|
|
785
|
+
});
|
|
786
|
+
Object.defineProperty(exports, "isThisYear", {
|
|
787
|
+
enumerable: true,
|
|
788
|
+
get: function () { return dateFns.isThisYear; }
|
|
789
|
+
});
|
|
790
|
+
Object.defineProperty(exports, "isToday", {
|
|
791
|
+
enumerable: true,
|
|
792
|
+
get: function () { return dateFns.isToday; }
|
|
793
|
+
});
|
|
794
|
+
Object.defineProperty(exports, "isTomorrow", {
|
|
795
|
+
enumerable: true,
|
|
796
|
+
get: function () { return dateFns.isTomorrow; }
|
|
797
|
+
});
|
|
798
|
+
Object.defineProperty(exports, "isValid", {
|
|
799
|
+
enumerable: true,
|
|
800
|
+
get: function () { return dateFns.isValid; }
|
|
801
|
+
});
|
|
802
|
+
Object.defineProperty(exports, "isYesterday", {
|
|
803
|
+
enumerable: true,
|
|
804
|
+
get: function () { return dateFns.isYesterday; }
|
|
805
|
+
});
|
|
806
|
+
Object.defineProperty(exports, "parseISO", {
|
|
807
|
+
enumerable: true,
|
|
808
|
+
get: function () { return dateFns.parseISO; }
|
|
809
|
+
});
|
|
810
|
+
Object.defineProperty(exports, "setHours", {
|
|
811
|
+
enumerable: true,
|
|
812
|
+
get: function () { return dateFns.setHours; }
|
|
813
|
+
});
|
|
814
|
+
Object.defineProperty(exports, "setMinutes", {
|
|
815
|
+
enumerable: true,
|
|
816
|
+
get: function () { return dateFns.setMinutes; }
|
|
817
|
+
});
|
|
818
|
+
Object.defineProperty(exports, "setSeconds", {
|
|
819
|
+
enumerable: true,
|
|
820
|
+
get: function () { return dateFns.setSeconds; }
|
|
821
|
+
});
|
|
822
|
+
Object.defineProperty(exports, "startOfDay", {
|
|
823
|
+
enumerable: true,
|
|
824
|
+
get: function () { return dateFns.startOfDay; }
|
|
825
|
+
});
|
|
826
|
+
Object.defineProperty(exports, "startOfMonth", {
|
|
827
|
+
enumerable: true,
|
|
828
|
+
get: function () { return dateFns.startOfMonth; }
|
|
829
|
+
});
|
|
830
|
+
Object.defineProperty(exports, "startOfWeek", {
|
|
831
|
+
enumerable: true,
|
|
832
|
+
get: function () { return dateFns.startOfWeek; }
|
|
833
|
+
});
|
|
834
|
+
Object.defineProperty(exports, "startOfYear", {
|
|
835
|
+
enumerable: true,
|
|
836
|
+
get: function () { return dateFns.startOfYear; }
|
|
837
|
+
});
|
|
838
|
+
Object.defineProperty(exports, "subDays", {
|
|
839
|
+
enumerable: true,
|
|
840
|
+
get: function () { return dateFns.subDays; }
|
|
841
|
+
});
|
|
842
|
+
Object.defineProperty(exports, "subHours", {
|
|
843
|
+
enumerable: true,
|
|
844
|
+
get: function () { return dateFns.subHours; }
|
|
845
|
+
});
|
|
846
|
+
Object.defineProperty(exports, "subMinutes", {
|
|
847
|
+
enumerable: true,
|
|
848
|
+
get: function () { return dateFns.subMinutes; }
|
|
849
|
+
});
|
|
850
|
+
Object.defineProperty(exports, "subMonths", {
|
|
851
|
+
enumerable: true,
|
|
852
|
+
get: function () { return dateFns.subMonths; }
|
|
853
|
+
});
|
|
854
|
+
Object.defineProperty(exports, "subWeeks", {
|
|
855
|
+
enumerable: true,
|
|
856
|
+
get: function () { return dateFns.subWeeks; }
|
|
857
|
+
});
|
|
858
|
+
Object.defineProperty(exports, "subYears", {
|
|
859
|
+
enumerable: true,
|
|
860
|
+
get: function () { return dateFns.subYears; }
|
|
861
|
+
});
|
|
862
|
+
Object.defineProperty(exports, "formatInTimeZone", {
|
|
863
|
+
enumerable: true,
|
|
864
|
+
get: function () { return dateFnsTz.formatInTimeZone; }
|
|
865
|
+
});
|
|
866
|
+
Object.defineProperty(exports, "fromZonedTime", {
|
|
867
|
+
enumerable: true,
|
|
868
|
+
get: function () { return dateFnsTz.fromZonedTime; }
|
|
869
|
+
});
|
|
870
|
+
Object.defineProperty(exports, "toZonedTime", {
|
|
871
|
+
enumerable: true,
|
|
872
|
+
get: function () { return dateFnsTz.toZonedTime; }
|
|
873
|
+
});
|
|
874
|
+
exports.DATE_FORMATS = DATE_FORMATS;
|
|
875
|
+
exports.HTTP_STATUS = HTTP_STATUS;
|
|
876
|
+
exports.HTTP_STATUS_MESSAGES = HTTP_STATUS_MESSAGES;
|
|
877
|
+
exports.PAGINATION = PAGINATION;
|
|
878
|
+
exports.ROLES = ROLES;
|
|
879
|
+
exports.STATUS = STATUS;
|
|
880
|
+
exports.TOKEN_TYPES = TOKEN_TYPES;
|
|
881
|
+
exports.USER_STATUS = USER_STATUS;
|
|
882
|
+
exports.VALIDATION_MESSAGES = VALIDATION_MESSAGES;
|
|
883
|
+
exports.VALIDATION_PATTERNS = VALIDATION_PATTERNS;
|
|
884
|
+
exports.VALIDATION_RULES = VALIDATION_RULES;
|
|
885
|
+
exports.addTime = addTime;
|
|
886
|
+
exports.combineDateAndTime = combineDateAndTime;
|
|
887
|
+
exports.dateTime = date_time_default;
|
|
888
|
+
exports.daysSince = daysSince;
|
|
889
|
+
exports.daysUntil = daysUntil;
|
|
890
|
+
exports.doDateRangesOverlap = doDateRangesOverlap;
|
|
891
|
+
exports.formatDate = formatDate;
|
|
892
|
+
exports.formatDateInTimezone = formatDateInTimezone;
|
|
893
|
+
exports.formatDateRange = formatDateRange;
|
|
894
|
+
exports.formatDateTime = formatDateTime;
|
|
895
|
+
exports.formatRelativeTime = formatRelativeTime;
|
|
896
|
+
exports.formatSmartDate = formatSmartDate;
|
|
897
|
+
exports.fromTimezone = fromTimezone;
|
|
898
|
+
exports.getAge = getAge;
|
|
899
|
+
exports.getDateDifference = getDateDifference;
|
|
900
|
+
exports.getDayBoundaries = getDayBoundaries;
|
|
901
|
+
exports.getDaysInRange = getDaysInRange;
|
|
902
|
+
exports.getEnv = getEnv;
|
|
903
|
+
exports.getEnvOptional = getEnvOptional;
|
|
904
|
+
exports.getMonthBoundaries = getMonthBoundaries;
|
|
905
|
+
exports.getMonthsInRange = getMonthsInRange;
|
|
906
|
+
exports.getTimezoneDifference = getTimezoneDifference;
|
|
907
|
+
exports.getWeekBoundaries = getWeekBoundaries;
|
|
908
|
+
exports.getWeeksInRange = getWeeksInRange;
|
|
909
|
+
exports.getYearBoundaries = getYearBoundaries;
|
|
910
|
+
exports.isDateBetween = isDateBetween;
|
|
911
|
+
exports.isDev = isDev;
|
|
912
|
+
exports.isProd = isProd;
|
|
913
|
+
exports.isTest = isTest;
|
|
914
|
+
exports.isValidDate = isValidDate;
|
|
915
|
+
exports.isValidEmail = isValidEmail;
|
|
916
|
+
exports.isValidPassword = isValidPassword;
|
|
917
|
+
exports.isValidPhone = isValidPhone;
|
|
918
|
+
exports.isValidSlug = isValidSlug;
|
|
919
|
+
exports.isValidUrl = isValidUrl;
|
|
920
|
+
exports.isValidUsername = isValidUsername;
|
|
921
|
+
exports.isWeekday = isWeekday;
|
|
922
|
+
exports.isWeekend = isWeekend;
|
|
923
|
+
exports.nowInTimezone = nowInTimezone;
|
|
924
|
+
exports.parseDate = parseDate;
|
|
925
|
+
exports.setTime = setTime;
|
|
926
|
+
exports.subtractTime = subtractTime;
|
|
927
|
+
exports.toDateInputValue = toDateInputValue;
|
|
928
|
+
exports.toDateTimeInputValue = toDateTimeInputValue;
|
|
929
|
+
exports.toTimeInputValue = toTimeInputValue;
|
|
930
|
+
exports.toTimezone = toTimezone;
|
|
931
|
+
exports.validateEnv = validateEnv;
|
|
932
|
+
//# sourceMappingURL=index.js.map
|
|
933
|
+
//# sourceMappingURL=index.js.map
|