@types/datejs
Version:
TypeScript definitions for datejs
262 lines (235 loc) • 6.64 kB
TypeScript
/** SugarPak.js - Domain Specific Language - Syntactical Sugar */
declare namespace sugarpak {
export interface IAddOrientation {
millisecond(): Date;
second(): Date;
minute(): Date;
hour(): Date;
day(): Date;
week(): Date;
month(): Date;
year(): Date;
milliseconds(): Date;
seconds(): Date;
minutes(): Date;
hours(): Date;
days(): Date;
weeks(): Date;
months(): Date;
years(): Date;
}
export interface IOrientation extends IAddOrientation {
monday(): Date;
tuesday(): Date;
wednesday(): Date;
thursday(): Date;
friday(): Date;
saturday(): Date;
sunday(): Date;
mon(): Date;
tue(): Date;
wed(): Date;
thu(): Date;
fri(): Date;
sat(): Date;
sun(): Date;
january(): Date;
february(): Date;
march(): Date;
april(): Date;
may(): Date;
june(): Date;
july(): Date;
august(): Date;
september(): Date;
october(): Date;
november(): Date;
december(): Date;
jan(): Date;
feb(): Date;
mar(): Date;
apr(): Date;
// may
jun(): Date;
jul(): Date;
aug(): Date;
sep(): Date;
oct(): Date;
nov(): Date;
dec(): Date;
}
export interface IPredicate {
today(): boolean;
monday(): boolean;
tuesday(): boolean;
wednesday(): boolean;
thursday(): boolean;
friday(): boolean;
saturday(): boolean;
sunday(): boolean;
mon(): boolean;
tue(): boolean;
wed(): boolean;
thu(): boolean;
fri(): boolean;
sat(): boolean;
sun(): boolean;
january(): boolean;
february(): boolean;
march(): boolean;
april(): boolean;
may(): boolean;
june(): boolean;
july(): boolean;
august(): boolean;
september(): boolean;
october(): boolean;
november(): boolean;
december(): boolean;
jan(): boolean;
feb(): boolean;
mar(): boolean;
apr(): boolean;
jun(): boolean;
jul(): boolean;
aug(): boolean;
sep(): boolean;
oct(): boolean;
nov(): boolean;
dec(): boolean;
weekday(): boolean;
day(date?: Date): boolean;
week(date?: Date): boolean;
month(date?: Date): boolean;
year(date?: Date): boolean;
}
export interface IDatePartComparer {
millisecond(date?: Date): boolean;
second(date?: Date): boolean;
minute(date?: Date): boolean;
hour(date?: Date): boolean;
day(date?: Date): boolean;
week(date?: Date): boolean;
month(date?: Date): boolean;
year(date?: Date): boolean;
}
export interface IDateElementEvaluator {
ago(): Date;
before(): Date;
fromNow(): Date;
after(): Date;
}
export interface IDateElement {
millisecond(): IDateElementEvaluator;
second(): IDateElementEvaluator;
minute(): IDateElementEvaluator;
hour(): IDateElementEvaluator;
day(): IDateElementEvaluator;
week(): IDateElementEvaluator;
month(): IDateElementEvaluator;
year(): IDateElementEvaluator;
milliseconds(): IDateElementEvaluator;
seconds(): IDateElementEvaluator;
minutes(): IDateElementEvaluator;
hours(): IDateElementEvaluator;
days(): IDateElementEvaluator;
weeks(): IDateElementEvaluator;
months(): IDateElementEvaluator;
years(): IDateElementEvaluator;
}
export interface IDateLiteral extends ITimeLiteral {
day: number;
week: number;
month: number;
year: number;
}
export interface ITimeLiteral {
millisecond: number;
second: number;
minute: number;
hour: number;
}
}
interface Date {
add(n: number): sugarpak.IAddOrientation;
at(time: string): Date;
at(time: sugarpak.ITimeLiteral): Date;
is(): sugarpak.IPredicate;
next(): sugarpak.IOrientation;
last(): sugarpak.IOrientation;
prev(): sugarpak.IOrientation;
final(): sugarpak.IOrientation;
first(): sugarpak.IOrientation;
second(): sugarpak.IOrientation;
third(): sugarpak.IOrientation;
fourth(): sugarpak.IOrientation;
fifth(): sugarpak.IOrientation;
previous(): sugarpak.IOrientation;
/** Determines if two date objects occur on/in exactly the same instance of the subsequent date part function. Must be followed by a date part function (example: .day(), .month(), .year(), etc) */
same(): sugarpak.IDatePartComparer;
/** Returns a date literal from a DateJS instance */
toObject(): sugarpak.IDateLiteral;
}
interface DateConstructor {
/** Contains the day-of-week value for Monday */
MONDAY: number;
/** Contains the day-of-week value for Tuesday */
TUESDAY: number;
/** Contains the day-of-week value for Wednesday */
WEDNESDAY: number;
/** Contains the day-of-week value for Thursday */
THURSDAY: number;
/** Contains the day-of-week value for Friday */
FRIDAY: number;
/** Contains the day-of-week value for Saturday */
SATURDAY: number;
/** Contains the day-of-week value for Sunday */
SUNDAY: number;
/** Instantiates a DateJS object from a literal */
fromObject(date: sugarpak.IDateLiteral): Date;
next(): sugarpak.IOrientation;
last(): sugarpak.IOrientation;
prev(): sugarpak.IOrientation;
previous(): sugarpak.IOrientation;
january(): Date;
february(): Date;
march(): Date;
april(): Date;
may(): Date;
june(): Date;
july(): Date;
august(): Date;
september(): Date;
october(): Date;
november(): Date;
december(): Date;
monday(): Date;
tuesday(): Date;
wednesday(): Date;
thursday(): Date;
friday(): Date;
saturday(): Date;
sunday(): Date;
mon(): Date;
tue(): Date;
wed(): Date;
thu(): Date;
fri(): Date;
sat(): Date;
sun(): Date;
jan(): Date;
feb(): Date;
mar(): Date;
apr(): Date;
// may
jun(): Date;
jul(): Date;
aug(): Date;
sep(): Date;
oct(): Date;
nov(): Date;
dec(): Date;
}
interface Number extends sugarpak.IDateElement {
// extend the Number type with all the Date goodness
}