mirror of
https://github.com/swc-project/swc.git
synced 2024-12-01 09:52:57 +03:00
141 lines
3.6 KiB
TypeScript
141 lines
3.6 KiB
TypeScript
// Loaded from https://unpkg.com/luxon@1.25.0/src/settings.js
|
|
|
|
|
|
import LocalZone from "./zones/localZone.js";
|
|
import IANAZone from "./zones/IANAZone.js";
|
|
import Locale from "./impl/locale.js";
|
|
|
|
import { normalizeZone } from "./impl/zoneUtil.js";
|
|
|
|
let now = () => Date.now(),
|
|
defaultZone = null, // not setting this directly to LocalZone.instance bc loading order issues
|
|
defaultLocale = null,
|
|
defaultNumberingSystem = null,
|
|
defaultOutputCalendar = null,
|
|
throwOnInvalid = false;
|
|
|
|
/**
|
|
* Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.
|
|
*/
|
|
export default class Settings {
|
|
/**
|
|
* Get the callback for returning the current timestamp.
|
|
* @type {function}
|
|
*/
|
|
static get now() {
|
|
return now;
|
|
}
|
|
|
|
/**
|
|
* Set the callback for returning the current timestamp.
|
|
* The function should return a number, which will be interpreted as an Epoch millisecond count
|
|
* @type {function}
|
|
* @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future
|
|
* @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time
|
|
*/
|
|
static set now(n) {
|
|
now = n;
|
|
}
|
|
|
|
/**
|
|
* Get the default time zone to create DateTimes in.
|
|
* @type {string}
|
|
*/
|
|
static get defaultZoneName() {
|
|
return Settings.defaultZone.name;
|
|
}
|
|
|
|
/**
|
|
* Set the default time zone to create DateTimes in. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static set defaultZoneName(z) {
|
|
if (!z) {
|
|
defaultZone = null;
|
|
} else {
|
|
defaultZone = normalizeZone(z);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the default time zone object to create DateTimes in. Does not affect existing instances.
|
|
* @type {Zone}
|
|
*/
|
|
static get defaultZone() {
|
|
return defaultZone || LocalZone.instance;
|
|
}
|
|
|
|
/**
|
|
* Get the default locale to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static get defaultLocale() {
|
|
return defaultLocale;
|
|
}
|
|
|
|
/**
|
|
* Set the default locale to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static set defaultLocale(locale) {
|
|
defaultLocale = locale;
|
|
}
|
|
|
|
/**
|
|
* Get the default numbering system to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static get defaultNumberingSystem() {
|
|
return defaultNumberingSystem;
|
|
}
|
|
|
|
/**
|
|
* Set the default numbering system to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static set defaultNumberingSystem(numberingSystem) {
|
|
defaultNumberingSystem = numberingSystem;
|
|
}
|
|
|
|
/**
|
|
* Get the default output calendar to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static get defaultOutputCalendar() {
|
|
return defaultOutputCalendar;
|
|
}
|
|
|
|
/**
|
|
* Set the default output calendar to create DateTimes with. Does not affect existing instances.
|
|
* @type {string}
|
|
*/
|
|
static set defaultOutputCalendar(outputCalendar) {
|
|
defaultOutputCalendar = outputCalendar;
|
|
}
|
|
|
|
/**
|
|
* Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
|
|
* @type {boolean}
|
|
*/
|
|
static get throwOnInvalid() {
|
|
return throwOnInvalid;
|
|
}
|
|
|
|
/**
|
|
* Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
|
|
* @type {boolean}
|
|
*/
|
|
static set throwOnInvalid(t) {
|
|
throwOnInvalid = t;
|
|
}
|
|
|
|
/**
|
|
* Reset Luxon's global caches. Should only be necessary in testing scenarios.
|
|
* @return {void}
|
|
*/
|
|
static resetCaches() {
|
|
Locale.resetCache();
|
|
IANAZone.resetCache();
|
|
}
|
|
}
|