"use strict"; exports.setDefaultOptions = setDefaultOptions; var _index = require("./_lib/defaultOptions.js"); /** * @name setDefaultOptions * @category Common Helpers * @summary Set default options including locale. * @pure false * * @description * Sets the defaults for * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate` * arguments for all functions. * * @param options - An object with options * * @example * // Set global locale: * import { es } from 'date-fns/locale' * setDefaultOptions({ locale: es }) * const result = format(new Date(2014, 8, 2), 'PPPP') * //=> 'martes, 2 de septiembre de 2014' * * @example * // Start of the week for 2 September 2014: * const result = startOfWeek(new Date(2014, 8, 2)) * //=> Sun Aug 31 2014 00:00:00 * * @example * // Start of the week for 2 September 2014, * // when we set that week starts on Monday by default: * setDefaultOptions({ weekStartsOn: 1 }) * const result = startOfWeek(new Date(2014, 8, 2)) * //=> Mon Sep 01 2014 00:00:00 * * @example * // Manually set options take priority over default options: * setDefaultOptions({ weekStartsOn: 1 }) * const result = startOfWeek(new Date(2014, 8, 2), { weekStartsOn: 0 }) * //=> Sun Aug 31 2014 00:00:00 * * @example * // Remove the option by setting it to `undefined`: * setDefaultOptions({ weekStartsOn: 1 }) * setDefaultOptions({ weekStartsOn: undefined }) * const result = startOfWeek(new Date(2014, 8, 2)) * //=> Sun Aug 31 2014 00:00:00 */ function setDefaultOptions(options) { const result = {}; const defaultOptions = (0, _index.getDefaultOptions)(); for (const property in defaultOptions) { if (Object.prototype.hasOwnProperty.call(defaultOptions, property)) { // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type result[property] = defaultOptions[property]; } } for (const property in options) { if (Object.prototype.hasOwnProperty.call(options, property)) { if (options[property] === undefined) { // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type delete result[property]; } else { // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type result[property] = options[property]; } } } (0, _index.setDefaultOptions)(result); }