utilitify-core 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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +338 -0
  3. package/dist/async.cjs +25 -0
  4. package/dist/async.cjs.map +1 -0
  5. package/dist/async.d.cts +104 -0
  6. package/dist/async.d.ts +104 -0
  7. package/dist/async.js +4 -0
  8. package/dist/async.js.map +1 -0
  9. package/dist/chunk-2ICNRTSN.cjs +346 -0
  10. package/dist/chunk-2ICNRTSN.cjs.map +1 -0
  11. package/dist/chunk-3DPF72DY.js +170 -0
  12. package/dist/chunk-3DPF72DY.js.map +1 -0
  13. package/dist/chunk-4CV4JOE5.js +24 -0
  14. package/dist/chunk-4CV4JOE5.js.map +1 -0
  15. package/dist/chunk-4SLYNSLH.cjs +783 -0
  16. package/dist/chunk-4SLYNSLH.cjs.map +1 -0
  17. package/dist/chunk-5WP7DWCG.js +1285 -0
  18. package/dist/chunk-5WP7DWCG.js.map +1 -0
  19. package/dist/chunk-BMQ6YPKV.js +876 -0
  20. package/dist/chunk-BMQ6YPKV.js.map +1 -0
  21. package/dist/chunk-BZCMWUKS.cjs +479 -0
  22. package/dist/chunk-BZCMWUKS.cjs.map +1 -0
  23. package/dist/chunk-C5R744DY.cjs +173 -0
  24. package/dist/chunk-C5R744DY.cjs.map +1 -0
  25. package/dist/chunk-C75J62CV.cjs +913 -0
  26. package/dist/chunk-C75J62CV.cjs.map +1 -0
  27. package/dist/chunk-CZLDE2OZ.cjs +28 -0
  28. package/dist/chunk-CZLDE2OZ.cjs.map +1 -0
  29. package/dist/chunk-DSMB6AF6.cjs +193 -0
  30. package/dist/chunk-DSMB6AF6.cjs.map +1 -0
  31. package/dist/chunk-ETWGPOPY.js +426 -0
  32. package/dist/chunk-ETWGPOPY.js.map +1 -0
  33. package/dist/chunk-FQBPVN63.cjs +403 -0
  34. package/dist/chunk-FQBPVN63.cjs.map +1 -0
  35. package/dist/chunk-G4GYQGTW.cjs +178 -0
  36. package/dist/chunk-G4GYQGTW.cjs.map +1 -0
  37. package/dist/chunk-GFDMZDMI.js +486 -0
  38. package/dist/chunk-GFDMZDMI.js.map +1 -0
  39. package/dist/chunk-HOTOYIPB.js +171 -0
  40. package/dist/chunk-HOTOYIPB.js.map +1 -0
  41. package/dist/chunk-HYADH4ZX.js +176 -0
  42. package/dist/chunk-HYADH4ZX.js.map +1 -0
  43. package/dist/chunk-JBN7C5WE.js +255 -0
  44. package/dist/chunk-JBN7C5WE.js.map +1 -0
  45. package/dist/chunk-JNCTPFTD.cjs +25 -0
  46. package/dist/chunk-JNCTPFTD.cjs.map +1 -0
  47. package/dist/chunk-N3BH3BV7.js +21 -0
  48. package/dist/chunk-N3BH3BV7.js.map +1 -0
  49. package/dist/chunk-NFPGAVRQ.js +749 -0
  50. package/dist/chunk-NFPGAVRQ.js.map +1 -0
  51. package/dist/chunk-OFFRGRBN.cjs +1332 -0
  52. package/dist/chunk-OFFRGRBN.cjs.map +1 -0
  53. package/dist/chunk-OZLKYIZL.cjs +490 -0
  54. package/dist/chunk-OZLKYIZL.cjs.map +1 -0
  55. package/dist/chunk-P3NUK46X.js +145 -0
  56. package/dist/chunk-P3NUK46X.js.map +1 -0
  57. package/dist/chunk-P7P2B7ZI.cjs +429 -0
  58. package/dist/chunk-P7P2B7ZI.cjs.map +1 -0
  59. package/dist/chunk-PB6SKSJN.cjs +150 -0
  60. package/dist/chunk-PB6SKSJN.cjs.map +1 -0
  61. package/dist/chunk-R3IXCJR7.js +378 -0
  62. package/dist/chunk-R3IXCJR7.js.map +1 -0
  63. package/dist/chunk-SD6P3WEJ.js +324 -0
  64. package/dist/chunk-SD6P3WEJ.js.map +1 -0
  65. package/dist/chunk-YSCHP26P.js +451 -0
  66. package/dist/chunk-YSCHP26P.js.map +1 -0
  67. package/dist/chunk-ZLMPRPCY.cjs +274 -0
  68. package/dist/chunk-ZLMPRPCY.cjs.map +1 -0
  69. package/dist/common-CBDYNJeh.d.cts +48 -0
  70. package/dist/common-CBDYNJeh.d.ts +48 -0
  71. package/dist/constants.cjs +42 -0
  72. package/dist/constants.cjs.map +1 -0
  73. package/dist/constants.d.cts +60 -0
  74. package/dist/constants.d.ts +60 -0
  75. package/dist/constants.js +5 -0
  76. package/dist/constants.js.map +1 -0
  77. package/dist/country/index.cjs +154 -0
  78. package/dist/country/index.cjs.map +1 -0
  79. package/dist/country/index.d.cts +1 -0
  80. package/dist/country/index.d.ts +1 -0
  81. package/dist/country/index.js +5 -0
  82. package/dist/country/index.js.map +1 -0
  83. package/dist/date/index.cjs +117 -0
  84. package/dist/date/index.cjs.map +1 -0
  85. package/dist/date/index.d.cts +283 -0
  86. package/dist/date/index.d.ts +283 -0
  87. package/dist/date/index.js +4 -0
  88. package/dist/date/index.js.map +1 -0
  89. package/dist/environment/index.cjs +73 -0
  90. package/dist/environment/index.cjs.map +1 -0
  91. package/dist/environment/index.d.cts +127 -0
  92. package/dist/environment/index.d.ts +127 -0
  93. package/dist/environment/index.js +4 -0
  94. package/dist/environment/index.js.map +1 -0
  95. package/dist/form/index.cjs +81 -0
  96. package/dist/form/index.cjs.map +1 -0
  97. package/dist/form/index.d.cts +227 -0
  98. package/dist/form/index.d.ts +227 -0
  99. package/dist/form/index.js +4 -0
  100. package/dist/form/index.js.map +1 -0
  101. package/dist/i18n.cjs +37 -0
  102. package/dist/i18n.cjs.map +1 -0
  103. package/dist/i18n.d.cts +102 -0
  104. package/dist/i18n.d.ts +102 -0
  105. package/dist/i18n.js +4 -0
  106. package/dist/i18n.js.map +1 -0
  107. package/dist/index-BXBmBHyL.d.ts +718 -0
  108. package/dist/index-BYsUCP3u.d.cts +718 -0
  109. package/dist/index-Cl26FrAZ.d.cts +362 -0
  110. package/dist/index-Cl26FrAZ.d.ts +362 -0
  111. package/dist/index.cjs +1265 -0
  112. package/dist/index.cjs.map +1 -0
  113. package/dist/index.d.cts +205 -0
  114. package/dist/index.d.ts +205 -0
  115. package/dist/index.js +277 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/schema.cjs +13 -0
  118. package/dist/schema.cjs.map +1 -0
  119. package/dist/schema.d.cts +84 -0
  120. package/dist/schema.d.ts +84 -0
  121. package/dist/schema.js +4 -0
  122. package/dist/schema.js.map +1 -0
  123. package/dist/security/index.cjs +94 -0
  124. package/dist/security/index.cjs.map +1 -0
  125. package/dist/security/index.d.cts +216 -0
  126. package/dist/security/index.d.ts +216 -0
  127. package/dist/security/index.js +5 -0
  128. package/dist/security/index.js.map +1 -0
  129. package/dist/string/index.cjs +153 -0
  130. package/dist/string/index.cjs.map +1 -0
  131. package/dist/string/index.d.cts +471 -0
  132. package/dist/string/index.d.ts +471 -0
  133. package/dist/string/index.js +4 -0
  134. package/dist/string/index.js.map +1 -0
  135. package/dist/transform/index.cjs +105 -0
  136. package/dist/transform/index.cjs.map +1 -0
  137. package/dist/transform/index.d.cts +271 -0
  138. package/dist/transform/index.d.ts +271 -0
  139. package/dist/transform/index.js +4 -0
  140. package/dist/transform/index.js.map +1 -0
  141. package/dist/validators/index.cjs +195 -0
  142. package/dist/validators/index.cjs.map +1 -0
  143. package/dist/validators/index.d.cts +2 -0
  144. package/dist/validators/index.d.ts +2 -0
  145. package/dist/validators/index.js +6 -0
  146. package/dist/validators/index.js.map +1 -0
  147. package/package.json +229 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/date/age.ts","../src/date/format.ts","../src/date/validate.ts","../src/date/diff.ts"],"names":[],"mappings":"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","file":"chunk-BZCMWUKS.cjs","sourcesContent":["/**\r\n * Age calculation result\r\n */\r\nexport interface AgeResult {\r\n years: number;\r\n months: number;\r\n days: number;\r\n totalDays: number;\r\n isAdult: boolean;\r\n isSenior: boolean;\r\n}\r\n\r\n/**\r\n * Calculate age from date of birth\r\n *\r\n * @param dob - Date of birth\r\n * @param referenceDate - Reference date (default: now)\r\n * @returns Age details\r\n *\r\n * @example\r\n * ```typescript\r\n * calculateAge('1990-05-15'); // { years: 35, months: 7, days: 26, ... }\r\n * calculateAge(new Date('2000-01-01')); // { years: 26, ... }\r\n * ```\r\n */\r\nexport function calculateAge(dob: Date | string, referenceDate?: Date): AgeResult {\r\n const birthDate = typeof dob === 'string' ? new Date(dob) : dob;\r\n const refDate = referenceDate || new Date();\r\n\r\n if (isNaN(birthDate.getTime())) {\r\n return { years: 0, months: 0, days: 0, totalDays: 0, isAdult: false, isSenior: false };\r\n }\r\n\r\n let years = refDate.getFullYear() - birthDate.getFullYear();\r\n let months = refDate.getMonth() - birthDate.getMonth();\r\n let days = refDate.getDate() - birthDate.getDate();\r\n\r\n // Adjust for negative days\r\n if (days < 0) {\r\n months--;\r\n const prevMonth = new Date(refDate.getFullYear(), refDate.getMonth(), 0);\r\n days += prevMonth.getDate();\r\n }\r\n\r\n // Adjust for negative months\r\n if (months < 0) {\r\n years--;\r\n months += 12;\r\n }\r\n\r\n // Calculate total days\r\n const diffTime = Math.abs(refDate.getTime() - birthDate.getTime());\r\n const totalDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));\r\n\r\n return {\r\n years,\r\n months,\r\n days,\r\n totalDays,\r\n isAdult: years >= 18,\r\n isSenior: years >= 65,\r\n };\r\n}\r\n\r\n/**\r\n * Get age in years\r\n *\r\n * @param dob - Date of birth\r\n * @returns Age in years\r\n */\r\nexport function getAgeInYears(dob: Date | string): number {\r\n return calculateAge(dob).years;\r\n}\r\n\r\n/**\r\n * Check if person is adult\r\n *\r\n * @param dob - Date of birth\r\n * @param minAge - Minimum adult age (default: 18)\r\n * @returns true if adult\r\n */\r\nexport function isAdult(dob: Date | string, minAge: number = 18): boolean {\r\n return calculateAge(dob).years >= minAge;\r\n}\r\n\r\n/**\r\n * Check if person is minor\r\n *\r\n * @param dob - Date of birth\r\n * @param adultAge - Adult age threshold (default: 18)\r\n * @returns true if minor\r\n */\r\nexport function isMinor(dob: Date | string, adultAge: number = 18): boolean {\r\n return calculateAge(dob).years < adultAge;\r\n}\r\n\r\n/**\r\n * Get age bracket/category\r\n *\r\n * @param dob - Date of birth\r\n * @returns Age bracket name\r\n */\r\nexport function getAgeBracket(dob: Date | string): string {\r\n const { years } = calculateAge(dob);\r\n\r\n if (years < 13) return 'child';\r\n if (years < 18) return 'teenager';\r\n if (years < 25) return 'young-adult';\r\n if (years < 40) return 'adult';\r\n if (years < 55) return 'middle-aged';\r\n if (years < 65) return 'senior';\r\n return 'elderly';\r\n}\r\n\r\n/**\r\n * Get date of birth required for minimum age\r\n *\r\n * @param minAge - Minimum age required\r\n * @returns Date of birth that would make someone exactly that age today\r\n */\r\nexport function getMinAgeDOB(minAge: number): Date {\r\n const today = new Date();\r\n return new Date(today.getFullYear() - minAge, today.getMonth(), today.getDate());\r\n}\r\n\r\n/**\r\n * Validate age is within range\r\n *\r\n * @param dob - Date of birth\r\n * @param minAge - Minimum age\r\n * @param maxAge - Maximum age\r\n * @returns true if age is within range\r\n */\r\nexport function isAgeInRange(dob: Date | string, minAge: number, maxAge: number): boolean {\r\n const { years } = calculateAge(dob);\r\n return years >= minAge && years <= maxAge;\r\n}\r\n","/**\r\n * Format options for dates\r\n */\r\nexport interface DateFormatOptions {\r\n /** Date style */\r\n dateStyle?: 'full' | 'long' | 'medium' | 'short';\r\n /** Time style */\r\n timeStyle?: 'full' | 'long' | 'medium' | 'short';\r\n /** Include time */\r\n includeTime?: boolean;\r\n /** Timezone */\r\n timeZone?: string;\r\n}\r\n\r\n/**\r\n * Format date by locale\r\n *\r\n * @param date - Date to format\r\n * @param locale - Locale code (e.g., 'en-US', 'de-DE')\r\n * @param options - Format options\r\n * @returns Formatted date string\r\n *\r\n * @example\r\n * ```typescript\r\n * formatDateByLocale(new Date(), 'en-US'); // 'January 11, 2026'\r\n * formatDateByLocale(new Date(), 'de-DE'); // '11. Januar 2026'\r\n * ```\r\n */\r\nexport function formatDateByLocale(\r\n date: Date | string,\r\n locale: string = 'en-US',\r\n options: DateFormatOptions = {}\r\n): string {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n\r\n if (isNaN(d.getTime())) {\r\n return '';\r\n }\r\n\r\n const formatOptions: Intl.DateTimeFormatOptions = {};\r\n\r\n if (options.dateStyle) {\r\n formatOptions.dateStyle = options.dateStyle;\r\n } else {\r\n formatOptions.year = 'numeric';\r\n formatOptions.month = 'long';\r\n formatOptions.day = 'numeric';\r\n }\r\n\r\n if (options.includeTime || options.timeStyle) {\r\n if (options.timeStyle) {\r\n formatOptions.timeStyle = options.timeStyle;\r\n } else {\r\n formatOptions.hour = '2-digit';\r\n formatOptions.minute = '2-digit';\r\n }\r\n }\r\n\r\n if (options.timeZone) {\r\n formatOptions.timeZone = options.timeZone;\r\n }\r\n\r\n try {\r\n return new Intl.DateTimeFormat(locale, formatOptions).format(d);\r\n } catch {\r\n return d.toLocaleDateString();\r\n }\r\n}\r\n\r\n/**\r\n * Format relative time (e.g., \"2 hours ago\", \"in 3 days\")\r\n *\r\n * @param date - Date to compare\r\n * @param locale - Locale code\r\n * @param referenceDate - Reference date (default: now)\r\n * @returns Relative time string\r\n *\r\n * @example\r\n * ```typescript\r\n * formatRelativeTime(new Date(Date.now() - 3600000)); // '1 hour ago'\r\n * formatRelativeTime(new Date(Date.now() + 86400000)); // 'in 1 day'\r\n * ```\r\n */\r\nexport function formatRelativeTime(\r\n date: Date | string,\r\n locale: string = 'en-US',\r\n referenceDate?: Date\r\n): string {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n const ref = referenceDate || new Date();\r\n\r\n if (isNaN(d.getTime())) {\r\n return '';\r\n }\r\n\r\n const diffMs = d.getTime() - ref.getTime();\r\n const diffSeconds = Math.round(diffMs / 1000);\r\n const diffMinutes = Math.round(diffSeconds / 60);\r\n const diffHours = Math.round(diffMinutes / 60);\r\n const diffDays = Math.round(diffHours / 24);\r\n const diffWeeks = Math.round(diffDays / 7);\r\n const diffMonths = Math.round(diffDays / 30);\r\n const diffYears = Math.round(diffDays / 365);\r\n\r\n try {\r\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });\r\n\r\n if (Math.abs(diffSeconds) < 60) {\r\n return rtf.format(diffSeconds, 'second');\r\n }\r\n if (Math.abs(diffMinutes) < 60) {\r\n return rtf.format(diffMinutes, 'minute');\r\n }\r\n if (Math.abs(diffHours) < 24) {\r\n return rtf.format(diffHours, 'hour');\r\n }\r\n if (Math.abs(diffDays) < 7) {\r\n return rtf.format(diffDays, 'day');\r\n }\r\n if (Math.abs(diffWeeks) < 4) {\r\n return rtf.format(diffWeeks, 'week');\r\n }\r\n if (Math.abs(diffMonths) < 12) {\r\n return rtf.format(diffMonths, 'month');\r\n }\r\n return rtf.format(diffYears, 'year');\r\n } catch {\r\n // Fallback for environments without Intl.RelativeTimeFormat\r\n if (Math.abs(diffMinutes) < 60) {\r\n return diffMinutes < 0\r\n ? `${Math.abs(diffMinutes)} minutes ago`\r\n : `in ${diffMinutes} minutes`;\r\n }\r\n if (Math.abs(diffHours) < 24) {\r\n return diffHours < 0\r\n ? `${Math.abs(diffHours)} hours ago`\r\n : `in ${diffHours} hours`;\r\n }\r\n return diffDays < 0\r\n ? `${Math.abs(diffDays)} days ago`\r\n : `in ${diffDays} days`;\r\n }\r\n}\r\n\r\n/**\r\n * Format date as ISO string (date only)\r\n *\r\n * @param date - Date to format\r\n * @returns ISO date string (YYYY-MM-DD)\r\n */\r\nexport function toISODate(date: Date | string): string {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n if (isNaN(d.getTime())) return '';\r\n return d.toISOString().split('T')[0];\r\n}\r\n\r\n/**\r\n * Format date to common patterns\r\n */\r\nexport function formatDate(date: Date | string, pattern: string): string {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n if (isNaN(d.getTime())) return '';\r\n\r\n const pad = (n: number) => n.toString().padStart(2, '0');\r\n\r\n const tokens: Record<string, string> = {\r\n 'YYYY': d.getFullYear().toString(),\r\n 'YY': d.getFullYear().toString().slice(-2),\r\n 'MM': pad(d.getMonth() + 1),\r\n 'M': (d.getMonth() + 1).toString(),\r\n 'DD': pad(d.getDate()),\r\n 'D': d.getDate().toString(),\r\n 'HH': pad(d.getHours()),\r\n 'H': d.getHours().toString(),\r\n 'hh': pad(d.getHours() % 12 || 12),\r\n 'h': (d.getHours() % 12 || 12).toString(),\r\n 'mm': pad(d.getMinutes()),\r\n 'm': d.getMinutes().toString(),\r\n 'ss': pad(d.getSeconds()),\r\n 's': d.getSeconds().toString(),\r\n 'A': d.getHours() >= 12 ? 'PM' : 'AM',\r\n 'a': d.getHours() >= 12 ? 'pm' : 'am',\r\n };\r\n\r\n let result = pattern;\r\n for (const [token, value] of Object.entries(tokens)) {\r\n result = result.replace(new RegExp(token, 'g'), value);\r\n }\r\n\r\n return result;\r\n}\r\n","/**\r\n * Check if a value is a valid date\r\n *\r\n * @param date - Value to check\r\n * @returns true if valid date\r\n */\r\nexport function isValidDate(date: unknown): boolean {\r\n if (date === null || date === undefined) return false;\r\n\r\n if (date instanceof Date) {\r\n return !isNaN(date.getTime());\r\n }\r\n\r\n if (typeof date === 'string') {\r\n const parsed = new Date(date);\r\n return !isNaN(parsed.getTime());\r\n }\r\n\r\n if (typeof date === 'number') {\r\n const parsed = new Date(date);\r\n return !isNaN(parsed.getTime());\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Parse date from various formats\r\n *\r\n * @param value - Value to parse\r\n * @returns Date or null\r\n * \r\n * @example\r\n * ```typescript\r\n * parseDate('2024-01-15'); // ISO format\r\n * parseDate('15/01/2024'); // DD/MM/YYYY\r\n * parseDate('01-15-2024'); // MM-DD-YYYY\r\n * parseDate('2024/01/15'); // YYYY/MM/DD\r\n * parseDate('2024-01-15T10:30:00Z'); // ISO 8601\r\n * ```\r\n */\r\nexport function parseDate(value: unknown): Date | null {\r\n if (value === null || value === undefined) return null;\r\n\r\n if (value instanceof Date) {\r\n return isNaN(value.getTime()) ? null : value;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n const date = new Date(value);\r\n return isNaN(date.getTime()) ? null : date;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n const trimmed = value.trim();\r\n if (!trimmed) return null;\r\n\r\n // Try standard Date parsing first (handles ISO 8601)\r\n let date = new Date(trimmed);\r\n if (!isNaN(date.getTime())) return date;\r\n\r\n // Common date format patterns\r\n const formats: Array<{\r\n regex: RegExp;\r\n parser: (match: RegExpMatchArray) => Date;\r\n }> = [\r\n // DD/MM/YYYY or DD-MM-YYYY or DD.MM.YYYY\r\n {\r\n regex: /^(\\d{1,2})[\\/\\-\\.](\\d{1,2})[\\/\\-\\.](\\d{4})$/,\r\n parser: (m) => new Date(parseInt(m[3]), parseInt(m[2]) - 1, parseInt(m[1])),\r\n },\r\n // YYYY/MM/DD or YYYY-MM-DD or YYYY.MM.DD (without time)\r\n {\r\n regex: /^(\\d{4})[\\/\\-\\.](\\d{1,2})[\\/\\-\\.](\\d{1,2})$/,\r\n parser: (m) => new Date(parseInt(m[1]), parseInt(m[2]) - 1, parseInt(m[3])),\r\n },\r\n // MM/DD/YYYY (US format)\r\n {\r\n regex: /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/,\r\n parser: (m) => {\r\n // If first number > 12, likely DD/MM/YYYY\r\n const first = parseInt(m[1]);\r\n const second = parseInt(m[2]);\r\n if (first > 12 && second <= 12) {\r\n return new Date(parseInt(m[3]), second - 1, first);\r\n }\r\n return new Date(parseInt(m[3]), first - 1, second);\r\n },\r\n },\r\n // DD MMM YYYY (e.g., 15 Jan 2024)\r\n {\r\n regex: /^(\\d{1,2})\\s+(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*\\s+(\\d{4})$/i,\r\n parser: (m) => {\r\n const months: Record<string, number> = {\r\n jan: 0, feb: 1, mar: 2, apr: 3, may: 4, jun: 5,\r\n jul: 6, aug: 7, sep: 8, oct: 9, nov: 10, dec: 11,\r\n };\r\n return new Date(parseInt(m[3]), months[m[2].toLowerCase()], parseInt(m[1]));\r\n },\r\n },\r\n // MMM DD, YYYY (e.g., Jan 15, 2024)\r\n {\r\n regex: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*\\s+(\\d{1,2}),?\\s+(\\d{4})$/i,\r\n parser: (m) => {\r\n const months: Record<string, number> = {\r\n jan: 0, feb: 1, mar: 2, apr: 3, may: 4, jun: 5,\r\n jul: 6, aug: 7, sep: 8, oct: 9, nov: 10, dec: 11,\r\n };\r\n return new Date(parseInt(m[3]), months[m[1].toLowerCase()], parseInt(m[2]));\r\n },\r\n },\r\n ];\r\n\r\n for (const { regex, parser } of formats) {\r\n const match = trimmed.match(regex);\r\n if (match) {\r\n date = parser(match);\r\n if (!isNaN(date.getTime())) return date;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Check if date is in the past\r\n *\r\n * @param date - Date to check\r\n * @returns true if in the past\r\n */\r\nexport function isInPast(date: Date | string): boolean {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n if (isNaN(d.getTime())) return false;\r\n return d.getTime() < Date.now();\r\n}\r\n\r\n/**\r\n * Check if date is in the future\r\n *\r\n * @param date - Date to check\r\n * @returns true if in the future\r\n */\r\nexport function isInFuture(date: Date | string): boolean {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n if (isNaN(d.getTime())) return false;\r\n return d.getTime() > Date.now();\r\n}\r\n\r\n/**\r\n * Check if date is today\r\n *\r\n * @param date - Date to check\r\n * @returns true if today\r\n */\r\nexport function isToday(date: Date | string): boolean {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n if (isNaN(d.getTime())) return false;\r\n\r\n const today = new Date();\r\n return (\r\n d.getDate() === today.getDate() &&\r\n d.getMonth() === today.getMonth() &&\r\n d.getFullYear() === today.getFullYear()\r\n );\r\n}\r\n\r\n/**\r\n * Check if date is a weekend\r\n *\r\n * @param date - Date to check\r\n * @returns true if Saturday or Sunday\r\n */\r\nexport function isWeekend(date: Date | string): boolean {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n if (isNaN(d.getTime())) return false;\r\n const day = d.getDay();\r\n return day === 0 || day === 6;\r\n}\r\n\r\n/**\r\n * Check if date is a weekday\r\n *\r\n * @param date - Date to check\r\n * @returns true if Monday-Friday\r\n */\r\nexport function isWeekday(date: Date | string): boolean {\r\n return !isWeekend(date);\r\n}\r\n\r\n/**\r\n * Check if year is a leap year\r\n *\r\n * @param year - Year to check\r\n * @returns true if leap year\r\n */\r\nexport function isLeapYear(year: number): boolean {\r\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n}\r\n\r\n/**\r\n * Get number of days in a month\r\n *\r\n * @param year - Year\r\n * @param month - Month (1-12)\r\n * @returns Number of days\r\n */\r\nexport function getDaysInMonth(year: number, month: number): number {\r\n return new Date(year, month, 0).getDate();\r\n}\r\n\r\n/**\r\n * Check if date is between two dates\r\n *\r\n * @param date - Date to check\r\n * @param start - Start date\r\n * @param end - End date\r\n * @param inclusive - Include start and end dates\r\n * @returns true if date is between\r\n */\r\nexport function isBetween(\r\n date: Date | string,\r\n start: Date | string,\r\n end: Date | string,\r\n inclusive: boolean = true\r\n): boolean {\r\n const d = typeof date === 'string' ? new Date(date) : date;\r\n const s = typeof start === 'string' ? new Date(start) : start;\r\n const e = typeof end === 'string' ? new Date(end) : end;\r\n\r\n if (isNaN(d.getTime()) || isNaN(s.getTime()) || isNaN(e.getTime())) {\r\n return false;\r\n }\r\n\r\n if (inclusive) {\r\n return d >= s && d <= e;\r\n }\r\n return d > s && d < e;\r\n}\r\n","/**\r\n * Time difference result\r\n */\r\nexport interface TimeDiff {\r\n years: number;\r\n months: number;\r\n weeks: number;\r\n days: number;\r\n hours: number;\r\n minutes: number;\r\n seconds: number;\r\n milliseconds: number;\r\n totalDays: number;\r\n totalHours: number;\r\n totalMinutes: number;\r\n totalSeconds: number;\r\n totalMilliseconds: number;\r\n isPast: boolean;\r\n}\r\n\r\n/**\r\n * Calculate difference between two dates\r\n *\r\n * @param date1 - First date\r\n * @param date2 - Second date (default: now)\r\n * @returns Time difference\r\n */\r\nexport function getTimeDiff(date1: Date | string, date2?: Date | string): TimeDiff {\r\n const d1 = typeof date1 === 'string' ? new Date(date1) : date1;\r\n const d2 = date2 ? (typeof date2 === 'string' ? new Date(date2) : date2) : new Date();\r\n\r\n const diffMs = d2.getTime() - d1.getTime();\r\n const isPast = diffMs > 0;\r\n const absDiff = Math.abs(diffMs);\r\n\r\n const totalSeconds = Math.floor(absDiff / 1000);\r\n const totalMinutes = Math.floor(totalSeconds / 60);\r\n const totalHours = Math.floor(totalMinutes / 60);\r\n const totalDays = Math.floor(totalHours / 24);\r\n\r\n // Calculate breakdown\r\n const seconds = totalSeconds % 60;\r\n const minutes = totalMinutes % 60;\r\n const hours = totalHours % 24;\r\n const days = totalDays % 7;\r\n const weeks = Math.floor(totalDays / 7) % 4;\r\n const months = Math.floor(totalDays / 30) % 12;\r\n const years = Math.floor(totalDays / 365);\r\n\r\n return {\r\n years,\r\n months,\r\n weeks,\r\n days,\r\n hours,\r\n minutes,\r\n seconds,\r\n milliseconds: absDiff % 1000,\r\n totalDays,\r\n totalHours,\r\n totalMinutes,\r\n totalSeconds,\r\n totalMilliseconds: absDiff,\r\n isPast,\r\n };\r\n}\r\n\r\n/**\r\n * Get difference in specific unit\r\n *\r\n * @param date1 - First date\r\n * @param date2 - Second date\r\n * @param unit - Time unit\r\n * @returns Difference in specified unit\r\n */\r\nexport function diffIn(\r\n date1: Date | string,\r\n date2: Date | string,\r\n unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'\r\n): number {\r\n const diff = getTimeDiff(date1, date2);\r\n const sign = diff.isPast ? 1 : -1;\r\n\r\n switch (unit) {\r\n case 'years':\r\n return sign * diff.years;\r\n case 'months':\r\n return sign * (diff.years * 12 + diff.months);\r\n case 'weeks':\r\n return sign * Math.floor(diff.totalDays / 7);\r\n case 'days':\r\n return sign * diff.totalDays;\r\n case 'hours':\r\n return sign * diff.totalHours;\r\n case 'minutes':\r\n return sign * diff.totalMinutes;\r\n case 'seconds':\r\n return sign * diff.totalSeconds;\r\n default:\r\n return 0;\r\n }\r\n}\r\n\r\n/**\r\n * Add time to date\r\n *\r\n * @param date - Base date\r\n * @param amount - Amount to add\r\n * @param unit - Time unit\r\n * @returns New date\r\n */\r\nexport function addTime(\r\n date: Date | string,\r\n amount: number,\r\n unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'\r\n): Date {\r\n const d = typeof date === 'string' ? new Date(date) : new Date(date.getTime());\r\n\r\n switch (unit) {\r\n case 'years':\r\n d.setFullYear(d.getFullYear() + amount);\r\n break;\r\n case 'months':\r\n d.setMonth(d.getMonth() + amount);\r\n break;\r\n case 'weeks':\r\n d.setDate(d.getDate() + amount * 7);\r\n break;\r\n case 'days':\r\n d.setDate(d.getDate() + amount);\r\n break;\r\n case 'hours':\r\n d.setHours(d.getHours() + amount);\r\n break;\r\n case 'minutes':\r\n d.setMinutes(d.getMinutes() + amount);\r\n break;\r\n case 'seconds':\r\n d.setSeconds(d.getSeconds() + amount);\r\n break;\r\n }\r\n\r\n return d;\r\n}\r\n\r\n/**\r\n * Subtract time from date\r\n *\r\n * @param date - Base date\r\n * @param amount - Amount to subtract\r\n * @param unit - Time unit\r\n * @returns New date\r\n */\r\nexport function subtractTime(\r\n date: Date | string,\r\n amount: number,\r\n unit: 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds'\r\n): Date {\r\n return addTime(date, -amount, unit);\r\n}\r\n\r\n/**\r\n * Get start of time period\r\n *\r\n * @param date - Date\r\n * @param unit - Time unit\r\n * @returns Start of period\r\n */\r\nexport function startOf(\r\n date: Date | string,\r\n unit: 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute'\r\n): Date {\r\n const d = typeof date === 'string' ? new Date(date) : new Date(date.getTime());\r\n\r\n switch (unit) {\r\n case 'year':\r\n return new Date(d.getFullYear(), 0, 1, 0, 0, 0, 0);\r\n case 'month':\r\n return new Date(d.getFullYear(), d.getMonth(), 1, 0, 0, 0, 0);\r\n case 'week':\r\n const day = d.getDay();\r\n const diff = d.getDate() - day + (day === 0 ? -6 : 1);\r\n return new Date(d.setDate(diff));\r\n case 'day':\r\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0);\r\n case 'hour':\r\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), 0, 0, 0);\r\n case 'minute':\r\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), 0, 0);\r\n default:\r\n return d;\r\n }\r\n}\r\n\r\n/**\r\n * Get end of time period\r\n *\r\n * @param date - Date\r\n * @param unit - Time unit\r\n * @returns End of period\r\n */\r\nexport function endOf(\r\n date: Date | string,\r\n unit: 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute'\r\n): Date {\r\n const d = typeof date === 'string' ? new Date(date) : new Date(date.getTime());\r\n\r\n switch (unit) {\r\n case 'year':\r\n return new Date(d.getFullYear(), 11, 31, 23, 59, 59, 999);\r\n case 'month':\r\n return new Date(d.getFullYear(), d.getMonth() + 1, 0, 23, 59, 59, 999);\r\n case 'week':\r\n const start = startOf(d, 'week');\r\n return new Date(start.getTime() + 7 * 24 * 60 * 60 * 1000 - 1);\r\n case 'day':\r\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59, 59, 999);\r\n case 'hour':\r\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), 59, 59, 999);\r\n case 'minute':\r\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), 59, 999);\r\n default:\r\n return d;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,173 @@
1
+ 'use strict';
2
+
3
+ // src/schema.ts
4
+ var Schema = class {
5
+ safeParse(value) {
6
+ try {
7
+ const data = this.parse(value);
8
+ return { success: true, data };
9
+ } catch (error) {
10
+ if (error instanceof SchemaError) {
11
+ return { success: false, errors: error.errors };
12
+ }
13
+ return {
14
+ success: false,
15
+ errors: [{ field: "root", code: "UNKNOWN_ERROR", message: String(error) }]
16
+ };
17
+ }
18
+ }
19
+ optional() {
20
+ return new OptionalSchema(this);
21
+ }
22
+ nullable() {
23
+ return new NullableSchema(this);
24
+ }
25
+ };
26
+ var SchemaError = class extends Error {
27
+ constructor(errors) {
28
+ super(errors.map((e) => e.message).join(", "));
29
+ this.errors = errors;
30
+ }
31
+ };
32
+ var StringSchema = class extends Schema {
33
+ checks = [];
34
+ parse(value) {
35
+ if (typeof value !== "string") {
36
+ throw new SchemaError([{ field: "root", code: "INVALID_TYPE", message: "Expected string" }]);
37
+ }
38
+ const errors = [];
39
+ for (const check of this.checks) {
40
+ const error = check(value);
41
+ if (error) errors.push(error);
42
+ }
43
+ if (errors.length > 0) throw new SchemaError(errors);
44
+ return value;
45
+ }
46
+ min(length, message) {
47
+ this.checks.push((val) => val.length < length ? { field: "root", code: "TOO_SHORT", message: message || `Must be at least ${length} characters` } : null);
48
+ return this;
49
+ }
50
+ max(length, message) {
51
+ this.checks.push((val) => val.length > length ? { field: "root", code: "TOO_LONG", message: message || `Must be at most ${length} characters` } : null);
52
+ return this;
53
+ }
54
+ email(message) {
55
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
56
+ this.checks.push((val) => !emailRegex.test(val) ? { field: "root", code: "INVALID_EMAIL", message: message || "Invalid email address" } : null);
57
+ return this;
58
+ }
59
+ };
60
+ var NumberSchema = class extends Schema {
61
+ checks = [];
62
+ parse(value) {
63
+ if (typeof value !== "number" || Number.isNaN(value)) {
64
+ throw new SchemaError([{ field: "root", code: "INVALID_TYPE", message: "Expected number" }]);
65
+ }
66
+ const errors = [];
67
+ for (const check of this.checks) {
68
+ const error = check(value);
69
+ if (error) errors.push(error);
70
+ }
71
+ if (errors.length > 0) throw new SchemaError(errors);
72
+ return value;
73
+ }
74
+ min(min, message) {
75
+ this.checks.push((val) => val < min ? { field: "root", code: "TOO_SMALL", message: message || `Must be at least ${min}` } : null);
76
+ return this;
77
+ }
78
+ max(max, message) {
79
+ this.checks.push((val) => val > max ? { field: "root", code: "TOO_LARGE", message: message || `Must be at most ${max}` } : null);
80
+ return this;
81
+ }
82
+ int(message) {
83
+ this.checks.push((val) => !Number.isInteger(val) ? { field: "root", code: "INVALID_INTEGER", message: message || "Must be an integer" } : null);
84
+ return this;
85
+ }
86
+ };
87
+ var BooleanSchema = class extends Schema {
88
+ parse(value) {
89
+ if (typeof value !== "boolean") {
90
+ throw new SchemaError([{ field: "root", code: "INVALID_TYPE", message: "Expected boolean" }]);
91
+ }
92
+ return value;
93
+ }
94
+ };
95
+ var ObjectSchema = class extends Schema {
96
+ constructor(shape) {
97
+ super();
98
+ this.shape = shape;
99
+ }
100
+ parse(value) {
101
+ if (typeof value !== "object" || value === null) {
102
+ throw new SchemaError([{ field: "root", code: "INVALID_TYPE", message: "Expected object" }]);
103
+ }
104
+ const result = {};
105
+ const errors = [];
106
+ for (const key in this.shape) {
107
+ try {
108
+ result[key] = this.shape[key].parse(value[key]);
109
+ } catch (error) {
110
+ if (error instanceof SchemaError) {
111
+ errors.push(...error.errors.map((e) => ({ ...e, field: `${key}.${e.field}`.replace(".root", "") })));
112
+ }
113
+ }
114
+ }
115
+ if (errors.length > 0) throw new SchemaError(errors);
116
+ return result;
117
+ }
118
+ };
119
+ var ArraySchema = class extends Schema {
120
+ constructor(itemSchema) {
121
+ super();
122
+ this.itemSchema = itemSchema;
123
+ }
124
+ parse(value) {
125
+ if (!Array.isArray(value)) {
126
+ throw new SchemaError([{ field: "root", code: "INVALID_TYPE", message: "Expected array" }]);
127
+ }
128
+ const result = [];
129
+ const errors = [];
130
+ value.forEach((item, index) => {
131
+ try {
132
+ result.push(this.itemSchema.parse(item));
133
+ } catch (error) {
134
+ if (error instanceof SchemaError) {
135
+ errors.push(...error.errors.map((e) => ({ ...e, field: `[${index}].${e.field}`.replace(".root", "") })));
136
+ }
137
+ }
138
+ });
139
+ if (errors.length > 0) throw new SchemaError(errors);
140
+ return result;
141
+ }
142
+ };
143
+ var OptionalSchema = class extends Schema {
144
+ constructor(schema) {
145
+ super();
146
+ this.schema = schema;
147
+ }
148
+ parse(value) {
149
+ if (value === void 0) return void 0;
150
+ return this.schema.parse(value);
151
+ }
152
+ };
153
+ var NullableSchema = class extends Schema {
154
+ constructor(schema) {
155
+ super();
156
+ this.schema = schema;
157
+ }
158
+ parse(value) {
159
+ if (value === null) return null;
160
+ return this.schema.parse(value);
161
+ }
162
+ };
163
+ var z = {
164
+ string: () => new StringSchema(),
165
+ number: () => new NumberSchema(),
166
+ boolean: () => new BooleanSchema(),
167
+ object: (shape) => new ObjectSchema(shape),
168
+ array: (schema) => new ArraySchema(schema)
169
+ };
170
+
171
+ exports.z = z;
172
+ //# sourceMappingURL=chunk-C5R744DY.cjs.map
173
+ //# sourceMappingURL=chunk-C5R744DY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema.ts"],"names":[],"mappings":";;;AAiBA,IAAe,SAAf,MAAyB;AAAA,EAGrB,UAAU,KAAA,EAAgC;AACtC,IAAA,IAAI;AACA,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAC7B,MAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,IAAA,EAAK;AAAA,IACjC,SAAS,KAAA,EAAO;AACZ,MAAA,IAAI,iBAAiB,WAAA,EAAa;AAC9B,QAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,MAAM,MAAA,EAAO;AAAA,MAClD;AACA,MAAA,OAAO;AAAA,QACH,OAAA,EAAS,KAAA;AAAA,QACT,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AAAA,OAC7E;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,QAAA,GAAkC;AAC9B,IAAA,OAAO,IAAI,eAAe,IAAI,CAAA;AAAA,EAClC;AAAA,EAEA,QAAA,GAA6B;AACzB,IAAA,OAAO,IAAI,eAAe,IAAI,CAAA;AAAA,EAClC;AACJ,CAAA;AAEA,IAAM,WAAA,GAAN,cAA0B,KAAA,CAAM;AAAA,EAC5B,YAAmB,MAAA,EAA4B;AAC3C,IAAA,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAD5B,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAEnB;AACJ,CAAA;AAKA,IAAM,YAAA,GAAN,cAA2B,MAAA,CAAe;AAAA,EAC9B,SAA0D,EAAC;AAAA,EAEnE,MAAM,KAAA,EAAwB;AAC1B,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAC,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,iBAAA,EAAmB,CAAC,CAAA;AAAA,IAC/F;AAEA,IAAA,MAAM,SAA6B,EAAC;AACpC,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,MAAA,EAAQ;AAC7B,MAAA,MAAM,KAAA,GAAQ,MAAM,KAAK,CAAA;AACzB,MAAA,IAAI,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,IAChC;AAEA,IAAA,IAAI,OAAO,MAAA,GAAS,CAAA,EAAG,MAAM,IAAI,YAAY,MAAM,CAAA;AACnD,IAAA,OAAO,KAAA;AAAA,EACX;AAAA,EAEA,GAAA,CAAI,QAAgB,OAAA,EAAwB;AACxC,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,MAAA,GAAS,SAAS,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,aAAa,OAAA,EAAS,OAAA,IAAW,oBAAoB,MAAM,CAAA,WAAA,CAAA,KAAkB,IAAI,CAAA;AACtJ,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEA,GAAA,CAAI,QAAgB,OAAA,EAAwB;AACxC,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,MAAA,GAAS,SAAS,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,YAAY,OAAA,EAAS,OAAA,IAAW,mBAAmB,MAAM,CAAA,WAAA,CAAA,KAAkB,IAAI,CAAA;AACpJ,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEA,MAAM,OAAA,EAAwB;AAE1B,IAAA,MAAM,UAAA,GAAa,4BAAA;AACnB,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,CAAA,GAAA,KAAO,CAAC,UAAA,CAAW,KAAK,GAAG,CAAA,GAAI,EAAE,KAAA,EAAO,QAAQ,IAAA,EAAM,eAAA,EAAiB,SAAS,OAAA,IAAW,uBAAA,KAA4B,IAAI,CAAA;AAC5I,IAAA,OAAO,IAAA;AAAA,EACX;AACJ,CAAA;AAKA,IAAM,YAAA,GAAN,cAA2B,MAAA,CAAe;AAAA,EAC9B,SAA0D,EAAC;AAAA,EAEnE,MAAM,KAAA,EAAwB;AAC1B,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,EAAG;AAClD,MAAA,MAAM,IAAI,WAAA,CAAY,CAAC,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,iBAAA,EAAmB,CAAC,CAAA;AAAA,IAC/F;AAEA,IAAA,MAAM,SAA6B,EAAC;AACpC,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,MAAA,EAAQ;AAC7B,MAAA,MAAM,KAAA,GAAQ,MAAM,KAAK,CAAA;AACzB,MAAA,IAAI,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,IAChC;AAEA,IAAA,IAAI,OAAO,MAAA,GAAS,CAAA,EAAG,MAAM,IAAI,YAAY,MAAM,CAAA;AACnD,IAAA,OAAO,KAAA;AAAA,EACX;AAAA,EAEA,GAAA,CAAI,KAAa,OAAA,EAAwB;AACrC,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,GAAM,GAAA,GAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,WAAA,EAAa,SAAS,OAAA,IAAW,CAAA,iBAAA,EAAoB,GAAG,CAAA,CAAA,KAAO,IAAI,CAAA;AAC9H,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEA,GAAA,CAAI,KAAa,OAAA,EAAwB;AACrC,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,GAAM,GAAA,GAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,WAAA,EAAa,SAAS,OAAA,IAAW,CAAA,gBAAA,EAAmB,GAAG,CAAA,CAAA,KAAO,IAAI,CAAA;AAC7H,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEA,IAAI,OAAA,EAAwB;AACxB,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,CAAA,GAAA,KAAO,CAAC,MAAA,CAAO,UAAU,GAAG,CAAA,GAAI,EAAE,KAAA,EAAO,QAAQ,IAAA,EAAM,iBAAA,EAAmB,SAAS,OAAA,IAAW,oBAAA,KAAyB,IAAI,CAAA;AAC5I,IAAA,OAAO,IAAA;AAAA,EACX;AACJ,CAAA;AAKA,IAAM,aAAA,GAAN,cAA4B,MAAA,CAAgB;AAAA,EACxC,MAAM,KAAA,EAAyB;AAC3B,IAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC5B,MAAA,MAAM,IAAI,WAAA,CAAY,CAAC,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,kBAAA,EAAoB,CAAC,CAAA;AAAA,IAChG;AACA,IAAA,OAAO,KAAA;AAAA,EACX;AACJ,CAAA;AAKA,IAAM,YAAA,GAAN,cAAkE,MAAA,CAAqE;AAAA,EACnI,YAAoB,KAAA,EAAU;AAC1B,IAAA,KAAA,EAAM;AADU,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,KAAA,EAA8E;AAChF,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,EAAM;AAC7C,MAAA,MAAM,IAAI,WAAA,CAAY,CAAC,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,iBAAA,EAAmB,CAAC,CAAA;AAAA,IAC/F;AAEA,IAAA,MAAM,SAAc,EAAC;AACrB,IAAA,MAAM,SAA6B,EAAC;AAEpC,IAAA,KAAA,MAAW,GAAA,IAAO,KAAK,KAAA,EAAO;AAC1B,MAAA,IAAI;AACA,QAAA,MAAA,CAAO,GAAG,IAAI,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,KAAA,CAAO,KAAA,CAAc,GAAG,CAAC,CAAA;AAAA,MAC3D,SAAS,KAAA,EAAO;AACZ,QAAA,IAAI,iBAAiB,WAAA,EAAa;AAC9B,UAAA,MAAA,CAAO,IAAA,CAAK,GAAG,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA,CAAA,MAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,EAAI,EAAE,KAAK,CAAA,CAAA,CAAG,QAAQ,OAAA,EAAS,EAAE,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,QACrG;AAAA,MACJ;AAAA,IACJ;AAEA,IAAA,IAAI,OAAO,MAAA,GAAS,CAAA,EAAG,MAAM,IAAI,YAAY,MAAM,CAAA;AACnD,IAAA,OAAO,MAAA;AAAA,EACX;AACJ,CAAA;AAKA,IAAM,WAAA,GAAN,cAA6B,MAAA,CAAY;AAAA,EACrC,YAAoB,UAAA,EAAuB;AACvC,IAAA,KAAA,EAAM;AADU,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,KAAA,EAAqB;AACvB,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvB,MAAA,MAAM,IAAI,WAAA,CAAY,CAAC,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,gBAAA,EAAkB,CAAC,CAAA;AAAA,IAC9F;AAEA,IAAA,MAAM,SAAc,EAAC;AACrB,IAAA,MAAM,SAA6B,EAAC;AAEpC,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAA,KAAU;AAC3B,MAAA,IAAI;AACA,QAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACZ,QAAA,IAAI,iBAAiB,WAAA,EAAa;AAC9B,UAAA,MAAA,CAAO,IAAA,CAAK,GAAG,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA,CAAA,MAAM,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,IAAI,KAAK,CAAA,EAAA,EAAK,EAAE,KAAK,CAAA,CAAA,CAAG,QAAQ,OAAA,EAAS,EAAE,CAAA,EAAE,CAAE,CAAC,CAAA;AAAA,QACzG;AAAA,MACJ;AAAA,IACJ,CAAC,CAAA;AAED,IAAA,IAAI,OAAO,MAAA,GAAS,CAAA,EAAG,MAAM,IAAI,YAAY,MAAM,CAAA;AACnD,IAAA,OAAO,MAAA;AAAA,EACX;AACJ,CAAA;AAKA,IAAM,cAAA,GAAN,cAAgC,MAAA,CAAsB;AAAA,EAClD,YAAoB,MAAA,EAAmB;AACnC,IAAA,KAAA,EAAM;AADU,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,KAAA,EAA+B;AACjC,IAAA,IAAI,KAAA,KAAU,QAAW,OAAO,MAAA;AAChC,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,EAClC;AACJ,CAAA;AAKA,IAAM,cAAA,GAAN,cAAgC,MAAA,CAAiB;AAAA,EAC7C,YAAoB,MAAA,EAAmB;AACnC,IAAA,KAAA,EAAM;AADU,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,KAAA,EAA0B;AAC5B,IAAA,IAAI,KAAA,KAAU,MAAM,OAAO,IAAA;AAC3B,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,EAClC;AACJ,CAAA;AAKO,IAAM,CAAA,GAAI;AAAA,EACb,MAAA,EAAQ,MAAM,IAAI,YAAA,EAAa;AAAA,EAC/B,MAAA,EAAQ,MAAM,IAAI,YAAA,EAAa;AAAA,EAC/B,OAAA,EAAS,MAAM,IAAI,aAAA,EAAc;AAAA,EACjC,MAAA,EAAQ,CAAwC,KAAA,KAAa,IAAI,aAAa,KAAK,CAAA;AAAA,EACnF,KAAA,EAAO,CAAI,MAAA,KAAsB,IAAI,YAAY,MAAM;AAC3D","file":"chunk-C5R744DY.cjs","sourcesContent":["/**\r\n * Schema Builder API\r\n * A lightweight, Zod-inspired schema validation system\r\n *\r\n * @packageDocumentation\r\n * @since 1.1.0\r\n */\r\n\r\nimport { IValidationError } from './types/index';\r\n\r\nexport type ParseResult<T> =\r\n | { success: true; data: T }\r\n | { success: false; errors: IValidationError[] };\r\n\r\n/**\r\n * Base Schema class\r\n */\r\nabstract class Schema<T> {\r\n abstract parse(value: unknown): T;\r\n\r\n safeParse(value: unknown): ParseResult<T> {\r\n try {\r\n const data = this.parse(value);\r\n return { success: true, data };\r\n } catch (error) {\r\n if (error instanceof SchemaError) {\r\n return { success: false, errors: error.errors };\r\n }\r\n return {\r\n success: false,\r\n errors: [{ field: 'root', code: 'UNKNOWN_ERROR', message: String(error) }],\r\n };\r\n }\r\n }\r\n\r\n optional(): Schema<T | undefined> {\r\n return new OptionalSchema(this);\r\n }\r\n\r\n nullable(): Schema<T | null> {\r\n return new NullableSchema(this);\r\n }\r\n}\r\n\r\nclass SchemaError extends Error {\r\n constructor(public errors: IValidationError[]) {\r\n super(errors.map(e => e.message).join(', '));\r\n }\r\n}\r\n\r\n/**\r\n * String Schema\r\n */\r\nclass StringSchema extends Schema<string> {\r\n private checks: Array<(val: string) => IValidationError | null> = [];\r\n\r\n parse(value: unknown): string {\r\n if (typeof value !== 'string') {\r\n throw new SchemaError([{ field: 'root', code: 'INVALID_TYPE', message: 'Expected string' }]);\r\n }\r\n\r\n const errors: IValidationError[] = [];\r\n for (const check of this.checks) {\r\n const error = check(value);\r\n if (error) errors.push(error);\r\n }\r\n\r\n if (errors.length > 0) throw new SchemaError(errors);\r\n return value;\r\n }\r\n\r\n min(length: number, message?: string): this {\r\n this.checks.push(val => val.length < length ? { field: 'root', code: 'TOO_SHORT', message: message || `Must be at least ${length} characters` } : null);\r\n return this;\r\n }\r\n\r\n max(length: number, message?: string): this {\r\n this.checks.push(val => val.length > length ? { field: 'root', code: 'TOO_LONG', message: message || `Must be at most ${length} characters` } : null);\r\n return this;\r\n }\r\n\r\n email(message?: string): this {\r\n // Simple regex to avoid circular dep with custom email validator for now\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n this.checks.push(val => !emailRegex.test(val) ? { field: 'root', code: 'INVALID_EMAIL', message: message || 'Invalid email address' } : null);\r\n return this;\r\n }\r\n}\r\n\r\n/**\r\n * Number Schema\r\n */\r\nclass NumberSchema extends Schema<number> {\r\n private checks: Array<(val: number) => IValidationError | null> = [];\r\n\r\n parse(value: unknown): number {\r\n if (typeof value !== 'number' || Number.isNaN(value)) {\r\n throw new SchemaError([{ field: 'root', code: 'INVALID_TYPE', message: 'Expected number' }]);\r\n }\r\n\r\n const errors: IValidationError[] = [];\r\n for (const check of this.checks) {\r\n const error = check(value);\r\n if (error) errors.push(error);\r\n }\r\n\r\n if (errors.length > 0) throw new SchemaError(errors);\r\n return value;\r\n }\r\n\r\n min(min: number, message?: string): this {\r\n this.checks.push(val => val < min ? { field: 'root', code: 'TOO_SMALL', message: message || `Must be at least ${min}` } : null);\r\n return this;\r\n }\r\n\r\n max(max: number, message?: string): this {\r\n this.checks.push(val => val > max ? { field: 'root', code: 'TOO_LARGE', message: message || `Must be at most ${max}` } : null);\r\n return this;\r\n }\r\n\r\n int(message?: string): this {\r\n this.checks.push(val => !Number.isInteger(val) ? { field: 'root', code: 'INVALID_INTEGER', message: message || 'Must be an integer' } : null);\r\n return this;\r\n }\r\n}\r\n\r\n/**\r\n * Boolean Schema\r\n */\r\nclass BooleanSchema extends Schema<boolean> {\r\n parse(value: unknown): boolean {\r\n if (typeof value !== 'boolean') {\r\n throw new SchemaError([{ field: 'root', code: 'INVALID_TYPE', message: 'Expected boolean' }]);\r\n }\r\n return value;\r\n }\r\n}\r\n\r\n/**\r\n * Object Schema\r\n */\r\nclass ObjectSchema<T extends Record<string, Schema<any>>> extends Schema<{ [K in keyof T]: T[K] extends Schema<infer U> ? U : never }> {\r\n constructor(private shape: T) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): { [K in keyof T]: T[K] extends Schema<infer U> ? U : never } {\r\n if (typeof value !== 'object' || value === null) {\r\n throw new SchemaError([{ field: 'root', code: 'INVALID_TYPE', message: 'Expected object' }]);\r\n }\r\n\r\n const result: any = {};\r\n const errors: IValidationError[] = [];\r\n\r\n for (const key in this.shape) {\r\n try {\r\n result[key] = this.shape[key].parse((value as any)[key]);\r\n } catch (error) {\r\n if (error instanceof SchemaError) {\r\n errors.push(...error.errors.map(e => ({ ...e, field: `${key}.${e.field}`.replace('.root', '') })));\r\n }\r\n }\r\n }\r\n\r\n if (errors.length > 0) throw new SchemaError(errors);\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Array Schema\r\n */\r\nclass ArraySchema<T> extends Schema<T[]> {\r\n constructor(private itemSchema: Schema<T>) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): T[] {\r\n if (!Array.isArray(value)) {\r\n throw new SchemaError([{ field: 'root', code: 'INVALID_TYPE', message: 'Expected array' }]);\r\n }\r\n\r\n const result: T[] = [];\r\n const errors: IValidationError[] = [];\r\n\r\n value.forEach((item, index) => {\r\n try {\r\n result.push(this.itemSchema.parse(item));\r\n } catch (error) {\r\n if (error instanceof SchemaError) {\r\n errors.push(...error.errors.map(e => ({ ...e, field: `[${index}].${e.field}`.replace('.root', '') })));\r\n }\r\n }\r\n });\r\n\r\n if (errors.length > 0) throw new SchemaError(errors);\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Optional Schema\r\n */\r\nclass OptionalSchema<T> extends Schema<T | undefined> {\r\n constructor(private schema: Schema<T>) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): T | undefined {\r\n if (value === undefined) return undefined;\r\n return this.schema.parse(value);\r\n }\r\n}\r\n\r\n/**\r\n * Nullable Schema\r\n */\r\nclass NullableSchema<T> extends Schema<T | null> {\r\n constructor(private schema: Schema<T>) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): T | null {\r\n if (value === null) return null;\r\n return this.schema.parse(value);\r\n }\r\n}\r\n\r\n/**\r\n * Entry point for Schema Builder\r\n */\r\nexport const z = {\r\n string: () => new StringSchema(),\r\n number: () => new NumberSchema(),\r\n boolean: () => new BooleanSchema(),\r\n object: <T extends Record<string, Schema<any>>>(shape: T) => new ObjectSchema(shape),\r\n array: <T>(schema: Schema<T>) => new ArraySchema(schema),\r\n};\r\n"]}