@bgord/tools 1.4.14 → 1.4.15

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 (65) hide show
  1. package/dist/age.vo.d.ts.map +1 -1
  2. package/dist/age.vo.js +11 -5
  3. package/dist/age.vo.js.map +1 -1
  4. package/dist/day-iso-id.vo.d.ts.map +1 -1
  5. package/dist/day-iso-id.vo.js +10 -2
  6. package/dist/day-iso-id.vo.js.map +1 -1
  7. package/dist/day.vo.d.ts.map +1 -1
  8. package/dist/day.vo.js +14 -13
  9. package/dist/day.vo.js.map +1 -1
  10. package/dist/hour.vo.d.ts +2 -2
  11. package/dist/hour.vo.d.ts.map +1 -1
  12. package/dist/hour.vo.js +8 -6
  13. package/dist/hour.vo.js.map +1 -1
  14. package/dist/index.d.ts +1 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/minute.vo.d.ts +2 -2
  19. package/dist/minute.vo.d.ts.map +1 -1
  20. package/dist/minute.vo.js +7 -6
  21. package/dist/minute.vo.js.map +1 -1
  22. package/dist/month.vo.d.ts +2 -2
  23. package/dist/month.vo.d.ts.map +1 -1
  24. package/dist/month.vo.js +14 -12
  25. package/dist/month.vo.js.map +1 -1
  26. package/dist/quarter.vo.d.ts.map +1 -1
  27. package/dist/quarter.vo.js +16 -8
  28. package/dist/quarter.vo.js.map +1 -1
  29. package/dist/temporal.d.ts +2 -0
  30. package/dist/temporal.d.ts.map +1 -0
  31. package/dist/temporal.js +2 -0
  32. package/dist/temporal.js.map +1 -0
  33. package/dist/timestamp.vo.d.ts +4 -2
  34. package/dist/timestamp.vo.d.ts.map +1 -1
  35. package/dist/timestamp.vo.js +10 -6
  36. package/dist/timestamp.vo.js.map +1 -1
  37. package/dist/timezone.vo.d.ts.map +1 -1
  38. package/dist/timezone.vo.js +2 -1
  39. package/dist/timezone.vo.js.map +1 -1
  40. package/dist/week-iso-id.vo.d.ts.map +1 -1
  41. package/dist/week-iso-id.vo.js +5 -4
  42. package/dist/week-iso-id.vo.js.map +1 -1
  43. package/dist/week.vo.d.ts.map +1 -1
  44. package/dist/week.vo.js +24 -14
  45. package/dist/week.vo.js.map +1 -1
  46. package/dist/weekday.vo.d.ts.map +1 -1
  47. package/dist/weekday.vo.js +2 -3
  48. package/dist/weekday.vo.js.map +1 -1
  49. package/dist/year.vo.d.ts.map +1 -1
  50. package/dist/year.vo.js +11 -14
  51. package/dist/year.vo.js.map +1 -1
  52. package/package.json +5 -5
  53. package/readme.md +1 -3
  54. package/dist/date-calculator.service.d.ts +0 -11
  55. package/dist/date-calculator.service.d.ts.map +0 -1
  56. package/dist/date-calculator.service.js +0 -13
  57. package/dist/date-calculator.service.js.map +0 -1
  58. package/dist/date-formatter.service.d.ts +0 -10
  59. package/dist/date-formatter.service.d.ts.map +0 -1
  60. package/dist/date-formatter.service.js +0 -16
  61. package/dist/date-formatter.service.js.map +0 -1
  62. package/dist/relative-date.vo.d.ts +0 -14
  63. package/dist/relative-date.vo.d.ts.map +0 -1
  64. package/dist/relative-date.vo.js +0 -15
  65. package/dist/relative-date.vo.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"age.vo.d.ts","sourceRoot":"","sources":["../src/age.vo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,eAAO,MAAM,QAAQ;;CAA8C,CAAC;AAEpE,qBAAa,GAAG;IAIM,OAAO,CAAC,QAAQ,CAAC,KAAK;IAH1C,MAAM,CAAC,QAAQ,CAAC,GAAG,SAA2B;IAC9C,MAAM,CAAC,QAAQ,CAAC,GAAG,SAA2B;IAE9C,OAAO;IAEP,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IAIxC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,GAAG,GAAG;IAIlD,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,SAAS,CAAA;KAAE,GAAG,GAAG;IAKpF,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,SAAS,CAAA;KAAE,GAAG,GAAG;IAO3E,GAAG,IAAI,YAAY;IAInB,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI3B,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIhC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIlC,OAAO,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO;IAIjC,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;CAGjB"}
1
+ {"version":3,"file":"age.vo.d.ts","sourceRoot":"","sources":["../src/age.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,eAAO,MAAM,QAAQ;;CAA8C,CAAC;AAEpE,qBAAa,GAAG;IAIM,OAAO,CAAC,QAAQ,CAAC,KAAK;IAH1C,MAAM,CAAC,QAAQ,CAAC,GAAG,SAA2B;IAC9C,MAAM,CAAC,QAAQ,CAAC,GAAG,SAA2B;IAE9C,OAAO;IAEP,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IAIxC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,GAAG,GAAG;IAIlD,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,SAAS,CAAA;KAAE,GAAG,GAAG;IASpF,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,SAAS,CAAA;KAAE,GAAG,GAAG;IAY3E,GAAG,IAAI,YAAY;IAInB,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI3B,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIhC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIlC,OAAO,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO;IAIjC,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;CAGjB"}
package/dist/age.vo.js CHANGED
@@ -1,6 +1,6 @@
1
- import { differenceInYears } from "date-fns";
2
1
  import * as v from "valibot";
3
2
  import { AgeYears, AgeYearsConstraints } from "./age-years.vo";
3
+ import { Temporal } from "./temporal";
4
4
  import { Timestamp } from "./timestamp.vo";
5
5
  export const AgeError = { FutureBirthdate: "age.future.birthdate" };
6
6
  export class Age {
@@ -19,13 +19,19 @@ export class Age {
19
19
  static fromBirthdateTimestamp(params) {
20
20
  if (params.birthdate.isAfter(params.now))
21
21
  throw new Error(AgeError.FutureBirthdate);
22
- return Age.fromValue(differenceInYears(params.now.ms, params.birthdate.ms));
22
+ const birthdate = params.birthdate.toInstant().toZonedDateTimeISO("UTC").toPlainDate();
23
+ const now = params.now.toInstant().toZonedDateTimeISO("UTC").toPlainDate();
24
+ return Age.fromValue(birthdate.until(now, { largestUnit: "years" }).years);
23
25
  }
24
26
  static fromBirthdate(candidate) {
25
- const birthdate = Timestamp.fromDateLike(candidate.birthdate);
26
- if (birthdate.isAfter(candidate.now))
27
+ const birthdate = Timestamp.fromString(candidate.birthdate)
28
+ .toInstant()
29
+ .toZonedDateTimeISO("UTC")
30
+ .toPlainDate();
31
+ const now = candidate.now.toInstant().toZonedDateTimeISO("UTC").toPlainDate();
32
+ if (Temporal.PlainDate.compare(birthdate, now) > 0)
27
33
  throw new Error(AgeError.FutureBirthdate);
28
- return Age.fromValue(differenceInYears(candidate.now.ms, birthdate.ms));
34
+ return Age.fromValue(birthdate.until(now, { largestUnit: "years" }).years);
29
35
  }
30
36
  get() {
31
37
  return this.value;
@@ -1 +1 @@
1
- {"version":3,"file":"age.vo.js","sourceRoot":"","sources":["../src/age.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAqB,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC;AAEpE,MAAM,OAAO,GAAG;IAIuB;IAHrC,MAAM,CAAU,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC;IAC9C,MAAM,CAAU,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC;IAE9C,YAAqC,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAE5D,MAAM,CAAC,SAAS,CAAC,SAAiB;QAChC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAuB;QAC1C,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAC,MAAgD;QAC5E,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACpF,OAAO,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAgD;QACnE,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE9D,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAChF,OAAO,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAU;QACf,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,KAAU;QACpB,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,KAAU;QACtB,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,UAAe;QACrB,OAAO,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IACxC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
1
+ {"version":3,"file":"age.vo.js","sourceRoot":"","sources":["../src/age.vo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"day-iso-id.vo.d.ts","sourceRoot":"","sources":["../src/day-iso-id.vo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAGF,eAAO,MAAM,gBAAgB,QAAiC,CAAC;AAE/D,eAAO,MAAM,QAAQ,sJAMpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"day-iso-id.vo.d.ts","sourceRoot":"","sources":["../src/day-iso-id.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAG7B,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAGF,eAAO,MAAM,gBAAgB,QAAiC,CAAC;AAE/D,eAAO,MAAM,QAAQ,sJAapB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { isValid, parseISO } from "date-fns";
2
1
  import * as v from "valibot";
2
+ import { Temporal } from "./temporal";
3
3
  export const DayIsoIdError = {
4
4
  Type: "day.iso.id.type",
5
5
  BadChars: "day.iso.id.bad.chars",
@@ -7,7 +7,15 @@ export const DayIsoIdError = {
7
7
  };
8
8
  // Four digits, hyphen, two digits, hyphen, two digits
9
9
  export const DAY_ISO_ID_CHARS = /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;
10
- export const DayIsoId = v.pipe(v.string(DayIsoIdError.Type), v.regex(DAY_ISO_ID_CHARS, DayIsoIdError.BadChars), v.check((value) => isValid(parseISO(value)), DayIsoIdError.InvalidDate),
10
+ export const DayIsoId = v.pipe(v.string(DayIsoIdError.Type), v.regex(DAY_ISO_ID_CHARS, DayIsoIdError.BadChars), v.check((value) => {
11
+ try {
12
+ Temporal.PlainDate.from(value, { overflow: "reject" });
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }, DayIsoIdError.InvalidDate),
11
19
  // Stryker disable next-line StringLiteral
12
20
  v.brand("DayIsoId"));
13
21
  //# sourceMappingURL=day-iso-id.vo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"day-iso-id.vo.js","sourceRoot":"","sources":["../src/day-iso-id.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,sBAAsB;IAChC,WAAW,EAAE,yBAAyB;CACvC,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC5B,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,EACjD,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;AACvE,0CAA0C;AAC1C,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CACpB,CAAC"}
1
+ {"version":3,"file":"day-iso-id.vo.js","sourceRoot":"","sources":["../src/day-iso-id.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,sBAAsB;IAChC,WAAW,EAAE,yBAAyB;CACvC,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC5B,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,EACjD,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,IAAI,CAAC;QACH,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;AAC7B,0CAA0C;AAC1C,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"day.vo.d.ts","sourceRoot":"","sources":["../src/day.vo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,GAAI,SAAQ,SAAS;IAChC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG;IAW/C,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,GAAG;IAI7D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG;IAInC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,GAAG;IAS1C,OAAO,IAAI,YAAY;IAMvB,QAAQ,IAAI,GAAG;IAIf,IAAI,IAAI,GAAG;IAIX,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG;IAI9B,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"day.vo.d.ts","sourceRoot":"","sources":["../src/day.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,GAAI,SAAQ,SAAS;IAChC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG;IAS/C,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,GAAG;IAI7D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG;IAInC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,GAAG;IAM1C,OAAO,IAAI,YAAY;IAIvB,QAAQ,IAAI,GAAG;IAIf,IAAI,IAAI,GAAG;IAIX,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG;IAW9B,QAAQ,IAAI,MAAM;CAGnB"}
package/dist/day.vo.js CHANGED
@@ -1,16 +1,15 @@
1
- import { formatISO } from "date-fns";
2
1
  import * as v from "valibot";
3
2
  import { DateRange } from "./date-range.vo";
4
3
  import { DayIsoId } from "./day-iso-id.vo";
5
- import { Duration } from "./duration.service";
6
4
  import { Int } from "./int.vo";
5
+ import { Temporal } from "./temporal";
7
6
  import { Timestamp } from "./timestamp.vo";
8
7
  export class Day extends DateRange {
9
8
  static fromTimestamp(timestamp) {
10
- const date = new Date(timestamp.ms);
11
- const startUtc = Timestamp.fromNumber(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
12
- const endUtc = startUtc.add(Duration.Days(1)).subtract(Duration.Ms(1));
13
- return new Day(startUtc, endUtc);
9
+ const date = timestamp.toInstant().toZonedDateTimeISO("UTC");
10
+ const start = date.startOfDay();
11
+ const end = start.add({ days: 1 }).subtract({ milliseconds: 1 });
12
+ return new Day(Timestamp.fromInstant(start.toInstant()), Timestamp.fromInstant(end.toInstant()));
14
13
  }
15
14
  static fromTimestampValue(timestamp) {
16
15
  return Day.fromTimestamp(Timestamp.fromValue(timestamp));
@@ -19,14 +18,10 @@ export class Day extends DateRange {
19
18
  return Day.fromTimestamp(now);
20
19
  }
21
20
  static fromIsoId(isoId) {
22
- const [year, month, day] = v.parse(DayIsoId, isoId).split("-").map(Number);
23
- const startUtc = Timestamp.fromNumber(Date.UTC(year, month - 1, day));
24
- const endUtc = startUtc.add(Duration.Days(1)).subtract(Duration.Ms(1));
25
- return new Day(startUtc, endUtc);
21
+ return Day.fromTimestamp(Timestamp.fromInstant(Temporal.PlainDate.from(isoId).toZonedDateTime("UTC").toInstant()));
26
22
  }
27
23
  toIsoId() {
28
- const midday = this.getStart().add(Duration.Hours(12));
29
- return v.parse(DayIsoId, formatISO(midday.ms, { representation: "date" }));
24
+ return v.parse(DayIsoId, this.getStart().toInstant().toZonedDateTimeISO("UTC").toPlainDate().toString());
30
25
  }
31
26
  previous() {
32
27
  return this.shift(Int.of(-1));
@@ -35,7 +30,13 @@ export class Day extends DateRange {
35
30
  return this.shift(Int.of(1));
36
31
  }
37
32
  shift(count) {
38
- return Day.fromTimestamp(this.getStart().add(Duration.Days(count)));
33
+ const plain = this.getStart()
34
+ .toInstant()
35
+ .toZonedDateTimeISO("UTC")
36
+ .toPlainDate()
37
+ .add({ days: count })
38
+ .toZonedDateTime("UTC");
39
+ return Day.fromTimestamp(Timestamp.fromInstant(plain.toInstant()));
39
40
  }
40
41
  toString() {
41
42
  return this.toIsoId();
@@ -1 +1 @@
1
- {"version":3,"file":"day.vo.js","sourceRoot":"","sources":["../src/day.vo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"day.vo.js","sourceRoot":"","sources":["../src/day.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAqB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,OAAO,GAAI,SAAQ,SAAS;IAChC,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE7D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;QAEjE,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAc;QAC3B,OAAO,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAmB;QAClC,OAAO,GAAG,CAAC,aAAa,CACtB,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CACzF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAkB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;aAC1B,SAAS,EAAE;aACX,kBAAkB,CAAC,KAAK,CAAC;aACzB,WAAW,EAAE;aACb,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aACpB,eAAe,CAAC,KAAK,CAAC,CAAC;QAE1B,OAAO,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
package/dist/hour.vo.d.ts CHANGED
@@ -4,10 +4,10 @@ import type { TimestampValueType } from "./timestamp-value.vo";
4
4
  export declare class Hour {
5
5
  private readonly value;
6
6
  private constructor();
7
- static fromValue(candidate: number): Hour;
8
- static fromValueSafe(candidate: HourValueType): Hour;
9
7
  static fromTimestamp(timestamp: Timestamp): Hour;
10
8
  static fromTimestampValue(timestamp: TimestampValueType): Hour;
9
+ static fromValue(candidate: number): Hour;
10
+ static fromValueSafe(candidate: HourValueType): Hour;
11
11
  static zero(): Hour;
12
12
  static max(): Hour;
13
13
  get(): HourValueType;
@@ -1 +1 @@
1
- {"version":3,"file":"hour.vo.d.ts","sourceRoot":"","sources":["../src/hour.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,IAAI;IACK,OAAO,CAAC,QAAQ,CAAC,KAAK;IAA1C,OAAO;IAEP,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIzC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa;IAI7C,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAIhD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAI9D,MAAM,CAAC,IAAI,IAAI,IAAI;IAInB,MAAM,CAAC,GAAG,IAAI,IAAI;IAIlB,GAAG,IAAI,aAAa;IAIpB,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO;IAI9B,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO;IAI/B,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO;IAIhC,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC;IAIlC,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;CAGjB"}
1
+ {"version":3,"file":"hour.vo.d.ts","sourceRoot":"","sources":["../src/hour.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,IAAI;IACK,OAAO,CAAC,QAAQ,CAAC,KAAK;IAA1C,OAAO;IAEP,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAMhD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAI9D,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIzC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa;IAI7C,MAAM,CAAC,IAAI,IAAI,IAAI;IAInB,MAAM,CAAC,GAAG,IAAI,IAAI;IAIlB,GAAG,IAAI,aAAa;IAIpB,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO;IAI9B,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO;IAI/B,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO;IAIhC,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC;IAIlC,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;CAGjB"}
package/dist/hour.vo.js CHANGED
@@ -1,23 +1,25 @@
1
1
  import * as v from "valibot";
2
2
  import { HourValue } from "./hour-value.vo";
3
+ import { Temporal } from "./temporal";
3
4
  import { Timestamp } from "./timestamp.vo";
4
5
  export class Hour {
5
6
  value;
6
7
  constructor(value) {
7
8
  this.value = value;
8
9
  }
10
+ static fromTimestamp(timestamp) {
11
+ const { hour } = Temporal.Instant.fromEpochMilliseconds(timestamp.ms).toZonedDateTimeISO("UTC");
12
+ return new Hour(v.parse(HourValue, hour));
13
+ }
14
+ static fromTimestampValue(timestamp) {
15
+ return Hour.fromTimestamp(Timestamp.fromValue(timestamp));
16
+ }
9
17
  static fromValue(candidate) {
10
18
  return new Hour(v.parse(HourValue, candidate));
11
19
  }
12
20
  static fromValueSafe(candidate) {
13
21
  return new Hour(candidate);
14
22
  }
15
- static fromTimestamp(timestamp) {
16
- return new Hour(v.parse(HourValue, new Date(timestamp.ms).getUTCHours()));
17
- }
18
- static fromTimestampValue(timestamp) {
19
- return Hour.fromTimestamp(Timestamp.fromValue(timestamp));
20
- }
21
23
  static zero() {
22
24
  return Hour.fromValue(0);
23
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hour.vo.js","sourceRoot":"","sources":["../src/hour.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAsB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,OAAO,IAAI;IACsB;IAArC,YAAqC,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAE7D,MAAM,CAAC,SAAS,CAAC,SAAiB;QAChC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAwB;QAC3C,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,OAAa;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,OAAa;QACnB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,OAAa;QACpB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"hour.vo.js","sourceRoot":"","sources":["../src/hour.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAsB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,OAAO,IAAI;IACsB;IAArC,YAAqC,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAE7D,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAEhG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,SAAiB;QAChC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAwB;QAC3C,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,OAAa;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,OAAa;QACnB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,OAAa;QACpB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,6 @@ export * from "./age-years.vo";
3
3
  export * from "./api-key.vo";
4
4
  export * from "./basename.vo";
5
5
  export * from "./batch";
6
- export * from "./date-calculator.service";
7
- export * from "./date-formatter.service";
8
6
  export * from "./date-range.vo";
9
7
  export * from "./day.vo";
10
8
  export * from "./day-iso-id.vo";
@@ -75,7 +73,6 @@ export * from "./quarter.vo";
75
73
  export * from "./quarter-iso-id.vo";
76
74
  export * from "./random.service";
77
75
  export * from "./rate-limiter.service";
78
- export * from "./relative-date.vo";
79
76
  export * from "./reordering.service";
80
77
  export * from "./reordering-item-position-value.vo";
81
78
  export * from "./repeat";
@@ -93,6 +90,7 @@ export * from "./sms-body.vo";
93
90
  export * from "./sms-message.vo";
94
91
  export * from "./sum.service";
95
92
  export * from "./telephone-number.vo";
93
+ export * from "./temporal";
96
94
  export * from "./thousands-separator.service";
97
95
  export * from "./time-zone-offset-value.vo";
98
96
  export * from "./timestamp.vo";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qDAAqD,CAAC;AACpE,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,8 +3,6 @@ export * from "./age-years.vo";
3
3
  export * from "./api-key.vo";
4
4
  export * from "./basename.vo";
5
5
  export * from "./batch";
6
- export * from "./date-calculator.service";
7
- export * from "./date-formatter.service";
8
6
  export * from "./date-range.vo";
9
7
  export * from "./day.vo";
10
8
  export * from "./day-iso-id.vo";
@@ -75,7 +73,6 @@ export * from "./quarter.vo";
75
73
  export * from "./quarter-iso-id.vo";
76
74
  export * from "./random.service";
77
75
  export * from "./rate-limiter.service";
78
- export * from "./relative-date.vo";
79
76
  export * from "./reordering.service";
80
77
  export * from "./reordering-item-position-value.vo";
81
78
  export * from "./repeat";
@@ -93,6 +90,7 @@ export * from "./sms-body.vo";
93
90
  export * from "./sms-message.vo";
94
91
  export * from "./sum.service";
95
92
  export * from "./telephone-number.vo";
93
+ export * from "./temporal";
96
94
  export * from "./thousands-separator.service";
97
95
  export * from "./time-zone-offset-value.vo";
98
96
  export * from "./timestamp.vo";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,10 @@ import type { TimestampValueType } from "./timestamp-value.vo";
4
4
  export declare class Minute {
5
5
  private readonly value;
6
6
  private constructor();
7
- static fromValue(candidate: number): Minute;
8
- static fromValueSafe(candidate: MinuteValueType): Minute;
9
7
  static fromTimestamp(timestamp: Timestamp): Minute;
10
8
  static fromTimestampValue(timestamp: TimestampValueType): Minute;
9
+ static fromValue(candidate: number): Minute;
10
+ static fromValueSafe(candidate: MinuteValueType): Minute;
11
11
  static zero(): Minute;
12
12
  static max(): Minute;
13
13
  get(): MinuteValueType;
@@ -1 +1 @@
1
- {"version":3,"file":"minute.vo.d.ts","sourceRoot":"","sources":["../src/minute.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,MAAM;IACG,OAAO,CAAC,QAAQ,CAAC,KAAK;IAA1C,OAAO;IAEP,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe;IAI/C,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAIlD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM;IAIhE,MAAM,CAAC,IAAI,IAAI,MAAM;IAIrB,MAAM,CAAC,GAAG,IAAI,MAAM;IAIpB,GAAG,IAAI,eAAe;IAItB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjC,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC;IAIpC,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;CAGjB"}
1
+ {"version":3,"file":"minute.vo.d.ts","sourceRoot":"","sources":["../src/minute.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,MAAM;IACG,OAAO,CAAC,QAAQ,CAAC,KAAK;IAA1C,OAAO;IAEP,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAMlD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM;IAIhE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe;IAI/C,MAAM,CAAC,IAAI,IAAI,MAAM;IAIrB,MAAM,CAAC,GAAG,IAAI,MAAM;IAIpB,GAAG,IAAI,eAAe;IAItB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjC,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC;IAIpC,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;CAGjB"}
package/dist/minute.vo.js CHANGED
@@ -6,18 +6,19 @@ export class Minute {
6
6
  constructor(value) {
7
7
  this.value = value;
8
8
  }
9
+ static fromTimestamp(timestamp) {
10
+ const { minute } = timestamp.toInstant().toZonedDateTimeISO("UTC");
11
+ return new Minute(v.parse(MinuteValue, minute));
12
+ }
13
+ static fromTimestampValue(timestamp) {
14
+ return Minute.fromTimestamp(Timestamp.fromValue(timestamp));
15
+ }
9
16
  static fromValue(candidate) {
10
17
  return new Minute(v.parse(MinuteValue, candidate));
11
18
  }
12
19
  static fromValueSafe(candidate) {
13
20
  return new Minute(candidate);
14
21
  }
15
- static fromTimestamp(timestamp) {
16
- return new Minute(v.parse(MinuteValue, new Date(timestamp.ms).getUTCMinutes()));
17
- }
18
- static fromTimestampValue(timestamp) {
19
- return Minute.fromTimestamp(Timestamp.fromValue(timestamp));
20
- }
21
22
  static zero() {
22
23
  return Minute.fromValue(0);
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"minute.vo.js","sourceRoot":"","sources":["../src/minute.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,OAAO,MAAM;IACoB;IAArC,YAAqC,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAE/D,MAAM,CAAC,SAAS,CAAC,SAAiB;QAChC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAA0B;QAC7C,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"minute.vo.js","sourceRoot":"","sources":["../src/minute.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,OAAO,MAAM;IACoB;IAArC,YAAqC,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAE/D,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAEnE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,SAAiB;QAChC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAA0B;QAC7C,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,IAAI;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -5,13 +5,13 @@ import { Timestamp } from "./timestamp.vo";
5
5
  import type { TimestampValueType } from "./timestamp-value.vo";
6
6
  export declare class Month extends DateRange {
7
7
  static fromTimestamp(timestamp: Timestamp): Month;
8
- static fromTimestampValue(timestamp: TimestampValueType): Month;
8
+ static fromTimestampValue(value: TimestampValueType): Month;
9
9
  static fromNow(now: Timestamp): Month;
10
10
  static fromIsoId(iso: MonthIsoIdType): Month;
11
11
  toIsoId(): MonthIsoIdType;
12
12
  previous(): Month;
13
13
  next(): Month;
14
- shift(count: IntegerType): Month;
14
+ shift(months: IntegerType): Month;
15
15
  toString(): string;
16
16
  }
17
17
  //# sourceMappingURL=month.vo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"month.vo.d.ts","sourceRoot":"","sources":["../src/month.vo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,KAAM,SAAQ,SAAS;IAClC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK;IAOjD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,KAAK;IAI/D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,KAAK;IAIrC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,KAAK;IAQ5C,OAAO,IAAI,cAAc;IAIzB,QAAQ,IAAI,KAAK;IAIjB,IAAI,IAAI,KAAK;IAIb,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK;IAQhC,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"month.vo.d.ts","sourceRoot":"","sources":["../src/month.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,KAAM,SAAQ,SAAS;IAClC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK;IAYjD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK;IAI3D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,KAAK;IAIrC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,KAAK;IAQ5C,OAAO,IAAI,cAAc;IAMzB,QAAQ,IAAI,KAAK;IAIjB,IAAI,IAAI,KAAK;IAIb,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK;IAQjC,QAAQ,IAAI,MAAM;CAGnB"}
package/dist/month.vo.js CHANGED
@@ -1,28 +1,30 @@
1
- import { endOfMonth, format, startOfMonth } from "date-fns";
2
1
  import * as v from "valibot";
3
2
  import { DateRange } from "./date-range.vo";
4
3
  import { Int } from "./int.vo";
5
4
  import { MonthIsoId } from "./month-iso-id.vo";
5
+ import { Temporal } from "./temporal";
6
6
  import { Timestamp } from "./timestamp.vo";
7
7
  export class Month extends DateRange {
8
8
  static fromTimestamp(timestamp) {
9
- const start = Timestamp.fromNumber(startOfMonth(timestamp.ms).getTime());
10
- const end = Timestamp.fromNumber(endOfMonth(timestamp.ms).getTime());
11
- return new Month(start, end);
9
+ const plain = timestamp.toInstant().toZonedDateTimeISO("UTC").toPlainDate();
10
+ const start = plain.with({ day: 1 });
11
+ const end = plain.with({ day: 1 }).add({ months: 1 });
12
+ return new Month(Timestamp.fromInstant(start.toZonedDateTime("UTC").toInstant()), Timestamp.fromInstant(end.toZonedDateTime("UTC").toInstant().subtract({ milliseconds: 1 })));
12
13
  }
13
- static fromTimestampValue(timestamp) {
14
- return Month.fromTimestamp(Timestamp.fromValue(timestamp));
14
+ static fromTimestampValue(value) {
15
+ return Month.fromTimestamp(Timestamp.fromValue(value));
15
16
  }
16
17
  static fromNow(now) {
17
18
  return Month.fromTimestamp(now);
18
19
  }
19
20
  static fromIsoId(iso) {
20
21
  const [year, month] = v.parse(MonthIsoId, iso).split("-").map(Number);
21
- const reference = Timestamp.fromNumber(Date.UTC(year, month - 1, 1));
22
- return Month.fromTimestamp(reference);
22
+ const plain = Temporal.PlainDate.from({ year, month, day: 1 });
23
+ return Month.fromTimestamp(Timestamp.fromInstant(plain.toZonedDateTime("UTC").toInstant()));
23
24
  }
24
25
  toIsoId() {
25
- return v.parse(MonthIsoId, format(this.getStart().ms, "yyyy-MM"));
26
+ const { year, month } = this.getStart().toInstant().toZonedDateTimeISO("UTC");
27
+ return v.parse(MonthIsoId, `${year}-${String(month).padStart(2, "0")}`);
26
28
  }
27
29
  previous() {
28
30
  return this.shift(Int.of(-1));
@@ -30,9 +32,9 @@ export class Month extends DateRange {
30
32
  next() {
31
33
  return this.shift(Int.of(1));
32
34
  }
33
- shift(count) {
34
- const start = new Date(this.getStart().ms);
35
- return Month.fromTimestamp(Timestamp.fromNumber(Date.UTC(start.getUTCFullYear(), start.getUTCMonth() + count, 1)));
35
+ shift(months) {
36
+ const plain = this.getStart().toInstant().toZonedDateTimeISO("UTC").toPlainDate();
37
+ return Month.fromTimestamp(Timestamp.fromInstant(plain.add({ months }).toZonedDateTime("UTC").toInstant()));
36
38
  }
37
39
  toString() {
38
40
  return this.toIsoId();
@@ -1 +1 @@
1
- {"version":3,"file":"month.vo.js","sourceRoot":"","sources":["../src/month.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAuB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,OAAO,KAAM,SAAQ,SAAS;IAClC,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAErE,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAc;QAC3B,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAmB;QAClC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqB,CAAC;QAE1F,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAErE,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACL,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAkB;QACtB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAE3C,OAAO,KAAK,CAAC,aAAa,CACxB,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CACvF,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"month.vo.js","sourceRoot":"","sources":["../src/month.vo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"quarter.vo.d.ts","sourceRoot":"","sources":["../src/quarter.vo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,OAAQ,SAAQ,SAAS;IACpC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAOnD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO;IAIjE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAIvC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAMlD,OAAO,IAAI,gBAAgB;IAO3B,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"quarter.vo.d.ts","sourceRoot":"","sources":["../src/quarter.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,OAAQ,SAAQ,SAAS;IACpC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAenD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO;IAIjE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAIvC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAQlD,OAAO,IAAI,gBAAgB;IAO3B,QAAQ,IAAI,MAAM;CAGnB"}
@@ -1,13 +1,20 @@
1
- import { endOfQuarter, getQuarter, getYear, startOfQuarter } from "date-fns";
2
1
  import * as v from "valibot";
3
2
  import { DateRange } from "./date-range.vo";
4
3
  import { QuarterIsoId } from "./quarter-iso-id.vo";
4
+ import { Temporal } from "./temporal";
5
5
  import { Timestamp } from "./timestamp.vo";
6
6
  export class Quarter extends DateRange {
7
7
  static fromTimestamp(timestamp) {
8
- const start = Timestamp.fromNumber(startOfQuarter(timestamp.ms).getTime());
9
- const end = Timestamp.fromNumber(endOfQuarter(timestamp.ms).getTime());
10
- return new Quarter(start, end);
8
+ const plain = timestamp.toInstant().toZonedDateTimeISO("UTC").toPlainDate();
9
+ const start = Temporal.PlainDate.from({
10
+ year: plain.year,
11
+ month: Math.ceil(plain.month / 3) * 3 - 2,
12
+ day: 1,
13
+ })
14
+ .toZonedDateTime("UTC")
15
+ .startOfDay();
16
+ const end = start.add({ months: 3 }).subtract({ milliseconds: 1 });
17
+ return new Quarter(Timestamp.fromInstant(start.toInstant()), Timestamp.fromInstant(end.toInstant()));
11
18
  }
12
19
  static fromTimestampValue(timestamp) {
13
20
  return Quarter.fromTimestamp(Timestamp.fromValue(timestamp));
@@ -17,12 +24,13 @@ export class Quarter extends DateRange {
17
24
  }
18
25
  static fromIsoId(isoId) {
19
26
  const [year, quarter] = v.parse(QuarterIsoId, isoId).split("-Q").map(Number);
20
- return Quarter.fromTimestamp(Timestamp.fromNumber(Date.UTC(year, (quarter - 1) * 3, 1)));
27
+ const plain = Temporal.PlainDate.from({ year, month: (quarter - 1) * 3 + 1, day: 1 });
28
+ return Quarter.fromTimestamp(Timestamp.fromInstant(plain.toZonedDateTime("UTC").toInstant()));
21
29
  }
22
30
  toIsoId() {
23
- const year = getYear(this.getStart().ms);
24
- const quarter = getQuarter(this.getStart().ms);
25
- return v.parse(QuarterIsoId, `${year}-Q${quarter}`);
31
+ const plain = this.getStart().toInstant().toZonedDateTimeISO("UTC").toPlainDate();
32
+ const quarter = Math.ceil(plain.month / 3);
33
+ return v.parse(QuarterIsoId, `${plain.year}-Q${quarter}`);
26
34
  }
27
35
  toString() {
28
36
  return this.toIsoId();
@@ -1 +1 @@
1
- {"version":3,"file":"quarter.vo.js","sourceRoot":"","sources":["../src/quarter.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAyB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,OAAO,OAAQ,SAAQ,SAAS;IACpC,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvE,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAc;QAC3B,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAuB;QACtC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqB,CAAC;QAEjG,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAE/C,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"quarter.vo.js","sourceRoot":"","sources":["../src/quarter.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAyB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,OAAO,OAAQ,SAAQ,SAAS;IACpC,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAE5E,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;YACpC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YACzC,GAAG,EAAE,CAAC;SACP,CAAC;aACC,eAAe,CAAC,KAAK,CAAC;aACtB,UAAU,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAc;QAC3B,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAuB;QACtC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqB,CAAC;QAEjG,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtF,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAE3C,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from "temporal-polyfill";
2
+ //# sourceMappingURL=temporal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../src/temporal.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "temporal-polyfill";
2
+ //# sourceMappingURL=temporal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal.js","sourceRoot":"","sources":["../src/temporal.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { Duration } from "./duration.service";
2
+ import { Temporal } from "./temporal";
2
3
  import { type TimestampValueType } from "./timestamp-value.vo";
3
4
  export declare class Timestamp {
4
5
  private readonly value;
5
6
  constructor(value: TimestampValueType);
7
+ static fromInstant(instant: Temporal.Instant): Timestamp;
8
+ static fromString(value: string): Timestamp;
6
9
  static fromValue(value: TimestampValueType): Timestamp;
7
10
  static fromNumber(value: number): Timestamp;
8
- static fromDate(value: Date): Timestamp;
9
- static fromDateLike(value: string): Timestamp;
10
11
  add(duration: Duration): Timestamp;
11
12
  subtract(duration: Duration): Timestamp;
12
13
  difference(another: Timestamp): Duration;
@@ -16,6 +17,7 @@ export declare class Timestamp {
16
17
  isAfterOrEqual(another: Timestamp): boolean;
17
18
  equals(another: Timestamp): boolean;
18
19
  get ms(): TimestampValueType;
20
+ toInstant(): Temporal.Instant;
19
21
  toJSON(): TimestampValueType;
20
22
  toString(): string;
21
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.vo.d.ts","sourceRoot":"","sources":["../src/timestamp.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,kBAAkB;IAEtD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS;IAItD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAI3C,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS;IAIvC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAI7C,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS;IAIlC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS;IAIvC,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ;IAIxC,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAIrC,eAAe,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAI5C,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAIpC,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAI3C,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAInC,IAAI,EAAE,IAAI,kBAAkB,CAE3B;IAED,MAAM,IAAI,kBAAkB;IAI5B,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"timestamp.vo.d.ts","sourceRoot":"","sources":["../src/timestamp.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,kBAAkB;IAEtD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,SAAS;IAIxD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAI3C,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS;IAItD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAI3C,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS;IAIlC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS;IAIvC,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ;IAIxC,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAIrC,eAAe,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAI5C,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAIpC,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAI3C,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO;IAInC,IAAI,EAAE,IAAI,kBAAkB,CAE3B;IAED,SAAS,IAAI,QAAQ,CAAC,OAAO;IAI7B,MAAM,IAAI,kBAAkB;IAI5B,QAAQ,IAAI,MAAM;CAGnB"}
@@ -1,23 +1,24 @@
1
1
  import * as v from "valibot";
2
2
  import { Duration } from "./duration.service";
3
+ import { Temporal } from "./temporal";
3
4
  import { TimestampValue } from "./timestamp-value.vo";
4
5
  export class Timestamp {
5
6
  value;
6
7
  constructor(value) {
7
8
  this.value = value;
8
9
  }
10
+ static fromInstant(instant) {
11
+ return Timestamp.fromNumber(instant.epochMilliseconds);
12
+ }
13
+ static fromString(value) {
14
+ return Timestamp.fromInstant(Temporal.Instant.from(value));
15
+ }
9
16
  static fromValue(value) {
10
17
  return new Timestamp(value);
11
18
  }
12
19
  static fromNumber(value) {
13
20
  return new Timestamp(v.parse(TimestampValue, value));
14
21
  }
15
- static fromDate(value) {
16
- return Timestamp.fromNumber(value.getTime());
17
- }
18
- static fromDateLike(value) {
19
- return Timestamp.fromNumber(new Date(value).getTime());
20
- }
21
22
  add(duration) {
22
23
  return Timestamp.fromNumber(this.value + duration.ms);
23
24
  }
@@ -45,6 +46,9 @@ export class Timestamp {
45
46
  get ms() {
46
47
  return this.value;
47
48
  }
49
+ toInstant() {
50
+ return Temporal.Instant.fromEpochMilliseconds(this.value);
51
+ }
48
52
  toJSON() {
49
53
  return this.value;
50
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.vo.js","sourceRoot":"","sources":["../src/timestamp.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAC;AAE/E,MAAM,OAAO,SAAS;IACS;IAA7B,YAA6B,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;IAAG,CAAC;IAE1D,MAAM,CAAC,SAAS,CAAC,KAAyB;QACxC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAAa;QAC7B,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAW;QACzB,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAa;QAC/B,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,GAAG,CAAC,QAAkB;QACpB,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ,CAAC,QAAkB;QACzB,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,UAAU,CAAC,OAAkB;QAC3B,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,OAAkB;QACzB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,OAAkB;QAChC,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,OAAkB;QACxB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,OAAkB;QAC/B,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,OAAkB;QACvB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"timestamp.vo.js","sourceRoot":"","sources":["../src/timestamp.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAC;AAE/E,MAAM,OAAO,SAAS;IACS;IAA7B,YAA6B,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;IAAG,CAAC;IAE1D,MAAM,CAAC,WAAW,CAAC,OAAyB;QAC1C,OAAO,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAAa;QAC7B,OAAO,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAyB;QACxC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAAa;QAC7B,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,QAAkB;QACpB,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ,CAAC,QAAkB;QACzB,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,UAAU,CAAC,OAAkB;QAC3B,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,OAAkB;QACzB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,OAAkB;QAChC,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,OAAkB;QACxB,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,OAAkB;QAC/B,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,OAAkB;QACvB,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,SAAS;QACP,OAAO,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"timezone.vo.d.ts","sourceRoot":"","sources":["../src/timezone.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,eAAO,MAAM,aAAa;;;;;CAKzB,CAAC;AAEF,eAAO,MAAM,QAAQ,qMAcpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"timezone.vo.d.ts","sourceRoot":"","sources":["../src/timezone.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAG7B,eAAO,MAAM,aAAa;;;;;CAKzB,CAAC;AAEF,eAAO,MAAM,QAAQ,qMAcpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import * as v from "valibot";
2
+ import { Temporal } from "../src/temporal";
2
3
  export const TimezoneError = {
3
4
  Type: "timezone.type",
4
5
  Empty: "timezone.empty",
@@ -7,7 +8,7 @@ export const TimezoneError = {
7
8
  };
8
9
  export const Timezone = v.pipe(v.string(TimezoneError.Type), v.minLength(1, TimezoneError.Empty), v.maxLength(128, TimezoneError.TooLong), v.check((value) => {
9
10
  try {
10
- new Intl.DateTimeFormat("en-US", { timeZone: value }).format(Date.now());
11
+ Temporal.ZonedDateTime.from(`1970-01-01T00:00:00[${value}]`);
11
12
  return true;
12
13
  }
13
14
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"timezone.vo.js","sourceRoot":"","sources":["../src/timezone.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,kBAAkB;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC5B,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EACvC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC;AACzB,0CAA0C;AAC1C,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CACpB,CAAC"}
1
+ {"version":3,"file":"timezone.vo.js","sourceRoot":"","sources":["../src/timezone.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,kBAAkB;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC5B,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EACvC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,IAAI,CAAC;QACH,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,KAAK,GAAG,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC;AACzB,0CAA0C;AAC1C,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"week-iso-id.vo.d.ts","sourceRoot":"","sources":["../src/week-iso-id.vo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,eAAO,MAAM,cAAc;;;;CAI1B,CAAC;AAKF,eAAO,MAAM,SAAS,uJAYrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"week-iso-id.vo.d.ts","sourceRoot":"","sources":["../src/week-iso-id.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAG7B,eAAO,MAAM,cAAc;;;;CAI1B,CAAC;AAKF,eAAO,MAAM,SAAS,uJAerB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { getISOWeeksInYear } from "date-fns";
2
1
  import * as v from "valibot";
2
+ import { Temporal } from "./temporal";
3
3
  export const WeekIsoIdError = {
4
4
  Type: "week.iso.id.type",
5
5
  BadChars: "week.iso.id.bad.chars",
@@ -9,9 +9,10 @@ export const WeekIsoIdError = {
9
9
  const WEEK_ISO_ID_CHARS_WHITELIST = /^[0-9]{4}-W[0-9]{2}$/;
10
10
  export const WeekIsoId = v.pipe(v.string(WeekIsoIdError.Type), v.regex(WEEK_ISO_ID_CHARS_WHITELIST, WeekIsoIdError.BadChars), v.check((value) => {
11
11
  const [year, week] = value.split("-W").map(Number);
12
- // ISO-8601 rule: Jan 4 is always in week 01 of the ISO week-year.
13
- const weeksInYear = getISOWeeksInYear(Date.UTC(year, 0, 4));
14
- if (week < 1)
12
+ if (isNaN(year) || isNaN(week) || week < 1)
13
+ return false;
14
+ const weeksInYear = Temporal.PlainDate.from({ year, month: 12, day: 28 }).weekOfYear;
15
+ if (!weeksInYear)
15
16
  return false;
16
17
  return week <= weeksInYear;
17
18
  }, WeekIsoIdError.Invalid),
@@ -1 +1 @@
1
- {"version":3,"file":"week-iso-id.vo.js","sourceRoot":"","sources":["../src/week-iso-id.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,uBAAuB;IACjC,OAAO,EAAE,qBAAqB;CAC/B,CAAC;AAEF,gDAAgD;AAChD,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAE3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAC7B,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAC7B,CAAC,CAAC,KAAK,CAAC,2BAA2B,EAAE,cAAc,CAAC,QAAQ,CAAC,EAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqB,CAAC;IACvE,kEAAkE;IAClE,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,IAAI,IAAI,WAAW,CAAC;AAC7B,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC;AAC1B,0CAA0C;AAC1C,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CACrB,CAAC"}
1
+ {"version":3,"file":"week-iso-id.vo.js","sourceRoot":"","sources":["../src/week-iso-id.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,uBAAuB;IACjC,OAAO,EAAE,qBAAqB;CAC/B,CAAC;AAEF,gDAAgD;AAChD,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAE3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAC7B,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAC7B,CAAC,CAAC,KAAK,CAAC,2BAA2B,EAAE,cAAc,CAAC,QAAQ,CAAC,EAC7D,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqB,CAAC;IAEvE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC;IAErF,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,IAAI,IAAI,WAAW,CAAC;AAC7B,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC;AAC1B,0CAA0C;AAC1C,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"week.vo.d.ts","sourceRoot":"","sources":["../src/week.vo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjE,qBAAa,IAAK,SAAQ,SAAS;IACjC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAOhD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAI9D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAIpC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAU5C,OAAO,IAAI,aAAa;IAOxB,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;IAIZ,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM/B,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"week.vo.d.ts","sourceRoot":"","sources":["../src/week.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjE,qBAAa,IAAK,SAAQ,SAAS;IACjC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAYhD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAI9D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAIpC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAiB5C,OAAO,IAAI,aAAa;IAMxB,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;IAIZ,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAY/B,QAAQ,IAAI,MAAM;CAGnB"}
package/dist/week.vo.js CHANGED
@@ -1,15 +1,18 @@
1
- import { addWeeks, endOfISOWeek, getISOWeek, getISOWeekYear, startOfISOWeek } from "date-fns";
2
1
  import * as v from "valibot";
3
2
  import { DateRange } from "./date-range.vo";
4
- import { Duration } from "./duration.service";
5
3
  import { Int } from "./int.vo";
4
+ import { Temporal } from "./temporal";
6
5
  import { Timestamp } from "./timestamp.vo";
7
6
  import { WeekIsoId } from "./week-iso-id.vo";
8
7
  export class Week extends DateRange {
9
8
  static fromTimestamp(timestamp) {
10
- const start = Timestamp.fromNumber(startOfISOWeek(timestamp.ms).getTime());
11
- const end = Timestamp.fromNumber(endOfISOWeek(timestamp.ms).getTime());
12
- return new Week(start, end);
9
+ const plain = timestamp.toInstant().toZonedDateTimeISO("UTC").toPlainDate();
10
+ const start = plain
11
+ .subtract({ days: plain.dayOfWeek - 1 })
12
+ .toZonedDateTime("UTC")
13
+ .startOfDay();
14
+ const end = start.add({ days: 7 }).subtract({ milliseconds: 1 });
15
+ return new Week(Timestamp.fromInstant(start.toInstant()), Timestamp.fromInstant(end.toInstant()));
13
16
  }
14
17
  static fromTimestampValue(timestamp) {
15
18
  return Week.fromTimestamp(Timestamp.fromValue(timestamp));
@@ -19,15 +22,16 @@ export class Week extends DateRange {
19
22
  }
20
23
  static fromIsoId(isoId) {
21
24
  const [year, week] = v.parse(WeekIsoId, isoId).split("-W").map(Number);
22
- // ISO-8601 rule: Jan 4 is always in week 01 of the ISO week-year.
23
- const januaryFourth = Timestamp.fromNumber(Date.UTC(year, 0, 4));
24
- const firstWeekStart = Timestamp.fromNumber(startOfISOWeek(januaryFourth.ms).getTime());
25
- return Week.fromTimestamp(firstWeekStart.add(Duration.Weeks(week - 1)));
25
+ const januaryFourth = Temporal.PlainDate.from({ year, month: 1, day: 4 });
26
+ const start = januaryFourth.subtract({ days: januaryFourth.dayOfWeek - 1 });
27
+ return Week.fromTimestamp(Timestamp.fromInstant(start
28
+ .add({ weeks: week - 1 })
29
+ .toZonedDateTime("UTC")
30
+ .toInstant()));
26
31
  }
27
32
  toIsoId() {
28
- const year = getISOWeekYear(this.getStart().ms);
29
- const week = getISOWeek(this.getStart().ms);
30
- return v.parse(WeekIsoId, `${year}-W${String(week).padStart(2, "0")}`);
33
+ const plain = this.getStart().toInstant().toZonedDateTimeISO("UTC").toPlainDate();
34
+ return v.parse(WeekIsoId, `${plain.yearOfWeek}-W${String(plain.weekOfYear).padStart(2, "0")}`);
31
35
  }
32
36
  previous() {
33
37
  return this.shift(Int.of(-1));
@@ -36,8 +40,14 @@ export class Week extends DateRange {
36
40
  return this.shift(Int.of(1));
37
41
  }
38
42
  shift(count) {
39
- const shifted = addWeeks(this.getStart().ms, count).getTime();
40
- return Week.fromTimestamp(Timestamp.fromNumber(shifted));
43
+ const instant = this.getStart()
44
+ .toInstant()
45
+ .toZonedDateTimeISO("UTC")
46
+ .toPlainDate()
47
+ .add({ weeks: count })
48
+ .toZonedDateTime("UTC")
49
+ .toInstant();
50
+ return Week.fromTimestamp(Timestamp.fromInstant(instant));
41
51
  }
42
52
  toString() {
43
53
  return this.toIsoId();
@@ -1 +1 @@
1
- {"version":3,"file":"week.vo.js","sourceRoot":"","sources":["../src/week.vo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"week.vo.js","sourceRoot":"","sources":["../src/week.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AAEjE,MAAM,OAAO,IAAK,SAAQ,SAAS;IACjC,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAE5E,MAAM,KAAK,GAAG,KAAK;aAChB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;aACvC,eAAe,CAAC,KAAK,CAAC;aACtB,UAAU,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;QAEjE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAc;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAoB;QACnC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqB,CAAC;QAE3F,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;QAE5E,OAAO,IAAI,CAAC,aAAa,CACvB,SAAS,CAAC,WAAW,CACnB,KAAK;aACF,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;aACxB,eAAe,CAAC,KAAK,CAAC;aACtB,SAAS,EAAE,CACf,CACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAElF,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAkB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;aAC5B,SAAS,EAAE;aACX,kBAAkB,CAAC,KAAK,CAAC;aACzB,WAAW,EAAE;aACb,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aACrB,eAAe,CAAC,KAAK,CAAC;aACtB,SAAS,EAAE,CAAC;QAEf,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"weekday.vo.d.ts","sourceRoot":"","sources":["../src/weekday.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,qBAAa,OAAO;IASE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAR1C,MAAM,CAAC,QAAQ,CAAC,MAAM,UAA+C;IACrE,MAAM,CAAC,QAAQ,CAAC,OAAO,UAA+C;IACtE,MAAM,CAAC,QAAQ,CAAC,SAAS,UAA+C;IACxE,MAAM,CAAC,QAAQ,CAAC,QAAQ,UAA+C;IACvE,MAAM,CAAC,QAAQ,CAAC,MAAM,UAA+C;IACrE,MAAM,CAAC,QAAQ,CAAC,QAAQ,UAA+C;IACvE,MAAM,CAAC,QAAQ,CAAC,MAAM,UAA+C;IAErE,OAAO;IAEP,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAOnD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO;IAIjE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO;IAIhD,GAAG,IAAI,gBAAgB;IAIvB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIjC,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,OAAO;IAInB,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"weekday.vo.d.ts","sourceRoot":"","sources":["../src/weekday.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,qBAAa,OAAO;IASE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAR1C,MAAM,CAAC,QAAQ,CAAC,MAAM,UAA+C;IACrE,MAAM,CAAC,QAAQ,CAAC,OAAO,UAA+C;IACtE,MAAM,CAAC,QAAQ,CAAC,SAAS,UAA+C;IACxE,MAAM,CAAC,QAAQ,CAAC,QAAQ,UAA+C;IACvE,MAAM,CAAC,QAAQ,CAAC,MAAM,UAA+C;IACrE,MAAM,CAAC,QAAQ,CAAC,QAAQ,UAA+C;IACvE,MAAM,CAAC,QAAQ,CAAC,MAAM,UAA+C;IAErE,OAAO;IAEP,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAMnD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO;IAIjE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO;IAIhD,GAAG,IAAI,gBAAgB;IAIvB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIjC,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,OAAO;IAInB,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAGnB"}
@@ -14,9 +14,8 @@ export class Weekday {
14
14
  this.value = value;
15
15
  }
16
16
  static fromTimestamp(timestamp) {
17
- // UTC returns numbers from 0-6, starting from Sunday
18
- const utc = new Date(timestamp.ms).getUTCDay();
19
- return new Weekday(v.parse(WeekdayIsoId, utc === 0 ? 7 : utc));
17
+ const { dayOfWeek } = timestamp.toInstant().toZonedDateTimeISO("UTC").toPlainDate();
18
+ return new Weekday(v.parse(WeekdayIsoId, dayOfWeek));
20
19
  }
21
20
  static fromTimestampValue(timestamp) {
22
21
  return Weekday.fromTimestamp(Timestamp.fromValue(timestamp));
@@ -1 +1 @@
1
- {"version":3,"file":"weekday.vo.js","sourceRoot":"","sources":["../src/weekday.vo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"weekday.vo.js","sourceRoot":"","sources":["../src/weekday.vo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"year.vo.d.ts","sourceRoot":"","sources":["../src/year.vo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjE,qBAAa,IAAK,SAAQ,SAAS;IACjC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAOhD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAI9D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAIpC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAS5C,OAAO,IAAI,aAAa;IAIxB,UAAU,IAAI,OAAO;IAQrB,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;IAIZ,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM/B,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"year.vo.d.ts","sourceRoot":"","sources":["../src/year.vo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjE,qBAAa,IAAK,SAAQ,SAAS;IACjC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAYhD,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAI9D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAIpC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAU5C,OAAO,IAAI,aAAa;IAIxB,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;IAIZ,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM/B,QAAQ,IAAI,MAAM;CAGnB"}
package/dist/year.vo.js CHANGED
@@ -1,14 +1,15 @@
1
- import { endOfYear, getYear, startOfYear } from "date-fns";
2
1
  import * as v from "valibot";
3
2
  import { DateRange } from "./date-range.vo";
4
3
  import { Int } from "./int.vo";
4
+ import { Temporal } from "./temporal";
5
5
  import { Timestamp } from "./timestamp.vo";
6
6
  import { YearIsoId } from "./year-iso-id.vo";
7
7
  export class Year extends DateRange {
8
8
  static fromTimestamp(timestamp) {
9
- const start = Timestamp.fromNumber(startOfYear(timestamp.ms).getTime());
10
- const end = Timestamp.fromNumber(endOfYear(timestamp.ms).getTime());
11
- return new Year(start, end);
9
+ const year = timestamp.toInstant().toZonedDateTimeISO("UTC").toPlainDate().year;
10
+ const start = Temporal.PlainDate.from({ year, month: 1, day: 1 });
11
+ const end = Temporal.PlainDate.from({ year: year + 1, month: 1, day: 1 });
12
+ return new Year(Timestamp.fromInstant(start.toZonedDateTime("UTC").toInstant()), Timestamp.fromInstant(end.toZonedDateTime("UTC").toInstant().subtract({ milliseconds: 1 })));
12
13
  }
13
14
  static fromTimestampValue(timestamp) {
14
15
  return Year.fromTimestamp(Timestamp.fromValue(timestamp));
@@ -20,19 +21,15 @@ export class Year extends DateRange {
20
21
  return Year.fromIsoId(v.parse(YearIsoId, String(candidate)));
21
22
  }
22
23
  static fromIsoId(isoId) {
23
- const year = Number(isoId);
24
- return new Year(Timestamp.fromNumber(Date.UTC(year, 0, 1)), Timestamp.fromNumber(Date.UTC(year + 1, 0, 1) - 1));
24
+ return Year.fromTimestamp(Timestamp.fromInstant(Temporal.PlainDate.from({ year: Number(isoId), month: 1, day: 1 })
25
+ .toZonedDateTime("UTC")
26
+ .toInstant()));
25
27
  }
26
28
  toIsoId() {
27
- return v.parse(YearIsoId, String(getYear(this.getStart().ms)));
29
+ return v.parse(YearIsoId, this.getStart().toInstant().toZonedDateTimeISO("UTC").year.toString());
28
30
  }
29
31
  isLeapYear() {
30
- const year = getYear(this.getStart().ms);
31
- if (year % 400 === 0)
32
- return true;
33
- if (year % 100 === 0)
34
- return false;
35
- return year % 4 === 0;
32
+ return this.getStart().toInstant().toZonedDateTimeISO("UTC").toPlainDate().inLeapYear;
36
33
  }
37
34
  previous() {
38
35
  return this.shift(Int.of(-1));
@@ -41,7 +38,7 @@ export class Year extends DateRange {
41
38
  return this.shift(Int.of(1));
42
39
  }
43
40
  shift(count) {
44
- const year = getYear(this.getStart().ms) + count;
41
+ const year = this.getStart().toInstant().toZonedDateTimeISO("UTC").year + count;
45
42
  return Year.fromNumber(year);
46
43
  }
47
44
  toString() {
@@ -1 +1 @@
1
- {"version":3,"file":"year.vo.js","sourceRoot":"","sources":["../src/year.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AAEjE,MAAM,OAAO,IAAK,SAAQ,SAAS;IACjC,MAAM,CAAC,aAAa,CAAC,SAAoB;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAEpE,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAA6B;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAc;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAoB;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3B,OAAO,IAAI,IAAI,CACb,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1C,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CACnD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACnC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAkB;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QAEjD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"year.vo.js","sourceRoot":"","sources":["../src/year.vo.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgord/tools",
3
- "version": "1.4.14",
3
+ "version": "1.4.15",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "Bartosz Gordon",
@@ -26,16 +26,16 @@
26
26
  "@stryker-mutator/core": "9.6.0",
27
27
  "@stryker-mutator/typescript-checker": "9.6.0",
28
28
  "@types/bun": "1.3.11",
29
- "cspell": "9.7.0",
30
- "knip": "6.2.0",
31
- "lefthook": "2.1.4",
29
+ "cspell": "10.0.0",
30
+ "knip": "6.3.0",
31
+ "lefthook": "2.1.5",
32
32
  "lockfile-lint": "5.0.0",
33
33
  "only-allow": "1.2.2",
34
34
  "shellcheck": "4.1.0",
35
35
  "typescript": "6.0.2"
36
36
  },
37
37
  "dependencies": {
38
- "date-fns": "4.1.0",
38
+ "temporal-polyfill": "0.3.2",
39
39
  "valibot": "1.3.1"
40
40
  },
41
41
  "sideEffects": false
package/readme.md CHANGED
@@ -29,8 +29,6 @@ src/
29
29
  ├── api-key.vo.ts
30
30
  ├── basename.vo.ts
31
31
  ├── batch.ts
32
- ├── date-calculator.service.ts
33
- ├── date-formatter.service.ts
34
32
  ├── date-range.vo.ts
35
33
  ├── day-iso-id.vo.ts
36
34
  ├── day.vo.ts
@@ -100,7 +98,6 @@ src/
100
98
  ├── quarter.vo.ts
101
99
  ├── random.service.ts
102
100
  ├── rate-limiter.service.ts
103
- ├── relative-date.vo.ts
104
101
  ├── reordering-item-position-value.vo.ts
105
102
  ├── reordering.service.ts
106
103
  ├── repeat.ts
@@ -118,6 +115,7 @@ src/
118
115
  ├── sms-message.vo.ts
119
116
  ├── sum.service.ts
120
117
  ├── telephone-number.vo.ts
118
+ ├── temporal.ts
121
119
  ├── thousands-separator.service.ts
122
120
  ├── time-zone-offset-value.vo.ts
123
121
  ├── timestamp-value.vo.ts
@@ -1,11 +0,0 @@
1
- import { Duration } from "./duration.service";
2
- import { Timestamp } from "./timestamp.vo";
3
- type GetStartOfDayTsInTzConfigType = {
4
- now: Timestamp;
5
- timeZoneOffset: Duration;
6
- };
7
- export declare class DateCalculator {
8
- static getStartOfDayTsInTz(config: GetStartOfDayTsInTzConfigType): Timestamp;
9
- }
10
- export {};
11
- //# sourceMappingURL=date-calculator.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-calculator.service.d.ts","sourceRoot":"","sources":["../src/date-calculator.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,KAAK,6BAA6B,GAAG;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,QAAQ,CAAA;CAAE,CAAC;AAElF,qBAAa,cAAc;IACzB,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,6BAA6B,GAAG,SAAS;CAW7E"}
@@ -1,13 +0,0 @@
1
- import { Duration } from "./duration.service";
2
- import { Timestamp } from "./timestamp.vo";
3
- export class DateCalculator {
4
- static getStartOfDayTsInTz(config) {
5
- const dayMs = Duration.Days(1).ms;
6
- const utcMidnightOfNow = Timestamp.fromNumber(Math.floor(config.now.ms / dayMs) * dayMs);
7
- let startOfDayInTz = utcMidnightOfNow.add(config.timeZoneOffset);
8
- if (startOfDayInTz.isAfter(config.now))
9
- startOfDayInTz = startOfDayInTz.subtract(Duration.Days(1));
10
- return startOfDayInTz;
11
- }
12
- }
13
- //# sourceMappingURL=date-calculator.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-calculator.service.js","sourceRoot":"","sources":["../src/date-calculator.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,MAAM,OAAO,cAAc;IACzB,MAAM,CAAC,mBAAmB,CAAC,MAAqC;QAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAElC,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;QAEzF,IAAI,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAEjE,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnG,OAAO,cAAc,CAAC;IACxB,CAAC;CACF"}
@@ -1,10 +0,0 @@
1
- import { format } from "date-fns";
2
- type DateFormattersInputType = Parameters<typeof format>[0];
3
- export declare class DateFormatters {
4
- static datetime(date: DateFormattersInputType): string;
5
- static date(date: DateFormattersInputType): string;
6
- static monthDay(date: DateFormattersInputType): string;
7
- static relative(date: DateFormattersInputType): string;
8
- }
9
- export {};
10
- //# sourceMappingURL=date-formatter.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-formatter.service.d.ts","sourceRoot":"","sources":["../src/date-formatter.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,UAAU,CAAC;AAEvD,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM;IAItD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM;IAIlD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM;IAItD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM;CAGvD"}
@@ -1,16 +0,0 @@
1
- import { format, formatDistanceToNow } from "date-fns";
2
- export class DateFormatters {
3
- static datetime(date) {
4
- return format(date, "yyyy/MM/dd HH:mm");
5
- }
6
- static date(date) {
7
- return format(date, "yyyy/MM/dd");
8
- }
9
- static monthDay(date) {
10
- return format(date, "MM/dd");
11
- }
12
- static relative(date) {
13
- return formatDistanceToNow(date, { addSuffix: true });
14
- }
15
- }
16
- //# sourceMappingURL=date-formatter.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-formatter.service.js","sourceRoot":"","sources":["../src/date-formatter.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAIvD,MAAM,OAAO,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,IAA6B;QAC3C,OAAO,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAA6B;QACvC,OAAO,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAA6B;QAC3C,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAA6B;QAC3C,OAAO,mBAAmB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -1,14 +0,0 @@
1
- import type { Timestamp } from "./timestamp.vo";
2
- import type { TimestampValueType } from "./timestamp-value.vo";
3
- import type { Falsy } from "./ts-utils";
4
- type RelativeDateType = {
5
- raw: TimestampValueType;
6
- relative: string;
7
- };
8
- export declare class RelativeDate {
9
- static truthy(timestamp: Timestamp): RelativeDateType;
10
- static falsy(timestamp: Falsy<Timestamp>): RelativeDateType | null;
11
- private static _format;
12
- }
13
- export {};
14
- //# sourceMappingURL=relative-date.vo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relative-date.vo.d.ts","sourceRoot":"","sources":["../src/relative-date.vo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,KAAK,gBAAgB,GAAG;IAAE,GAAG,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,qBAAa,YAAY;IACvB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB;IAIrD,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,IAAI;IAKlE,OAAO,CAAC,MAAM,CAAC,OAAO;CAGvB"}
@@ -1,15 +0,0 @@
1
- import { DateFormatters } from "./date-formatter.service";
2
- export class RelativeDate {
3
- static truthy(timestamp) {
4
- return RelativeDate._format(timestamp);
5
- }
6
- static falsy(timestamp) {
7
- if (!timestamp)
8
- return null;
9
- return RelativeDate._format(timestamp);
10
- }
11
- static _format(timestamp) {
12
- return { raw: timestamp.ms, relative: DateFormatters.relative(timestamp.ms) };
13
- }
14
- }
15
- //# sourceMappingURL=relative-date.vo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relative-date.vo.js","sourceRoot":"","sources":["../src/relative-date.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,MAAM,CAAC,SAAoB;QAChC,OAAO,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAA2B;QACtC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,OAAO,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,SAAoB;QACzC,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC;CACF"}