@otim/utils 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.d.mts +5 -5
- package/dist/api/index.d.mts.map +1 -1
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +7 -6
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +6 -6
- package/dist/api/index.mjs.map +1 -1
- package/dist/{api-urls-DJcIKBCy.mjs → api-urls-B6RnXSRD.mjs} +1 -1
- package/dist/{api-urls-DJcIKBCy.mjs.map → api-urls-B6RnXSRD.mjs.map} +1 -1
- package/dist/{api-urls-B-GTEiT3.d.mts → api-urls-DacG9Q5P.d.mts} +1 -1
- package/dist/api-urls-DacG9Q5P.d.mts.map +1 -0
- package/dist/{api-urls-SKeIQMoZ.d.ts → api-urls-Dgxfefmy.d.ts} +1 -1
- package/dist/api-urls-Dgxfefmy.d.ts.map +1 -0
- package/dist/chains/index.d.mts +1419 -8870
- package/dist/chains/index.d.mts.map +1 -1
- package/dist/chains/index.d.ts +1419 -8870
- package/dist/chains/index.d.ts.map +1 -1
- package/dist/chains/index.js +11 -14
- package/dist/chains/index.js.map +1 -1
- package/dist/chains/index.mjs +3 -7
- package/dist/chains/index.mjs.map +1 -1
- package/dist/{chunk-kSYXY2_d.js → chunk-BE-pF4vm.js} +1 -1
- package/dist/{client-factory-C3A4RPdj.d.ts → client-factory-B12uLPUI.d.ts} +2 -2
- package/dist/client-factory-B12uLPUI.d.ts.map +1 -0
- package/dist/{client-factory-7xUSPC9I.mjs → client-factory-DY6UNuuV.mjs} +2 -2
- package/dist/{client-factory-7xUSPC9I.mjs.map → client-factory-DY6UNuuV.mjs.map} +1 -1
- package/dist/{client-factory-CTI_Nt35.js → client-factory-Drsy2vfF.js} +2 -2
- package/dist/{client-factory-CTI_Nt35.js.map → client-factory-Drsy2vfF.js.map} +1 -1
- package/dist/{client-factory-DOL0ZTWy.d.mts → client-factory-Dt4S4yZY.d.mts} +2 -2
- package/dist/client-factory-Dt4S4yZY.d.mts.map +1 -0
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/{date-gBac-Om9.mjs → date-BGw9dSBT.mjs} +1 -1
- package/dist/{date-gBac-Om9.mjs.map → date-BGw9dSBT.mjs.map} +1 -1
- package/dist/{date-CFzrYcjE.js → date-G7-DHP8t.js} +2 -2
- package/dist/{date-CFzrYcjE.js.map → date-G7-DHP8t.js.map} +1 -1
- package/dist/{defineProperty-DbMdhrDE.js → defineProperty-DXYX3Aus.js} +8 -8
- package/dist/{defineProperty-DzhmunJg.mjs → defineProperty-D_Wrem5y.mjs} +8 -8
- package/dist/helpers/index.d.mts +2 -2
- package/dist/helpers/index.d.mts.map +1 -1
- package/dist/helpers/index.d.ts +2 -2
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +69 -68
- package/dist/helpers/index.mjs +2 -2
- package/dist/instructions/index.d.mts.map +1 -1
- package/dist/instructions/index.d.ts.map +1 -1
- package/dist/instructions/index.js +2 -1
- package/dist/instructions/index.js.map +1 -1
- package/dist/payments/index.d.mts +4 -3
- package/dist/payments/index.d.mts.map +1 -1
- package/dist/payments/index.d.ts +4 -3
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +4 -3
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/index.mjs +2 -2
- package/dist/schemas/index.d.mts +1 -1
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/index.js +4 -3
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/index.mjs +2 -2
- package/dist/schemas/index.mjs.map +1 -1
- package/dist/server/index.d.mts +2 -3
- package/dist/server/index.d.mts.map +1 -1
- package/dist/server/index.d.ts +2 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +2 -2
- package/dist/server/react.d.mts +1 -1
- package/dist/server/react.d.mts.map +1 -1
- package/dist/server/react.d.ts +1 -1
- package/dist/server/react.d.ts.map +1 -1
- package/dist/server/react.js +3 -2
- package/dist/server/react.js.map +1 -1
- package/dist/server/react.mjs +1 -1
- package/dist/{index-Bv0kUz4w.d.ts → user-CbQLjMOC.d.mts} +4 -4
- package/dist/user-CbQLjMOC.d.mts.map +1 -0
- package/dist/{index-DartTKk2.d.mts → user-ZFlczCh8.d.ts} +4 -4
- package/dist/user-ZFlczCh8.d.ts.map +1 -0
- package/dist/wallet/wagmi/index.d.mts +0 -1
- package/dist/wallet/wagmi/index.d.mts.map +1 -1
- package/dist/wallet/wagmi/index.d.ts +0 -1
- package/dist/wallet/wagmi/index.d.ts.map +1 -1
- package/dist/wallet/wagmi/index.js +2 -1
- package/dist/wallet/wagmi/index.js.map +1 -1
- package/dist/{helpers-BNiSxjGq.mjs → zod-CFr-iyX9.mjs} +3 -3
- package/dist/zod-CFr-iyX9.mjs.map +1 -0
- package/dist/{helpers-DoC7Xl12.js → zod-CjftwcOJ.js} +4 -4
- package/dist/zod-CjftwcOJ.js.map +1 -0
- package/package.json +6 -6
- package/dist/api-urls-B-GTEiT3.d.mts.map +0 -1
- package/dist/api-urls-SKeIQMoZ.d.ts.map +0 -1
- package/dist/client-factory-C3A4RPdj.d.ts.map +0 -1
- package/dist/client-factory-DOL0ZTWy.d.mts.map +0 -1
- package/dist/helpers-BNiSxjGq.mjs.map +0 -1
- package/dist/helpers-DoC7Xl12.js.map +0 -1
- package/dist/index-Bv0kUz4w.d.ts.map +0 -1
- package/dist/index-DartTKk2.d.mts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-gBac-Om9.mjs","names":[],"sources":["../src/helpers/types.ts","../src/helpers/logger.ts","../src/helpers/date.ts"],"sourcesContent":["import type { z, ZodObject } from \"zod\";\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = T | null | undefined;\nexport type Optional<T> = T | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- any is ok\nexport type Any = any;\n\nexport type NumberOrString = number | string;\n\nexport type OverrideProps<T, TOverridden> = Omit<T, keyof TOverridden> &\n TOverridden;\n\nexport type NonEmptyArray<T> = [T, ...T[]];\n\nexport interface DataRecord {\n [value: string]: Nullish<DataRecord | string | number | boolean>;\n}\n\nexport interface Input<T> {\n input: T;\n}\n\nexport type ZodCustom<Values extends object> = ZodObject<{\n [P in keyof Values]: z.ZodType<Values[P]>;\n}>;\n\nexport const isError = (value: unknown): value is Error =>\n value instanceof Error;\n\nexport const isFunction = (\n value: unknown,\n): value is (...args: unknown[]) => unknown => typeof value === \"function\";\n\nexport const isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nexport const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n\nexport const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\nexport const isUndefined = (value: unknown): value is undefined =>\n typeof value === \"undefined\";\n\nexport const isBoolean = (value: unknown): value is boolean =>\n typeof value === \"boolean\";\n\nexport const isNull = (value: unknown): value is null => value === null;\n\nexport const isNotNull = (value: unknown): value is NonNullable<unknown> =>\n value !== null && value !== undefined;\n\nexport const isEmpty = (value: unknown): value is \"\" | null | undefined =>\n value === \"\" ||\n value === null ||\n value === undefined ||\n (Array.isArray(value) && value.length === 0);\n\n/**\n * Safely extracts a string from an unknown value.\n * @param value - The value to extract from\n * @param fallback - Optional fallback value if extraction fails\n * @returns The extracted string or fallback/undefined\n */\nexport const extractString = (\n value: unknown,\n fallback?: string,\n): Optional<string> => {\n return isString(value) ? value : fallback;\n};\n\n/**\n * Safely extracts a number from an unknown value.\n * Handles both number and string representations.\n * @param value - The value to extract from\n * @returns The extracted number or undefined\n */\nexport const extractNumber = (value: unknown): Optional<number> => {\n if (isNumber(value)) {\n return value;\n }\n\n if (isString(value)) {\n const parsed = Number.parseFloat(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n return undefined;\n};\n","import type { Optional } from \"./types\";\n\nimport { isError, isNotNull, isObject, isString } from \"./types\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface LoggerOptions {\n /* Optional context prefix (e.g., \"AuthService\", \"PaymentHook\") */\n context?: string;\n /* Additional data to log alongside the message */\n data?: unknown;\n}\n\nexport interface ErrorLogOptions {\n /* Module or service where the error occurred */\n context?: string;\n /* Specific operation that failed (e.g., \"fetchUser\", \"validateToken\") */\n operation?: string;\n /* Additional metadata for debugging */\n metadata?: Record<string, unknown>;\n}\n\nfunction extractErrorMessage(error: unknown): string {\n if (isError(error)) {\n return error.message;\n }\n\n if (isString(error)) {\n return error;\n }\n\n if (isObject(error) && \"message\" in error && isString(error.message)) {\n return error.message;\n }\n\n return \"Unknown error\";\n}\n\nfunction buildPrefix(...parts: Optional<string>[]): string {\n return parts\n .filter(Boolean)\n .map((part) => `[${part}]`)\n .join(\" \");\n}\n\nconst consoleMethods = {\n debug: console.log,\n info: console.log,\n warn: console.warn,\n error: console.error,\n} as const;\n\nclass Logger {\n /* Log informational messages */\n info(message: string, options?: LoggerOptions): void {\n this.log(\"info\", message, options);\n }\n\n /* Log warning messages */\n warn(message: string, options?: LoggerOptions): void {\n this.log(\"warn\", message, options);\n }\n\n /* Log error messages */\n error(message: string, options?: LoggerOptions): void {\n this.log(\"error\", message, options);\n }\n\n /**\n * Log errors with full context and stack trace.\n * For API errors, consider using `getErrorMessage` from `@otim/utils/api`.\n */\n logError(error: unknown, options: ErrorLogOptions = {}): void {\n const { context, operation, metadata } = options;\n const prefix = buildPrefix(context, operation);\n const message = extractErrorMessage(error);\n\n console.error(prefix ? `${prefix} ${message}` : message);\n\n if (metadata && Object.keys(metadata).length > 0) {\n console.error(\"Metadata:\", metadata);\n }\n\n if (isError(error) && error.stack) {\n console.error(\"Stack:\", error.stack);\n } else if (isNotNull(error)) {\n console.error(\"Error details:\", error);\n }\n }\n\n private log(level: LogLevel, message: string, options?: LoggerOptions): void {\n const prefix = buildPrefix(options?.context);\n const fullMessage = prefix ? `${prefix} ${message}` : message;\n const logFn = consoleMethods[level];\n\n logFn(fullMessage);\n\n if (options?.data) {\n this.logData(level, options.data);\n }\n }\n\n private logData(level: LogLevel, data: unknown): void {\n if (level === \"debug\" || level === \"info\") {\n console.dir(data, { depth: null });\n } else {\n consoleMethods[level](\"Data:\", data);\n }\n }\n}\n\nexport const logger = new Logger();\n","import z from \"zod\";\n\nimport { logger } from \"./logger\";\n\ntype Locale = \"en\" | \"es\";\n\ntype FormatDateFunc<T> = (date: Date) => T;\n\nexport const iso8601DateSchema = z\n .string()\n .regex(\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/,\n \"Must be a valid ISO 8601 date format (e.g., 2024-12-31T23:59:59.000Z)\",\n );\n\nexport const TimeUnit = {\n Day: \"day\",\n Month: \"month\",\n Year: \"year\",\n} as const;\n\nexport type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit];\n\nconst units = {\n [TimeUnit.Day]: {\n one: \"day\",\n other: \"days\",\n },\n [TimeUnit.Month]: {\n one: \"month\",\n other: \"months\",\n },\n [TimeUnit.Year]: {\n one: \"year\",\n other: \"years\",\n },\n} as const;\n\nconst formatDateAsUSStandard = (\n date: Date,\n opts?: Intl.DateTimeFormatOptions,\n) =>\n date.toLocaleString(\"en-US\", {\n month: \"2-digit\",\n day: \"2-digit\",\n year: \"numeric\",\n ...opts,\n });\n\nexport const formatDateAsISO = (date: Date) => date.toISOString();\n\nconst formatFullDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\nconst formatTime = (date: Date): string => {\n return date.toLocaleTimeString(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone: \"UTC\",\n timeZoneName: \"short\",\n });\n};\n\nconst formatDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions).format(\n date,\n );\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\n/**\n * Formats a date in long format (e.g., \"June 19, 2025\")\n * @param date - Date object to format\n * @returns Formatted date string\n */\nconst formatLongDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\n/**\n * Formats a date with time in long format (e.g., \"June 19, 2025 at 07:00 AM\")\n * @param date - Date object to format\n * @returns Formatted date and time string\n */\nconst formatLongDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: true,\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions)\n .format(date)\n .toLowerCase();\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\nconst formatToShortDate = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Jan 1\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nconst formatToShortDateWithYear = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Unknown\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nexport const formatToJustDate = (dateString: string) => {\n const date = new Date(dateString);\n\n if (isNaN(date.getTime())) {\n return \"1\";\n }\n\n return date.getUTCDate().toString();\n};\n\nexport const formatDateToYYYYMMDD = (date: Date) => {\n return new Intl.DateTimeFormat(\"en-CA\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(date);\n};\n\nconst isDateInvalid = (date: Date) => {\n return date.toString() === \"Invalid Date\";\n};\n\n/**\n * Validates if a date is valid (opposite of isDateInvalid)\n * Checks both the Date object validity and the timestamp\n */\nconst isValidDate = (date: Date): boolean => {\n return !isDateInvalid(date) && !isNaN(date.getTime());\n};\n\nconst isDateEpoc = (date: Date) => {\n return date.getTime() <= 0;\n};\n\nconst isDateInRange = (arg: unknown): boolean => {\n if (typeof arg !== \"string\") {\n return false;\n }\n\n const date = new Date(arg);\n const startDate = new Date(\"1800-01-01T00:00:00.000Z\");\n const endDate = new Date(\"2999-12-31T23:59:59.999Z\");\n\n return date >= startDate && date <= endDate;\n};\n\nconst isDateInPast = (input: string | number | Date): boolean => {\n let date: Date;\n if (input instanceof Date) {\n date = input;\n } else if (typeof input === \"number\") {\n const ms = input < 1e12 ? input * 1000 : input;\n date = new Date(ms);\n } else {\n date = new Date(input);\n }\n\n if (isNaN(date.getTime())) {\n return false;\n }\n\n return date.getTime() < Date.now();\n};\n\nconst isSameDate = (dateA: Date, dateB: Date) => {\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n};\n\nconst getPluralizedUnit = (\n unit: keyof typeof units,\n count: number,\n locale: Locale = \"en\",\n) => {\n const pluralRules = new Intl.PluralRules(locale, {\n type: \"cardinal\",\n });\n const pluralCategory = pluralRules.select(count);\n\n if (pluralCategory === \"one\" || pluralCategory === \"other\") {\n return `${count} ${units[unit][pluralCategory]}`;\n }\n\n return `${count} ${units[unit].other}`;\n};\n\nconst getRelativeDateDescription = (\n targetDate: Date,\n locale: Locale = \"en\",\n) => {\n const currentDate = new Date();\n\n const oneDay = 1000 * 60 * 60 * 24;\n const oneMonth = oneDay * 30;\n const oneYear = oneDay * 365;\n\n const diffInMilliseconds = targetDate.getTime() - currentDate.getTime();\n const diffInDays = Math.round(diffInMilliseconds / oneDay);\n const diffInMonths = Math.round(diffInMilliseconds / oneMonth);\n const diffInYears = Math.round(diffInMilliseconds / oneYear);\n\n if (Math.abs(diffInYears) >= 1) {\n return getPluralizedUnit(\"year\", Math.abs(diffInYears), locale);\n }\n\n if (Math.abs(diffInMonths) >= 1) {\n return getPluralizedUnit(\"month\", Math.abs(diffInMonths), locale);\n }\n\n return getPluralizedUnit(\"day\", Math.abs(diffInDays), locale);\n};\n\n/**\n * Safely formats a date with validation and fallback support\n * @param date - String or Date to format\n * @param formatter - Function that formats the Date object\n * @param fallback - Value to return if date is invalid\n * @returns Formatted string or fallback value\n */\nconst safeFormatDate = <T = string>(\n date: string | Date,\n formatter: FormatDateFunc<T>,\n fallback: T,\n): T => {\n const dateObj = typeof date === \"string\" ? new Date(date) : date;\n\n if (!isValidDate(dateObj)) {\n return fallback;\n }\n\n try {\n return formatter(dateObj);\n } catch (error) {\n logger.logError(error, {\n context: safeFormatDate.name,\n });\n return fallback;\n }\n};\n\nconst parseDateTime = (dateInput: string, timeInput?: string) => {\n const dateRegex = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM|am|pm)?$/;\n\n const dateMatch = dateRegex.exec(dateInput);\n if (!dateMatch) {\n return undefined;\n }\n\n const month = parseInt(dateMatch[1]!, 10) - 1;\n const day = parseInt(dateMatch[2]!, 10);\n const year = parseInt(dateMatch[3]!, 10);\n\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (timeInput) {\n timeInput = timeInput.replace(/\\u00A0/g, \" \").trim();\n\n const timeMatch = timeRegex.exec(timeInput);\n if (!timeMatch) {\n return undefined;\n }\n\n hours = parseInt(timeMatch[1]!, 10);\n minutes = parseInt(timeMatch[2]!, 10);\n seconds = timeMatch[3] ? parseInt(timeMatch[3], 10) : 0;\n const meridiem = timeMatch[4] ? timeMatch[4].toUpperCase() : null;\n\n if (meridiem === \"PM\" && hours < 12) {\n hours += 12;\n } else if (meridiem === \"AM\" && hours === 12) {\n hours = 0;\n }\n }\n\n const date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));\n if (isNaN(date.getTime())) {\n return undefined;\n }\n\n return date;\n};\n\nconst validateIso8601Date = (dueDate: string): void => {\n const result = iso8601DateSchema.safeParse(dueDate);\n if (!result.success) {\n const errorMessage =\n result.error.issues[0]?.message || \"Invalid ISO 8601 format\";\n throw new Error(`Invalid due date format: ${errorMessage}`);\n }\n};\n\nexport {\n formatDateAsUSStandard,\n formatToShortDate,\n formatToShortDateWithYear,\n formatFullDate,\n formatTime,\n formatDateTime,\n formatLongDate,\n formatLongDateTime,\n getPluralizedUnit,\n getRelativeDateDescription,\n isDateInvalid,\n isValidDate,\n validateIso8601Date,\n isDateEpoc,\n isDateInRange,\n isDateInPast,\n isSameDate,\n safeFormatDate,\n parseDateTime,\n};\nexport type { FormatDateFunc };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-BGw9dSBT.mjs","names":[],"sources":["../src/helpers/types.ts","../src/helpers/logger.ts","../src/helpers/date.ts"],"sourcesContent":["import type { z, ZodObject } from \"zod\";\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = T | null | undefined;\nexport type Optional<T> = T | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- any is ok\nexport type Any = any;\n\nexport type NumberOrString = number | string;\n\nexport type OverrideProps<T, TOverridden> = Omit<T, keyof TOverridden> &\n TOverridden;\n\nexport type NonEmptyArray<T> = [T, ...T[]];\n\nexport interface DataRecord {\n [value: string]: Nullish<DataRecord | string | number | boolean>;\n}\n\nexport interface Input<T> {\n input: T;\n}\n\nexport type ZodCustom<Values extends object> = ZodObject<{\n [P in keyof Values]: z.ZodType<Values[P]>;\n}>;\n\nexport const isError = (value: unknown): value is Error =>\n value instanceof Error;\n\nexport const isFunction = (\n value: unknown,\n): value is (...args: unknown[]) => unknown => typeof value === \"function\";\n\nexport const isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nexport const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n\nexport const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\nexport const isUndefined = (value: unknown): value is undefined =>\n typeof value === \"undefined\";\n\nexport const isBoolean = (value: unknown): value is boolean =>\n typeof value === \"boolean\";\n\nexport const isNull = (value: unknown): value is null => value === null;\n\nexport const isNotNull = (value: unknown): value is NonNullable<unknown> =>\n value !== null && value !== undefined;\n\nexport const isEmpty = (value: unknown): value is \"\" | null | undefined =>\n value === \"\" ||\n value === null ||\n value === undefined ||\n (Array.isArray(value) && value.length === 0);\n\n/**\n * Safely extracts a string from an unknown value.\n * @param value - The value to extract from\n * @param fallback - Optional fallback value if extraction fails\n * @returns The extracted string or fallback/undefined\n */\nexport const extractString = (\n value: unknown,\n fallback?: string,\n): Optional<string> => {\n return isString(value) ? value : fallback;\n};\n\n/**\n * Safely extracts a number from an unknown value.\n * Handles both number and string representations.\n * @param value - The value to extract from\n * @returns The extracted number or undefined\n */\nexport const extractNumber = (value: unknown): Optional<number> => {\n if (isNumber(value)) {\n return value;\n }\n\n if (isString(value)) {\n const parsed = Number.parseFloat(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n return undefined;\n};\n","import type { Optional } from \"./types\";\n\nimport { isError, isNotNull, isObject, isString } from \"./types\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface LoggerOptions {\n /* Optional context prefix (e.g., \"AuthService\", \"PaymentHook\") */\n context?: string;\n /* Additional data to log alongside the message */\n data?: unknown;\n}\n\nexport interface ErrorLogOptions {\n /* Module or service where the error occurred */\n context?: string;\n /* Specific operation that failed (e.g., \"fetchUser\", \"validateToken\") */\n operation?: string;\n /* Additional metadata for debugging */\n metadata?: Record<string, unknown>;\n}\n\nfunction extractErrorMessage(error: unknown): string {\n if (isError(error)) {\n return error.message;\n }\n\n if (isString(error)) {\n return error;\n }\n\n if (isObject(error) && \"message\" in error && isString(error.message)) {\n return error.message;\n }\n\n return \"Unknown error\";\n}\n\nfunction buildPrefix(...parts: Optional<string>[]): string {\n return parts\n .filter(Boolean)\n .map((part) => `[${part}]`)\n .join(\" \");\n}\n\nconst consoleMethods = {\n debug: console.log,\n info: console.log,\n warn: console.warn,\n error: console.error,\n} as const;\n\nclass Logger {\n /* Log informational messages */\n info(message: string, options?: LoggerOptions): void {\n this.log(\"info\", message, options);\n }\n\n /* Log warning messages */\n warn(message: string, options?: LoggerOptions): void {\n this.log(\"warn\", message, options);\n }\n\n /* Log error messages */\n error(message: string, options?: LoggerOptions): void {\n this.log(\"error\", message, options);\n }\n\n /**\n * Log errors with full context and stack trace.\n * For API errors, consider using `getErrorMessage` from `@otim/utils/api`.\n */\n logError(error: unknown, options: ErrorLogOptions = {}): void {\n const { context, operation, metadata } = options;\n const prefix = buildPrefix(context, operation);\n const message = extractErrorMessage(error);\n\n console.error(prefix ? `${prefix} ${message}` : message);\n\n if (metadata && Object.keys(metadata).length > 0) {\n console.error(\"Metadata:\", metadata);\n }\n\n if (isError(error) && error.stack) {\n console.error(\"Stack:\", error.stack);\n } else if (isNotNull(error)) {\n console.error(\"Error details:\", error);\n }\n }\n\n private log(level: LogLevel, message: string, options?: LoggerOptions): void {\n const prefix = buildPrefix(options?.context);\n const fullMessage = prefix ? `${prefix} ${message}` : message;\n const logFn = consoleMethods[level];\n\n logFn(fullMessage);\n\n if (options?.data) {\n this.logData(level, options.data);\n }\n }\n\n private logData(level: LogLevel, data: unknown): void {\n if (level === \"debug\" || level === \"info\") {\n console.dir(data, { depth: null });\n } else {\n consoleMethods[level](\"Data:\", data);\n }\n }\n}\n\nexport const logger = new Logger();\n","import z from \"zod\";\n\nimport { logger } from \"./logger\";\n\ntype Locale = \"en\" | \"es\";\n\ntype FormatDateFunc<T> = (date: Date) => T;\n\nexport const iso8601DateSchema = z\n .string()\n .regex(\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/,\n \"Must be a valid ISO 8601 date format (e.g., 2024-12-31T23:59:59.000Z)\",\n );\n\nexport const TimeUnit = {\n Day: \"day\",\n Month: \"month\",\n Year: \"year\",\n} as const;\n\nexport type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit];\n\nconst units = {\n [TimeUnit.Day]: {\n one: \"day\",\n other: \"days\",\n },\n [TimeUnit.Month]: {\n one: \"month\",\n other: \"months\",\n },\n [TimeUnit.Year]: {\n one: \"year\",\n other: \"years\",\n },\n} as const;\n\nconst formatDateAsUSStandard = (\n date: Date,\n opts?: Intl.DateTimeFormatOptions,\n) =>\n date.toLocaleString(\"en-US\", {\n month: \"2-digit\",\n day: \"2-digit\",\n year: \"numeric\",\n ...opts,\n });\n\nexport const formatDateAsISO = (date: Date) => date.toISOString();\n\nconst formatFullDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\nconst formatTime = (date: Date): string => {\n return date.toLocaleTimeString(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone: \"UTC\",\n timeZoneName: \"short\",\n });\n};\n\nconst formatDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions).format(\n date,\n );\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\n/**\n * Formats a date in long format (e.g., \"June 19, 2025\")\n * @param date - Date object to format\n * @returns Formatted date string\n */\nconst formatLongDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\n/**\n * Formats a date with time in long format (e.g., \"June 19, 2025 at 07:00 AM\")\n * @param date - Date object to format\n * @returns Formatted date and time string\n */\nconst formatLongDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: true,\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions)\n .format(date)\n .toLowerCase();\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\nconst formatToShortDate = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Jan 1\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nconst formatToShortDateWithYear = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Unknown\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nexport const formatToJustDate = (dateString: string) => {\n const date = new Date(dateString);\n\n if (isNaN(date.getTime())) {\n return \"1\";\n }\n\n return date.getUTCDate().toString();\n};\n\nexport const formatDateToYYYYMMDD = (date: Date) => {\n return new Intl.DateTimeFormat(\"en-CA\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(date);\n};\n\nconst isDateInvalid = (date: Date) => {\n return date.toString() === \"Invalid Date\";\n};\n\n/**\n * Validates if a date is valid (opposite of isDateInvalid)\n * Checks both the Date object validity and the timestamp\n */\nconst isValidDate = (date: Date): boolean => {\n return !isDateInvalid(date) && !isNaN(date.getTime());\n};\n\nconst isDateEpoc = (date: Date) => {\n return date.getTime() <= 0;\n};\n\nconst isDateInRange = (arg: unknown): boolean => {\n if (typeof arg !== \"string\") {\n return false;\n }\n\n const date = new Date(arg);\n const startDate = new Date(\"1800-01-01T00:00:00.000Z\");\n const endDate = new Date(\"2999-12-31T23:59:59.999Z\");\n\n return date >= startDate && date <= endDate;\n};\n\nconst isDateInPast = (input: string | number | Date): boolean => {\n let date: Date;\n if (input instanceof Date) {\n date = input;\n } else if (typeof input === \"number\") {\n const ms = input < 1e12 ? input * 1000 : input;\n date = new Date(ms);\n } else {\n date = new Date(input);\n }\n\n if (isNaN(date.getTime())) {\n return false;\n }\n\n return date.getTime() < Date.now();\n};\n\nconst isSameDate = (dateA: Date, dateB: Date) => {\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n};\n\nconst getPluralizedUnit = (\n unit: keyof typeof units,\n count: number,\n locale: Locale = \"en\",\n) => {\n const pluralRules = new Intl.PluralRules(locale, {\n type: \"cardinal\",\n });\n const pluralCategory = pluralRules.select(count);\n\n if (pluralCategory === \"one\" || pluralCategory === \"other\") {\n return `${count} ${units[unit][pluralCategory]}`;\n }\n\n return `${count} ${units[unit].other}`;\n};\n\nconst getRelativeDateDescription = (\n targetDate: Date,\n locale: Locale = \"en\",\n) => {\n const currentDate = new Date();\n\n const oneDay = 1000 * 60 * 60 * 24;\n const oneMonth = oneDay * 30;\n const oneYear = oneDay * 365;\n\n const diffInMilliseconds = targetDate.getTime() - currentDate.getTime();\n const diffInDays = Math.round(diffInMilliseconds / oneDay);\n const diffInMonths = Math.round(diffInMilliseconds / oneMonth);\n const diffInYears = Math.round(diffInMilliseconds / oneYear);\n\n if (Math.abs(diffInYears) >= 1) {\n return getPluralizedUnit(\"year\", Math.abs(diffInYears), locale);\n }\n\n if (Math.abs(diffInMonths) >= 1) {\n return getPluralizedUnit(\"month\", Math.abs(diffInMonths), locale);\n }\n\n return getPluralizedUnit(\"day\", Math.abs(diffInDays), locale);\n};\n\n/**\n * Safely formats a date with validation and fallback support\n * @param date - String or Date to format\n * @param formatter - Function that formats the Date object\n * @param fallback - Value to return if date is invalid\n * @returns Formatted string or fallback value\n */\nconst safeFormatDate = <T = string>(\n date: string | Date,\n formatter: FormatDateFunc<T>,\n fallback: T,\n): T => {\n const dateObj = typeof date === \"string\" ? new Date(date) : date;\n\n if (!isValidDate(dateObj)) {\n return fallback;\n }\n\n try {\n return formatter(dateObj);\n } catch (error) {\n logger.logError(error, {\n context: safeFormatDate.name,\n });\n return fallback;\n }\n};\n\nconst parseDateTime = (dateInput: string, timeInput?: string) => {\n const dateRegex = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM|am|pm)?$/;\n\n const dateMatch = dateRegex.exec(dateInput);\n if (!dateMatch) {\n return undefined;\n }\n\n const month = parseInt(dateMatch[1]!, 10) - 1;\n const day = parseInt(dateMatch[2]!, 10);\n const year = parseInt(dateMatch[3]!, 10);\n\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (timeInput) {\n timeInput = timeInput.replace(/\\u00A0/g, \" \").trim();\n\n const timeMatch = timeRegex.exec(timeInput);\n if (!timeMatch) {\n return undefined;\n }\n\n hours = parseInt(timeMatch[1]!, 10);\n minutes = parseInt(timeMatch[2]!, 10);\n seconds = timeMatch[3] ? parseInt(timeMatch[3], 10) : 0;\n const meridiem = timeMatch[4] ? timeMatch[4].toUpperCase() : null;\n\n if (meridiem === \"PM\" && hours < 12) {\n hours += 12;\n } else if (meridiem === \"AM\" && hours === 12) {\n hours = 0;\n }\n }\n\n const date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));\n if (isNaN(date.getTime())) {\n return undefined;\n }\n\n return date;\n};\n\nconst validateIso8601Date = (dueDate: string): void => {\n const result = iso8601DateSchema.safeParse(dueDate);\n if (!result.success) {\n const errorMessage =\n result.error.issues[0]?.message || \"Invalid ISO 8601 format\";\n throw new Error(`Invalid due date format: ${errorMessage}`);\n }\n};\n\nexport {\n formatDateAsUSStandard,\n formatToShortDate,\n formatToShortDateWithYear,\n formatFullDate,\n formatTime,\n formatDateTime,\n formatLongDate,\n formatLongDateTime,\n getPluralizedUnit,\n getRelativeDateDescription,\n isDateInvalid,\n isValidDate,\n validateIso8601Date,\n isDateEpoc,\n isDateInRange,\n isDateInPast,\n isSameDate,\n safeFormatDate,\n parseDateTime,\n};\nexport type { FormatDateFunc };\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-
|
|
1
|
+
const require_chunk = require('./chunk-BE-pF4vm.js');
|
|
2
2
|
let zod = require("zod");
|
|
3
3
|
zod = require_chunk.__toESM(zod);
|
|
4
4
|
|
|
@@ -533,4 +533,4 @@ Object.defineProperty(exports, 'validateIso8601Date', {
|
|
|
533
533
|
return validateIso8601Date;
|
|
534
534
|
}
|
|
535
535
|
});
|
|
536
|
-
//# sourceMappingURL=date-
|
|
536
|
+
//# sourceMappingURL=date-G7-DHP8t.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-CFzrYcjE.js","names":["z"],"sources":["../src/helpers/types.ts","../src/helpers/logger.ts","../src/helpers/date.ts"],"sourcesContent":["import type { z, ZodObject } from \"zod\";\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = T | null | undefined;\nexport type Optional<T> = T | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- any is ok\nexport type Any = any;\n\nexport type NumberOrString = number | string;\n\nexport type OverrideProps<T, TOverridden> = Omit<T, keyof TOverridden> &\n TOverridden;\n\nexport type NonEmptyArray<T> = [T, ...T[]];\n\nexport interface DataRecord {\n [value: string]: Nullish<DataRecord | string | number | boolean>;\n}\n\nexport interface Input<T> {\n input: T;\n}\n\nexport type ZodCustom<Values extends object> = ZodObject<{\n [P in keyof Values]: z.ZodType<Values[P]>;\n}>;\n\nexport const isError = (value: unknown): value is Error =>\n value instanceof Error;\n\nexport const isFunction = (\n value: unknown,\n): value is (...args: unknown[]) => unknown => typeof value === \"function\";\n\nexport const isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nexport const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n\nexport const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\nexport const isUndefined = (value: unknown): value is undefined =>\n typeof value === \"undefined\";\n\nexport const isBoolean = (value: unknown): value is boolean =>\n typeof value === \"boolean\";\n\nexport const isNull = (value: unknown): value is null => value === null;\n\nexport const isNotNull = (value: unknown): value is NonNullable<unknown> =>\n value !== null && value !== undefined;\n\nexport const isEmpty = (value: unknown): value is \"\" | null | undefined =>\n value === \"\" ||\n value === null ||\n value === undefined ||\n (Array.isArray(value) && value.length === 0);\n\n/**\n * Safely extracts a string from an unknown value.\n * @param value - The value to extract from\n * @param fallback - Optional fallback value if extraction fails\n * @returns The extracted string or fallback/undefined\n */\nexport const extractString = (\n value: unknown,\n fallback?: string,\n): Optional<string> => {\n return isString(value) ? value : fallback;\n};\n\n/**\n * Safely extracts a number from an unknown value.\n * Handles both number and string representations.\n * @param value - The value to extract from\n * @returns The extracted number or undefined\n */\nexport const extractNumber = (value: unknown): Optional<number> => {\n if (isNumber(value)) {\n return value;\n }\n\n if (isString(value)) {\n const parsed = Number.parseFloat(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n return undefined;\n};\n","import type { Optional } from \"./types\";\n\nimport { isError, isNotNull, isObject, isString } from \"./types\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface LoggerOptions {\n /* Optional context prefix (e.g., \"AuthService\", \"PaymentHook\") */\n context?: string;\n /* Additional data to log alongside the message */\n data?: unknown;\n}\n\nexport interface ErrorLogOptions {\n /* Module or service where the error occurred */\n context?: string;\n /* Specific operation that failed (e.g., \"fetchUser\", \"validateToken\") */\n operation?: string;\n /* Additional metadata for debugging */\n metadata?: Record<string, unknown>;\n}\n\nfunction extractErrorMessage(error: unknown): string {\n if (isError(error)) {\n return error.message;\n }\n\n if (isString(error)) {\n return error;\n }\n\n if (isObject(error) && \"message\" in error && isString(error.message)) {\n return error.message;\n }\n\n return \"Unknown error\";\n}\n\nfunction buildPrefix(...parts: Optional<string>[]): string {\n return parts\n .filter(Boolean)\n .map((part) => `[${part}]`)\n .join(\" \");\n}\n\nconst consoleMethods = {\n debug: console.log,\n info: console.log,\n warn: console.warn,\n error: console.error,\n} as const;\n\nclass Logger {\n /* Log informational messages */\n info(message: string, options?: LoggerOptions): void {\n this.log(\"info\", message, options);\n }\n\n /* Log warning messages */\n warn(message: string, options?: LoggerOptions): void {\n this.log(\"warn\", message, options);\n }\n\n /* Log error messages */\n error(message: string, options?: LoggerOptions): void {\n this.log(\"error\", message, options);\n }\n\n /**\n * Log errors with full context and stack trace.\n * For API errors, consider using `getErrorMessage` from `@otim/utils/api`.\n */\n logError(error: unknown, options: ErrorLogOptions = {}): void {\n const { context, operation, metadata } = options;\n const prefix = buildPrefix(context, operation);\n const message = extractErrorMessage(error);\n\n console.error(prefix ? `${prefix} ${message}` : message);\n\n if (metadata && Object.keys(metadata).length > 0) {\n console.error(\"Metadata:\", metadata);\n }\n\n if (isError(error) && error.stack) {\n console.error(\"Stack:\", error.stack);\n } else if (isNotNull(error)) {\n console.error(\"Error details:\", error);\n }\n }\n\n private log(level: LogLevel, message: string, options?: LoggerOptions): void {\n const prefix = buildPrefix(options?.context);\n const fullMessage = prefix ? `${prefix} ${message}` : message;\n const logFn = consoleMethods[level];\n\n logFn(fullMessage);\n\n if (options?.data) {\n this.logData(level, options.data);\n }\n }\n\n private logData(level: LogLevel, data: unknown): void {\n if (level === \"debug\" || level === \"info\") {\n console.dir(data, { depth: null });\n } else {\n consoleMethods[level](\"Data:\", data);\n }\n }\n}\n\nexport const logger = new Logger();\n","import z from \"zod\";\n\nimport { logger } from \"./logger\";\n\ntype Locale = \"en\" | \"es\";\n\ntype FormatDateFunc<T> = (date: Date) => T;\n\nexport const iso8601DateSchema = z\n .string()\n .regex(\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/,\n \"Must be a valid ISO 8601 date format (e.g., 2024-12-31T23:59:59.000Z)\",\n );\n\nexport const TimeUnit = {\n Day: \"day\",\n Month: \"month\",\n Year: \"year\",\n} as const;\n\nexport type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit];\n\nconst units = {\n [TimeUnit.Day]: {\n one: \"day\",\n other: \"days\",\n },\n [TimeUnit.Month]: {\n one: \"month\",\n other: \"months\",\n },\n [TimeUnit.Year]: {\n one: \"year\",\n other: \"years\",\n },\n} as const;\n\nconst formatDateAsUSStandard = (\n date: Date,\n opts?: Intl.DateTimeFormatOptions,\n) =>\n date.toLocaleString(\"en-US\", {\n month: \"2-digit\",\n day: \"2-digit\",\n year: \"numeric\",\n ...opts,\n });\n\nexport const formatDateAsISO = (date: Date) => date.toISOString();\n\nconst formatFullDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\nconst formatTime = (date: Date): string => {\n return date.toLocaleTimeString(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone: \"UTC\",\n timeZoneName: \"short\",\n });\n};\n\nconst formatDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions).format(\n date,\n );\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\n/**\n * Formats a date in long format (e.g., \"June 19, 2025\")\n * @param date - Date object to format\n * @returns Formatted date string\n */\nconst formatLongDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\n/**\n * Formats a date with time in long format (e.g., \"June 19, 2025 at 07:00 AM\")\n * @param date - Date object to format\n * @returns Formatted date and time string\n */\nconst formatLongDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: true,\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions)\n .format(date)\n .toLowerCase();\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\nconst formatToShortDate = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Jan 1\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nconst formatToShortDateWithYear = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Unknown\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nexport const formatToJustDate = (dateString: string) => {\n const date = new Date(dateString);\n\n if (isNaN(date.getTime())) {\n return \"1\";\n }\n\n return date.getUTCDate().toString();\n};\n\nexport const formatDateToYYYYMMDD = (date: Date) => {\n return new Intl.DateTimeFormat(\"en-CA\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(date);\n};\n\nconst isDateInvalid = (date: Date) => {\n return date.toString() === \"Invalid Date\";\n};\n\n/**\n * Validates if a date is valid (opposite of isDateInvalid)\n * Checks both the Date object validity and the timestamp\n */\nconst isValidDate = (date: Date): boolean => {\n return !isDateInvalid(date) && !isNaN(date.getTime());\n};\n\nconst isDateEpoc = (date: Date) => {\n return date.getTime() <= 0;\n};\n\nconst isDateInRange = (arg: unknown): boolean => {\n if (typeof arg !== \"string\") {\n return false;\n }\n\n const date = new Date(arg);\n const startDate = new Date(\"1800-01-01T00:00:00.000Z\");\n const endDate = new Date(\"2999-12-31T23:59:59.999Z\");\n\n return date >= startDate && date <= endDate;\n};\n\nconst isDateInPast = (input: string | number | Date): boolean => {\n let date: Date;\n if (input instanceof Date) {\n date = input;\n } else if (typeof input === \"number\") {\n const ms = input < 1e12 ? input * 1000 : input;\n date = new Date(ms);\n } else {\n date = new Date(input);\n }\n\n if (isNaN(date.getTime())) {\n return false;\n }\n\n return date.getTime() < Date.now();\n};\n\nconst isSameDate = (dateA: Date, dateB: Date) => {\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n};\n\nconst getPluralizedUnit = (\n unit: keyof typeof units,\n count: number,\n locale: Locale = \"en\",\n) => {\n const pluralRules = new Intl.PluralRules(locale, {\n type: \"cardinal\",\n });\n const pluralCategory = pluralRules.select(count);\n\n if (pluralCategory === \"one\" || pluralCategory === \"other\") {\n return `${count} ${units[unit][pluralCategory]}`;\n }\n\n return `${count} ${units[unit].other}`;\n};\n\nconst getRelativeDateDescription = (\n targetDate: Date,\n locale: Locale = \"en\",\n) => {\n const currentDate = new Date();\n\n const oneDay = 1000 * 60 * 60 * 24;\n const oneMonth = oneDay * 30;\n const oneYear = oneDay * 365;\n\n const diffInMilliseconds = targetDate.getTime() - currentDate.getTime();\n const diffInDays = Math.round(diffInMilliseconds / oneDay);\n const diffInMonths = Math.round(diffInMilliseconds / oneMonth);\n const diffInYears = Math.round(diffInMilliseconds / oneYear);\n\n if (Math.abs(diffInYears) >= 1) {\n return getPluralizedUnit(\"year\", Math.abs(diffInYears), locale);\n }\n\n if (Math.abs(diffInMonths) >= 1) {\n return getPluralizedUnit(\"month\", Math.abs(diffInMonths), locale);\n }\n\n return getPluralizedUnit(\"day\", Math.abs(diffInDays), locale);\n};\n\n/**\n * Safely formats a date with validation and fallback support\n * @param date - String or Date to format\n * @param formatter - Function that formats the Date object\n * @param fallback - Value to return if date is invalid\n * @returns Formatted string or fallback value\n */\nconst safeFormatDate = <T = string>(\n date: string | Date,\n formatter: FormatDateFunc<T>,\n fallback: T,\n): T => {\n const dateObj = typeof date === \"string\" ? new Date(date) : date;\n\n if (!isValidDate(dateObj)) {\n return fallback;\n }\n\n try {\n return formatter(dateObj);\n } catch (error) {\n logger.logError(error, {\n context: safeFormatDate.name,\n });\n return fallback;\n }\n};\n\nconst parseDateTime = (dateInput: string, timeInput?: string) => {\n const dateRegex = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM|am|pm)?$/;\n\n const dateMatch = dateRegex.exec(dateInput);\n if (!dateMatch) {\n return undefined;\n }\n\n const month = parseInt(dateMatch[1]!, 10) - 1;\n const day = parseInt(dateMatch[2]!, 10);\n const year = parseInt(dateMatch[3]!, 10);\n\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (timeInput) {\n timeInput = timeInput.replace(/\\u00A0/g, \" \").trim();\n\n const timeMatch = timeRegex.exec(timeInput);\n if (!timeMatch) {\n return undefined;\n }\n\n hours = parseInt(timeMatch[1]!, 10);\n minutes = parseInt(timeMatch[2]!, 10);\n seconds = timeMatch[3] ? parseInt(timeMatch[3], 10) : 0;\n const meridiem = timeMatch[4] ? timeMatch[4].toUpperCase() : null;\n\n if (meridiem === \"PM\" && hours < 12) {\n hours += 12;\n } else if (meridiem === \"AM\" && hours === 12) {\n hours = 0;\n }\n }\n\n const date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));\n if (isNaN(date.getTime())) {\n return undefined;\n }\n\n return date;\n};\n\nconst validateIso8601Date = (dueDate: string): void => {\n const result = iso8601DateSchema.safeParse(dueDate);\n if (!result.success) {\n const errorMessage =\n result.error.issues[0]?.message || \"Invalid ISO 8601 format\";\n throw new Error(`Invalid due date format: ${errorMessage}`);\n }\n};\n\nexport {\n formatDateAsUSStandard,\n formatToShortDate,\n formatToShortDateWithYear,\n formatFullDate,\n formatTime,\n formatDateTime,\n formatLongDate,\n formatLongDateTime,\n getPluralizedUnit,\n getRelativeDateDescription,\n isDateInvalid,\n isValidDate,\n validateIso8601Date,\n isDateEpoc,\n isDateInRange,\n isDateInPast,\n isSameDate,\n safeFormatDate,\n parseDateTime,\n};\nexport type { FormatDateFunc };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-G7-DHP8t.js","names":["z"],"sources":["../src/helpers/types.ts","../src/helpers/logger.ts","../src/helpers/date.ts"],"sourcesContent":["import type { z, ZodObject } from \"zod\";\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = T | null | undefined;\nexport type Optional<T> = T | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- any is ok\nexport type Any = any;\n\nexport type NumberOrString = number | string;\n\nexport type OverrideProps<T, TOverridden> = Omit<T, keyof TOverridden> &\n TOverridden;\n\nexport type NonEmptyArray<T> = [T, ...T[]];\n\nexport interface DataRecord {\n [value: string]: Nullish<DataRecord | string | number | boolean>;\n}\n\nexport interface Input<T> {\n input: T;\n}\n\nexport type ZodCustom<Values extends object> = ZodObject<{\n [P in keyof Values]: z.ZodType<Values[P]>;\n}>;\n\nexport const isError = (value: unknown): value is Error =>\n value instanceof Error;\n\nexport const isFunction = (\n value: unknown,\n): value is (...args: unknown[]) => unknown => typeof value === \"function\";\n\nexport const isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nexport const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n\nexport const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\nexport const isUndefined = (value: unknown): value is undefined =>\n typeof value === \"undefined\";\n\nexport const isBoolean = (value: unknown): value is boolean =>\n typeof value === \"boolean\";\n\nexport const isNull = (value: unknown): value is null => value === null;\n\nexport const isNotNull = (value: unknown): value is NonNullable<unknown> =>\n value !== null && value !== undefined;\n\nexport const isEmpty = (value: unknown): value is \"\" | null | undefined =>\n value === \"\" ||\n value === null ||\n value === undefined ||\n (Array.isArray(value) && value.length === 0);\n\n/**\n * Safely extracts a string from an unknown value.\n * @param value - The value to extract from\n * @param fallback - Optional fallback value if extraction fails\n * @returns The extracted string or fallback/undefined\n */\nexport const extractString = (\n value: unknown,\n fallback?: string,\n): Optional<string> => {\n return isString(value) ? value : fallback;\n};\n\n/**\n * Safely extracts a number from an unknown value.\n * Handles both number and string representations.\n * @param value - The value to extract from\n * @returns The extracted number or undefined\n */\nexport const extractNumber = (value: unknown): Optional<number> => {\n if (isNumber(value)) {\n return value;\n }\n\n if (isString(value)) {\n const parsed = Number.parseFloat(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n return undefined;\n};\n","import type { Optional } from \"./types\";\n\nimport { isError, isNotNull, isObject, isString } from \"./types\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface LoggerOptions {\n /* Optional context prefix (e.g., \"AuthService\", \"PaymentHook\") */\n context?: string;\n /* Additional data to log alongside the message */\n data?: unknown;\n}\n\nexport interface ErrorLogOptions {\n /* Module or service where the error occurred */\n context?: string;\n /* Specific operation that failed (e.g., \"fetchUser\", \"validateToken\") */\n operation?: string;\n /* Additional metadata for debugging */\n metadata?: Record<string, unknown>;\n}\n\nfunction extractErrorMessage(error: unknown): string {\n if (isError(error)) {\n return error.message;\n }\n\n if (isString(error)) {\n return error;\n }\n\n if (isObject(error) && \"message\" in error && isString(error.message)) {\n return error.message;\n }\n\n return \"Unknown error\";\n}\n\nfunction buildPrefix(...parts: Optional<string>[]): string {\n return parts\n .filter(Boolean)\n .map((part) => `[${part}]`)\n .join(\" \");\n}\n\nconst consoleMethods = {\n debug: console.log,\n info: console.log,\n warn: console.warn,\n error: console.error,\n} as const;\n\nclass Logger {\n /* Log informational messages */\n info(message: string, options?: LoggerOptions): void {\n this.log(\"info\", message, options);\n }\n\n /* Log warning messages */\n warn(message: string, options?: LoggerOptions): void {\n this.log(\"warn\", message, options);\n }\n\n /* Log error messages */\n error(message: string, options?: LoggerOptions): void {\n this.log(\"error\", message, options);\n }\n\n /**\n * Log errors with full context and stack trace.\n * For API errors, consider using `getErrorMessage` from `@otim/utils/api`.\n */\n logError(error: unknown, options: ErrorLogOptions = {}): void {\n const { context, operation, metadata } = options;\n const prefix = buildPrefix(context, operation);\n const message = extractErrorMessage(error);\n\n console.error(prefix ? `${prefix} ${message}` : message);\n\n if (metadata && Object.keys(metadata).length > 0) {\n console.error(\"Metadata:\", metadata);\n }\n\n if (isError(error) && error.stack) {\n console.error(\"Stack:\", error.stack);\n } else if (isNotNull(error)) {\n console.error(\"Error details:\", error);\n }\n }\n\n private log(level: LogLevel, message: string, options?: LoggerOptions): void {\n const prefix = buildPrefix(options?.context);\n const fullMessage = prefix ? `${prefix} ${message}` : message;\n const logFn = consoleMethods[level];\n\n logFn(fullMessage);\n\n if (options?.data) {\n this.logData(level, options.data);\n }\n }\n\n private logData(level: LogLevel, data: unknown): void {\n if (level === \"debug\" || level === \"info\") {\n console.dir(data, { depth: null });\n } else {\n consoleMethods[level](\"Data:\", data);\n }\n }\n}\n\nexport const logger = new Logger();\n","import z from \"zod\";\n\nimport { logger } from \"./logger\";\n\ntype Locale = \"en\" | \"es\";\n\ntype FormatDateFunc<T> = (date: Date) => T;\n\nexport const iso8601DateSchema = z\n .string()\n .regex(\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/,\n \"Must be a valid ISO 8601 date format (e.g., 2024-12-31T23:59:59.000Z)\",\n );\n\nexport const TimeUnit = {\n Day: \"day\",\n Month: \"month\",\n Year: \"year\",\n} as const;\n\nexport type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit];\n\nconst units = {\n [TimeUnit.Day]: {\n one: \"day\",\n other: \"days\",\n },\n [TimeUnit.Month]: {\n one: \"month\",\n other: \"months\",\n },\n [TimeUnit.Year]: {\n one: \"year\",\n other: \"years\",\n },\n} as const;\n\nconst formatDateAsUSStandard = (\n date: Date,\n opts?: Intl.DateTimeFormatOptions,\n) =>\n date.toLocaleString(\"en-US\", {\n month: \"2-digit\",\n day: \"2-digit\",\n year: \"numeric\",\n ...opts,\n });\n\nexport const formatDateAsISO = (date: Date) => date.toISOString();\n\nconst formatFullDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\nconst formatTime = (date: Date): string => {\n return date.toLocaleTimeString(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone: \"UTC\",\n timeZoneName: \"short\",\n });\n};\n\nconst formatDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions).format(\n date,\n );\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\n/**\n * Formats a date in long format (e.g., \"June 19, 2025\")\n * @param date - Date object to format\n * @returns Formatted date string\n */\nconst formatLongDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\n/**\n * Formats a date with time in long format (e.g., \"June 19, 2025 at 07:00 AM\")\n * @param date - Date object to format\n * @returns Formatted date and time string\n */\nconst formatLongDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: true,\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions)\n .format(date)\n .toLowerCase();\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\nconst formatToShortDate = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Jan 1\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nconst formatToShortDateWithYear = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Unknown\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nexport const formatToJustDate = (dateString: string) => {\n const date = new Date(dateString);\n\n if (isNaN(date.getTime())) {\n return \"1\";\n }\n\n return date.getUTCDate().toString();\n};\n\nexport const formatDateToYYYYMMDD = (date: Date) => {\n return new Intl.DateTimeFormat(\"en-CA\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(date);\n};\n\nconst isDateInvalid = (date: Date) => {\n return date.toString() === \"Invalid Date\";\n};\n\n/**\n * Validates if a date is valid (opposite of isDateInvalid)\n * Checks both the Date object validity and the timestamp\n */\nconst isValidDate = (date: Date): boolean => {\n return !isDateInvalid(date) && !isNaN(date.getTime());\n};\n\nconst isDateEpoc = (date: Date) => {\n return date.getTime() <= 0;\n};\n\nconst isDateInRange = (arg: unknown): boolean => {\n if (typeof arg !== \"string\") {\n return false;\n }\n\n const date = new Date(arg);\n const startDate = new Date(\"1800-01-01T00:00:00.000Z\");\n const endDate = new Date(\"2999-12-31T23:59:59.999Z\");\n\n return date >= startDate && date <= endDate;\n};\n\nconst isDateInPast = (input: string | number | Date): boolean => {\n let date: Date;\n if (input instanceof Date) {\n date = input;\n } else if (typeof input === \"number\") {\n const ms = input < 1e12 ? input * 1000 : input;\n date = new Date(ms);\n } else {\n date = new Date(input);\n }\n\n if (isNaN(date.getTime())) {\n return false;\n }\n\n return date.getTime() < Date.now();\n};\n\nconst isSameDate = (dateA: Date, dateB: Date) => {\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n};\n\nconst getPluralizedUnit = (\n unit: keyof typeof units,\n count: number,\n locale: Locale = \"en\",\n) => {\n const pluralRules = new Intl.PluralRules(locale, {\n type: \"cardinal\",\n });\n const pluralCategory = pluralRules.select(count);\n\n if (pluralCategory === \"one\" || pluralCategory === \"other\") {\n return `${count} ${units[unit][pluralCategory]}`;\n }\n\n return `${count} ${units[unit].other}`;\n};\n\nconst getRelativeDateDescription = (\n targetDate: Date,\n locale: Locale = \"en\",\n) => {\n const currentDate = new Date();\n\n const oneDay = 1000 * 60 * 60 * 24;\n const oneMonth = oneDay * 30;\n const oneYear = oneDay * 365;\n\n const diffInMilliseconds = targetDate.getTime() - currentDate.getTime();\n const diffInDays = Math.round(diffInMilliseconds / oneDay);\n const diffInMonths = Math.round(diffInMilliseconds / oneMonth);\n const diffInYears = Math.round(diffInMilliseconds / oneYear);\n\n if (Math.abs(diffInYears) >= 1) {\n return getPluralizedUnit(\"year\", Math.abs(diffInYears), locale);\n }\n\n if (Math.abs(diffInMonths) >= 1) {\n return getPluralizedUnit(\"month\", Math.abs(diffInMonths), locale);\n }\n\n return getPluralizedUnit(\"day\", Math.abs(diffInDays), locale);\n};\n\n/**\n * Safely formats a date with validation and fallback support\n * @param date - String or Date to format\n * @param formatter - Function that formats the Date object\n * @param fallback - Value to return if date is invalid\n * @returns Formatted string or fallback value\n */\nconst safeFormatDate = <T = string>(\n date: string | Date,\n formatter: FormatDateFunc<T>,\n fallback: T,\n): T => {\n const dateObj = typeof date === \"string\" ? new Date(date) : date;\n\n if (!isValidDate(dateObj)) {\n return fallback;\n }\n\n try {\n return formatter(dateObj);\n } catch (error) {\n logger.logError(error, {\n context: safeFormatDate.name,\n });\n return fallback;\n }\n};\n\nconst parseDateTime = (dateInput: string, timeInput?: string) => {\n const dateRegex = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM|am|pm)?$/;\n\n const dateMatch = dateRegex.exec(dateInput);\n if (!dateMatch) {\n return undefined;\n }\n\n const month = parseInt(dateMatch[1]!, 10) - 1;\n const day = parseInt(dateMatch[2]!, 10);\n const year = parseInt(dateMatch[3]!, 10);\n\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (timeInput) {\n timeInput = timeInput.replace(/\\u00A0/g, \" \").trim();\n\n const timeMatch = timeRegex.exec(timeInput);\n if (!timeMatch) {\n return undefined;\n }\n\n hours = parseInt(timeMatch[1]!, 10);\n minutes = parseInt(timeMatch[2]!, 10);\n seconds = timeMatch[3] ? parseInt(timeMatch[3], 10) : 0;\n const meridiem = timeMatch[4] ? timeMatch[4].toUpperCase() : null;\n\n if (meridiem === \"PM\" && hours < 12) {\n hours += 12;\n } else if (meridiem === \"AM\" && hours === 12) {\n hours = 0;\n }\n }\n\n const date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));\n if (isNaN(date.getTime())) {\n return undefined;\n }\n\n return date;\n};\n\nconst validateIso8601Date = (dueDate: string): void => {\n const result = iso8601DateSchema.safeParse(dueDate);\n if (!result.success) {\n const errorMessage =\n result.error.issues[0]?.message || \"Invalid ISO 8601 format\";\n throw new Error(`Invalid due date format: ${errorMessage}`);\n }\n};\n\nexport {\n formatDateAsUSStandard,\n formatToShortDate,\n formatToShortDateWithYear,\n formatFullDate,\n formatTime,\n formatDateTime,\n formatLongDate,\n formatLongDateTime,\n getPluralizedUnit,\n getRelativeDateDescription,\n isDateInvalid,\n isValidDate,\n validateIso8601Date,\n isDateEpoc,\n isDateInRange,\n isDateInPast,\n isSameDate,\n safeFormatDate,\n parseDateTime,\n};\nexport type { FormatDateFunc };\n"],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
|
|
2
|
-
//#region \0@oxc-project+runtime@0.
|
|
2
|
+
//#region \0@oxc-project+runtime@0.112.0/helpers/typeof.js
|
|
3
3
|
function _typeof(o) {
|
|
4
4
|
"@babel/helpers - typeof";
|
|
5
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o
|
|
6
|
-
return typeof o
|
|
7
|
-
} : function(o
|
|
8
|
-
return o
|
|
5
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
6
|
+
return typeof o;
|
|
7
|
+
} : function(o) {
|
|
8
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
9
9
|
}, _typeof(o);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
//#endregion
|
|
13
|
-
//#region \0@oxc-project+runtime@0.
|
|
13
|
+
//#region \0@oxc-project+runtime@0.112.0/helpers/toPrimitive.js
|
|
14
14
|
function toPrimitive(t, r) {
|
|
15
15
|
if ("object" != _typeof(t) || !t) return t;
|
|
16
16
|
var e = t[Symbol.toPrimitive];
|
|
@@ -23,14 +23,14 @@ function toPrimitive(t, r) {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
//#endregion
|
|
26
|
-
//#region \0@oxc-project+runtime@0.
|
|
26
|
+
//#region \0@oxc-project+runtime@0.112.0/helpers/toPropertyKey.js
|
|
27
27
|
function toPropertyKey(t) {
|
|
28
28
|
var i = toPrimitive(t, "string");
|
|
29
29
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
//#endregion
|
|
33
|
-
//#region \0@oxc-project+runtime@0.
|
|
33
|
+
//#region \0@oxc-project+runtime@0.112.0/helpers/defineProperty.js
|
|
34
34
|
function _defineProperty(e, r, t) {
|
|
35
35
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
36
36
|
value: t,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
//#region \0@oxc-project+runtime@0.
|
|
1
|
+
//#region \0@oxc-project+runtime@0.112.0/helpers/typeof.js
|
|
2
2
|
function _typeof(o) {
|
|
3
3
|
"@babel/helpers - typeof";
|
|
4
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o
|
|
5
|
-
return typeof o
|
|
6
|
-
} : function(o
|
|
7
|
-
return o
|
|
4
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
5
|
+
return typeof o;
|
|
6
|
+
} : function(o) {
|
|
7
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
8
8
|
}, _typeof(o);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
//#endregion
|
|
12
|
-
//#region \0@oxc-project+runtime@0.
|
|
12
|
+
//#region \0@oxc-project+runtime@0.112.0/helpers/toPrimitive.js
|
|
13
13
|
function toPrimitive(t, r) {
|
|
14
14
|
if ("object" != _typeof(t) || !t) return t;
|
|
15
15
|
var e = t[Symbol.toPrimitive];
|
|
@@ -22,14 +22,14 @@ function toPrimitive(t, r) {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
//#endregion
|
|
25
|
-
//#region \0@oxc-project+runtime@0.
|
|
25
|
+
//#region \0@oxc-project+runtime@0.112.0/helpers/toPropertyKey.js
|
|
26
26
|
function toPropertyKey(t) {
|
|
27
27
|
var i = toPrimitive(t, "string");
|
|
28
28
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
//#endregion
|
|
32
|
-
//#region \0@oxc-project+runtime@0.
|
|
32
|
+
//#region \0@oxc-project+runtime@0.112.0/helpers/defineProperty.js
|
|
33
33
|
function _defineProperty(e, r, t) {
|
|
34
34
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
35
35
|
value: t,
|
package/dist/helpers/index.d.mts
CHANGED
|
@@ -196,13 +196,13 @@ declare const extractNumber: (value: unknown) => Optional<number>;
|
|
|
196
196
|
//#region src/helpers/datetime.d.ts
|
|
197
197
|
declare const timeUnitInputValueSchema: z$1.ZodObject<{
|
|
198
198
|
unit: z$1.ZodEnum<{
|
|
199
|
+
day: "day";
|
|
200
|
+
month: "month";
|
|
199
201
|
none: "none";
|
|
200
202
|
second: "second";
|
|
201
203
|
minute: "minute";
|
|
202
204
|
hour: "hour";
|
|
203
|
-
day: "day";
|
|
204
205
|
week: "week";
|
|
205
|
-
month: "month";
|
|
206
206
|
}>;
|
|
207
207
|
value: z$1.ZodNumber;
|
|
208
208
|
seconds: z$1.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/helpers/address.ts","../../src/helpers/activity.ts","../../src/helpers/blockchain.ts","../../src/helpers/date.ts","../../src/helpers/types.ts","../../src/helpers/datetime.ts","../../src/helpers/domain.ts","../../src/helpers/external-account.ts","../../src/helpers/intl.ts","../../src/helpers/logger.ts","../../src/helpers/mask-options.ts","../../src/helpers/num-formatter.ts","../../src/helpers/polling.ts","../../src/helpers/random.ts","../../src/helpers/sdk-loader.ts","../../src/helpers/signatures.ts","../../src/helpers/string.ts","../../src/helpers/url.ts","../../src/helpers/window.ts","../../src/helpers/zod.ts"],"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/helpers/address.ts","../../src/helpers/activity.ts","../../src/helpers/blockchain.ts","../../src/helpers/date.ts","../../src/helpers/types.ts","../../src/helpers/datetime.ts","../../src/helpers/domain.ts","../../src/helpers/external-account.ts","../../src/helpers/intl.ts","../../src/helpers/logger.ts","../../src/helpers/mask-options.ts","../../src/helpers/num-formatter.ts","../../src/helpers/polling.ts","../../src/helpers/random.ts","../../src/helpers/sdk-loader.ts","../../src/helpers/signatures.ts","../../src/helpers/string.ts","../../src/helpers/url.ts","../../src/helpers/window.ts","../../src/helpers/zod.ts"],"mappings":";;;;;;;;;;;;cAMa,iBAAA,GACX,QAAA,GAAW,UAAA,UACX,QAAA,GAAW,UAAA;;;UCEI,mBAAA;EACf,IAAA;EACA,EAAA;EACA,MAAA;EACA,KAAA;AAAA;AAAA,iBAIc,kBAAA,CACd,QAAA,EAAU,YAAA,GACT,QAAA;EAAc,QAAA,EAAU,oBAAA;AAAA;AAAA,iBAKX,cAAA,CACd,QAAA,EAAU,YAAA,GACT,QAAA;EAAc,IAAA,EAAM,gBAAA;AAAA;AAAA,iBAKP,kBAAA,CACd,QAAA,EAAU,YAAA,GACT,QAAA;EAAc,QAAA,EAAU,oBAAA;AAAA;AAAA,iBAKX,wBAAA,CACd,QAAA,EAAU,YAAA,GACT,QAAA;EAAc,cAAA,EAAgB,0BAAA;AAAA;AAAA,iBAKjB,yBAAA,CACd,QAAA,EAAU,YAAA,GACT,QAAA;EAAc,eAAA,EAAiB,2BAAA;AAAA;AAAA,iBAKlB,0BAAA,CACd,QAAA,EAAU,YAAA,GACT,mBAAA;;;;;;;iBAuDa,oBAAA,CAAqB,SAAA;;;cCzGxB,eAAA,GAAmB,OAAA;;;;;cASnB,sBAAA,EAAsB,MAAA;AFRnC;;;;;AAAA,cEea,sBAAA,GAA0B,OAAA;;;;;;cAS1B,mBAAA,GAAuB,SAAA,aAAoB,GAAA;AAAA,cAuB3C,QAAA,GAAY,CAAA;AAAA,cAKZ,UAAA,GAAc,CAAA;;;;;;cAcd,sBAAA,GAA0B,GAAA,EAAK,GAAA,KAAM,kBAAA;AAAA,cAQrC,cAAA,GACX,OAAA,UACA,MAAA,YAAkB,KAAA,KAAU,KAAA;;;;cAMjB,eAAA;AAAA,cAEA,aAAA,GAAiB,OAAA,EAAS,SAAA;;;;;;;;iBAWvB,cAAA,CAAe,SAAA,UAAmB,QAAA;;;KCjG7C,QAAA;AAAA,KAEA,cAAA,OAAqB,IAAA,EAAM,IAAA,KAAS,CAAA;AAAA,cAE5B,iBAAA,EAAiB,CAAA,CAAA,SAAA;AAAA,cAOjB,QAAA;EAAA;;;;KAMD,QAAA,WAAmB,QAAA,eAAuB,QAAA;AAAA,cAEhD,KAAA;EAAA;;;;;;;;;;;;;cAeA,sBAAA,GACJ,IAAA,EAAM,IAAA,EACN,IAAA,GAAO,IAAA,CAAK,qBAAA;AAAA,cASD,eAAA,GAAmB,IAAA,EAAM,IAAA;AAAA,cAEhC,cAAA,GAAkB,IAAA,EAAM,IAAA;AAAA,cAUxB,UAAA,GAAc,IAAA,EAAM,IAAA;AAAA,cAUpB,cAAA,GAAkB,IAAA,EAAM,IAAA;;;AFrD9B;;;cEiFM,cAAA,GAAkB,IAAA,EAAM,IAAA;;;;;;cAexB,kBAAA,GAAsB,IAAA,EAAM,IAAA;AAAA,cAwB5B,iBAAA,GAAqB,UAAA,WAAqB,IAAA;AAAA,cAe1C,yBAAA,GAA6B,UAAA,WAAqB,IAAA;AAAA,cAgB3C,gBAAA,GAAoB,UAAA;AAAA,cAUpB,oBAAA,GAAwB,IAAA,EAAM,IAAA;AAAA,cAQrC,aAAA,GAAiB,IAAA,EAAM,IAAA;;;;;cAQvB,WAAA,GAAe,IAAA,EAAM,IAAA;AAAA,cAIrB,UAAA,GAAc,IAAA,EAAM,IAAA;AAAA,cAIpB,aAAA,GAAiB,GAAA;AAAA,cAYjB,YAAA,GAAgB,KAAA,oBAAyB,IAAA;AAAA,cAkBzC,UAAA,GAAc,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,IAAA;AAAA,cAQlC,iBAAA,GACJ,IAAA,eAAmB,KAAA,EACnB,KAAA,UACA,MAAA,GAAQ,QAAA;AAAA,cAcJ,0BAAA,GACJ,UAAA,EAAY,IAAA,EACZ,MAAA,GAAQ,QAAA;;;;;;;;cA+BJ,cAAA,eACJ,IAAA,WAAe,IAAA,EACf,SAAA,EAAW,cAAA,CAAe,CAAA,GAC1B,QAAA,EAAU,CAAA,KACT,CAAA;AAAA,cAiBG,aAAA,GAAiB,SAAA,UAAmB,SAAA,cAAkB,IAAA;AAAA,cA6CtD,mBAAA,GAAuB,OAAA;;;KCnWjB,QAAA,MAAc,CAAA;AAAA,KACd,OAAA,MAAa,CAAA;AAAA,KACb,QAAA,MAAc,CAAA;AAAA,KAEd,GAAA;AAAA,KAEA,cAAA;AAAA,KAEA,aAAA,mBAAgC,IAAA,CAAK,CAAA,QAAS,WAAA,IACxD,WAAA;AAAA,KAEU,aAAA,OAAoB,CAAA,KAAM,CAAA;AAAA,UAErB,UAAA;EAAA,CACd,KAAA,WAAgB,OAAA,CAAQ,UAAA;AAAA;AAAA,UAGV,KAAA;EACf,KAAA,EAAO,CAAA;AAAA;AAAA,KAGG,SAAA,0BAAmC,SAAA,eACjC,MAAA,GAAS,GAAA,CAAE,OAAA,CAAQ,MAAA,CAAO,CAAA;AAAA,cAG3B,OAAA,GAAW,KAAA,cAAiB,KAAA,IAAS,KAAA;AAAA,cAGrC,UAAA,GACX,KAAA,cACC,KAAA,QAAa,IAAA;AAAA,cAEH,QAAA,GAAY,KAAA,cAAiB,KAAA,IAAS,MAAA;AAAA,cAGtC,QAAA,GAAY,KAAA,cAAiB,KAAA;AAAA,cAG7B,QAAA,GAAY,KAAA,cAAiB,KAAA;AAAA,cAG7B,WAAA,GAAe,KAAA,cAAiB,KAAA;AAAA,cAGhC,SAAA,GAAa,KAAA,cAAiB,KAAA;AAAA,cAG9B,MAAA,GAAU,KAAA,cAAiB,KAAA;AAAA,cAE3B,SAAA,GAAa,KAAA,cAAiB,KAAA,IAAS,WAAA;AAAA,cAGvC,OAAA,GAAW,KAAA,cAAiB,KAAA;;;;;AHpCzC;;cGgDa,aAAA,GACX,KAAA,WACA,QAAA,cACC,QAAA;;;;;;;cAUU,aAAA,GAAiB,KAAA,cAAiB,QAAA;;;cCxElC,wBAAA,EAAwB,GAAA,CAAA,SAAA;;;;;;;;;;;;;KAKzB,kBAAA,GAAqB,GAAA,CAAE,KAAA,QAAa,wBAAA;;;;;;AJFhD;;cI2Ca,kBAAA,GACX,KAAA,cACC,QAAA,CAAS,kBAAA;;;;;;;cAuBC,sBAAA,GAA0B,KAAA,EAAO,kBAAA;AJ5D9C;;;;;;AAAA,cIsEa,oBAAA,GAAwB,KAAA;;;;;AJ/DrC;;cIyEa,2BAAA,GAA+B,KAAA;AAAA,cAK/B,8BAAA,GAAkC,KAAA;;;iBChF/B,aAAA,CAAc,QAAA;;;;;;;;;;;ANjB9B;iBOIgB,yBAAA,CAA0B,eAAA;EACxC,WAAA;EACA,QAAA;EACA,MAAA;AAAA;;;;;;;;;;APPF;cQMa,eAAA,GAAmB,KAAA,UAAe,QAAA;AAAA,cAKlC,IAAA;EAGZ,aAAA;EAAA,OAAA;AAAA;AAAA,cAEY,YAAA,EAAY,GAAA,CAAA,OAAA;;;;KAEb,MAAA,GAAS,GAAA,CAAE,KAAA,QAAa,YAAA;AAAA,cAEvB,eAAA,GAAmB,GAAA;;APhBhC;;;;;;;cOmCa,YAAA,GAAgB,MAAA,UAAgB,QAAA;;;AP3B7C;;;;;;cO8Da,cAAA,GACX,MAAA,mBACA,OAAA,GAAU,IAAA,CAAK,mBAAA;;;;;APzDjB;;;;;;;;;;;cO4Fa,mBAAA,GAAuB,MAAA;;;;cAqBvB,SAAA,GAAS,MAAA,mBAzDG,OAAA,GACb,IAAA,CAAK,mBAAA;;;;;;;AP3CjB;;cO6Ga,eAAA,GACX,MAAA,mBACA,OAAA,GAAU,IAAA,CAAK,mBAAA;;;UChJA,aAAA;EAEf,OAAA;EAEA,IAAA;AAAA;AAAA,UAGe,eAAA;EAEf,OAAA;EAEA,SAAA;EAEA,QAAA,GAAW,MAAA;AAAA;AAAA,cAiCP,MAAA;EAEJ,IAAA,CAAK,OAAA,UAAiB,OAAA,GAAU,aAAA;EAKhC,IAAA,CAAK,OAAA,UAAiB,OAAA,GAAU,aAAA;EAKhC,KAAA,CAAM,OAAA,UAAiB,OAAA,GAAU,aAAA;ETzDjC;;;;ESiEA,QAAA,CAAS,KAAA,WAAgB,OAAA,GAAS,eAAA;EAAA,QAkB1B,GAAA;EAAA,QAYA,OAAA;AAAA;AAAA,cASG,MAAA,EAAM,MAAA;;;cCxFN,qBAAA,EAAuB,cAAA;AAAA,cAQvB,eAAA,EAAe,QAAA,CAAA,cAAA;AAAA,cAKf,WAAA,EAAW,QAAA,CAAA,cAAA;AAAA,cAIX,0BAAA,EAA0B,QAAA,CAAA,cAAA;AAAA,cAI1B,mBAAA,EAAmB,QAAA,CAAA,cAAA;AAAA,cAInB,UAAA,GAAc,KAAA;AAAA,cAqFd,eAAA,EAAiB,cAAA;AAAA,cAIjB,sBAAA,EAAwB,cAAA;;;cCzIxB,YAAA,GAAgB,GAAA,UAAa,KAAA;AAAA,cAoB7B,wBAAA,GAA4B,GAAA;;;UCdxB,aAAA;EACf,UAAA;EACA,UAAA;AAAA;;;;AZFF;;cYgBa,cAAA;EAAA,QACH,cAAA;EAAA,QACA,cAAA;EAAA,QACA,MAAA;cAEI,MAAA,GAAQ,aAAA;EZnBpB;;;;;;EY6BA,KAAA,CACE,cAAA,EAAgB,QAAA,CAAS,MAAA,GACzB,OAAA,QAAe,OAAA;EAuBjB,IAAA,CAAA;;;;EAUA,QAAA,CAAA;EAQA,OAAA,CAAA;AAAA;;;UChFQ,KAAA;EACR,GAAA;EACA,GAAA;AAAA;AAAA,UAGQ,cAAA,SAAuB,KAAA;EAC/B,KAAA;AAAA;AAAA,cAGW,YAAA,GAAgB,IAAA,EAAM,cAAA;;;;;;UCNlB,eAAA;EACf,GAAA;EACA,IAAA;EACA,OAAA;AAAA;AdAF;;;;;;;;AAAA,iBcgBsB,eAAA,CAAgB,MAAA,EAAQ,eAAA,GAAkB,OAAA;;;;;AbZhE;;iBaoDgB,cAAA,CAAe,GAAA;;;;;;UC3Dd,gBAAA;EACf,OAAA;EACA,CAAA;EACA,CAAA;AAAA;AfAF;;;AAAA,ceMa,wBAAA,GAA4B,SAAA;EACvC,CAAA;EACA,CAAA;EACA,CAAA;AAAA,MACE,gBAAA;;;;;;;;;;cCPS,UAAA,GAAc,GAAA,cAAe,QAAA;;;;;;;cAW7B,WAAA,GAAe,GAAA,cAAe,QAAA;;;KCpB/B,WAAA,GAAc,MAAA;;;;;iBASV,gBAAA,CAAiB,MAAA,EAAQ,WAAA;;;AjBHzC;iBiBgBgB,QAAA,CAAS,IAAA,UAAc,MAAA,GAAS,WAAA;;;cClBnC,QAAA;AAAA,UAII,oBAAA;EACf,KAAA;EACA,MAAA;EACA,IAAA;AAAA;;AlBLF;;;;;;;iBkBuBgB,0BAAA,CACd,GAAA,UACA,MAAA,GAAQ,oBAAA,GACP,QAAA,CAAS,MAAA;;;;;;iBAuDI,mBAAA,CAAoB,cAAA,EAAgB,QAAA,CAAS,MAAA;AAAA,iBAa7C,eAAA,CAAA;;;;;;;iBAmBA,eAAA,CACd,IAAA,UACA,YAAA;;;KChHU,SAAA,OAAgB,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,GAAA,CAAE,aAAA;AAAA,cAE/B,iBAAA,MAAwB,UAAA,EAAY,SAAA,CAAU,CAAA,SACjD,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,GAAA,CAAE,aAAA;;;;;AnBN1B;;;;;;cmBsCa,uBAAA,GACX,SAAA,UACA,OAAA;EACE,UAAA;EACA,SAAA;EACA,gBAAA;AAAA,MACI,GAAA,CAAA,WAAA,CAAA,GAAA,CAAA,SAAA;;;AlBxCR;;;;;;;ckBgFa,WAAA,0BAEI,UAAA,GAAa,SAAA,eACd,MAAA,GAAS,GAAA,CAAE,OAAA,CAAQ,MAAA,CAAO,CAAA,OAGxC,MAAA,EAAQ,MAAA,EACR,MAAA,EAAQ,MAAA,KACP,GAAA,CAAE,KAAA,CAAM,MAAA;;;AlBhFX;;;ckBgGa,uBAAA,QAAuB,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,YAAA,mBAAA,GAAA,CAAA,SAAA;;;;;;cAYvB,mBAAA,QAAmB,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,YAAA,eAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,SAAA,EAAA,GAAA,CAAA,YAAA;;AlBrGhC;;;;;;;ckB+Ha,sBAAA,GACX,MAAA,iCACA,UAAA"}
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -196,13 +196,13 @@ declare const extractNumber: (value: unknown) => Optional<number>;
|
|
|
196
196
|
//#region src/helpers/datetime.d.ts
|
|
197
197
|
declare const timeUnitInputValueSchema: z$1.ZodObject<{
|
|
198
198
|
unit: z$1.ZodEnum<{
|
|
199
|
+
day: "day";
|
|
200
|
+
month: "month";
|
|
199
201
|
none: "none";
|
|
200
202
|
second: "second";
|
|
201
203
|
minute: "minute";
|
|
202
204
|
hour: "hour";
|
|
203
|
-
day: "day";
|
|
204
205
|
week: "week";
|
|
205
|
-
month: "month";
|
|
206
206
|
}>;
|
|
207
207
|
value: z$1.ZodNumber;
|
|
208
208
|
seconds: z$1.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/helpers/address.ts","../../src/helpers/activity.ts","../../src/helpers/blockchain.ts","../../src/helpers/date.ts","../../src/helpers/types.ts","../../src/helpers/datetime.ts","../../src/helpers/domain.ts","../../src/helpers/external-account.ts","../../src/helpers/intl.ts","../../src/helpers/logger.ts","../../src/helpers/mask-options.ts","../../src/helpers/num-formatter.ts","../../src/helpers/polling.ts","../../src/helpers/random.ts","../../src/helpers/sdk-loader.ts","../../src/helpers/signatures.ts","../../src/helpers/string.ts","../../src/helpers/url.ts","../../src/helpers/window.ts","../../src/helpers/zod.ts"],"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/helpers/address.ts","../../src/helpers/activity.ts","../../src/helpers/blockchain.ts","../../src/helpers/date.ts","../../src/helpers/types.ts","../../src/helpers/datetime.ts","../../src/helpers/domain.ts","../../src/helpers/external-account.ts","../../src/helpers/intl.ts","../../src/helpers/logger.ts","../../src/helpers/mask-options.ts","../../src/helpers/num-formatter.ts","../../src/helpers/polling.ts","../../src/helpers/random.ts","../../src/helpers/sdk-loader.ts","../../src/helpers/signatures.ts","../../src/helpers/string.ts","../../src/helpers/url.ts","../../src/helpers/window.ts","../../src/helpers/zod.ts"],"mappings":"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"}
|