UNPKG

lbdate

Version:

JavaScript Date object serialization helper.

54 lines 2.42 kB
import { cloneDate, isMoment } from '../helpers'; import { formatTimeZone } from './format-time-zone'; export function toJsonMethodFactory(mergedOptions, lastToNativeJsonName) { const { timezone, toNativeJsonName, manualTimeZoneOffset, precision } = mergedOptions; const msInMin = 6e4; const charsToRemove = precision == 0 ? -4 : precision - 3; const nativeToJsonFuncKey = lastToNativeJsonName || Date.prototype.hasOwnProperty(toNativeJsonName) ? toNativeJsonName : Date.prototype.toISOString.name; let toJsonMethod; switch (timezone) { case "Auto" /* auto */: toJsonMethod = function () { const offSetMins = this.getTimezoneOffset(); const date = cloneDate(this.getTime() - offSetMins * msInMin); let stringDate = date[nativeToJsonFuncKey](); stringDate = stringDate.slice(0, -1 + charsToRemove); return stringDate + formatTimeZone(offSetMins); }; break; case "Manual" /* manual */: toJsonMethod = function () { const offSetMins = manualTimeZoneOffset || 0; const date = cloneDate(this.getTime() - offSetMins * msInMin); let stringDate = date[nativeToJsonFuncKey](); stringDate = stringDate.slice(0, -1 + charsToRemove); return stringDate + formatTimeZone(offSetMins); }; break; case "None" /* none */: toJsonMethod = function () { const offSetMins = this.getTimezoneOffset(); const date = cloneDate(this.getTime() - offSetMins * msInMin); const stringDate = date[nativeToJsonFuncKey](); return stringDate.slice(0, -1 + charsToRemove); }; break; case "UTC" /* utc */: toJsonMethod = function () { const date = cloneDate(this); const stringDate = date[nativeToJsonFuncKey](); return stringDate.slice(0, -1 + charsToRemove) + 'Z'; }; break; } return function () { let date = null; if (isMoment(this)) date = new Date(this.valueOf()); return toJsonMethod.call(date || this); }; } //# sourceMappingURL=to-json-method-factory.js.map