# src/settings.js

    import { LocalZone } from './zones/localZone';
    import { Util } from './impl/util';

    let now = () => new Date().valueOf(),
      defaultZone = LocalZone.instance,
      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 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.
       * @type {function}
       */
      static set now(n) {
        now = n;
      }

      /**
       * Set the default time zone to create DateTimes in.
       * @type {string}
       */
      static get defaultZoneName() {
        return defaultZone.name;
      }

      /**
       * Set the default time zone to create DateTimes in.
       * @type {string}
       */
      static set defaultZoneName(z) {
        defaultZone = Util.normalizeZone(z);
      }

      /**
       * Get the default time zone object to create DateTimes in.
       * @type {Zone}
       */
      static get defaultZone() {
        return defaultZone;
      }

      /**
       * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
       * @type {Zone}
       */
      static get throwOnInvalid() {
        return throwOnInvalid;
      }

      /**
       * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
       * @type {Zone}
       */
      static set throwOnInvalid(t) {
        throwOnInvalid = t;
      }
    }