@cratis/fundamentals 7.22.3 → 7.22.5
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/DateOnly.ts +28 -1
- package/JsonSerializer.ts +36 -14
- package/TimeOnly.ts +51 -11
- package/TimeSpan.ts +26 -1
- package/dist/DateOnly.d.ts +1 -0
- package/dist/DateOnly.d.ts.map +1 -1
- package/dist/DateOnly.js +21 -1
- package/dist/DateOnly.js.map +1 -1
- package/dist/JsonSerializer.d.ts.map +1 -1
- package/dist/JsonSerializer.js +29 -9
- package/dist/JsonSerializer.js.map +1 -1
- package/dist/TimeOnly.d.ts +2 -1
- package/dist/TimeOnly.d.ts.map +1 -1
- package/dist/TimeOnly.js +30 -4
- package/dist/TimeOnly.js.map +1 -1
- package/dist/TimeSpan.d.ts.map +1 -1
- package/dist/TimeSpan.js +17 -0
- package/dist/TimeSpan.js.map +1 -1
- package/dist/cjs/DateOnly.d.ts +1 -0
- package/dist/cjs/DateOnly.d.ts.map +1 -1
- package/dist/cjs/DateOnly.js +21 -1
- package/dist/cjs/DateOnly.js.map +1 -1
- package/dist/cjs/JsonSerializer.d.ts.map +1 -1
- package/dist/cjs/JsonSerializer.js +28 -8
- package/dist/cjs/JsonSerializer.js.map +1 -1
- package/dist/cjs/TimeOnly.d.ts +2 -1
- package/dist/cjs/TimeOnly.d.ts.map +1 -1
- package/dist/cjs/TimeOnly.js +30 -4
- package/dist/cjs/TimeOnly.js.map +1 -1
- package/dist/cjs/TimeSpan.d.ts.map +1 -1
- package/dist/cjs/TimeSpan.js +17 -0
- package/dist/cjs/TimeSpan.js.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/typeKey.d.ts +3 -0
- package/dist/cjs/typeKey.d.ts.map +1 -1
- package/dist/cjs/typeKey.js +6 -0
- package/dist/cjs/typeKey.js.map +1 -1
- package/dist/esm/DateOnly.d.ts +1 -0
- package/dist/esm/DateOnly.d.ts.map +1 -1
- package/dist/esm/DateOnly.js +21 -1
- package/dist/esm/DateOnly.js.map +1 -1
- package/dist/esm/JsonSerializer.d.ts.map +1 -1
- package/dist/esm/JsonSerializer.js +29 -9
- package/dist/esm/JsonSerializer.js.map +1 -1
- package/dist/esm/TimeOnly.d.ts +2 -1
- package/dist/esm/TimeOnly.d.ts.map +1 -1
- package/dist/esm/TimeOnly.js +30 -4
- package/dist/esm/TimeOnly.js.map +1 -1
- package/dist/esm/TimeSpan.d.ts.map +1 -1
- package/dist/esm/TimeSpan.js +17 -0
- package/dist/esm/TimeSpan.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/typeKey.d.ts +3 -0
- package/dist/esm/typeKey.d.ts.map +1 -1
- package/dist/esm/typeKey.js +4 -1
- package/dist/esm/typeKey.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/typeKey.d.ts +3 -0
- package/dist/typeKey.d.ts.map +1 -1
- package/dist/typeKey.js +3 -0
- package/dist/typeKey.js.map +1 -1
- package/for_DateOnly/when_parsing_an_out_of_range_calendar_date.ts +13 -0
- package/for_DateOnly/when_parsing_february_in_leap_and_common_years.ts +11 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_c_sharp_written_negative_time_span_keys.ts +19 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_c_sharp_written_time_only_keys.ts +19 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_c_sharp_written_whole_second_time_span_keys.ts +19 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_legacy_quoted_date_only_keys.ts +19 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_legacy_quoted_time_only_keys.ts +19 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_legacy_quoted_time_span_keys.ts +19 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_malformed_date_only_keys.ts +20 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_malformed_time_only_keys.ts +20 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_malformed_time_span_keys.ts +20 -0
- package/for_JsonSerializer/when_deserializing_a_value_map_with_out_of_range_temporal_keys.ts +19 -0
- package/for_JsonSerializer/when_deserializing_out_of_range_temporal_values.ts +20 -0
- package/for_JsonSerializer/when_round_tripping_a_value_map_with_date_only_keys.ts +26 -0
- package/for_JsonSerializer/when_round_tripping_a_value_map_with_time_only_keys.ts +26 -0
- package/for_JsonSerializer/when_round_tripping_a_value_map_with_time_only_keys_differing_below_a_millisecond.ts +20 -0
- package/for_JsonSerializer/when_round_tripping_a_value_map_with_time_span_keys.ts +26 -0
- package/for_TimeOnly/when_creating_with_out_of_range_sub_millisecond_ticks.ts +11 -0
- package/for_TimeOnly/when_parsing_an_out_of_range_time_of_day.ts +11 -0
- package/for_TimeOnly/when_parsing_the_last_moment_of_the_day.ts +10 -0
- package/for_TimeOnly/when_parsing_the_shapes_the_server_sends.ts +6 -6
- package/for_TimeOnly/when_parsing_times_that_differ_below_a_millisecond.ts +14 -0
- package/for_TimeOnly/when_rendering_a_fraction.ts +11 -0
- package/for_TimeSpan/when_parsing_out_of_range_time.ts +11 -0
- package/for_TimeSpan/when_parsing_the_largest_in_range_time_span.ts +10 -0
- package/for_TimeSpan/when_parsing_time_beyond_what_a_time_span_can_hold.ts +11 -0
- package/package.json +1 -1
- package/typeKey.ts +9 -0
package/DateOnly.ts
CHANGED
|
@@ -58,6 +58,7 @@ export class DateOnly {
|
|
|
58
58
|
* Parses the ISO-8601 calendar date the server sends, `yyyy-MM-dd`.
|
|
59
59
|
* @param value The value to parse.
|
|
60
60
|
* @returns The {@link DateOnly}.
|
|
61
|
+
* @throws {Error} If the format is invalid or a component is out of range, as C# rejects it.
|
|
61
62
|
*/
|
|
62
63
|
static parse(value: string): DateOnly {
|
|
63
64
|
const match = dateOnlyRegex.exec(value);
|
|
@@ -65,7 +66,33 @@ export class DateOnly {
|
|
|
65
66
|
throw new Error(`Invalid DateOnly format: ${value}`);
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
const year = parseInt(match[1], 10);
|
|
70
|
+
const month = parseInt(match[2], 10);
|
|
71
|
+
const day = parseInt(match[3], 10);
|
|
72
|
+
|
|
73
|
+
if (year < 1) {
|
|
74
|
+
throw new Error(`Invalid DateOnly: year ${year} is out of range 1-9999 in '${value}'`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (month < 1 || month > 12) {
|
|
78
|
+
throw new Error(`Invalid DateOnly: month ${month} is out of range 1-12 in '${value}'`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const daysInMonth = DateOnly.daysInMonth(year, month);
|
|
82
|
+
if (day < 1 || day > daysInMonth) {
|
|
83
|
+
throw new Error(`Invalid DateOnly: day ${day} is out of range 1-${daysInMonth} for ${match[1]}-${match[2]} in '${value}'`);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return DateOnly.from(year, month, day);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
private static daysInMonth(year: number, month: number): number {
|
|
90
|
+
if (month === 2) {
|
|
91
|
+
const isLeapYear = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
|
|
92
|
+
return isLeapYear ? 29 : 28;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return [4, 6, 9, 11].includes(month) ? 30 : 31;
|
|
69
96
|
}
|
|
70
97
|
|
|
71
98
|
/**
|
package/JsonSerializer.ts
CHANGED
|
@@ -7,7 +7,10 @@ import { registerModuleInstance } from './duplicateInstanceGuard';
|
|
|
7
7
|
import { Field } from './Field';
|
|
8
8
|
import { Fields } from './Fields';
|
|
9
9
|
import { Guid } from './Guid';
|
|
10
|
-
import {
|
|
10
|
+
import { DateOnly } from './DateOnly';
|
|
11
|
+
import { TimeOnly } from './TimeOnly';
|
|
12
|
+
import { TimeSpan } from './TimeSpan';
|
|
13
|
+
import { conceptAsTypeKey, dateOnlyTypeKey, declaredTypeKey, guidTypeKey, timeOnlyTypeKey, timeSpanTypeKey, typeKeyOf, valueMapTypeKey } from './typeKey';
|
|
11
14
|
import { ValueMap } from './ValueMap';
|
|
12
15
|
import {
|
|
13
16
|
JsonConverter,
|
|
@@ -204,23 +207,40 @@ const serializeMapKey = (key: any): string => {
|
|
|
204
207
|
return key.toISOString();
|
|
205
208
|
}
|
|
206
209
|
|
|
207
|
-
//
|
|
208
|
-
//
|
|
209
|
-
if (declaredTypeKey(key.constructor)
|
|
210
|
+
// Guid, DateOnly, TimeOnly and TimeSpan keys are their plain canonical strings, as a C# dictionary
|
|
211
|
+
// writes them, rather than the quoted JSON string the generic path would produce.
|
|
212
|
+
if (plainStringMapKeyTypes.has(declaredTypeKey(key.constructor) ?? '')) {
|
|
210
213
|
return key.toString();
|
|
211
214
|
}
|
|
212
215
|
|
|
213
216
|
return JsonSerializer.serialize(key);
|
|
214
217
|
};
|
|
215
218
|
|
|
216
|
-
const
|
|
219
|
+
const plainStringMapKeyTypes = new Map<string, { name: string; parse: (text: string) => any }>([
|
|
220
|
+
[guidTypeKey, {
|
|
221
|
+
name: 'Guid',
|
|
222
|
+
parse: text => {
|
|
223
|
+
if (!Guid.isGuid(text)) {
|
|
224
|
+
throw new Error('Not a Guid.');
|
|
225
|
+
}
|
|
226
|
+
return Guid.parse(text);
|
|
227
|
+
}
|
|
228
|
+
}],
|
|
229
|
+
[dateOnlyTypeKey, { name: 'DateOnly', parse: DateOnly.parse }],
|
|
230
|
+
[timeOnlyTypeKey, { name: 'TimeOnly', parse: TimeOnly.parse }],
|
|
231
|
+
[timeSpanTypeKey, { name: 'TimeSpan', parse: TimeSpan.parse }]
|
|
232
|
+
]);
|
|
233
|
+
|
|
234
|
+
const unquoteLegacyMapKey = (key: string): string =>
|
|
217
235
|
// Keys written before the plain form was adopted carry the JSON quotes of an embedded string.
|
|
218
|
-
|
|
219
|
-
if (!Guid.isGuid(text)) {
|
|
220
|
-
throw new Error(`The map key '${key}' is not a valid Guid.`);
|
|
221
|
-
}
|
|
236
|
+
key.length >= 2 && key.startsWith('"') && key.endsWith('"') ? key.slice(1, -1) : key;
|
|
222
237
|
|
|
223
|
-
|
|
238
|
+
const readPlainStringMapKey = (name: string, parse: (text: string) => any, key: string): any => {
|
|
239
|
+
try {
|
|
240
|
+
return parse(unquoteLegacyMapKey(key));
|
|
241
|
+
} catch {
|
|
242
|
+
throw new Error(`The map key '${key}' is not a valid ${name}.`);
|
|
243
|
+
}
|
|
224
244
|
};
|
|
225
245
|
|
|
226
246
|
const deserializeMapKey = (keyType: Constructor, key: string): any => {
|
|
@@ -236,8 +256,9 @@ const deserializeMapKey = (keyType: Constructor, key: string): any => {
|
|
|
236
256
|
return key.toLowerCase() === 'true';
|
|
237
257
|
}
|
|
238
258
|
|
|
239
|
-
|
|
240
|
-
|
|
259
|
+
const plainKeyType = plainStringMapKeyTypes.get(declaredTypeKey(keyType) ?? '');
|
|
260
|
+
if (plainKeyType) {
|
|
261
|
+
return readPlainStringMapKey(plainKeyType.name, plainKeyType.parse, key);
|
|
241
262
|
}
|
|
242
263
|
|
|
243
264
|
// Check if there's a converter for this type
|
|
@@ -354,8 +375,9 @@ export class JsonSerializer {
|
|
|
354
375
|
* - A `ValueMap` is read back from the declaring field's generic arguments rather than through a
|
|
355
376
|
* converter. Note the asymmetry: writing a `ValueMap` *does* go through the registered converter,
|
|
356
377
|
* so replacing that one changes only the outbound half.
|
|
357
|
-
* - A `Guid` used as a `ValueMap` key always uses the plain
|
|
358
|
-
* registered
|
|
378
|
+
* - A `Guid`, `DateOnly`, `TimeOnly` or `TimeSpan` used as a `ValueMap` key always uses the plain
|
|
379
|
+
* canonical string form and bypasses any registered converter for that type, so that keys stay
|
|
380
|
+
* compatible with C# dictionaries.
|
|
359
381
|
*/
|
|
360
382
|
static registerConverter(converter: JsonConverter): void {
|
|
361
383
|
registerConverterFor(converter);
|
package/TimeOnly.ts
CHANGED
|
@@ -40,20 +40,34 @@ export class TimeOnly {
|
|
|
40
40
|
@field(Number)
|
|
41
41
|
millisecond!: number;
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* The remaining 100 nanosecond ticks below the millisecond, 0 through 9999. Carries the last four digits of
|
|
45
|
+
* the seven-digit fraction a C# `TimeOnly` holds, so two times that differ below a millisecond stay different.
|
|
46
|
+
*/
|
|
47
|
+
@field(Number)
|
|
48
|
+
subMillisecondTicks!: number;
|
|
49
|
+
|
|
43
50
|
/**
|
|
44
51
|
* Creates a {@link TimeOnly} from its parts.
|
|
45
52
|
* @param hour The hour.
|
|
46
53
|
* @param minute The minute.
|
|
47
54
|
* @param second The second.
|
|
48
55
|
* @param millisecond The millisecond.
|
|
56
|
+
* @param subMillisecondTicks The 100 nanosecond ticks below the millisecond, 0 through 9999.
|
|
49
57
|
* @returns The {@link TimeOnly}.
|
|
58
|
+
* @throws {Error} If `subMillisecondTicks` is not a whole number from 0 through 9999.
|
|
50
59
|
*/
|
|
51
|
-
static from(hour: number, minute: number, second: number = 0, millisecond: number = 0): TimeOnly {
|
|
60
|
+
static from(hour: number, minute: number, second: number = 0, millisecond: number = 0, subMillisecondTicks: number = 0): TimeOnly {
|
|
61
|
+
if (!Number.isInteger(subMillisecondTicks) || subMillisecondTicks < 0 || subMillisecondTicks > 9999) {
|
|
62
|
+
throw new Error(`Invalid TimeOnly: subMillisecondTicks ${subMillisecondTicks} is out of range 0-9999`);
|
|
63
|
+
}
|
|
64
|
+
|
|
52
65
|
const timeOnly = new TimeOnly();
|
|
53
66
|
timeOnly.hour = hour;
|
|
54
67
|
timeOnly.minute = minute;
|
|
55
68
|
timeOnly.second = second;
|
|
56
69
|
timeOnly.millisecond = millisecond;
|
|
70
|
+
timeOnly.subMillisecondTicks = subMillisecondTicks;
|
|
57
71
|
return timeOnly;
|
|
58
72
|
}
|
|
59
73
|
|
|
@@ -62,9 +76,10 @@ export class TimeOnly {
|
|
|
62
76
|
* @param value The value to parse.
|
|
63
77
|
* @returns The {@link TimeOnly}.
|
|
64
78
|
* @remarks
|
|
65
|
-
* The seconds and the fraction are both optional because the server omits them when they are zero
|
|
66
|
-
* fraction carries up to seven digits
|
|
67
|
-
*
|
|
79
|
+
* The seconds and the fraction are both optional because the server omits them when they are zero. The
|
|
80
|
+
* fraction carries up to seven digits, all of which are kept, so C# times that differ below a millisecond
|
|
81
|
+
* stay distinct. Components outside the ranges C# accepts are rejected.
|
|
82
|
+
* @throws {Error} If the format is invalid or a component is out of range.
|
|
68
83
|
*/
|
|
69
84
|
static parse(value: string): TimeOnly {
|
|
70
85
|
const match = timeOnlyRegex.exec(value);
|
|
@@ -72,17 +87,36 @@ export class TimeOnly {
|
|
|
72
87
|
throw new Error(`Invalid TimeOnly format: ${value}`);
|
|
73
88
|
}
|
|
74
89
|
|
|
75
|
-
const
|
|
90
|
+
const hour = parseInt(match[1], 10);
|
|
91
|
+
const minute = parseInt(match[2], 10);
|
|
92
|
+
const second = match[3] ? parseInt(match[3], 10) : 0;
|
|
93
|
+
|
|
94
|
+
if (hour > 23) {
|
|
95
|
+
throw new Error(`Invalid TimeOnly: hour ${hour} is out of range 0-23 in '${value}'`);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (minute > 59) {
|
|
99
|
+
throw new Error(`Invalid TimeOnly: minute ${minute} is out of range 0-59 in '${value}'`);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (second > 59) {
|
|
103
|
+
throw new Error(`Invalid TimeOnly: second ${second} is out of range 0-59 in '${value}'`);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const fraction = (match[4] ?? '').padEnd(7, '0');
|
|
76
107
|
|
|
77
108
|
return TimeOnly.from(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
parseInt(fraction, 10)
|
|
109
|
+
hour,
|
|
110
|
+
minute,
|
|
111
|
+
second,
|
|
112
|
+
parseInt(fraction.substring(0, 3), 10),
|
|
113
|
+
parseInt(fraction.substring(3), 10));
|
|
82
114
|
}
|
|
83
115
|
|
|
84
116
|
/**
|
|
85
|
-
* Gets the ISO-8601 representation
|
|
117
|
+
* Gets the ISO-8601 representation: `HH:mm:ss`, or `HH:mm:ss.fff` when there is a millisecond part, or the
|
|
118
|
+
* full seven-digit `HH:mm:ss.fffffff` when there is a non-zero part below the millisecond. The seven-digit form
|
|
119
|
+
* is padded, never trimmed, so the two fractional forms are the only ones produced; the parser accepts 1-7 digits.
|
|
86
120
|
* @returns The string.
|
|
87
121
|
*/
|
|
88
122
|
toString(): string {
|
|
@@ -90,6 +124,11 @@ export class TimeOnly {
|
|
|
90
124
|
const minute = this.minute.toString().padStart(2, '0');
|
|
91
125
|
const second = this.second.toString().padStart(2, '0');
|
|
92
126
|
const time = `${hour}:${minute}:${second}`;
|
|
127
|
+
const subMillisecondTicks = this.subMillisecondTicks ?? 0;
|
|
128
|
+
if (subMillisecondTicks > 0) {
|
|
129
|
+
return `${time}.${this.millisecond.toString().padStart(3, '0')}${subMillisecondTicks.toString().padStart(4, '0')}`;
|
|
130
|
+
}
|
|
131
|
+
|
|
93
132
|
return this.millisecond > 0 ? `${time}.${this.millisecond.toString().padStart(3, '0')}` : time;
|
|
94
133
|
}
|
|
95
134
|
|
|
@@ -115,6 +154,7 @@ export class TimeOnly {
|
|
|
115
154
|
this.hour === other.hour &&
|
|
116
155
|
this.minute === other.minute &&
|
|
117
156
|
this.second === other.second &&
|
|
118
|
-
this.millisecond === other.millisecond
|
|
157
|
+
this.millisecond === other.millisecond &&
|
|
158
|
+
(this.subMillisecondTicks ?? 0) === (other.subMillisecondTicks ?? 0);
|
|
119
159
|
}
|
|
120
160
|
}
|
package/TimeSpan.ts
CHANGED
|
@@ -64,7 +64,7 @@ export class TimeSpan {
|
|
|
64
64
|
* The string format should match: [-][d.]hh:mm:ss[.fffffff]
|
|
65
65
|
* @param {string} value String representation of TimeSpan.
|
|
66
66
|
* @returns {TimeSpan} A TimeSpan instance with all properties populated.
|
|
67
|
-
* @throws {Error} If the string format is invalid.
|
|
67
|
+
* @throws {Error} If the string format is invalid or hours, minutes or seconds are out of range, as C# rejects it.
|
|
68
68
|
*/
|
|
69
69
|
static parse(value: string): TimeSpan {
|
|
70
70
|
const match = timeSpanRegex.exec(value);
|
|
@@ -77,6 +77,24 @@ export class TimeSpan {
|
|
|
77
77
|
const hours = parseInt(match[3], 10);
|
|
78
78
|
const minutes = parseInt(match[4], 10);
|
|
79
79
|
const seconds = parseInt(match[5], 10);
|
|
80
|
+
|
|
81
|
+
if (hours > 23) {
|
|
82
|
+
throw new Error(`Invalid TimeSpan: hours ${hours} is out of range 0-23 in '${value}'`);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (minutes > 59) {
|
|
86
|
+
throw new Error(`Invalid TimeSpan: minutes ${minutes} is out of range 0-59 in '${value}'`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (seconds > 59) {
|
|
90
|
+
throw new Error(`Invalid TimeSpan: seconds ${seconds} is out of range 0-59 in '${value}'`);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const maxDays = 10675199;
|
|
94
|
+
if (days > maxDays) {
|
|
95
|
+
throw new Error(`Invalid TimeSpan: days ${days} is out of range 0-${maxDays} in '${value}'`);
|
|
96
|
+
}
|
|
97
|
+
|
|
80
98
|
const fractionalSeconds = match[6] ? match[6].padEnd(7, '0') : '0000000';
|
|
81
99
|
|
|
82
100
|
const ticksPerDay = 864000000000;
|
|
@@ -84,6 +102,13 @@ export class TimeSpan {
|
|
|
84
102
|
const ticksPerMinute = 600000000;
|
|
85
103
|
const ticksPerSecond = 10000000;
|
|
86
104
|
|
|
105
|
+
// TimeSpan.MaxValue is 10675199.02:48:05.4775807 and MinValue one tick further on the negative side.
|
|
106
|
+
const remainderTicks =
|
|
107
|
+
hours * ticksPerHour + minutes * ticksPerMinute + seconds * ticksPerSecond + parseInt(fractionalSeconds, 10);
|
|
108
|
+
if (days === maxDays && remainderTicks > (isNegative ? 100854775808 : 100854775807)) {
|
|
109
|
+
throw new Error(`Invalid TimeSpan: '${value}' is outside the range a TimeSpan can hold`);
|
|
110
|
+
}
|
|
111
|
+
|
|
87
112
|
const ticks =
|
|
88
113
|
days * ticksPerDay +
|
|
89
114
|
hours * ticksPerHour +
|
package/dist/DateOnly.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare class DateOnly {
|
|
|
6
6
|
day: number;
|
|
7
7
|
static from(year: number, month: number, day: number): DateOnly;
|
|
8
8
|
static parse(value: string): DateOnly;
|
|
9
|
+
private static daysInMonth;
|
|
9
10
|
static fromDate(date: Date): DateOnly;
|
|
10
11
|
toDate(): Date;
|
|
11
12
|
toString(): string;
|
package/dist/DateOnly.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateOnly.d.ts","sourceRoot":"","sources":["../DateOnly.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,qBAAa,QAAQ;IACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc;IAMvC,IAAI,EAAG,MAAM,CAAC;IAMd,KAAK,EAAG,MAAM,CAAC;IAMf,GAAG,EAAG,MAAM,CAAC;IASb,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAM9D;
|
|
1
|
+
{"version":3,"file":"DateOnly.d.ts","sourceRoot":"","sources":["../DateOnly.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,qBAAa,QAAQ;IACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc;IAMvC,IAAI,EAAG,MAAM,CAAC;IAMd,KAAK,EAAG,MAAM,CAAC;IAMf,GAAG,EAAG,MAAM,CAAC;IASb,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAM9D;IAQD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAwBpC;IAED,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAEpC;IASD,MAAM,IAAI,IAAI,CAEb;IAMD,QAAQ,IAAI,MAAM,CAIjB;IASD,MAAM,IAAI,MAAM,CAEf;IAOD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAElD;CACJ"}
|
package/dist/DateOnly.js
CHANGED
|
@@ -19,7 +19,27 @@ export class DateOnly {
|
|
|
19
19
|
if (match === null) {
|
|
20
20
|
throw new Error(`Invalid DateOnly format: ${value}`);
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
const year = parseInt(match[1], 10);
|
|
23
|
+
const month = parseInt(match[2], 10);
|
|
24
|
+
const day = parseInt(match[3], 10);
|
|
25
|
+
if (year < 1) {
|
|
26
|
+
throw new Error(`Invalid DateOnly: year ${year} is out of range 1-9999 in '${value}'`);
|
|
27
|
+
}
|
|
28
|
+
if (month < 1 || month > 12) {
|
|
29
|
+
throw new Error(`Invalid DateOnly: month ${month} is out of range 1-12 in '${value}'`);
|
|
30
|
+
}
|
|
31
|
+
const daysInMonth = DateOnly.daysInMonth(year, month);
|
|
32
|
+
if (day < 1 || day > daysInMonth) {
|
|
33
|
+
throw new Error(`Invalid DateOnly: day ${day} is out of range 1-${daysInMonth} for ${match[1]}-${match[2]} in '${value}'`);
|
|
34
|
+
}
|
|
35
|
+
return DateOnly.from(year, month, day);
|
|
36
|
+
}
|
|
37
|
+
static daysInMonth(year, month) {
|
|
38
|
+
if (month === 2) {
|
|
39
|
+
const isLeapYear = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
|
|
40
|
+
return isLeapYear ? 29 : 28;
|
|
41
|
+
}
|
|
42
|
+
return [4, 6, 9, 11].includes(month) ? 30 : 31;
|
|
23
43
|
}
|
|
24
44
|
static fromDate(date) {
|
|
25
45
|
return DateOnly.from(date.getFullYear(), date.getMonth() + 1, date.getDate());
|
package/dist/DateOnly.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateOnly.js","sourceRoot":"","sources":["../DateOnly.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAclD,MAAM,OAAO,QAAQ;IACjB,MAAM,CAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;IAMvC,IAAI,CAAU;IAMd,KAAK,CAAU;IAMf,GAAG,CAAU;IASb,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;QAChD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;QACnB,OAAO,QAAQ,CAAC;IACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"DateOnly.js","sourceRoot":"","sources":["../DateOnly.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonSerializer.d.ts","sourceRoot":"","sources":["../JsonSerializer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonSerializer.d.ts","sourceRoot":"","sources":["../JsonSerializer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,OAAO,EACH,aAAa,EAUhB,MAAM,QAAQ,CAAC;AA6UhB,qBAAa,cAAc;IACvB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAoB;IAsBjE,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAEvD;IAOD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAGnC;IAQD,MAAM,CAAC,WAAW,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGlG;IAQD,MAAM,CAAC,gBAAgB,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAGzG;IAQD,MAAM,CAAC,uBAAuB,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAyD/G;IAQD,MAAM,CAAC,4BAA4B,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,EAAE,CAQvH;CACJ"}
|
package/dist/JsonSerializer.js
CHANGED
|
@@ -3,7 +3,10 @@ import { registerModuleInstance } from './duplicateInstanceGuard';
|
|
|
3
3
|
import { Field } from './Field';
|
|
4
4
|
import { Fields } from './Fields';
|
|
5
5
|
import { Guid } from './Guid';
|
|
6
|
-
import {
|
|
6
|
+
import { DateOnly } from './DateOnly';
|
|
7
|
+
import { TimeOnly } from './TimeOnly';
|
|
8
|
+
import { TimeSpan } from './TimeSpan';
|
|
9
|
+
import { conceptAsTypeKey, dateOnlyTypeKey, declaredTypeKey, guidTypeKey, timeOnlyTypeKey, timeSpanTypeKey, typeKeyOf, valueMapTypeKey } from './typeKey';
|
|
7
10
|
import { ValueMap } from './ValueMap';
|
|
8
11
|
import { DateJsonConverter, DateOnlyJsonConverter, GuidJsonConverter, TimeOnlyJsonConverter, TimeSpanJsonConverter, PointJsonConverter, LineStringJsonConverter, PolygonJsonConverter, ValueMapJsonConverter } from './json';
|
|
9
12
|
registerModuleInstance();
|
|
@@ -112,17 +115,33 @@ const serializeMapKey = (key) => {
|
|
|
112
115
|
if (key instanceof Date) {
|
|
113
116
|
return key.toISOString();
|
|
114
117
|
}
|
|
115
|
-
if (declaredTypeKey(key.constructor)
|
|
118
|
+
if (plainStringMapKeyTypes.has(declaredTypeKey(key.constructor) ?? '')) {
|
|
116
119
|
return key.toString();
|
|
117
120
|
}
|
|
118
121
|
return JsonSerializer.serialize(key);
|
|
119
122
|
};
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
123
|
+
const plainStringMapKeyTypes = new Map([
|
|
124
|
+
[guidTypeKey, {
|
|
125
|
+
name: 'Guid',
|
|
126
|
+
parse: text => {
|
|
127
|
+
if (!Guid.isGuid(text)) {
|
|
128
|
+
throw new Error('Not a Guid.');
|
|
129
|
+
}
|
|
130
|
+
return Guid.parse(text);
|
|
131
|
+
}
|
|
132
|
+
}],
|
|
133
|
+
[dateOnlyTypeKey, { name: 'DateOnly', parse: DateOnly.parse }],
|
|
134
|
+
[timeOnlyTypeKey, { name: 'TimeOnly', parse: TimeOnly.parse }],
|
|
135
|
+
[timeSpanTypeKey, { name: 'TimeSpan', parse: TimeSpan.parse }]
|
|
136
|
+
]);
|
|
137
|
+
const unquoteLegacyMapKey = (key) => key.length >= 2 && key.startsWith('"') && key.endsWith('"') ? key.slice(1, -1) : key;
|
|
138
|
+
const readPlainStringMapKey = (name, parse, key) => {
|
|
139
|
+
try {
|
|
140
|
+
return parse(unquoteLegacyMapKey(key));
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
throw new Error(`The map key '${key}' is not a valid ${name}.`);
|
|
124
144
|
}
|
|
125
|
-
return Guid.parse(text);
|
|
126
145
|
};
|
|
127
146
|
const deserializeMapKey = (keyType, key) => {
|
|
128
147
|
if (keyType === String) {
|
|
@@ -134,8 +153,9 @@ const deserializeMapKey = (keyType, key) => {
|
|
|
134
153
|
if (keyType === Boolean) {
|
|
135
154
|
return key.toLowerCase() === 'true';
|
|
136
155
|
}
|
|
137
|
-
|
|
138
|
-
|
|
156
|
+
const plainKeyType = plainStringMapKeyTypes.get(declaredTypeKey(keyType) ?? '');
|
|
157
|
+
if (plainKeyType) {
|
|
158
|
+
return readPlainStringMapKey(plainKeyType.name, plainKeyType.parse, key);
|
|
139
159
|
}
|
|
140
160
|
const converter = converterFor(keyType);
|
|
141
161
|
if (converter) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonSerializer.js","sourceRoot":"","sources":["../JsonSerializer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JsonSerializer.js","sourceRoot":"","sources":["../JsonSerializer.ts"],"names":[],"mappings":"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"}
|
package/dist/TimeOnly.d.ts
CHANGED
|
@@ -5,7 +5,8 @@ export declare class TimeOnly {
|
|
|
5
5
|
minute: number;
|
|
6
6
|
second: number;
|
|
7
7
|
millisecond: number;
|
|
8
|
-
|
|
8
|
+
subMillisecondTicks: number;
|
|
9
|
+
static from(hour: number, minute: number, second?: number, millisecond?: number, subMillisecondTicks?: number): TimeOnly;
|
|
9
10
|
static parse(value: string): TimeOnly;
|
|
10
11
|
toString(): string;
|
|
11
12
|
toJSON(): string;
|
package/dist/TimeOnly.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeOnly.d.ts","sourceRoot":"","sources":["../TimeOnly.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,qBAAa,QAAQ;IACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc;IAMvC,IAAI,EAAG,MAAM,CAAC;IAMd,MAAM,EAAG,MAAM,CAAC;IAMhB,MAAM,EAAG,MAAM,CAAC;IAMhB,WAAW,EAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"TimeOnly.d.ts","sourceRoot":"","sources":["../TimeOnly.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,qBAAa,QAAQ;IACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc;IAMvC,IAAI,EAAG,MAAM,CAAC;IAMd,MAAM,EAAG,MAAM,CAAC;IAMhB,MAAM,EAAG,MAAM,CAAC;IAMhB,WAAW,EAAG,MAAM,CAAC;IAOrB,mBAAmB,EAAG,MAAM,CAAC;IAY7B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,EAAE,WAAW,GAAE,MAAU,EAAE,mBAAmB,GAAE,MAAU,GAAG,QAAQ,CAYhI;IAYD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CA8BpC;IAQD,QAAQ,IAAI,MAAM,CAWjB;IAUD,MAAM,IAAI,MAAM,CAEf;IAOD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAOlD;CACJ"}
|
package/dist/TimeOnly.js
CHANGED
|
@@ -8,12 +8,17 @@ export class TimeOnly {
|
|
|
8
8
|
minute;
|
|
9
9
|
second;
|
|
10
10
|
millisecond;
|
|
11
|
-
|
|
11
|
+
subMillisecondTicks;
|
|
12
|
+
static from(hour, minute, second = 0, millisecond = 0, subMillisecondTicks = 0) {
|
|
13
|
+
if (!Number.isInteger(subMillisecondTicks) || subMillisecondTicks < 0 || subMillisecondTicks > 9999) {
|
|
14
|
+
throw new Error(`Invalid TimeOnly: subMillisecondTicks ${subMillisecondTicks} is out of range 0-9999`);
|
|
15
|
+
}
|
|
12
16
|
const timeOnly = new TimeOnly();
|
|
13
17
|
timeOnly.hour = hour;
|
|
14
18
|
timeOnly.minute = minute;
|
|
15
19
|
timeOnly.second = second;
|
|
16
20
|
timeOnly.millisecond = millisecond;
|
|
21
|
+
timeOnly.subMillisecondTicks = subMillisecondTicks;
|
|
17
22
|
return timeOnly;
|
|
18
23
|
}
|
|
19
24
|
static parse(value) {
|
|
@@ -21,14 +26,30 @@ export class TimeOnly {
|
|
|
21
26
|
if (match === null) {
|
|
22
27
|
throw new Error(`Invalid TimeOnly format: ${value}`);
|
|
23
28
|
}
|
|
24
|
-
const
|
|
25
|
-
|
|
29
|
+
const hour = parseInt(match[1], 10);
|
|
30
|
+
const minute = parseInt(match[2], 10);
|
|
31
|
+
const second = match[3] ? parseInt(match[3], 10) : 0;
|
|
32
|
+
if (hour > 23) {
|
|
33
|
+
throw new Error(`Invalid TimeOnly: hour ${hour} is out of range 0-23 in '${value}'`);
|
|
34
|
+
}
|
|
35
|
+
if (minute > 59) {
|
|
36
|
+
throw new Error(`Invalid TimeOnly: minute ${minute} is out of range 0-59 in '${value}'`);
|
|
37
|
+
}
|
|
38
|
+
if (second > 59) {
|
|
39
|
+
throw new Error(`Invalid TimeOnly: second ${second} is out of range 0-59 in '${value}'`);
|
|
40
|
+
}
|
|
41
|
+
const fraction = (match[4] ?? '').padEnd(7, '0');
|
|
42
|
+
return TimeOnly.from(hour, minute, second, parseInt(fraction.substring(0, 3), 10), parseInt(fraction.substring(3), 10));
|
|
26
43
|
}
|
|
27
44
|
toString() {
|
|
28
45
|
const hour = this.hour.toString().padStart(2, '0');
|
|
29
46
|
const minute = this.minute.toString().padStart(2, '0');
|
|
30
47
|
const second = this.second.toString().padStart(2, '0');
|
|
31
48
|
const time = `${hour}:${minute}:${second}`;
|
|
49
|
+
const subMillisecondTicks = this.subMillisecondTicks ?? 0;
|
|
50
|
+
if (subMillisecondTicks > 0) {
|
|
51
|
+
return `${time}.${this.millisecond.toString().padStart(3, '0')}${subMillisecondTicks.toString().padStart(4, '0')}`;
|
|
52
|
+
}
|
|
32
53
|
return this.millisecond > 0 ? `${time}.${this.millisecond.toString().padStart(3, '0')}` : time;
|
|
33
54
|
}
|
|
34
55
|
toJSON() {
|
|
@@ -39,7 +60,8 @@ export class TimeOnly {
|
|
|
39
60
|
this.hour === other.hour &&
|
|
40
61
|
this.minute === other.minute &&
|
|
41
62
|
this.second === other.second &&
|
|
42
|
-
this.millisecond === other.millisecond
|
|
63
|
+
this.millisecond === other.millisecond &&
|
|
64
|
+
(this.subMillisecondTicks ?? 0) === (other.subMillisecondTicks ?? 0);
|
|
43
65
|
}
|
|
44
66
|
}
|
|
45
67
|
__decorate([
|
|
@@ -58,4 +80,8 @@ __decorate([
|
|
|
58
80
|
field(Number),
|
|
59
81
|
__metadata("design:type", Number)
|
|
60
82
|
], TimeOnly.prototype, "millisecond", void 0);
|
|
83
|
+
__decorate([
|
|
84
|
+
field(Number),
|
|
85
|
+
__metadata("design:type", Number)
|
|
86
|
+
], TimeOnly.prototype, "subMillisecondTicks", void 0);
|
|
61
87
|
//# sourceMappingURL=TimeOnly.js.map
|
package/dist/TimeOnly.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeOnly.js","sourceRoot":"","sources":["../TimeOnly.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,aAAa,GAAG,gDAAgD,CAAC;AASvE,MAAM,OAAO,QAAQ;IACjB,MAAM,CAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;IAMvC,IAAI,CAAU;IAMd,MAAM,CAAU;IAMhB,MAAM,CAAU;IAMhB,WAAW,CAAU;
|
|
1
|
+
{"version":3,"file":"TimeOnly.js","sourceRoot":"","sources":["../TimeOnly.ts"],"names":[],"mappings":"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"}
|
package/dist/TimeSpan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeSpan.d.ts","sourceRoot":"","sources":["../TimeSpan.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,qBAAa,QAAQ;IACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc;IAIvC,KAAK,EAAG,MAAM,CAAC;IAGf,IAAI,EAAG,MAAM,CAAC;IAGd,KAAK,EAAG,MAAM,CAAC;IAGf,YAAY,EAAG,MAAM,CAAC;IAGtB,YAAY,EAAG,MAAM,CAAC;IAGtB,WAAW,EAAG,MAAM,CAAC;IAGrB,OAAO,EAAG,MAAM,CAAC;IAGjB,OAAO,EAAG,MAAM,CAAC;IAGjB,SAAS,EAAG,MAAM,CAAC;IAGnB,UAAU,EAAG,MAAM,CAAC;IAGpB,iBAAiB,EAAG,MAAM,CAAC;IAG3B,iBAAiB,EAAG,MAAM,CAAC;IAG3B,gBAAgB,EAAG,MAAM,CAAC;IAG1B,YAAY,EAAG,MAAM,CAAC;IAGtB,YAAY,EAAG,MAAM,CAAC;IAStB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"TimeSpan.d.ts","sourceRoot":"","sources":["../TimeSpan.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,qBAAa,QAAQ;IACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc;IAIvC,KAAK,EAAG,MAAM,CAAC;IAGf,IAAI,EAAG,MAAM,CAAC;IAGd,KAAK,EAAG,MAAM,CAAC;IAGf,YAAY,EAAG,MAAM,CAAC;IAGtB,YAAY,EAAG,MAAM,CAAC;IAGtB,WAAW,EAAG,MAAM,CAAC;IAGrB,OAAO,EAAG,MAAM,CAAC;IAGjB,OAAO,EAAG,MAAM,CAAC;IAGjB,SAAS,EAAG,MAAM,CAAC;IAGnB,UAAU,EAAG,MAAM,CAAC;IAGpB,iBAAiB,EAAG,MAAM,CAAC;IAG3B,iBAAiB,EAAG,MAAM,CAAC;IAG3B,gBAAgB,EAAG,MAAM,CAAC;IAG1B,YAAY,EAAG,MAAM,CAAC;IAGtB,YAAY,EAAG,MAAM,CAAC;IAStB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAsEpC;IAOD,QAAQ,IAAI,MAAM,CAmCjB;IAOD,MAAM,IAAI,MAAM,CAEf;CACJ"}
|
package/dist/TimeSpan.js
CHANGED
|
@@ -29,11 +29,28 @@ export class TimeSpan {
|
|
|
29
29
|
const hours = parseInt(match[3], 10);
|
|
30
30
|
const minutes = parseInt(match[4], 10);
|
|
31
31
|
const seconds = parseInt(match[5], 10);
|
|
32
|
+
if (hours > 23) {
|
|
33
|
+
throw new Error(`Invalid TimeSpan: hours ${hours} is out of range 0-23 in '${value}'`);
|
|
34
|
+
}
|
|
35
|
+
if (minutes > 59) {
|
|
36
|
+
throw new Error(`Invalid TimeSpan: minutes ${minutes} is out of range 0-59 in '${value}'`);
|
|
37
|
+
}
|
|
38
|
+
if (seconds > 59) {
|
|
39
|
+
throw new Error(`Invalid TimeSpan: seconds ${seconds} is out of range 0-59 in '${value}'`);
|
|
40
|
+
}
|
|
41
|
+
const maxDays = 10675199;
|
|
42
|
+
if (days > maxDays) {
|
|
43
|
+
throw new Error(`Invalid TimeSpan: days ${days} is out of range 0-${maxDays} in '${value}'`);
|
|
44
|
+
}
|
|
32
45
|
const fractionalSeconds = match[6] ? match[6].padEnd(7, '0') : '0000000';
|
|
33
46
|
const ticksPerDay = 864000000000;
|
|
34
47
|
const ticksPerHour = 36000000000;
|
|
35
48
|
const ticksPerMinute = 600000000;
|
|
36
49
|
const ticksPerSecond = 10000000;
|
|
50
|
+
const remainderTicks = hours * ticksPerHour + minutes * ticksPerMinute + seconds * ticksPerSecond + parseInt(fractionalSeconds, 10);
|
|
51
|
+
if (days === maxDays && remainderTicks > (isNegative ? 100854775808 : 100854775807)) {
|
|
52
|
+
throw new Error(`Invalid TimeSpan: '${value}' is outside the range a TimeSpan can hold`);
|
|
53
|
+
}
|
|
37
54
|
const ticks = days * ticksPerDay +
|
|
38
55
|
hours * ticksPerHour +
|
|
39
56
|
minutes * ticksPerMinute +
|