ws-dottie
Version:
Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration
84 lines • 3.49 kB
TypeScript
/**
* @fileoverview Date Utilities for WS-Dottie
*
* This module provides date conversion utilities specifically designed for
* handling WSDOT/WSF API date formats. It includes conversion from .NET
* datetime strings to JavaScript Date objects and various date formatting
* utilities for API requests and responses.
*/
/**
* Converts a WSDOT .NET timestamp string to a JavaScript Date object
*
* This function parses WSDOT's .NET datetime format ("/Date(timestamp)/")
* and converts it to a JavaScript Date object. It handles both positive
* and negative timestamps, as well as timezone offsets.
*
* The parsing logic:
* - Extracts timestamp from position 6 to 6 characters from the end
* - Handles timezone separators (+ or - after timestamp)
* - Validates the resulting timestamp number
*
* @param dateString - The WSDOT date string to convert
* @returns JavaScript Date object or null if parsing fails
* @example
* ```typescript
* wsdotDateTimeToJSDate("/Date(1757451301100-0700)/") // Returns Date object
* wsdotDateTimeToJSDate("/Date(-2208945600000-0800)/") // Returns Date object
* wsdotDateTimeToJSDate("invalid") // Returns null
* ```
*/
export declare const wsdotDateTimeToJSDate: (dateString: string) => Date | null;
/**
* Converts a JavaScript Date to ISO date stamp (YYYY-MM-DD)
*
* This function formats a JavaScript Date object as an ISO date string
* in YYYY-MM-DD format, which is commonly used in API requests.
*
* @param date - The JavaScript Date object to convert
* @returns ISO date string in YYYY-MM-DD format
* @example
* ```typescript
* jsDateToYyyyMmDd(new Date(2024, 0, 15)) // Returns "2024-01-15"
* ```
*/
export declare const jsDateToYyyyMmDd: (date: Date) => string;
/**
* Converts .NET datetime strings to JavaScript Date objects in response data
*
* This function recursively traverses an object/array structure and converts
* any .NET datetime strings (format: "/Date(1234567890123)/") to JavaScript
* Date objects, leaving other values unchanged. It uses JSON.parse with a
* reviver function to process the data during parsing.
*
* @param data - The data structure to process
* @returns The data with .NET dates converted to JS Date objects
* @example
* ```typescript
* const data = { date: "/Date(1757451301100-0700)/", name: "test" };
* const converted = convertDotNetDates(data);
* // Result: { date: Date object, name: "test" }
* ```
*/
export declare const convertDotNetDates: (data: unknown) => unknown;
/**
* Date helper functions for runtime evaluation
*
* These functions return YYYY-MM-DD date strings when called, ensuring they are
* evaluated at runtime rather than build time. This is useful for
* generating dynamic dates in API requests and sample data.
*/
export declare const datesHelper: {
/** Returns tomorrow's date as YYYY-MM-DD string */
readonly tomorrow: () => string;
/** Returns the day after tomorrow's date as YYYY-MM-DD string */
readonly dayAfterTomorrow: () => string;
/** Returns today's date as YYYY-MM-DD string */
readonly today: () => string;
/** Returns yesterday's date as YYYY-MM-DD string */
readonly yesterday: () => string;
/** Returns August 1, 2025 (start of month for sample data) as YYYY-MM-DD string */
readonly startOfMonth: () => string;
/** Returns August 31, 2025 (end of month for sample data) as YYYY-MM-DD string */
readonly endOfMonth: () => string;
};
//# sourceMappingURL=dateUtils.d.ts.map