You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					139 lines
				
				4.7 KiB
			
		
		
			
		
	
	
					139 lines
				
				4.7 KiB
			| 
											3 years ago
										 | import {expectAssignable, expectError, expectNotAssignable, expectType} from 'tsd'; | ||
|  | import { | ||
|  |     CronDate, | ||
|  |     CronExpression, | ||
|  |     CronFields, DateType, | ||
|  |     parseExpression, | ||
|  |     parseFile, ParserOptions, | ||
|  |     parseString, | ||
|  |     fieldsToExpression, | ||
|  |     StringResult | ||
|  | } from '../index'; | ||
|  | 
 | ||
|  | const interval = parseExpression('0 1 2 3 * 1-3,5'); | ||
|  | const intervalIterator = parseExpression('0 1 2 3 * 1-3,5', {iterator: true}); | ||
|  | 
 | ||
|  | expectError(interval.fields = interval.fields); | ||
|  | 
 | ||
|  | expectError(interval.fields.second = []); | ||
|  | expectError(interval.fields.second.push(1)); | ||
|  | 
 | ||
|  | expectError(interval.fields.minute = []); | ||
|  | expectError(interval.fields.minute.push(1)); | ||
|  | 
 | ||
|  | expectError(interval.fields.hour = []); | ||
|  | expectError(interval.fields.hour.push(1)); | ||
|  | 
 | ||
|  | expectError(interval.fields.dayOfMonth = []); | ||
|  | expectError(interval.fields.dayOfMonth.push(1)); | ||
|  | 
 | ||
|  | expectError(interval.fields.month = []); | ||
|  | expectError(interval.fields.month.push(1)); | ||
|  | 
 | ||
|  | expectError(interval.fields.dayOfWeek = []); | ||
|  | expectError(interval.fields.dayOfWeek.push(1)); | ||
|  | 
 | ||
|  | expectAssignable<typeof interval.fields.second[0]>(0); | ||
|  | expectAssignable<typeof interval.fields.second[0]>(59); | ||
|  | expectNotAssignable<typeof interval.fields.second[0]>(-1); | ||
|  | expectNotAssignable<typeof interval.fields.second[0]>(60); | ||
|  | 
 | ||
|  | expectAssignable<typeof interval.fields.minute[0]>(0); | ||
|  | expectAssignable<typeof interval.fields.minute[0]>(59); | ||
|  | expectNotAssignable<typeof interval.fields.minute[0]>(-1); | ||
|  | expectNotAssignable<typeof interval.fields.minute[0]>(60); | ||
|  | 
 | ||
|  | expectAssignable<typeof interval.fields.hour[0]>(0); | ||
|  | expectAssignable<typeof interval.fields.hour[0]>(23); | ||
|  | expectNotAssignable<typeof interval.fields.hour[0]>(-1); | ||
|  | expectNotAssignable<typeof interval.fields.hour[0]>(24); | ||
|  | 
 | ||
|  | expectAssignable<typeof interval.fields.dayOfMonth[0]>(1); | ||
|  | expectAssignable<typeof interval.fields.dayOfMonth[0]>(31); | ||
|  | expectAssignable<typeof interval.fields.dayOfMonth[0]>('L'); | ||
|  | expectNotAssignable<typeof interval.fields.dayOfMonth[0]>(0); | ||
|  | expectNotAssignable<typeof interval.fields.dayOfMonth[0]>(32); | ||
|  | 
 | ||
|  | expectAssignable<typeof interval.fields.month[0]>(1); | ||
|  | expectAssignable<typeof interval.fields.month[0]>(12); | ||
|  | expectNotAssignable<typeof interval.fields.month[0]>(0); | ||
|  | expectNotAssignable<typeof interval.fields.month[0]>(13); | ||
|  | 
 | ||
|  | expectAssignable<typeof interval.fields.dayOfWeek[0]>(0); | ||
|  | expectAssignable<typeof interval.fields.dayOfWeek[0]>(7); | ||
|  | expectNotAssignable<typeof interval.fields.dayOfWeek[0]>(-1); | ||
|  | expectNotAssignable<typeof interval.fields.dayOfWeek[0]>(8); | ||
|  | 
 | ||
|  | const parseOptions: ParserOptions<true> = { | ||
|  |     currentDate: 'f', | ||
|  |     startDate: 4, | ||
|  |     endDate: new Date(), | ||
|  |     iterator: true, | ||
|  |     utc: true, | ||
|  |     tz: 'f', | ||
|  |     nthDayOfWeek: 5, | ||
|  | } | ||
|  | expectAssignable<{ | ||
|  |     currentDate?: string | number | Date | ||
|  |     startDate?: string | number | Date | ||
|  |     endDate?: string | number | Date | ||
|  |     iterator?: boolean | ||
|  |     utc?: boolean | ||
|  |     tz?: string | ||
|  |     nthDayOfWeek?: number | ||
|  | }>(parseOptions) | ||
|  | 
 | ||
|  | expectType<CronExpression>(parseExpression('0 1 2 3 * 1-3,5')) | ||
|  | expectType<CronExpression<true>>(parseExpression('0 1 2 3 * 1-3,5', parseOptions)) | ||
|  | 
 | ||
|  | const fields: CronFields = { | ||
|  |     second: [1, 1], | ||
|  |     minute: [1], | ||
|  |     hour: [1], | ||
|  |     dayOfMonth: [1], | ||
|  |     month: [1], | ||
|  |     dayOfWeek: [1], | ||
|  | } | ||
|  | 
 | ||
|  | expectType<CronExpression>(fieldsToExpression(fields)) | ||
|  | expectType<CronExpression<true>>(fieldsToExpression(fields, parseOptions)) | ||
|  | 
 | ||
|  | expectType<string>(fieldsToExpression(fields).stringify()) | ||
|  | expectType<string>(fieldsToExpression(fields, parseOptions).stringify()) | ||
|  | expectType<string>(fieldsToExpression(fields, parseOptions).stringify(true)) | ||
|  | 
 | ||
|  | expectType<void>(parseFile('path', (err: any, data: StringResult) => console.log(data))) | ||
|  | 
 | ||
|  | expectType<StringResult>(parseString('path')) | ||
|  | 
 | ||
|  | const stringResult = parseString('path'); | ||
|  | expectType<{ | ||
|  |     variables: Record<string, string>, | ||
|  |     expressions: CronExpression[], | ||
|  |     errors: Record<string, any>, | ||
|  | }>(stringResult) | ||
|  | 
 | ||
|  | expectType<CronFields>(interval.fields) | ||
|  | expectType<CronDate>(interval.next()) | ||
|  | expectType<CronDate>(interval.prev()) | ||
|  | expectType<boolean>(interval.hasNext()) | ||
|  | expectType<boolean>(interval.hasPrev()) | ||
|  | expectType<string>(interval.stringify()) | ||
|  | expectType<string>(interval.stringify(true)) | ||
|  | expectType<void>(interval.reset()) | ||
|  | expectType<void>(interval.reset("Sdf")) | ||
|  | expectType<void>(interval.reset(5)) | ||
|  | expectType<void>(interval.reset(new Date())) | ||
|  | expectType<CronDate[]>(interval.iterate(5)) | ||
|  | expectType<CronDate[]>(interval.iterate(5, (item: CronDate, i: number) => {})) | ||
|  | 
 | ||
|  | expectAssignable<DateType>(new Date()) | ||
|  | expectAssignable<DateType>(5) | ||
|  | expectAssignable<DateType>("SDf") | ||
|  | 
 | ||
|  | 
 | ||
|  | expectType<IteratorResult<CronDate, CronDate>>(intervalIterator.next()) | ||
|  | expectType<IteratorResult<CronDate, CronDate>>(intervalIterator.prev()) | ||
|  | expectType<IteratorResult<CronDate, CronDate>[]>(intervalIterator.iterate(5)) | ||
|  | expectType<IteratorResult<CronDate, CronDate>[]>(intervalIterator.iterate(5, (item: IteratorResult<CronDate, CronDate>, i: number) => {})) |