@bgord/tools 0.12.3 → 0.12.4
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.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/week-iso-id.vo.d.ts +3 -0
- package/dist/week-iso-id.vo.js +15 -0
- package/dist/week.vo.d.ts +3 -2
- package/dist/week.vo.js +2 -1
- package/package.json +1 -1
- package/readme.md +1 -0
- package/src/index.ts +1 -0
- package/src/week-iso-id.vo.ts +24 -0
- package/src/week.vo.ts +4 -3
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/api-key.vo.ts","../src/build-version.vo.ts","../src/clock.vo.ts","../src/date-calculator.service.ts","../src/date-formatter.service.ts","../src/date-range.vo.ts","../src/dates-of-the-week.vo.ts","../src/dll.service.ts","../src/email-mask.service.ts","../src/etags.vo.ts","../src/feature-flag.vo.ts","../src/filter.vo.ts","../src/hour.vo.ts","../src/iban-mask.service.ts","../src/iban.vo.ts","../src/image.vo.ts","../src/index.ts","../src/language.vo.ts","../src/leap-year-checker.service.ts","../src/mean.service.ts","../src/mime-types.vo.ts","../src/mime.vo.ts","../src/min-max-scaler.service.ts","../src/minute.vo.ts","../src/money.vo.ts","../src/noop.service.ts","../src/outlier-detector.service.ts","../src/package-version.vo.ts","../src/pagination.service.ts","../src/percentage.service.ts","../src/population-standard-deviation.service.ts","../src/random.service.ts","../src/rate-limiter.service.ts","../src/relative-date.vo.ts","../src/reordering.service.ts","../src/revision.vo.ts","../src/rounding.service.ts","../src/simple-linear-regression.service.ts","../src/size.vo.ts","../src/stepper.service.ts","../src/stopwatch.service.ts","../src/streak-calculator.service.ts","../src/sum.service.ts","../src/thousands-separator.service.ts","../src/time-zone-offset-value.vo.ts","../src/time.service.ts","../src/timestamp.vo.ts","../src/timezone.vo.ts","../src/ts-utils.ts","../src/visually-unambiguous-characters-generator.service.ts","../src/week.vo.ts","../src/z-score.service.ts"],"version":"5.8.3"}
|
|
1
|
+
{"root":["../src/api-key.vo.ts","../src/build-version.vo.ts","../src/clock.vo.ts","../src/date-calculator.service.ts","../src/date-formatter.service.ts","../src/date-range.vo.ts","../src/dates-of-the-week.vo.ts","../src/dll.service.ts","../src/email-mask.service.ts","../src/etags.vo.ts","../src/feature-flag.vo.ts","../src/filter.vo.ts","../src/hour.vo.ts","../src/iban-mask.service.ts","../src/iban.vo.ts","../src/image.vo.ts","../src/index.ts","../src/language.vo.ts","../src/leap-year-checker.service.ts","../src/mean.service.ts","../src/mime-types.vo.ts","../src/mime.vo.ts","../src/min-max-scaler.service.ts","../src/minute.vo.ts","../src/money.vo.ts","../src/noop.service.ts","../src/outlier-detector.service.ts","../src/package-version.vo.ts","../src/pagination.service.ts","../src/percentage.service.ts","../src/population-standard-deviation.service.ts","../src/random.service.ts","../src/rate-limiter.service.ts","../src/relative-date.vo.ts","../src/reordering.service.ts","../src/revision.vo.ts","../src/rounding.service.ts","../src/simple-linear-regression.service.ts","../src/size.vo.ts","../src/stepper.service.ts","../src/stopwatch.service.ts","../src/streak-calculator.service.ts","../src/sum.service.ts","../src/thousands-separator.service.ts","../src/time-zone-offset-value.vo.ts","../src/time.service.ts","../src/timestamp.vo.ts","../src/timezone.vo.ts","../src/ts-utils.ts","../src/visually-unambiguous-characters-generator.service.ts","../src/week-iso-id.vo.ts","../src/week.vo.ts","../src/z-score.service.ts"],"version":"5.8.3"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getISOWeeksInYear } from "date-fns";
|
|
2
|
+
import { z } from "zod/v4";
|
|
3
|
+
export const WeekIsoId = z
|
|
4
|
+
.string()
|
|
5
|
+
.regex(/^\d{4}-W\d{2}$/)
|
|
6
|
+
.refine((value) => {
|
|
7
|
+
const [yearPart, weekPart] = value.split("-W");
|
|
8
|
+
const year = Number(yearPart);
|
|
9
|
+
const week = Number(weekPart);
|
|
10
|
+
if (!(Number.isInteger(year) && Number.isInteger(week)) || week < 1)
|
|
11
|
+
return false;
|
|
12
|
+
// Does this ISO week-year actually have that many weeks?
|
|
13
|
+
const weeksInYear = getISOWeeksInYear(new Date(Date.UTC(year, 0, 4)));
|
|
14
|
+
return week <= weeksInYear;
|
|
15
|
+
}, { message: "week-iso-id.invalid" });
|
package/dist/week.vo.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { DateRange } from "./date-range.vo";
|
|
2
2
|
import { TimestampType } from "./timestamp.vo";
|
|
3
|
+
import { WeekIsoIdType } from "./week-iso-id.vo";
|
|
3
4
|
export declare class Week extends DateRange {
|
|
4
5
|
constructor(start: TimestampType, end: TimestampType);
|
|
5
|
-
toIsoId():
|
|
6
|
+
toIsoId(): WeekIsoIdType;
|
|
6
7
|
static fromTimestamp(timestamp: TimestampType): Week;
|
|
7
8
|
static fromNow(now?: TimestampType): Week;
|
|
8
|
-
static fromIsoId(isoId:
|
|
9
|
+
static fromIsoId(isoId: WeekIsoIdType): Week;
|
|
9
10
|
}
|
package/dist/week.vo.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { endOfISOWeek, getISOWeek, getISOWeekYear, setISOWeek, startOfISOWeek } from "date-fns";
|
|
2
2
|
import { DateRange } from "./date-range.vo";
|
|
3
3
|
import { Timestamp } from "./timestamp.vo";
|
|
4
|
+
import { WeekIsoId } from "./week-iso-id.vo";
|
|
4
5
|
export class Week extends DateRange {
|
|
5
6
|
constructor(start, end) {
|
|
6
7
|
super(start, end);
|
|
@@ -19,7 +20,7 @@ export class Week extends DateRange {
|
|
|
19
20
|
return Week.fromTimestamp(now);
|
|
20
21
|
}
|
|
21
22
|
static fromIsoId(isoId) {
|
|
22
|
-
const [yearPart, weekPart] = isoId.split("-W");
|
|
23
|
+
const [yearPart, weekPart] = WeekIsoId.parse(isoId).split("-W");
|
|
23
24
|
const year = Number(yearPart);
|
|
24
25
|
const week = Number(weekPart);
|
|
25
26
|
// ISO-8601 rule: Jan 4 is always in week 01 of the ISO week-year.
|
package/package.json
CHANGED
package/readme.md
CHANGED
package/src/index.ts
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getISOWeeksInYear } from "date-fns";
|
|
2
|
+
import { z } from "zod/v4";
|
|
3
|
+
|
|
4
|
+
export const WeekIsoId = z
|
|
5
|
+
.string()
|
|
6
|
+
.regex(/^\d{4}-W\d{2}$/)
|
|
7
|
+
.refine(
|
|
8
|
+
(value) => {
|
|
9
|
+
const [yearPart, weekPart] = value.split("-W");
|
|
10
|
+
|
|
11
|
+
const year = Number(yearPart);
|
|
12
|
+
const week = Number(weekPart);
|
|
13
|
+
|
|
14
|
+
if (!(Number.isInteger(year) && Number.isInteger(week)) || week < 1) return false;
|
|
15
|
+
|
|
16
|
+
// Does this ISO week-year actually have that many weeks?
|
|
17
|
+
const weeksInYear = getISOWeeksInYear(new Date(Date.UTC(year, 0, 4)));
|
|
18
|
+
|
|
19
|
+
return week <= weeksInYear;
|
|
20
|
+
},
|
|
21
|
+
{ message: "week-iso-id.invalid" },
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
export type WeekIsoIdType = z.infer<typeof WeekIsoId>;
|
package/src/week.vo.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { endOfISOWeek, getISOWeek, getISOWeekYear, setISOWeek, startOfISOWeek } from "date-fns";
|
|
2
2
|
import { DateRange } from "./date-range.vo";
|
|
3
3
|
import { Timestamp, TimestampType } from "./timestamp.vo";
|
|
4
|
+
import { WeekIsoId, WeekIsoIdType } from "./week-iso-id.vo";
|
|
4
5
|
|
|
5
6
|
export class Week extends DateRange {
|
|
6
7
|
constructor(start: TimestampType, end: TimestampType) {
|
|
7
8
|
super(start, end);
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
toIsoId():
|
|
11
|
+
toIsoId(): WeekIsoIdType {
|
|
11
12
|
const year = getISOWeekYear(this.getStart());
|
|
12
13
|
const week = getISOWeek(this.getStart()).toString().padStart(2, "0");
|
|
13
14
|
|
|
@@ -25,8 +26,8 @@ export class Week extends DateRange {
|
|
|
25
26
|
return Week.fromTimestamp(now);
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
static fromIsoId(isoId:
|
|
29
|
-
const [yearPart, weekPart] = isoId.split("-W");
|
|
29
|
+
static fromIsoId(isoId: WeekIsoIdType): Week {
|
|
30
|
+
const [yearPart, weekPart] = WeekIsoId.parse(isoId).split("-W");
|
|
30
31
|
|
|
31
32
|
const year = Number(yearPart);
|
|
32
33
|
const week = Number(weekPart);
|