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.
		
		
		
		
		
			
		
			
				
					71 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					71 lines
				
				2.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import moment = require('moment');
							 | 
						||
| 
								 | 
							
								import { MomentTimezone } from "./index";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								declare module 'moment' {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /** Parsed / unpacked zone data. */
							 | 
						||
| 
								 | 
							
								    interface UnpackedZone {
							 | 
						||
| 
								 | 
							
								        /** The uniquely identifying name of the time zone. */
							 | 
						||
| 
								 | 
							
								        name: string;
							 | 
						||
| 
								 | 
							
								        /** zone abbreviations */
							 | 
						||
| 
								 | 
							
								        abbrs: Array<string>;
							 | 
						||
| 
								 | 
							
								        /** (measured in milliseconds) */
							 | 
						||
| 
								 | 
							
								        untils: Array<number | null>;
							 | 
						||
| 
								 | 
							
								        /** (measured in minutes) */
							 | 
						||
| 
								 | 
							
								        offsets: Array<number>;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /** Bundle of zone data and links for multiple timezones */
							 | 
						||
| 
								 | 
							
								    interface PackedZoneBundle {
							 | 
						||
| 
								 | 
							
								        version: string;
							 | 
						||
| 
								 | 
							
								        zones: Array<string>;
							 | 
						||
| 
								 | 
							
								        links: Array<string>;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /** Bundle of zone data and links for multiple timezones */
							 | 
						||
| 
								 | 
							
								    interface UnpackedZoneBundle {
							 | 
						||
| 
								 | 
							
								        version: string;
							 | 
						||
| 
								 | 
							
								        zones: Array<UnpackedZone>;
							 | 
						||
| 
								 | 
							
								        links: Array<string>;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    /** extends MomentTimezone declared in index */
							 | 
						||
| 
								 | 
							
								    interface MomentTimezone {
							 | 
						||
| 
								 | 
							
								        /** Converts zone data in the unpacked format to the packed format. */
							 | 
						||
| 
								 | 
							
								        pack(unpackedObject: UnpackedZone): string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /** Convert a base 10 number to a base 60 string. */
							 | 
						||
| 
								 | 
							
								        packBase60(input: number, precision?: number): string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /** Create links out of two zones that share data.
							 | 
						||
| 
								 | 
							
								         * @returns A new ZoneBundle with duplicate zone data replaced by links
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        createLinks(unlinked: UnpackedZoneBundle): PackedZoneBundle;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Filter out data for years outside a certain range.
							 | 
						||
| 
								 | 
							
								         * @return a new, filtered UnPackedZone object
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        filterYears(unpackedZone: UnpackedZone, startYear: number, endYear: number): UnpackedZone;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Filter out data for years outside a certain range.
							 | 
						||
| 
								 | 
							
								         * @return a new, filtered UnPackedZone object
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        filterYears(unpackedZone: UnpackedZone, startAndEndYear: number): UnpackedZone;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Combines packing, link creation, and subsetting of years into one simple interface.
							 | 
						||
| 
								 | 
							
								         * Pass in an unpacked bundle, start year, and end year and get a filtered, linked, packed bundle back.
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        filterLinkPack(unpackedBundle: UnpackedZoneBundle, startYear: number, endYear: number): PackedZoneBundle;
							 | 
						||
| 
								 | 
							
								        /**
							 | 
						||
| 
								 | 
							
								         * Combines packing, link creation, and subsetting of years into one simple interface.
							 | 
						||
| 
								 | 
							
								         * Pass in an unpacked bundle, start year, and end year and get a filtered, linked, packed bundle back.
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        filterLinkPack(unpackedBundle: UnpackedZoneBundle, startAndEndYear: number): PackedZoneBundle;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// require("moment-timezone") === require("moment")
							 | 
						||
| 
								 | 
							
								export = moment;
							 |