date.js (3562B)
1 import { REOther } from "../errors/messages.js"; 2 import { makeDefinition } from "../library/registry/fnDefinition.js"; 3 import { frDate, frNumber, frTimeDuration, } from "../library/registry/frTypes.js"; 4 import { FnFactory } from "../library/registry/helpers.js"; 5 import * as DateTime from "../utility/DateTime.js"; 6 import { vDate, vNumber, vTimeDuration } from "../value/index.js"; 7 const maker = new FnFactory({ 8 nameSpace: "", 9 requiresNamespace: false, 10 }); 11 const makeNumberToDurationFn = (name, fn) => maker.make({ 12 name, 13 definitions: [makeDefinition([frNumber], ([t]) => vTimeDuration(fn(t)))], 14 }); 15 const makeDurationToNumberFn = (name, fn) => maker.make({ 16 name, 17 definitions: [makeDefinition([frTimeDuration], ([t]) => vNumber(fn(t)))], 18 }); 19 export const library = [ 20 maker.fromDefinition("makeDateFromYear", makeDefinition([frNumber], ([year]) => { 21 const result = DateTime.Date.makeFromYear(year); 22 if (!result.ok) { 23 throw new REOther(result.value); 24 } 25 return vDate(result.value); 26 })), 27 maker.fromDefinition("dateFromNumber", makeDefinition([frNumber], ([f]) => vDate(new Date(f)))), 28 maker.fromDefinition("toNumber", makeDefinition([frDate], ([f]) => vNumber(f.getTime()))), 29 maker.make({ 30 name: "subtract", 31 definitions: [ 32 makeDefinition([frDate, frTimeDuration], ([d1, d2]) => vDate(DateTime.Date.subtractDuration(d1, d2))), 33 makeDefinition([frDate, frDate], ([d1, d2]) => { 34 const result = DateTime.Date.subtract(d1, d2); 35 if (!result.ok) { 36 throw new REOther(result.value); 37 } 38 return vTimeDuration(result.value); 39 }), 40 makeDefinition([frTimeDuration, frTimeDuration], ([d1, d2]) => vTimeDuration(DateTime.Duration.subtract(d1, d2))), 41 ], 42 }), 43 maker.make({ 44 name: "add", 45 definitions: [ 46 makeDefinition([frDate, frTimeDuration], ([d1, d2]) => vDate(DateTime.Date.addDuration(d1, d2))), 47 makeDefinition([frTimeDuration, frTimeDuration], ([d1, d2]) => vTimeDuration(DateTime.Duration.add(d1, d2))), 48 ], 49 }), 50 maker.make({ 51 name: "multiply", 52 definitions: [ 53 makeDefinition([frTimeDuration, frNumber], ([d1, d2]) => vTimeDuration(DateTime.Duration.multiply(d1, d2))), 54 ], 55 }), 56 maker.make({ 57 name: "divide", 58 definitions: [ 59 makeDefinition([frTimeDuration, frNumber], ([d1, d2]) => vTimeDuration(DateTime.Duration.divide(d1, d2))), 60 makeDefinition([frTimeDuration, frTimeDuration], ([d1, d2]) => vNumber(d1 / d2)), 61 ], 62 }), 63 makeNumberToDurationFn("minutes", DateTime.Duration.fromMinutes), 64 makeNumberToDurationFn("fromUnit_minutes", DateTime.Duration.fromMinutes), 65 makeNumberToDurationFn("hours", DateTime.Duration.fromHours), 66 makeNumberToDurationFn("fromUnit_hours", DateTime.Duration.fromHours), 67 makeNumberToDurationFn("days", DateTime.Duration.fromDays), 68 makeNumberToDurationFn("fromUnit_days", DateTime.Duration.fromDays), 69 makeNumberToDurationFn("years", DateTime.Duration.fromYears), 70 makeNumberToDurationFn("fromUnit_years", DateTime.Duration.fromYears), 71 makeDurationToNumberFn("toMinutes", DateTime.Duration.toMinutes), 72 makeDurationToNumberFn("toHours", DateTime.Duration.toHours), 73 makeDurationToNumberFn("toDays", DateTime.Duration.toDays), 74 makeDurationToNumberFn("toYears", DateTime.Duration.toYears), 75 ]; 76 //# sourceMappingURL=date.js.map