@simplysm/core-common 13.0.69 → 13.0.71
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/README.md +66 -267
- package/dist/common.types.d.ts +14 -14
- package/dist/errors/argument-error.d.ts +10 -10
- package/dist/errors/argument-error.d.ts.map +1 -1
- package/dist/errors/argument-error.js +2 -2
- package/dist/errors/argument-error.js.map +1 -1
- package/dist/errors/not-implemented-error.d.ts +8 -8
- package/dist/errors/not-implemented-error.js +2 -2
- package/dist/errors/not-implemented-error.js.map +1 -1
- package/dist/errors/sd-error.d.ts +10 -10
- package/dist/errors/sd-error.d.ts.map +1 -1
- package/dist/errors/timeout-error.d.ts +10 -10
- package/dist/errors/timeout-error.js +3 -3
- package/dist/errors/timeout-error.js.map +1 -1
- package/dist/extensions/arr-ext.d.ts +2 -2
- package/dist/extensions/arr-ext.helpers.d.ts +8 -8
- package/dist/extensions/arr-ext.helpers.js +1 -1
- package/dist/extensions/arr-ext.helpers.js.map +1 -1
- package/dist/extensions/arr-ext.js +13 -13
- package/dist/extensions/arr-ext.js.map +1 -1
- package/dist/extensions/arr-ext.types.d.ts +57 -57
- package/dist/extensions/arr-ext.types.d.ts.map +1 -1
- package/dist/extensions/map-ext.d.ts +16 -16
- package/dist/extensions/set-ext.d.ts +11 -11
- package/dist/features/debounce-queue.d.ts +17 -15
- package/dist/features/debounce-queue.d.ts.map +1 -1
- package/dist/features/debounce-queue.js +6 -6
- package/dist/features/debounce-queue.js.map +1 -1
- package/dist/features/event-emitter.d.ts +20 -20
- package/dist/features/event-emitter.js +17 -17
- package/dist/features/serial-queue.d.ts +11 -11
- package/dist/features/serial-queue.js +5 -5
- package/dist/features/serial-queue.js.map +1 -1
- package/dist/globals.d.ts +4 -4
- package/dist/types/date-only.d.ts +64 -64
- package/dist/types/date-only.d.ts.map +1 -1
- package/dist/types/date-only.js +63 -63
- package/dist/types/date-time.d.ts +37 -37
- package/dist/types/date-time.d.ts.map +1 -1
- package/dist/types/date-time.js +54 -37
- package/dist/types/date-time.js.map +1 -1
- package/dist/types/lazy-gc-map.d.ts +26 -26
- package/dist/types/lazy-gc-map.d.ts.map +1 -1
- package/dist/types/lazy-gc-map.js +26 -26
- package/dist/types/lazy-gc-map.js.map +1 -1
- package/dist/types/time.d.ts +25 -25
- package/dist/types/time.d.ts.map +1 -1
- package/dist/types/time.js +25 -25
- package/dist/types/time.js.map +1 -1
- package/dist/types/uuid.d.ts +11 -11
- package/dist/types/uuid.d.ts.map +1 -1
- package/dist/types/uuid.js +12 -12
- package/dist/types/uuid.js.map +1 -1
- package/dist/utils/bytes.d.ts +17 -17
- package/dist/utils/bytes.js +4 -4
- package/dist/utils/bytes.js.map +1 -1
- package/dist/utils/date-format.d.ts +45 -45
- package/dist/utils/date-format.js +1 -1
- package/dist/utils/date-format.js.map +1 -1
- package/dist/utils/error.d.ts +4 -4
- package/dist/utils/json.d.ts +17 -17
- package/dist/utils/json.js +3 -3
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/num.d.ts +23 -23
- package/dist/utils/obj.d.ts +111 -111
- package/dist/utils/obj.d.ts.map +1 -1
- package/dist/utils/obj.js +3 -3
- package/dist/utils/obj.js.map +1 -1
- package/dist/utils/path.d.ts +10 -10
- package/dist/utils/primitive.d.ts +5 -5
- package/dist/utils/primitive.js +1 -1
- package/dist/utils/primitive.js.map +1 -1
- package/dist/utils/str.d.ts +46 -46
- package/dist/utils/str.d.ts.map +1 -1
- package/dist/utils/str.js +5 -5
- package/dist/utils/str.js.map +1 -1
- package/dist/utils/template-strings.d.ts +26 -26
- package/dist/utils/transferable.d.ts +18 -18
- package/dist/utils/transferable.js +1 -1
- package/dist/utils/transferable.js.map +1 -1
- package/dist/utils/wait.d.ts +9 -9
- package/dist/utils/xml.d.ts +13 -13
- package/dist/utils/xml.d.ts.map +1 -1
- package/dist/utils/xml.js +1 -0
- package/dist/utils/xml.js.map +1 -1
- package/dist/zip/sd-zip.d.ts +22 -22
- package/dist/zip/sd-zip.js +16 -16
- package/package.json +4 -4
- package/src/common.types.ts +17 -17
- package/src/errors/argument-error.ts +15 -15
- package/src/errors/not-implemented-error.ts +9 -9
- package/src/errors/sd-error.ts +12 -12
- package/src/errors/timeout-error.ts +12 -12
- package/src/extensions/arr-ext.helpers.ts +10 -10
- package/src/extensions/arr-ext.ts +57 -57
- package/src/extensions/arr-ext.types.ts +59 -59
- package/src/extensions/map-ext.ts +16 -16
- package/src/extensions/set-ext.ts +11 -11
- package/src/features/debounce-queue.ts +21 -19
- package/src/features/event-emitter.ts +25 -25
- package/src/features/serial-queue.ts +13 -13
- package/src/globals.ts +4 -4
- package/src/index.ts +1 -1
- package/src/types/date-only.ts +83 -83
- package/src/types/date-time.ts +64 -44
- package/src/types/lazy-gc-map.ts +45 -45
- package/src/types/time.ts +34 -34
- package/src/types/uuid.ts +17 -17
- package/src/utils/bytes.ts +35 -35
- package/src/utils/date-format.ts +65 -65
- package/src/utils/error.ts +4 -4
- package/src/utils/json.ts +39 -39
- package/src/utils/num.ts +23 -23
- package/src/utils/obj.ts +138 -138
- package/src/utils/path.ts +10 -10
- package/src/utils/primitive.ts +6 -6
- package/src/utils/str.ts +260 -261
- package/src/utils/template-strings.ts +29 -29
- package/src/utils/transferable.ts +284 -284
- package/src/utils/wait.ts +10 -10
- package/src/utils/xml.ts +20 -19
- package/src/zip/sd-zip.ts +25 -25
- package/tests/errors/errors.spec.ts +80 -0
- package/tests/extensions/array-extension.spec.ts +796 -0
- package/tests/extensions/map-extension.spec.ts +147 -0
- package/tests/extensions/set-extension.spec.ts +74 -0
- package/tests/types/date-only.spec.ts +638 -0
- package/tests/types/date-time.spec.ts +391 -0
- package/tests/types/lazy-gc-map.spec.ts +692 -0
- package/tests/types/time.spec.ts +559 -0
- package/tests/types/uuid.spec.ts +74 -0
- package/tests/utils/bytes-utils.spec.ts +230 -0
- package/tests/utils/date-format.spec.ts +373 -0
- package/tests/utils/debounce-queue.spec.ts +272 -0
- package/tests/utils/json.spec.ts +486 -0
- package/tests/utils/number.spec.ts +157 -0
- package/tests/utils/object.spec.ts +829 -0
- package/tests/utils/path.spec.ts +78 -0
- package/tests/utils/primitive.spec.ts +43 -0
- package/tests/utils/sd-event-emitter.spec.ts +216 -0
- package/tests/utils/serial-queue.spec.ts +365 -0
- package/tests/utils/string.spec.ts +281 -0
- package/tests/utils/template-strings.spec.ts +57 -0
- package/tests/utils/transferable.spec.ts +703 -0
- package/tests/utils/wait.spec.ts +145 -0
- package/tests/utils/xml.spec.ts +146 -0
- package/tests/zip/sd-zip.spec.ts +238 -0
- package/docs/extensions.md +0 -503
- package/docs/features.md +0 -109
- package/docs/types.md +0 -486
- package/docs/utils.md +0 -780
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Date class (without time: yyyy-MM-dd, immutable)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* An immutable class that stores only the date without time information.
|
|
5
|
+
* Operates based on local timezone.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* const today = new DateOnly();
|
|
@@ -12,38 +12,38 @@
|
|
|
12
12
|
export declare class DateOnly {
|
|
13
13
|
private static readonly MS_PER_DAY;
|
|
14
14
|
readonly date: Date;
|
|
15
|
-
/**
|
|
15
|
+
/** Current time */
|
|
16
16
|
constructor();
|
|
17
|
-
/**
|
|
17
|
+
/** Initialize with year, month, day */
|
|
18
18
|
constructor(year: number, month: number, day: number);
|
|
19
|
-
/** tick (millisecond)
|
|
19
|
+
/** Create from tick (millisecond) */
|
|
20
20
|
constructor(tick: number);
|
|
21
|
-
/** Date
|
|
21
|
+
/** Create from Date type */
|
|
22
22
|
constructor(date: Date);
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
* @param str
|
|
26
|
-
* @returns DateOnly
|
|
24
|
+
* Parse a string into DateOnly
|
|
25
|
+
* @param str Date string
|
|
26
|
+
* @returns DateOnly instance
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
* - `yyyy-MM-dd` (
|
|
30
|
-
* - `yyyyMMdd` (
|
|
31
|
-
* - ISO 8601 (
|
|
28
|
+
* Supported formats:
|
|
29
|
+
* - `yyyy-MM-dd` (e.g., '2024-01-15') - Extracted directly from string, timezone-independent
|
|
30
|
+
* - `yyyyMMdd` (e.g., '20240115') - Extracted directly from string, timezone-independent
|
|
31
|
+
* - ISO 8601 (e.g., '2024-01-15T00:00:00Z') - Interpreted as UTC, then converted to local timezone
|
|
32
32
|
*
|
|
33
|
-
* @note
|
|
34
|
-
* @note DST
|
|
33
|
+
* @note For different server/client timezones, `yyyy-MM-dd` format is recommended
|
|
34
|
+
* @note For DST regions when parsing ISO 8601 format, the offset of the parsing target date is used.
|
|
35
35
|
*/
|
|
36
36
|
static parse(str: string): DateOnly;
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
* @param weekStartDay
|
|
40
|
-
* @param minDaysInFirstWeek
|
|
41
|
-
* @returns
|
|
38
|
+
* Return the base year and month based on week information
|
|
39
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
40
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
41
|
+
* @returns Base year and month of the week containing this date
|
|
42
42
|
*
|
|
43
43
|
* @example
|
|
44
|
-
* // ISO 8601
|
|
44
|
+
* // ISO 8601 standard (Monday start, first week minimum 4 days)
|
|
45
45
|
* new DateOnly(2024, 1, 1).getBaseYearMonthSeqForWeekSeq(1, 4)
|
|
46
|
-
* //
|
|
46
|
+
* // US style (Sunday start, first week minimum 1 day)
|
|
47
47
|
* new DateOnly(2024, 1, 1).getBaseYearMonthSeqForWeekSeq(0, 1)
|
|
48
48
|
*/
|
|
49
49
|
getBaseYearMonthSeqForWeekSeq(weekStartDay?: number, minDaysInFirstWeek?: number): {
|
|
@@ -51,23 +51,23 @@ export declare class DateOnly {
|
|
|
51
51
|
monthSeq: number;
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
55
|
-
* @param weekStartDay
|
|
56
|
-
* @param minDaysInFirstWeek
|
|
57
|
-
* @returns
|
|
54
|
+
* Calculate the start date of the week based on week information
|
|
55
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
56
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
57
|
+
* @returns Start date of the week containing this date
|
|
58
58
|
*/
|
|
59
59
|
getWeekSeqStartDate(weekStartDay?: number, minDaysInFirstWeek?: number): DateOnly;
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
62
|
-
* @param weekStartDay
|
|
63
|
-
* @param minDaysInFirstWeek
|
|
64
|
-
* @returns
|
|
61
|
+
* Return year and week sequence information
|
|
62
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
63
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
64
|
+
* @returns Year and week number within that year
|
|
65
65
|
*
|
|
66
66
|
* @example
|
|
67
|
-
* // ISO 8601
|
|
67
|
+
* // ISO 8601 standard (Monday start, first week minimum 4 days)
|
|
68
68
|
* new DateOnly(2025, 1, 6).getWeekSeqOfYear(); // { year: 2025, weekSeq: 2 }
|
|
69
69
|
*
|
|
70
|
-
* //
|
|
70
|
+
* // US style (Sunday start, first week minimum 1 day)
|
|
71
71
|
* new DateOnly(2025, 1, 1).getWeekSeqOfYear(0, 1); // { year: 2025, weekSeq: 1 }
|
|
72
72
|
*/
|
|
73
73
|
getWeekSeqOfYear(weekStartDay?: number, minDaysInFirstWeek?: number): {
|
|
@@ -75,16 +75,16 @@ export declare class DateOnly {
|
|
|
75
75
|
weekSeq: number;
|
|
76
76
|
};
|
|
77
77
|
/**
|
|
78
|
-
*
|
|
79
|
-
* @param weekStartDay
|
|
80
|
-
* @param minDaysInFirstWeek
|
|
81
|
-
* @returns
|
|
78
|
+
* Return year, month and week sequence information for the given date
|
|
79
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
80
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
81
|
+
* @returns Year, month and week number within that month
|
|
82
82
|
*
|
|
83
83
|
* @example
|
|
84
|
-
* // ISO 8601
|
|
84
|
+
* // ISO 8601 standard (Monday start, first week minimum 4 days)
|
|
85
85
|
* new DateOnly(2025, 1, 15).getWeekSeqOfMonth(); // { year: 2025, monthSeq: 1, weekSeq: 3 }
|
|
86
86
|
*
|
|
87
|
-
* //
|
|
87
|
+
* // US style (Sunday start, first week minimum 1 day)
|
|
88
88
|
* new DateOnly(2025, 1, 15).getWeekSeqOfMonth(0, 1); // { year: 2025, monthSeq: 1, weekSeq: 3 }
|
|
89
89
|
*/
|
|
90
90
|
getWeekSeqOfMonth(weekStartDay?: number, minDaysInFirstWeek?: number): {
|
|
@@ -93,58 +93,58 @@ export declare class DateOnly {
|
|
|
93
93
|
weekSeq: number;
|
|
94
94
|
};
|
|
95
95
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param arg
|
|
98
|
-
* @param weekStartDay
|
|
99
|
-
* @param minDaysInFirstWeek
|
|
100
|
-
* @returns
|
|
96
|
+
* Get the start date of a week based on week information
|
|
97
|
+
* @param arg Year, optional month, and week number
|
|
98
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
99
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
100
|
+
* @returns Start date of the specified week
|
|
101
101
|
*
|
|
102
102
|
* @example
|
|
103
|
-
* //
|
|
104
|
-
* DateOnly.getDateByYearWeekSeq({ year: 2025, weekSeq: 2 }); // 2025-01-06 (
|
|
103
|
+
* // Start date of week 2 in 2025 (ISO 8601 standard)
|
|
104
|
+
* DateOnly.getDateByYearWeekSeq({ year: 2025, weekSeq: 2 }); // 2025-01-06 (Monday)
|
|
105
105
|
*
|
|
106
|
-
* //
|
|
107
|
-
* DateOnly.getDateByYearWeekSeq({ year: 2025, month: 1, weekSeq: 3 }); // 2025-01-13 (
|
|
106
|
+
* // Start date of week 3 in January 2025
|
|
107
|
+
* DateOnly.getDateByYearWeekSeq({ year: 2025, month: 1, weekSeq: 3 }); // 2025-01-13 (Monday)
|
|
108
108
|
*/
|
|
109
109
|
static getDateByYearWeekSeq(arg: {
|
|
110
110
|
year: number;
|
|
111
111
|
month?: number;
|
|
112
112
|
weekSeq: number;
|
|
113
113
|
}, weekStartDay?: number, minDaysInFirstWeek?: number): DateOnly;
|
|
114
|
-
/**
|
|
114
|
+
/** Whether the date is set correctly */
|
|
115
115
|
get isValid(): boolean;
|
|
116
116
|
get year(): number;
|
|
117
117
|
get month(): number;
|
|
118
118
|
get day(): number;
|
|
119
119
|
get tick(): number;
|
|
120
|
-
/**
|
|
120
|
+
/** Day of week (Sunday~Saturday: 0~6) */
|
|
121
121
|
get dayOfWeek(): number;
|
|
122
|
-
/**
|
|
122
|
+
/** Return new instance with specified year */
|
|
123
123
|
setYear(year: number): DateOnly;
|
|
124
124
|
/**
|
|
125
|
-
*
|
|
126
|
-
* @param month
|
|
127
|
-
* @note
|
|
128
|
-
* (
|
|
125
|
+
* Return new DateOnly instance with specified month
|
|
126
|
+
* @param month Month to set (1-12, out-of-range values are adjusted in year)
|
|
127
|
+
* @note If current day is greater than target month's day count, it will be adjusted to last day of month
|
|
128
|
+
* (e.g., setMonth(2) on Jan 31 → Feb 28 or 29)
|
|
129
129
|
*/
|
|
130
130
|
setMonth(month: number): DateOnly;
|
|
131
131
|
/**
|
|
132
|
-
*
|
|
133
|
-
* @param day
|
|
134
|
-
* @note
|
|
135
|
-
*
|
|
132
|
+
* Return new DateOnly instance with specified day
|
|
133
|
+
* @param day Day to set
|
|
134
|
+
* @note Days outside valid month range are automatically adjusted to next/previous month per JavaScript Date behavior
|
|
135
|
+
* (e.g., day=32 in January → February 1)
|
|
136
136
|
*/
|
|
137
137
|
setDay(day: number): DateOnly;
|
|
138
|
-
/**
|
|
138
|
+
/** Return new instance with specified years added */
|
|
139
139
|
addYears(years: number): DateOnly;
|
|
140
|
-
/**
|
|
140
|
+
/** Return new instance with specified months added */
|
|
141
141
|
addMonths(months: number): DateOnly;
|
|
142
|
-
/**
|
|
142
|
+
/** Return new instance with specified days added */
|
|
143
143
|
addDays(days: number): DateOnly;
|
|
144
144
|
/**
|
|
145
|
-
*
|
|
146
|
-
* @param format
|
|
147
|
-
* @see dtFormat
|
|
145
|
+
* Convert to string with specified format
|
|
146
|
+
* @param format Format string
|
|
147
|
+
* @see dtFormat for supported format strings
|
|
148
148
|
*/
|
|
149
149
|
toFormatString(formatStr: string): string;
|
|
150
150
|
toString(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-only.d.ts","sourceRoot":"","sources":["../../src/types/date-only.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAEzD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,
|
|
1
|
+
{"version":3,"file":"date-only.d.ts","sourceRoot":"","sources":["../../src/types/date-only.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAEzD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,mBAAmB;;IAEnB,uCAAuC;gBAC3B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IACpD,qCAAqC;gBACzB,IAAI,EAAE,MAAM;IACxB,4BAA4B;gBAChB,IAAI,EAAE,IAAI;IAiBtB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAwCnC;;;;;;;;;;;OAWG;IACH,6BAA6B,CAAC,YAAY,GAAE,MAAU,EAAE,kBAAkB,GAAE,MAAU;;;;IA2BtF;;;;;OAKG;IACH,mBAAmB,CAAC,YAAY,GAAE,MAAU,EAAE,kBAAkB,GAAE,MAAU;IAW5E;;;;;;;;;;;;OAYG;IACH,gBAAgB,CACd,YAAY,GAAE,MAAU,EACxB,kBAAkB,GAAE,MAAU,GAC7B;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAepC;;;;;;;;;;;;OAYG;IACH,iBAAiB,CACf,YAAY,GAAE,MAAU,EACxB,kBAAkB,GAAE,MAAU,GAC7B;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAgBtD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,oBAAoB,CACzB,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EACtD,YAAY,GAAE,MAAU,EACxB,kBAAkB,GAAE,MAAU;IAYhC,wCAAwC;IACxC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,yCAAyC;IACzC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAMD,8CAA8C;IAC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAI/B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAKjC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAQ7B,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIjC,sDAAsD;IACtD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAInC,oDAAoD;IACpD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAQ/B;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAQzC,QAAQ,IAAI,MAAM;CAKnB"}
|
package/dist/types/date-only.js
CHANGED
|
@@ -19,17 +19,17 @@ class DateOnly {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
* @param str
|
|
24
|
-
* @returns DateOnly
|
|
22
|
+
* Parse a string into DateOnly
|
|
23
|
+
* @param str Date string
|
|
24
|
+
* @returns DateOnly instance
|
|
25
25
|
*
|
|
26
|
-
*
|
|
27
|
-
* - `yyyy-MM-dd` (
|
|
28
|
-
* - `yyyyMMdd` (
|
|
29
|
-
* - ISO 8601 (
|
|
26
|
+
* Supported formats:
|
|
27
|
+
* - `yyyy-MM-dd` (e.g., '2024-01-15') - Extracted directly from string, timezone-independent
|
|
28
|
+
* - `yyyyMMdd` (e.g., '20240115') - Extracted directly from string, timezone-independent
|
|
29
|
+
* - ISO 8601 (e.g., '2024-01-15T00:00:00Z') - Interpreted as UTC, then converted to local timezone
|
|
30
30
|
*
|
|
31
|
-
* @note
|
|
32
|
-
* @note DST
|
|
31
|
+
* @note For different server/client timezones, `yyyy-MM-dd` format is recommended
|
|
32
|
+
* @note For DST regions when parsing ISO 8601 format, the offset of the parsing target date is used.
|
|
33
33
|
*/
|
|
34
34
|
static parse(str) {
|
|
35
35
|
const matchYMD = /^(\d{4})-(\d{2})-(\d{2})$/.exec(str);
|
|
@@ -52,23 +52,23 @@ class DateOnly {
|
|
|
52
52
|
return new DateOnly(localTick);
|
|
53
53
|
}
|
|
54
54
|
throw new ArgumentError(
|
|
55
|
-
|
|
55
|
+
`Failed to parse date format. Supported formats: 'yyyy-MM-dd', 'yyyyMMdd', ISO 8601 date`,
|
|
56
56
|
{
|
|
57
57
|
input: str
|
|
58
58
|
}
|
|
59
59
|
);
|
|
60
60
|
}
|
|
61
|
-
//#region
|
|
61
|
+
//#region Week calculation
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
64
|
-
* @param weekStartDay
|
|
65
|
-
* @param minDaysInFirstWeek
|
|
66
|
-
* @returns
|
|
63
|
+
* Return the base year and month based on week information
|
|
64
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
65
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
66
|
+
* @returns Base year and month of the week containing this date
|
|
67
67
|
*
|
|
68
68
|
* @example
|
|
69
|
-
* // ISO 8601
|
|
69
|
+
* // ISO 8601 standard (Monday start, first week minimum 4 days)
|
|
70
70
|
* new DateOnly(2024, 1, 1).getBaseYearMonthSeqForWeekSeq(1, 4)
|
|
71
|
-
* //
|
|
71
|
+
* // US style (Sunday start, first week minimum 1 day)
|
|
72
72
|
* new DateOnly(2024, 1, 1).getBaseYearMonthSeqForWeekSeq(0, 1)
|
|
73
73
|
*/
|
|
74
74
|
getBaseYearMonthSeqForWeekSeq(weekStartDay = 1, minDaysInFirstWeek = 4) {
|
|
@@ -90,10 +90,10 @@ class DateOnly {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
|
-
*
|
|
94
|
-
* @param weekStartDay
|
|
95
|
-
* @param minDaysInFirstWeek
|
|
96
|
-
* @returns
|
|
93
|
+
* Calculate the start date of the week based on week information
|
|
94
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
95
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
96
|
+
* @returns Start date of the week containing this date
|
|
97
97
|
*/
|
|
98
98
|
getWeekSeqStartDate(weekStartDay = 1, minDaysInFirstWeek = 4) {
|
|
99
99
|
const dayOfWeek = (this.dayOfWeek + 7 - weekStartDay) % 7;
|
|
@@ -105,16 +105,16 @@ class DateOnly {
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
/**
|
|
108
|
-
*
|
|
109
|
-
* @param weekStartDay
|
|
110
|
-
* @param minDaysInFirstWeek
|
|
111
|
-
* @returns
|
|
108
|
+
* Return year and week sequence information
|
|
109
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
110
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
111
|
+
* @returns Year and week number within that year
|
|
112
112
|
*
|
|
113
113
|
* @example
|
|
114
|
-
* // ISO 8601
|
|
114
|
+
* // ISO 8601 standard (Monday start, first week minimum 4 days)
|
|
115
115
|
* new DateOnly(2025, 1, 6).getWeekSeqOfYear(); // { year: 2025, weekSeq: 2 }
|
|
116
116
|
*
|
|
117
|
-
* //
|
|
117
|
+
* // US style (Sunday start, first week minimum 1 day)
|
|
118
118
|
* new DateOnly(2025, 1, 1).getWeekSeqOfYear(0, 1); // { year: 2025, weekSeq: 1 }
|
|
119
119
|
*/
|
|
120
120
|
getWeekSeqOfYear(weekStartDay = 1, minDaysInFirstWeek = 4) {
|
|
@@ -130,16 +130,16 @@ class DateOnly {
|
|
|
130
130
|
};
|
|
131
131
|
}
|
|
132
132
|
/**
|
|
133
|
-
*
|
|
134
|
-
* @param weekStartDay
|
|
135
|
-
* @param minDaysInFirstWeek
|
|
136
|
-
* @returns
|
|
133
|
+
* Return year, month and week sequence information for the given date
|
|
134
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
135
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
136
|
+
* @returns Year, month and week number within that month
|
|
137
137
|
*
|
|
138
138
|
* @example
|
|
139
|
-
* // ISO 8601
|
|
139
|
+
* // ISO 8601 standard (Monday start, first week minimum 4 days)
|
|
140
140
|
* new DateOnly(2025, 1, 15).getWeekSeqOfMonth(); // { year: 2025, monthSeq: 1, weekSeq: 3 }
|
|
141
141
|
*
|
|
142
|
-
* //
|
|
142
|
+
* // US style (Sunday start, first week minimum 1 day)
|
|
143
143
|
* new DateOnly(2025, 1, 15).getWeekSeqOfMonth(0, 1); // { year: 2025, monthSeq: 1, weekSeq: 3 }
|
|
144
144
|
*/
|
|
145
145
|
getWeekSeqOfMonth(weekStartDay = 1, minDaysInFirstWeek = 4) {
|
|
@@ -156,18 +156,18 @@ class DateOnly {
|
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
158
|
/**
|
|
159
|
-
*
|
|
160
|
-
* @param arg
|
|
161
|
-
* @param weekStartDay
|
|
162
|
-
* @param minDaysInFirstWeek
|
|
163
|
-
* @returns
|
|
159
|
+
* Get the start date of a week based on week information
|
|
160
|
+
* @param arg Year, optional month, and week number
|
|
161
|
+
* @param weekStartDay Week start day (0=Sunday, 1=Monday, ..., 6=Saturday). Default: 1(Monday)
|
|
162
|
+
* @param minDaysInFirstWeek Minimum days to be considered the first week (1~7). Default: 4 (ISO 8601 standard)
|
|
163
|
+
* @returns Start date of the specified week
|
|
164
164
|
*
|
|
165
165
|
* @example
|
|
166
|
-
* //
|
|
167
|
-
* DateOnly.getDateByYearWeekSeq({ year: 2025, weekSeq: 2 }); // 2025-01-06 (
|
|
166
|
+
* // Start date of week 2 in 2025 (ISO 8601 standard)
|
|
167
|
+
* DateOnly.getDateByYearWeekSeq({ year: 2025, weekSeq: 2 }); // 2025-01-06 (Monday)
|
|
168
168
|
*
|
|
169
|
-
* //
|
|
170
|
-
* DateOnly.getDateByYearWeekSeq({ year: 2025, month: 1, weekSeq: 3 }); // 2025-01-13 (
|
|
169
|
+
* // Start date of week 3 in January 2025
|
|
170
|
+
* DateOnly.getDateByYearWeekSeq({ year: 2025, month: 1, weekSeq: 3 }); // 2025-01-13 (Monday)
|
|
171
171
|
*/
|
|
172
172
|
static getDateByYearWeekSeq(arg, weekStartDay = 1, minDaysInFirstWeek = 4) {
|
|
173
173
|
return new DateOnly(arg.year, arg.month ?? 1, (arg.weekSeq - 1) * 7 + 1).getWeekSeqStartDate(
|
|
@@ -176,8 +176,8 @@ class DateOnly {
|
|
|
176
176
|
);
|
|
177
177
|
}
|
|
178
178
|
//#endregion
|
|
179
|
-
//#region Getters (
|
|
180
|
-
/**
|
|
179
|
+
//#region Getters (read-only)
|
|
180
|
+
/** Whether the date is set correctly */
|
|
181
181
|
get isValid() {
|
|
182
182
|
return this.date instanceof Date && !Number.isNaN(this.date.getTime());
|
|
183
183
|
}
|
|
@@ -193,55 +193,55 @@ class DateOnly {
|
|
|
193
193
|
get tick() {
|
|
194
194
|
return this.date.getTime();
|
|
195
195
|
}
|
|
196
|
-
/**
|
|
196
|
+
/** Day of week (Sunday~Saturday: 0~6) */
|
|
197
197
|
get dayOfWeek() {
|
|
198
198
|
return this.date.getDay();
|
|
199
199
|
}
|
|
200
200
|
//#endregion
|
|
201
|
-
//#region
|
|
202
|
-
/**
|
|
201
|
+
//#region Immutable transformation methods (returns new instance)
|
|
202
|
+
/** Return new instance with specified year */
|
|
203
203
|
setYear(year) {
|
|
204
204
|
return new DateOnly(year, this.month, this.day);
|
|
205
205
|
}
|
|
206
206
|
/**
|
|
207
|
-
*
|
|
208
|
-
* @param month
|
|
209
|
-
* @note
|
|
210
|
-
* (
|
|
207
|
+
* Return new DateOnly instance with specified month
|
|
208
|
+
* @param month Month to set (1-12, out-of-range values are adjusted in year)
|
|
209
|
+
* @note If current day is greater than target month's day count, it will be adjusted to last day of month
|
|
210
|
+
* (e.g., setMonth(2) on Jan 31 → Feb 28 or 29)
|
|
211
211
|
*/
|
|
212
212
|
setMonth(month) {
|
|
213
213
|
const normalized = normalizeMonth(this.year, month, this.day);
|
|
214
214
|
return new DateOnly(normalized.year, normalized.month, normalized.day);
|
|
215
215
|
}
|
|
216
216
|
/**
|
|
217
|
-
*
|
|
218
|
-
* @param day
|
|
219
|
-
* @note
|
|
220
|
-
*
|
|
217
|
+
* Return new DateOnly instance with specified day
|
|
218
|
+
* @param day Day to set
|
|
219
|
+
* @note Days outside valid month range are automatically adjusted to next/previous month per JavaScript Date behavior
|
|
220
|
+
* (e.g., day=32 in January → February 1)
|
|
221
221
|
*/
|
|
222
222
|
setDay(day) {
|
|
223
223
|
return new DateOnly(this.year, this.month, day);
|
|
224
224
|
}
|
|
225
225
|
//#endregion
|
|
226
|
-
//#region
|
|
227
|
-
/**
|
|
226
|
+
//#region Arithmetic methods (returns new instance)
|
|
227
|
+
/** Return new instance with specified years added */
|
|
228
228
|
addYears(years) {
|
|
229
229
|
return this.setYear(this.year + years);
|
|
230
230
|
}
|
|
231
|
-
/**
|
|
231
|
+
/** Return new instance with specified months added */
|
|
232
232
|
addMonths(months) {
|
|
233
233
|
return this.setMonth(this.month + months);
|
|
234
234
|
}
|
|
235
|
-
/**
|
|
235
|
+
/** Return new instance with specified days added */
|
|
236
236
|
addDays(days) {
|
|
237
237
|
return new DateOnly(this.tick + days * DateOnly.MS_PER_DAY);
|
|
238
238
|
}
|
|
239
239
|
//#endregion
|
|
240
|
-
//#region
|
|
240
|
+
//#region Formatting
|
|
241
241
|
/**
|
|
242
|
-
*
|
|
243
|
-
* @param format
|
|
244
|
-
* @see dtFormat
|
|
242
|
+
* Convert to string with specified format
|
|
243
|
+
* @param format Format string
|
|
244
|
+
* @see dtFormat for supported format strings
|
|
245
245
|
*/
|
|
246
246
|
toFormatString(formatStr) {
|
|
247
247
|
return formatDate(formatStr, {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* DateTime class (immutable)
|
|
3
3
|
*
|
|
4
|
-
* JavaScript Date
|
|
5
|
-
*
|
|
4
|
+
* Wraps JavaScript Date object to provide immutability and convenient API.
|
|
5
|
+
* Supports millisecond precision and operates based on local timezone.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* const now = new DateTime();
|
|
@@ -11,26 +11,26 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export declare class DateTime {
|
|
13
13
|
readonly date: Date;
|
|
14
|
-
/**
|
|
14
|
+
/** Create with current time */
|
|
15
15
|
constructor();
|
|
16
|
-
/**
|
|
16
|
+
/** Create with year, month, day, hour, minute, second, millisecond */
|
|
17
17
|
constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);
|
|
18
|
-
/** tick (
|
|
18
|
+
/** Create from tick (millisecond) */
|
|
19
19
|
constructor(tick: number);
|
|
20
|
-
/** Date
|
|
20
|
+
/** Create from Date object */
|
|
21
21
|
constructor(date: Date);
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Parse a string to create DateTime instance
|
|
24
24
|
*
|
|
25
|
-
* @param str
|
|
26
|
-
* @returns
|
|
27
|
-
* @throws ArgumentError
|
|
25
|
+
* @param str DateTime string
|
|
26
|
+
* @returns Parsed DateTime instance
|
|
27
|
+
* @throws ArgumentError If unsupported format
|
|
28
28
|
*
|
|
29
29
|
* @example
|
|
30
30
|
* DateTime.parse("2025-01-15 10:30:00") // yyyy-MM-dd HH:mm:ss
|
|
31
31
|
* DateTime.parse("2025-01-15 10:30:00.123") // yyyy-MM-dd HH:mm:ss.fff
|
|
32
32
|
* DateTime.parse("20250115103000") // yyyyMMddHHmmss
|
|
33
|
-
* DateTime.parse("2025-01-15
|
|
33
|
+
* DateTime.parse("2025-01-15 AM 10:30:00") // yyyy-MM-dd AM/PM HH:mm:ss
|
|
34
34
|
* DateTime.parse("2025-01-15T10:30:00Z") // ISO 8601
|
|
35
35
|
*/
|
|
36
36
|
static parse(str: string): DateTime;
|
|
@@ -42,53 +42,53 @@ export declare class DateTime {
|
|
|
42
42
|
get second(): number;
|
|
43
43
|
get millisecond(): number;
|
|
44
44
|
get tick(): number;
|
|
45
|
-
/**
|
|
45
|
+
/** Day of week (Sunday~Saturday: 0~6) */
|
|
46
46
|
get dayOfWeek(): number;
|
|
47
47
|
get timezoneOffsetMinutes(): number;
|
|
48
|
-
/**
|
|
48
|
+
/** Whether the datetime is set correctly */
|
|
49
49
|
get isValid(): boolean;
|
|
50
|
-
/**
|
|
50
|
+
/** Return new instance with specified year */
|
|
51
51
|
setYear(year: number): DateTime;
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
54
|
-
* @param month
|
|
55
|
-
* @note
|
|
56
|
-
* (
|
|
53
|
+
* Return new DateTime instance with specified month
|
|
54
|
+
* @param month Month to set (1-12, out-of-range values are adjusted in year)
|
|
55
|
+
* @note If current day is greater than target month's day count, it will be adjusted to last day of month
|
|
56
|
+
* (e.g., setMonth(2) on Jan 31 → Feb 28 or 29)
|
|
57
57
|
*/
|
|
58
58
|
setMonth(month: number): DateTime;
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
61
|
-
* @param day
|
|
62
|
-
* @note
|
|
63
|
-
*
|
|
60
|
+
* Return new DateTime instance with specified day
|
|
61
|
+
* @param day Day to set
|
|
62
|
+
* @note Days outside valid month range are automatically adjusted to next/previous month per JavaScript Date behavior
|
|
63
|
+
* (e.g., day=32 in January → February 1)
|
|
64
64
|
*/
|
|
65
65
|
setDay(day: number): DateTime;
|
|
66
|
-
/**
|
|
66
|
+
/** Return new instance with specified hour */
|
|
67
67
|
setHour(hour: number): DateTime;
|
|
68
|
-
/**
|
|
68
|
+
/** Return new instance with specified minute */
|
|
69
69
|
setMinute(minute: number): DateTime;
|
|
70
|
-
/**
|
|
70
|
+
/** Return new instance with specified second */
|
|
71
71
|
setSecond(second: number): DateTime;
|
|
72
|
-
/**
|
|
72
|
+
/** Return new instance with specified millisecond */
|
|
73
73
|
setMillisecond(millisecond: number): DateTime;
|
|
74
|
-
/**
|
|
74
|
+
/** Return new instance with specified years added */
|
|
75
75
|
addYears(years: number): DateTime;
|
|
76
|
-
/**
|
|
76
|
+
/** Return new instance with specified months added */
|
|
77
77
|
addMonths(months: number): DateTime;
|
|
78
|
-
/**
|
|
78
|
+
/** Return new instance with specified days added */
|
|
79
79
|
addDays(days: number): DateTime;
|
|
80
|
-
/**
|
|
80
|
+
/** Return new instance with specified hours added */
|
|
81
81
|
addHours(hours: number): DateTime;
|
|
82
|
-
/**
|
|
82
|
+
/** Return new instance with specified minutes added */
|
|
83
83
|
addMinutes(minutes: number): DateTime;
|
|
84
|
-
/**
|
|
84
|
+
/** Return new instance with specified seconds added */
|
|
85
85
|
addSeconds(seconds: number): DateTime;
|
|
86
|
-
/**
|
|
86
|
+
/** Return new instance with specified milliseconds added */
|
|
87
87
|
addMilliseconds(milliseconds: number): DateTime;
|
|
88
88
|
/**
|
|
89
|
-
*
|
|
90
|
-
* @param format
|
|
91
|
-
* @see dtFormat
|
|
89
|
+
* Convert to string with specified format
|
|
90
|
+
* @param format Format string
|
|
91
|
+
* @see dtFormat for supported format strings
|
|
92
92
|
*/
|
|
93
93
|
toFormatString(formatStr: string): string;
|
|
94
94
|
toString(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time.d.ts","sourceRoot":"","sources":["../../src/types/date-time.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB
|
|
1
|
+
{"version":3,"file":"date-time.d.ts","sourceRoot":"","sources":["../../src/types/date-time.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,+BAA+B;;IAE/B,sEAAsE;gBAEpE,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM;IAEtB,qCAAqC;gBACzB,IAAI,EAAE,MAAM;IACxB,8BAA8B;gBAClB,IAAI,EAAE,IAAI;IA6BtB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAiFnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,yCAAyC;IACzC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED,4CAA4C;IAC5C,IAAI,OAAO,IAAI,OAAO,CAErB;IAMD,8CAA8C;IAC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAY/B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAajC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAY7B,8CAA8C;IAC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAY/B,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAYnC,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAYnC,qDAAqD;IACrD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ;IAgB7C,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIjC,sDAAsD;IACtD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAInC,oDAAoD;IACpD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAI/B,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIjC,uDAAuD;IACvD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIrC,uDAAuD;IACvD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIrC,4DAA4D;IAC5D,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ;IAQ/C;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAazC,QAAQ,IAAI,MAAM;CAKnB"}
|