datezone
Version:
A lightweight and comprehensive date and timeZone utility library for JavaScript.
49 lines • 1.63 kB
TypeScript
import { type TimeZone } from "./timezone.pub.js";
type OffsetCacheEntry = {
hourStart: number;
offset: number;
};
type OffsetPeriod = {
start: number;
end: number;
offset: number;
};
export declare const offsetCache: {
checkedLocalDST: boolean;
fixedOffset: Map<TimeZone | null, number>;
hotCache: Map<string, {
offset: number;
validUntil: number;
}>;
lastLocalHourStart: number | null;
lastLocalOffset: number | null;
localFixedOffset: number | null;
perHourOffset: Map<TimeZone | null, OffsetCacheEntry>;
};
/**
* High-performance LRU cache with O(1) operations
*/
declare class FastLRUOffsetPeriodCache {
private cache;
private head;
private tail;
private size;
constructor();
private addToHead;
private removeNode;
private moveToHead;
private popTail;
get(tz: TimeZone): OffsetPeriod[] | undefined;
set(tz: TimeZone, periods: OffsetPeriod[]): void;
has(tz: TimeZone): boolean;
delete(tz: TimeZone): void;
}
export declare const timeZoneOffsetPeriods: FastLRUOffsetPeriodCache;
export declare const DST_WINDOW_MS: number;
export declare function getYearStartEnd(year: number): [number, number];
export declare function computeOffsetPeriods(tz: TimeZone, year: number): OffsetPeriod[];
export declare function ensureOffsetPeriods(tz: TimeZone, year: number): void;
export declare function getCachedOffsetDST(ts: number, tz: TimeZone): number | null;
export declare function calcOffset(ts: number, tz: TimeZone | null, bypassCache?: boolean): number;
export {};
//# sourceMappingURL=offset.internal.d.ts.map