123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- 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();
- }
- }
|