UNPKG

@nodescript/stdlib

Version:
75 lines (74 loc) 2.23 kB
import { parseDate } from '../lib/date.js'; export const module = { version: '1.0.3', moduleName: 'Date / Set', description: 'Sets specified date components.', params: { date: { schema: { type: 'any' }, attributes: { valuePlaceholder: 'now', }, }, year: { schema: { type: 'number', optional: true }, advanced: true, }, month: { schema: { type: 'number', optional: true }, advanced: true, }, day: { schema: { type: 'number', optional: true }, advanced: true, }, hours: { schema: { type: 'number', optional: true }, advanced: true, }, minutes: { schema: { type: 'number', optional: true }, advanced: true, }, seconds: { schema: { type: 'number', optional: true }, advanced: true, }, milliseconds: { schema: { type: 'number', optional: true }, advanced: true, }, useUtc: { schema: { type: 'boolean', default: true }, advanced: true, }, }, result: { schema: { type: 'any' }, } }; const setters = { year: [Date.prototype.setUTCFullYear, Date.prototype.setFullYear], month: [Date.prototype.setUTCMonth, Date.prototype.setMonth], day: [Date.prototype.setUTCDate, Date.prototype.setDate], hours: [Date.prototype.setUTCHours, Date.prototype.setHours], minutes: [Date.prototype.setUTCMinutes, Date.prototype.setMinutes], seconds: [Date.prototype.setUTCSeconds, Date.prototype.setSeconds], milliseconds: [Date.prototype.setUTCMilliseconds, Date.prototype.setMilliseconds], }; export const compute = params => { const { date, useUtc } = params; const d = parseDate(date); for (const [key, [setUtc, setLocal]] of Object.entries(setters)) { const val = params[key]; if (val != null) { if (useUtc) { setUtc.call(d, val); } else { setLocal.call(d, val); } } } return d; };