@duplojs/utils 1.3.29 → 1.3.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/clean/index.cjs +13 -0
  2. package/dist/clean/index.mjs +7 -1
  3. package/dist/clean/primitive/base.cjs +3 -0
  4. package/dist/clean/primitive/base.d.ts +4 -2
  5. package/dist/clean/primitive/base.mjs +3 -1
  6. package/dist/clean/primitive/operations/date/dateAddTime.cjs +16 -0
  7. package/dist/clean/primitive/operations/date/dateAddTime.d.ts +4 -0
  8. package/dist/clean/primitive/operations/date/dateAddTime.mjs +14 -0
  9. package/dist/clean/primitive/operations/date/dateMax.cjs +1 -5
  10. package/dist/clean/primitive/operations/date/dateMax.d.ts +1 -2
  11. package/dist/clean/primitive/operations/date/dateMax.mjs +1 -5
  12. package/dist/clean/primitive/operations/date/dateMin.cjs +1 -5
  13. package/dist/clean/primitive/operations/date/dateMin.d.ts +1 -2
  14. package/dist/clean/primitive/operations/date/dateMin.mjs +1 -5
  15. package/dist/clean/primitive/operations/date/dateSubtractTime.cjs +16 -0
  16. package/dist/clean/primitive/operations/date/dateSubtractTime.d.ts +4 -0
  17. package/dist/clean/primitive/operations/date/dateSubtractTime.mjs +14 -0
  18. package/dist/clean/primitive/operations/date/index.d.ts +2 -4
  19. package/dist/clean/primitive/operations/equal.d.ts +3 -3
  20. package/dist/clean/primitive/operations/index.d.ts +1 -0
  21. package/dist/clean/primitive/operations/sort.cjs +6 -0
  22. package/dist/clean/primitive/operations/sort.d.ts +4 -8
  23. package/dist/clean/primitive/operations/sort.mjs +6 -0
  24. package/dist/clean/primitive/operations/time/index.d.ts +4 -0
  25. package/dist/clean/primitive/operations/time/timeGreaterThan.cjs +15 -0
  26. package/dist/clean/primitive/operations/time/timeGreaterThan.d.ts +4 -0
  27. package/dist/clean/primitive/operations/time/timeGreaterThan.mjs +13 -0
  28. package/dist/clean/primitive/operations/time/timeLessThan.cjs +15 -0
  29. package/dist/clean/primitive/operations/time/timeLessThan.d.ts +4 -0
  30. package/dist/clean/primitive/operations/time/timeLessThan.mjs +13 -0
  31. package/dist/clean/primitive/operations/time/timeMax.cjs +12 -0
  32. package/dist/clean/primitive/operations/time/timeMax.d.ts +4 -0
  33. package/dist/clean/primitive/operations/time/timeMax.mjs +10 -0
  34. package/dist/clean/primitive/operations/time/timeMin.cjs +12 -0
  35. package/dist/clean/primitive/operations/time/timeMin.d.ts +4 -0
  36. package/dist/clean/primitive/operations/time/timeMin.mjs +10 -0
  37. package/dist/common/toWrappedValue.d.ts +2 -1
  38. package/dist/dataParser/extended/coerce/index.cjs +2 -0
  39. package/dist/dataParser/extended/coerce/index.d.ts +1 -0
  40. package/dist/dataParser/extended/coerce/index.mjs +1 -0
  41. package/dist/dataParser/extended/coerce/time.cjs +12 -0
  42. package/dist/dataParser/extended/coerce/time.d.ts +7 -0
  43. package/dist/dataParser/extended/coerce/time.mjs +10 -0
  44. package/dist/dataParser/extended/index.cjs +2 -0
  45. package/dist/dataParser/extended/index.d.ts +1 -0
  46. package/dist/dataParser/extended/index.mjs +1 -0
  47. package/dist/dataParser/extended/time.cjs +22 -0
  48. package/dist/dataParser/extended/time.d.ts +34 -0
  49. package/dist/dataParser/extended/time.mjs +20 -0
  50. package/dist/dataParser/identifier.d.ts +10 -4
  51. package/dist/dataParser/index.cjs +33 -24
  52. package/dist/dataParser/index.mjs +3 -0
  53. package/dist/dataParser/parsers/coerce/index.cjs +2 -0
  54. package/dist/dataParser/parsers/coerce/index.d.ts +1 -0
  55. package/dist/dataParser/parsers/coerce/index.mjs +1 -0
  56. package/dist/dataParser/parsers/coerce/time.cjs +12 -0
  57. package/dist/dataParser/parsers/coerce/time.d.ts +6 -0
  58. package/dist/dataParser/parsers/coerce/time.mjs +10 -0
  59. package/dist/dataParser/parsers/date.cjs +6 -12
  60. package/dist/dataParser/parsers/date.mjs +6 -12
  61. package/dist/dataParser/parsers/index.d.ts +1 -0
  62. package/dist/dataParser/parsers/time/checkers/index.d.ts +2 -0
  63. package/dist/dataParser/parsers/time/checkers/max.cjs +19 -0
  64. package/dist/dataParser/parsers/time/checkers/max.d.ts +12 -0
  65. package/dist/dataParser/parsers/time/checkers/max.mjs +16 -0
  66. package/dist/dataParser/parsers/time/checkers/min.cjs +19 -0
  67. package/dist/dataParser/parsers/time/checkers/min.d.ts +12 -0
  68. package/dist/dataParser/parsers/time/checkers/min.mjs +16 -0
  69. package/dist/dataParser/parsers/time/index.cjs +47 -0
  70. package/dist/dataParser/parsers/time/index.d.ts +33 -0
  71. package/dist/dataParser/parsers/time/index.mjs +44 -0
  72. package/dist/dataParser/types/checkers.d.ts +1 -1
  73. package/dist/dataParser/types/dataParsers.d.ts +2 -2
  74. package/dist/date/applyTimezone.cjs +17 -0
  75. package/dist/date/applyTimezone.d.ts +4 -0
  76. package/dist/date/applyTimezone.mjs +15 -0
  77. package/dist/date/constants.cjs +13 -3
  78. package/dist/date/constants.d.ts +6 -1
  79. package/dist/date/constants.mjs +9 -4
  80. package/dist/date/create.cjs +62 -29
  81. package/dist/date/create.d.ts +10 -6
  82. package/dist/date/create.mjs +60 -27
  83. package/dist/date/createOrThrow.cjs +4 -1
  84. package/dist/date/createOrThrow.d.ts +5 -4
  85. package/dist/date/createOrThrow.mjs +4 -1
  86. package/dist/date/createTheDate.cjs +10 -0
  87. package/dist/date/createTheDate.d.ts +2 -0
  88. package/dist/date/createTheDate.mjs +8 -0
  89. package/dist/date/createTheTime.cjs +10 -0
  90. package/dist/date/createTheTime.d.ts +2 -0
  91. package/dist/date/createTheTime.mjs +8 -0
  92. package/dist/date/createTime.cjs +61 -0
  93. package/dist/date/createTime.d.ts +44 -0
  94. package/dist/date/createTime.mjs +59 -0
  95. package/dist/date/createTimeOrThrow.cjs +28 -0
  96. package/dist/date/createTimeOrThrow.d.ts +10 -0
  97. package/dist/date/createTimeOrThrow.mjs +25 -0
  98. package/dist/date/format.cjs +37 -0
  99. package/dist/date/format.d.ts +4 -0
  100. package/dist/date/format.mjs +35 -0
  101. package/dist/date/getTimezoneOffset.cjs +27 -0
  102. package/dist/date/getTimezoneOffset.d.ts +4 -0
  103. package/dist/date/getTimezoneOffset.mjs +25 -0
  104. package/dist/date/getters/getDayOfYear.cjs +2 -1
  105. package/dist/date/getters/getDayOfYear.mjs +2 -1
  106. package/dist/date/index.cjs +51 -2
  107. package/dist/date/index.d.ts +15 -0
  108. package/dist/date/index.mjs +25 -3
  109. package/dist/date/is.cjs +9 -1
  110. package/dist/date/is.mjs +9 -1
  111. package/dist/date/isSafeTimeValue.cjs +15 -0
  112. package/dist/date/isSafeTimeValue.d.ts +1 -0
  113. package/dist/date/isSafeTimeValue.mjs +13 -0
  114. package/dist/date/isSafeTimestamp.cjs +3 -3
  115. package/dist/date/isSafeTimestamp.d.ts +1 -1
  116. package/dist/date/isSafeTimestamp.mjs +3 -3
  117. package/dist/date/isTime.cjs +17 -0
  118. package/dist/date/isTime.d.ts +2 -0
  119. package/dist/date/isTime.mjs +15 -0
  120. package/dist/date/makeSafeTimeValue.cjs +20 -0
  121. package/dist/date/makeSafeTimeValue.d.ts +1 -0
  122. package/dist/date/makeSafeTimeValue.mjs +18 -0
  123. package/dist/date/makeSafeTimestamp.cjs +20 -0
  124. package/dist/date/makeSafeTimestamp.d.ts +1 -0
  125. package/dist/date/makeSafeTimestamp.mjs +18 -0
  126. package/dist/date/maxTime.cjs +10 -0
  127. package/dist/date/maxTime.d.ts +3 -0
  128. package/dist/date/maxTime.mjs +8 -0
  129. package/dist/date/minTime.cjs +10 -0
  130. package/dist/date/minTime.d.ts +3 -0
  131. package/dist/date/minTime.mjs +8 -0
  132. package/dist/date/operators/addDays.cjs +2 -3
  133. package/dist/date/operators/addDays.mjs +2 -3
  134. package/dist/date/operators/addHours.cjs +2 -3
  135. package/dist/date/operators/addHours.mjs +2 -3
  136. package/dist/date/operators/addMilliseconds.cjs +2 -3
  137. package/dist/date/operators/addMilliseconds.mjs +2 -3
  138. package/dist/date/operators/addMinutes.cjs +2 -3
  139. package/dist/date/operators/addMinutes.mjs +2 -3
  140. package/dist/date/operators/addMonths.cjs +2 -3
  141. package/dist/date/operators/addMonths.mjs +2 -3
  142. package/dist/date/operators/addSeconds.cjs +2 -3
  143. package/dist/date/operators/addSeconds.mjs +2 -3
  144. package/dist/date/operators/addTime.cjs +21 -0
  145. package/dist/date/operators/addTime.d.ts +5 -0
  146. package/dist/date/operators/addTime.mjs +19 -0
  147. package/dist/date/operators/addWeeks.cjs +2 -3
  148. package/dist/date/operators/addWeeks.mjs +2 -3
  149. package/dist/date/operators/addYears.cjs +2 -3
  150. package/dist/date/operators/addYears.mjs +2 -3
  151. package/dist/date/operators/betweenThanTime.cjs +17 -0
  152. package/dist/date/operators/betweenThanTime.d.ts +3 -0
  153. package/dist/date/operators/betweenThanTime.mjs +15 -0
  154. package/dist/date/operators/betweenTime.cjs +17 -0
  155. package/dist/date/operators/betweenTime.d.ts +3 -0
  156. package/dist/date/operators/betweenTime.mjs +15 -0
  157. package/dist/date/operators/greaterThanTime.cjs +16 -0
  158. package/dist/date/operators/greaterThanTime.d.ts +3 -0
  159. package/dist/date/operators/greaterThanTime.mjs +14 -0
  160. package/dist/date/operators/greaterTime.cjs +16 -0
  161. package/dist/date/operators/greaterTime.d.ts +3 -0
  162. package/dist/date/operators/greaterTime.mjs +14 -0
  163. package/dist/date/operators/index.d.ts +8 -0
  164. package/dist/date/operators/lessThanTime.cjs +16 -0
  165. package/dist/date/operators/lessThanTime.d.ts +3 -0
  166. package/dist/date/operators/lessThanTime.mjs +14 -0
  167. package/dist/date/operators/lessTime.cjs +16 -0
  168. package/dist/date/operators/lessTime.d.ts +3 -0
  169. package/dist/date/operators/lessTime.mjs +14 -0
  170. package/dist/date/operators/subtractDays.cjs +2 -3
  171. package/dist/date/operators/subtractDays.mjs +2 -3
  172. package/dist/date/operators/subtractHours.cjs +2 -3
  173. package/dist/date/operators/subtractHours.mjs +2 -3
  174. package/dist/date/operators/subtractMilliseconds.cjs +2 -3
  175. package/dist/date/operators/subtractMilliseconds.mjs +2 -3
  176. package/dist/date/operators/subtractMinutes.cjs +2 -3
  177. package/dist/date/operators/subtractMinutes.mjs +2 -3
  178. package/dist/date/operators/subtractMonths.cjs +2 -3
  179. package/dist/date/operators/subtractMonths.mjs +2 -3
  180. package/dist/date/operators/subtractSeconds.cjs +2 -3
  181. package/dist/date/operators/subtractSeconds.mjs +2 -3
  182. package/dist/date/operators/subtractTime.cjs +21 -0
  183. package/dist/date/operators/subtractTime.d.ts +5 -0
  184. package/dist/date/operators/subtractTime.mjs +19 -0
  185. package/dist/date/operators/subtractWeeks.cjs +2 -3
  186. package/dist/date/operators/subtractWeeks.mjs +2 -3
  187. package/dist/date/operators/subtractYears.cjs +2 -3
  188. package/dist/date/operators/subtractYears.mjs +2 -3
  189. package/dist/date/sortTimes.cjs +20 -0
  190. package/dist/date/sortTimes.d.ts +4 -0
  191. package/dist/date/sortTimes.mjs +18 -0
  192. package/dist/date/{types/timezone.cjs → timezone.cjs} +1 -1
  193. package/dist/date/{types/timezone.d.ts → timezone.d.ts} +1 -1
  194. package/dist/date/{types/timezone.mjs → timezone.mjs} +1 -1
  195. package/dist/date/toTimeValue.cjs +14 -0
  196. package/dist/date/toTimeValue.d.ts +2 -0
  197. package/dist/date/toTimeValue.mjs +12 -0
  198. package/dist/date/toTimestamp.cjs +6 -21
  199. package/dist/date/toTimestamp.d.ts +0 -8
  200. package/dist/date/toTimestamp.mjs +8 -22
  201. package/dist/date/types/index.d.ts +3 -1
  202. package/dist/date/types/isSafeYear.d.ts +5 -52
  203. package/dist/date/types/spoolingDate.d.ts +12 -0
  204. package/dist/date/types/spoolingTime.d.ts +9 -0
  205. package/dist/date/types/theTime.d.ts +1 -0
  206. package/dist/metadata.json +359 -5
  207. package/dist/number/types/index.d.ts +2 -0
  208. package/dist/number/types/isGreater.d.ts +50 -0
  209. package/dist/number/types/isLess.d.ts +3 -0
  210. package/dist/string/types/index.d.ts +1 -0
  211. package/dist/string/types/replace.d.ts +1 -0
  212. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ import { type TheTime } from "./types";
2
+ export declare function createTheTime(timestamp: number): TheTime;
@@ -0,0 +1,8 @@
1
+ import { makeSafeTimeValue } from './makeSafeTimeValue.mjs';
2
+
3
+ function createTheTime(timestamp) {
4
+ const safeTimestamp = makeSafeTimeValue(timestamp);
5
+ return `time${Math.abs(safeTimestamp)}${safeTimestamp < 0 ? "-" : "+"}`;
6
+ }
7
+
8
+ export { createTheTime };
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants.cjs');
4
+ var createTheTime = require('./createTheTime.cjs');
5
+ var isSafeTimeValue = require('./isSafeTimeValue.cjs');
6
+ var isTime = require('./isTime.cjs');
7
+ var create = require('../either/left/create.cjs');
8
+ var create$1 = require('../either/right/create.cjs');
9
+
10
+ const unitsMapper = {
11
+ week: constants.millisecondInOneWeek,
12
+ day: constants.millisecondsInOneDay,
13
+ hour: constants.millisecondInOneHour,
14
+ minute: constants.millisecondInOneMinute,
15
+ second: constants.millisecondsInOneSecond,
16
+ millisecond: 1,
17
+ };
18
+ function createTime(input, unit) {
19
+ if (typeof input === "number" && unit) {
20
+ return createTheTime.createTheTime(input * unitsMapper[unit]);
21
+ }
22
+ if (typeof input === "number") {
23
+ return createFromTimeValue(input * unitsMapper[unit ?? "millisecond"]);
24
+ }
25
+ if (typeof input === "string" && isTime.isTime(input)) {
26
+ return input;
27
+ }
28
+ const { value = 0, week = 0, day = 0, hour = 0, minute = 0, second = 0, millisecond = 0, } = input;
29
+ let fromValue = 0;
30
+ if (typeof value === "number") {
31
+ fromValue = value;
32
+ }
33
+ else {
34
+ const theTimeMatch = value.match(constants.isoTimeRegex);
35
+ if (theTimeMatch) {
36
+ const { sign = "+", hour, minute, second = 0, millisecond = 0, } = theTimeMatch.groups;
37
+ fromValue = (Number(hour) * constants.millisecondInOneHour)
38
+ + (Number(minute) * constants.millisecondInOneMinute)
39
+ + (Number(second) * constants.millisecondsInOneSecond)
40
+ + Number(millisecond);
41
+ fromValue = sign === "-"
42
+ ? -fromValue
43
+ : fromValue;
44
+ }
45
+ }
46
+ return createFromTimeValue(fromValue
47
+ + (week * constants.millisecondInOneWeek)
48
+ + (day * constants.millisecondsInOneDay)
49
+ + (hour * constants.millisecondInOneHour)
50
+ + (minute * constants.millisecondInOneMinute)
51
+ + (second * constants.millisecondsInOneSecond)
52
+ + millisecond);
53
+ }
54
+ function createFromTimeValue(input) {
55
+ if (!isSafeTimeValue.isSafeTimeValue(input)) {
56
+ return create.left("time-created-error", null);
57
+ }
58
+ return create$1.right("time-created", createTheTime.createTheTime(input));
59
+ }
60
+
61
+ exports.createTime = createTime;
@@ -0,0 +1,44 @@
1
+ import { type IsEqual, type And } from "../common";
2
+ import { type maxTimeValue, type minTimeValue } from "./constants";
3
+ import { type TheTime, type SpoolingTime } from "./types";
4
+ import * as DEither from "../either";
5
+ import { type IsGreater, type IsLess } from "../number";
6
+ export type MayBeTime = DEither.EitherRight<"time-created", TheTime> | DEither.EitherLeft<"time-created-error", null>;
7
+ type Units = "week" | "day" | "hour" | "minute" | "second" | "millisecond";
8
+ declare const SymbolForbiddenTime: unique symbol;
9
+ type ForbiddenTime<GenericInput extends number, GenericUnit extends Units> = IsEqual<GenericInput, number> extends true ? {
10
+ [SymbolForbiddenTime]: "Expect only literal value.";
11
+ } : ((IsEqual<GenericUnit, "millisecond"> extends true ? And<[
12
+ IsGreater<GenericInput, typeof minTimeValue>,
13
+ IsLess<GenericInput, typeof maxTimeValue>
14
+ ]> extends true ? GenericInput : {
15
+ [SymbolForbiddenTime]: "Support that the milliseconds between -9007199254740991 and 9007199254740991.";
16
+ } : GenericInput) & (IsEqual<GenericUnit, "second"> extends true ? And<[
17
+ IsGreater<GenericInput, -9007199254740>,
18
+ IsLess<GenericInput, 9007199254740>
19
+ ]> extends true ? GenericInput : {
20
+ [SymbolForbiddenTime]: "Support that the seconds between -9007199254740 and 9007199254740.";
21
+ } : GenericInput) & (IsEqual<GenericUnit, "minute"> extends true ? And<[
22
+ IsGreater<GenericInput, -150119987579>,
23
+ IsLess<GenericInput, 150119987579>
24
+ ]> extends true ? GenericInput : {
25
+ [SymbolForbiddenTime]: "Support that the minutes between -150119987579 and 150119987579.";
26
+ } : GenericInput) & (IsEqual<GenericUnit, "hour"> extends true ? And<[
27
+ IsGreater<GenericInput, -2501999792>,
28
+ IsLess<GenericInput, 2501999792>
29
+ ]> extends true ? GenericInput : {
30
+ [SymbolForbiddenTime]: "Support that the hours between -2501999792 and 2501999792.";
31
+ } : GenericInput) & (IsEqual<GenericUnit, "day"> extends true ? And<[
32
+ IsGreater<GenericInput, -104249991>,
33
+ IsLess<GenericInput, 104249991>
34
+ ]> extends true ? GenericInput : {
35
+ [SymbolForbiddenTime]: "Support that the days between -104249991 and 104249991.";
36
+ } : GenericInput) & (IsEqual<GenericUnit, "week"> extends true ? And<[
37
+ IsGreater<GenericInput, -14892855>,
38
+ IsLess<GenericInput, 14892855>
39
+ ]> extends true ? GenericInput : {
40
+ [SymbolForbiddenTime]: "Support that the weeks between -14892855 and 14892855.";
41
+ } : GenericInput));
42
+ export declare function createTime<GenericInput extends number, GenericUnit extends Units = "millisecond">(input: GenericInput & ForbiddenTime<GenericInput, GenericUnit>, unit: GenericUnit): TheTime;
43
+ export declare function createTime<GenericInput extends number | TheTime | SpoolingTime>(input: GenericInput): MayBeTime;
44
+ export {};
@@ -0,0 +1,59 @@
1
+ import { isoTimeRegex, millisecondsInOneSecond, millisecondInOneMinute, millisecondInOneHour, millisecondsInOneDay, millisecondInOneWeek } from './constants.mjs';
2
+ import { createTheTime } from './createTheTime.mjs';
3
+ import { isSafeTimeValue } from './isSafeTimeValue.mjs';
4
+ import { isTime } from './isTime.mjs';
5
+ import { left } from '../either/left/create.mjs';
6
+ import { right } from '../either/right/create.mjs';
7
+
8
+ const unitsMapper = {
9
+ week: millisecondInOneWeek,
10
+ day: millisecondsInOneDay,
11
+ hour: millisecondInOneHour,
12
+ minute: millisecondInOneMinute,
13
+ second: millisecondsInOneSecond,
14
+ millisecond: 1,
15
+ };
16
+ function createTime(input, unit) {
17
+ if (typeof input === "number" && unit) {
18
+ return createTheTime(input * unitsMapper[unit]);
19
+ }
20
+ if (typeof input === "number") {
21
+ return createFromTimeValue(input * unitsMapper[unit ?? "millisecond"]);
22
+ }
23
+ if (typeof input === "string" && isTime(input)) {
24
+ return input;
25
+ }
26
+ const { value = 0, week = 0, day = 0, hour = 0, minute = 0, second = 0, millisecond = 0, } = input;
27
+ let fromValue = 0;
28
+ if (typeof value === "number") {
29
+ fromValue = value;
30
+ }
31
+ else {
32
+ const theTimeMatch = value.match(isoTimeRegex);
33
+ if (theTimeMatch) {
34
+ const { sign = "+", hour, minute, second = 0, millisecond = 0, } = theTimeMatch.groups;
35
+ fromValue = (Number(hour) * millisecondInOneHour)
36
+ + (Number(minute) * millisecondInOneMinute)
37
+ + (Number(second) * millisecondsInOneSecond)
38
+ + Number(millisecond);
39
+ fromValue = sign === "-"
40
+ ? -fromValue
41
+ : fromValue;
42
+ }
43
+ }
44
+ return createFromTimeValue(fromValue
45
+ + (week * millisecondInOneWeek)
46
+ + (day * millisecondsInOneDay)
47
+ + (hour * millisecondInOneHour)
48
+ + (minute * millisecondInOneMinute)
49
+ + (second * millisecondsInOneSecond)
50
+ + millisecond);
51
+ }
52
+ function createFromTimeValue(input) {
53
+ if (!isSafeTimeValue(input)) {
54
+ return left("time-created-error", null);
55
+ }
56
+ return right("time-created", createTheTime(input));
57
+ }
58
+
59
+ export { createTime };
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var createTime = require('./createTime.cjs');
4
+ var kind = require('../common/kind.cjs');
5
+ var is = require('../either/left/is.cjs');
6
+ var unwrap = require('../common/unwrap.cjs');
7
+ var errorKindNamespace = require('../common/errorKindNamespace.cjs');
8
+
9
+ class CreateTheTimeError extends kind.kindHeritage("create-the-time-error", errorKindNamespace.createErrorKind("create-the-time-error"), Error) {
10
+ input;
11
+ constructor(input) {
12
+ const value = typeof input === "object"
13
+ ? JSON.stringify(input)
14
+ : input.toString();
15
+ super({}, [`Invalid date input: ${value}`]);
16
+ this.input = input;
17
+ }
18
+ }
19
+ function createTimeOrThrow(input) {
20
+ const result = createTime.createTime(input);
21
+ if (is.isLeft(result)) {
22
+ throw new CreateTheTimeError(input);
23
+ }
24
+ return unwrap.unwrap(result);
25
+ }
26
+
27
+ exports.CreateTheTimeError = CreateTheTimeError;
28
+ exports.createTimeOrThrow = createTimeOrThrow;
@@ -0,0 +1,10 @@
1
+ import type { SpoolingTime, TheTime } from "./types";
2
+ declare const CreateTheTimeError_base: new (params: {
3
+ "@DuplojsUtilsError/create-the-time-error"?: unknown;
4
+ }, parentParams: [message?: string | undefined, options?: ErrorOptions | undefined]) => Error & import("../common").Kind<import("../common").KindDefinition<"create-the-time-error", unknown>, unknown> & import("../common").Kind<import("../common").KindDefinition<"@DuplojsUtilsError/create-the-time-error", unknown>, unknown>;
5
+ export declare class CreateTheTimeError extends CreateTheTimeError_base {
6
+ input: TheTime | number | SpoolingTime;
7
+ constructor(input: TheTime | number | SpoolingTime);
8
+ }
9
+ export declare function createTimeOrThrow(input: number | TheTime | SpoolingTime): TheTime;
10
+ export {};
@@ -0,0 +1,25 @@
1
+ import { createTime } from './createTime.mjs';
2
+ import { kindHeritage } from '../common/kind.mjs';
3
+ import { isLeft } from '../either/left/is.mjs';
4
+ import { unwrap } from '../common/unwrap.mjs';
5
+ import { createErrorKind } from '../common/errorKindNamespace.mjs';
6
+
7
+ class CreateTheTimeError extends kindHeritage("create-the-time-error", createErrorKind("create-the-time-error"), Error) {
8
+ input;
9
+ constructor(input) {
10
+ const value = typeof input === "object"
11
+ ? JSON.stringify(input)
12
+ : input.toString();
13
+ super({}, [`Invalid date input: ${value}`]);
14
+ this.input = input;
15
+ }
16
+ }
17
+ function createTimeOrThrow(input) {
18
+ const result = createTime(input);
19
+ if (isLeft(result)) {
20
+ throw new CreateTheTimeError(input);
21
+ }
22
+ return unwrap(result);
23
+ }
24
+
25
+ export { CreateTheTimeError, createTimeOrThrow };
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var toNative = require('./toNative.cjs');
4
+
5
+ function format(...args) {
6
+ if (args.length === 2) {
7
+ const [formatString, timezone] = args;
8
+ return (input) => format(input, formatString, timezone);
9
+ }
10
+ const [input, formatString, timezone] = args;
11
+ const date = toNative.toNative(input);
12
+ const formatter = new Intl.DateTimeFormat("en-US", {
13
+ timeZone: timezone,
14
+ year: "numeric",
15
+ month: "2-digit",
16
+ day: "2-digit",
17
+ hour: "2-digit",
18
+ minute: "2-digit",
19
+ second: "2-digit",
20
+ hour12: false,
21
+ });
22
+ const parts = Object.fromEntries(formatter.formatToParts(date).map((part) => [part.type, part.value]));
23
+ const tokens = {
24
+ YYYY: parts.year,
25
+ YY: parts.year.slice(-2),
26
+ MM: parts.month,
27
+ DD: parts.day,
28
+ HH: parts.hour,
29
+ mm: parts.minute,
30
+ ss: parts.second,
31
+ SSS: date.getMilliseconds().toString(),
32
+ ZZ: timezone,
33
+ };
34
+ return formatString.replace(/YYYY|YY|MM|DD|HH|mm|ss|SSS|ZZ/g, (token) => tokens[token]);
35
+ }
36
+
37
+ exports.format = format;
@@ -0,0 +1,4 @@
1
+ import type { TheDate } from "./types";
2
+ import type { Timezone } from "./timezone";
3
+ export declare function format<GenericInput extends TheDate, GenericFormat extends string, GenericTimezone extends Timezone>(formatString: GenericFormat, timezone: GenericTimezone): (input: GenericInput) => string;
4
+ export declare function format<GenericInput extends TheDate, GenericFormat extends string, GenericTimezone extends Timezone>(input: GenericInput, formatString: GenericFormat, timezone: GenericTimezone): string;
@@ -0,0 +1,35 @@
1
+ import { toNative } from './toNative.mjs';
2
+
3
+ function format(...args) {
4
+ if (args.length === 2) {
5
+ const [formatString, timezone] = args;
6
+ return (input) => format(input, formatString, timezone);
7
+ }
8
+ const [input, formatString, timezone] = args;
9
+ const date = toNative(input);
10
+ const formatter = new Intl.DateTimeFormat("en-US", {
11
+ timeZone: timezone,
12
+ year: "numeric",
13
+ month: "2-digit",
14
+ day: "2-digit",
15
+ hour: "2-digit",
16
+ minute: "2-digit",
17
+ second: "2-digit",
18
+ hour12: false,
19
+ });
20
+ const parts = Object.fromEntries(formatter.formatToParts(date).map((part) => [part.type, part.value]));
21
+ const tokens = {
22
+ YYYY: parts.year,
23
+ YY: parts.year.slice(-2),
24
+ MM: parts.month,
25
+ DD: parts.day,
26
+ HH: parts.hour,
27
+ mm: parts.minute,
28
+ ss: parts.second,
29
+ SSS: date.getMilliseconds().toString(),
30
+ ZZ: timezone,
31
+ };
32
+ return formatString.replace(/YYYY|YY|MM|DD|HH|mm|ss|SSS|ZZ/g, (token) => tokens[token]);
33
+ }
34
+
35
+ export { format };
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var toNative = require('./toNative.cjs');
4
+
5
+ function getTimezoneOffset(...args) {
6
+ if (args.length === 1) {
7
+ const [timeZone] = args;
8
+ return (theDate) => getTimezoneOffset(theDate, timeZone);
9
+ }
10
+ const [theDate, timeZone] = args;
11
+ const date = toNative.toNative(theDate);
12
+ const fmt = new Intl.DateTimeFormat("en-US", {
13
+ timeZone,
14
+ hour12: false,
15
+ year: "numeric",
16
+ month: "2-digit",
17
+ day: "2-digit",
18
+ hour: "2-digit",
19
+ minute: "2-digit",
20
+ second: "2-digit",
21
+ });
22
+ const parts = Object.fromEntries(fmt.formatToParts(date).map((part) => [part.type, part.value]));
23
+ const tzDateAsUTC = Date.UTC(Number(parts.year), Number(parts.month) - 1, Number(parts.day), Number(parts.hour), Number(parts.minute), Number(parts.second));
24
+ return tzDateAsUTC - date.getTime();
25
+ }
26
+
27
+ exports.getTimezoneOffset = getTimezoneOffset;
@@ -0,0 +1,4 @@
1
+ import { type Timezone } from "./timezone";
2
+ import { type TheDate } from "./types";
3
+ export declare function getTimezoneOffset(timeZone: Timezone): (theDate: TheDate) => number;
4
+ export declare function getTimezoneOffset(theDate: TheDate, timeZone: Timezone): number;
@@ -0,0 +1,25 @@
1
+ import { toNative } from './toNative.mjs';
2
+
3
+ function getTimezoneOffset(...args) {
4
+ if (args.length === 1) {
5
+ const [timeZone] = args;
6
+ return (theDate) => getTimezoneOffset(theDate, timeZone);
7
+ }
8
+ const [theDate, timeZone] = args;
9
+ const date = toNative(theDate);
10
+ const fmt = new Intl.DateTimeFormat("en-US", {
11
+ timeZone,
12
+ hour12: false,
13
+ year: "numeric",
14
+ month: "2-digit",
15
+ day: "2-digit",
16
+ hour: "2-digit",
17
+ minute: "2-digit",
18
+ second: "2-digit",
19
+ });
20
+ const parts = Object.fromEntries(fmt.formatToParts(date).map((part) => [part.type, part.value]));
21
+ const tzDateAsUTC = Date.UTC(Number(parts.year), Number(parts.month) - 1, Number(parts.day), Number(parts.hour), Number(parts.minute), Number(parts.second));
22
+ return tzDateAsUTC - date.getTime();
23
+ }
24
+
25
+ export { getTimezoneOffset };
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var constants = require('../constants.cjs');
3
4
  var toNative = require('../toNative.cjs');
4
5
 
5
6
  function getDayOfYear(input, timezone = "UTC") {
@@ -27,7 +28,7 @@ function getDayOfYear(input, timezone = "UTC") {
27
28
  const yearStart = Date.UTC(year, 0, 1);
28
29
  const currentDate = Date.UTC(year, month, day);
29
30
  const millisecondsDiff = currentDate - yearStart;
30
- const dayOfYear = Math.floor(millisecondsDiff / 86400000) + 1;
31
+ const dayOfYear = Math.floor(millisecondsDiff / constants.millisecondsInOneDay) + 1;
31
32
  return dayOfYear;
32
33
  }
33
34
 
@@ -1,3 +1,4 @@
1
+ import { millisecondsInOneDay } from '../constants.mjs';
1
2
  import { toNative } from '../toNative.mjs';
2
3
 
3
4
  function getDayOfYear(input, timezone = "UTC") {
@@ -25,7 +26,7 @@ function getDayOfYear(input, timezone = "UTC") {
25
26
  const yearStart = Date.UTC(year, 0, 1);
26
27
  const currentDate = Date.UTC(year, month, day);
27
28
  const millisecondsDiff = currentDate - yearStart;
28
- const dayOfYear = Math.floor(millisecondsDiff / 86400000) + 1;
29
+ const dayOfYear = Math.floor(millisecondsDiff / millisecondsInOneDay) + 1;
29
30
  return dayOfYear;
30
31
  }
31
32
 
@@ -8,17 +8,31 @@ var yesterday = require('./yesterday.cjs');
8
8
  var tomorrow = require('./tomorrow.cjs');
9
9
  var toNative = require('./toNative.cjs');
10
10
  var toTimestamp = require('./toTimestamp.cjs');
11
+ var toTimeValue = require('./toTimeValue.cjs');
11
12
  var toISOString = require('./toISOString.cjs');
12
13
  var closestTo = require('./closestTo.cjs');
13
14
  var each = require('./each.cjs');
14
15
  var createOrThrow = require('./createOrThrow.cjs');
15
16
  var round = require('./round.cjs');
16
17
  var isSafeTimestamp = require('./isSafeTimestamp.cjs');
18
+ var isSafeTimeValue = require('./isSafeTimeValue.cjs');
17
19
  var min = require('./min.cjs');
20
+ var minTime = require('./minTime.cjs');
18
21
  var max = require('./max.cjs');
22
+ var maxTime = require('./maxTime.cjs');
19
23
  var sort = require('./sort.cjs');
24
+ var sortTimes = require('./sortTimes.cjs');
20
25
  var is = require('./is.cjs');
21
- var timezone = require('./types/timezone.cjs');
26
+ var isTime = require('./isTime.cjs');
27
+ var timezone = require('./timezone.cjs');
28
+ var getTimezoneOffset = require('./getTimezoneOffset.cjs');
29
+ var applyTimezone = require('./applyTimezone.cjs');
30
+ var format = require('./format.cjs');
31
+ var makeSafeTimestamp = require('./makeSafeTimestamp.cjs');
32
+ var createTheDate = require('./createTheDate.cjs');
33
+ var createTheTime = require('./createTheTime.cjs');
34
+ var createTime = require('./createTime.cjs');
35
+ var createTimeOrThrow = require('./createTimeOrThrow.cjs');
22
36
  var getDayOfMonth = require('./getters/getDayOfMonth.cjs');
23
37
  var getDayOfWeek = require('./getters/getDayOfWeek.cjs');
24
38
  var getFirstDayOfWeek = require('./getters/getFirstDayOfWeek.cjs');
@@ -39,6 +53,7 @@ var addMilliseconds = require('./operators/addMilliseconds.cjs');
39
53
  var addMinutes = require('./operators/addMinutes.cjs');
40
54
  var addMonths = require('./operators/addMonths.cjs');
41
55
  var addSeconds = require('./operators/addSeconds.cjs');
56
+ var addTime = require('./operators/addTime.cjs');
42
57
  var addWeeks = require('./operators/addWeeks.cjs');
43
58
  var addYears = require('./operators/addYears.cjs');
44
59
  var subtractDays = require('./operators/subtractDays.cjs');
@@ -47,38 +62,50 @@ var subtractMilliseconds = require('./operators/subtractMilliseconds.cjs');
47
62
  var subtractMinutes = require('./operators/subtractMinutes.cjs');
48
63
  var subtractMonths = require('./operators/subtractMonths.cjs');
49
64
  var subtractSeconds = require('./operators/subtractSeconds.cjs');
65
+ var subtractTime = require('./operators/subtractTime.cjs');
50
66
  var subtractWeeks = require('./operators/subtractWeeks.cjs');
51
67
  var subtractYears = require('./operators/subtractYears.cjs');
52
68
  var between = require('./operators/between.cjs');
53
69
  var betweenThan = require('./operators/betweenThan.cjs');
70
+ var betweenThanTime = require('./operators/betweenThanTime.cjs');
71
+ var betweenTime = require('./operators/betweenTime.cjs');
54
72
  var greater = require('./operators/greater.cjs');
55
73
  var greaterThan = require('./operators/greaterThan.cjs');
74
+ var greaterThanTime = require('./operators/greaterThanTime.cjs');
75
+ var greaterTime = require('./operators/greaterTime.cjs');
56
76
  var less = require('./operators/less.cjs');
57
77
  var lessThan = require('./operators/lessThan.cjs');
78
+ var lessThanTime = require('./operators/lessThanTime.cjs');
79
+ var lessTime = require('./operators/lessTime.cjs');
58
80
 
59
81
 
60
82
 
61
83
  exports.daysInOneWeek = constants.daysInOneWeek;
62
84
  exports.hoursInOneDay = constants.hoursInOneDay;
85
+ exports.isoDateRegex = constants.isoDateRegex;
86
+ exports.isoTimeRegex = constants.isoTimeRegex;
87
+ exports.maxTimeValue = constants.maxTimeValue;
63
88
  exports.maxTimestamp = constants.maxTimestamp;
64
89
  exports.millisecondInOneHour = constants.millisecondInOneHour;
65
90
  exports.millisecondInOneMinute = constants.millisecondInOneMinute;
66
91
  exports.millisecondInOneWeek = constants.millisecondInOneWeek;
67
92
  exports.millisecondsInOneDay = constants.millisecondsInOneDay;
68
93
  exports.millisecondsInOneSecond = constants.millisecondsInOneSecond;
94
+ exports.minTimeValue = constants.minTimeValue;
69
95
  exports.minTimestamp = constants.minTimestamp;
70
96
  exports.minutesInOneHour = constants.minutesInOneHour;
71
97
  exports.monthsInOneYear = constants.monthsInOneYear;
72
98
  exports.secondsInOneMinute = constants.secondsInOneMinute;
73
99
  exports.theDateRegex = constants.theDateRegex;
100
+ exports.theTimeRegex = constants.theTimeRegex;
74
101
  exports.create = create.create;
75
102
  exports.now = now.now;
76
103
  exports.today = today.today;
77
104
  exports.yesterday = yesterday.yesterday;
78
105
  exports.tomorrow = tomorrow.tomorrow;
79
106
  exports.toNative = toNative.toNative;
80
- exports.InvalidTheDateError = toTimestamp.InvalidTheDateError;
81
107
  exports.toTimestamp = toTimestamp.toTimestamp;
108
+ exports.toTimeValue = toTimeValue.toTimeValue;
82
109
  exports.toISOString = toISOString.toISOString;
83
110
  exports.closestTo = closestTo.closestTo;
84
111
  exports.each = each.each;
@@ -86,11 +113,25 @@ exports.CreateTheDateError = createOrThrow.CreateTheDateError;
86
113
  exports.createOrThrow = createOrThrow.createOrThrow;
87
114
  exports.round = round.round;
88
115
  exports.isSafeTimestamp = isSafeTimestamp.isSafeTimestamp;
116
+ exports.isSafeTimeValue = isSafeTimeValue.isSafeTimeValue;
89
117
  exports.min = min.min;
118
+ exports.minTime = minTime.minTime;
90
119
  exports.max = max.max;
120
+ exports.maxTime = maxTime.maxTime;
91
121
  exports.sort = sort.sort;
122
+ exports.sortTimes = sortTimes.sortTimes;
92
123
  exports.is = is.is;
124
+ exports.isTime = isTime.isTime;
93
125
  exports.timezone = timezone.timezone;
126
+ exports.getTimezoneOffset = getTimezoneOffset.getTimezoneOffset;
127
+ exports.applyTimezone = applyTimezone.applyTimezone;
128
+ exports.format = format.format;
129
+ exports.makeSafeTimestamp = makeSafeTimestamp.makeSafeTimestamp;
130
+ exports.createTheDate = createTheDate.createTheDate;
131
+ exports.createTheTime = createTheTime.createTheTime;
132
+ exports.createTime = createTime.createTime;
133
+ exports.CreateTheTimeError = createTimeOrThrow.CreateTheTimeError;
134
+ exports.createTimeOrThrow = createTimeOrThrow.createTimeOrThrow;
94
135
  exports.getDayOfMonth = getDayOfMonth.getDayOfMonth;
95
136
  exports.getDayOfWeek = getDayOfWeek.getDayOfWeek;
96
137
  exports.getFirstDayOfWeek = getFirstDayOfWeek.getFirstDayOfWeek;
@@ -111,6 +152,7 @@ exports.addMilliseconds = addMilliseconds.addMilliseconds;
111
152
  exports.addMinutes = addMinutes.addMinutes;
112
153
  exports.addMonths = addMonths.addMonths;
113
154
  exports.addSeconds = addSeconds.addSeconds;
155
+ exports.addTime = addTime.addTime;
114
156
  exports.addWeeks = addWeeks.addWeeks;
115
157
  exports.addYears = addYears.addYears;
116
158
  exports.subtractDays = subtractDays.subtractDays;
@@ -119,11 +161,18 @@ exports.subtractMilliseconds = subtractMilliseconds.subtractMilliseconds;
119
161
  exports.subtractMinutes = subtractMinutes.subtractMinutes;
120
162
  exports.subtractMonths = subtractMonths.subtractMonths;
121
163
  exports.subtractSeconds = subtractSeconds.subtractSeconds;
164
+ exports.subtractTime = subtractTime.subtractTime;
122
165
  exports.subtractWeeks = subtractWeeks.subtractWeeks;
123
166
  exports.subtractYears = subtractYears.subtractYears;
124
167
  exports.between = between.between;
125
168
  exports.betweenThan = betweenThan.betweenThan;
169
+ exports.betweenThanTime = betweenThanTime.betweenThanTime;
170
+ exports.betweenTime = betweenTime.betweenTime;
126
171
  exports.greater = greater.greater;
127
172
  exports.greaterThan = greaterThan.greaterThan;
173
+ exports.greaterThanTime = greaterThanTime.greaterThanTime;
174
+ exports.greaterTime = greaterTime.greaterTime;
128
175
  exports.less = less.less;
129
176
  exports.lessThan = lessThan.lessThan;
177
+ exports.lessThanTime = lessThanTime.lessThanTime;
178
+ exports.lessTime = lessTime.lessTime;
@@ -7,6 +7,7 @@ export * from "./yesterday";
7
7
  export * from "./tomorrow";
8
8
  export * from "./toNative";
9
9
  export * from "./toTimestamp";
10
+ export * from "./toTimeValue";
10
11
  export * from "./getters";
11
12
  export * from "./toISOString";
12
13
  export * from "./operators";
@@ -16,7 +17,21 @@ export * from "./each";
16
17
  export * from "./createOrThrow";
17
18
  export * from "./round";
18
19
  export * from "./isSafeTimestamp";
20
+ export * from "./isSafeTimeValue";
19
21
  export * from "./min";
22
+ export * from "./minTime";
20
23
  export * from "./max";
24
+ export * from "./maxTime";
21
25
  export * from "./sort";
26
+ export * from "./sortTimes";
22
27
  export * from "./is";
28
+ export * from "./isTime";
29
+ export * from "./timezone";
30
+ export * from "./getTimezoneOffset";
31
+ export * from "./applyTimezone";
32
+ export * from "./format";
33
+ export * from "./makeSafeTimestamp";
34
+ export * from "./createTheDate";
35
+ export * from "./createTheTime";
36
+ export * from "./createTime";
37
+ export * from "./createTimeOrThrow";