@reifydb/core 0.0.1 → 0.1.1
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/constant.d.ts +7 -0
- package/dist/constant.d.ts.map +1 -0
- package/dist/constant.js +7 -0
- package/dist/constant.js.map +1 -0
- package/dist/decoder.d.ts +8 -0
- package/dist/decoder.d.ts.map +1 -0
- package/dist/decoder.js +59 -0
- package/dist/decoder.js.map +1 -0
- package/dist/index.d.ts +81 -56
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +190 -84
- package/dist/index.js.map +1 -1
- package/dist/schema/builder.d.ts +45 -0
- package/dist/schema/builder.d.ts.map +1 -0
- package/dist/schema/builder.js +114 -0
- package/dist/schema/builder.js.map +1 -0
- package/dist/schema/index.d.ts +11 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +12 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/inference.d.ts +16 -0
- package/dist/schema/inference.d.ts.map +1 -0
- package/dist/schema/inference.js +7 -0
- package/dist/schema/inference.js.map +1 -0
- package/dist/schema/parser.d.ts +8 -0
- package/dist/schema/parser.d.ts.map +1 -0
- package/dist/schema/parser.js +96 -0
- package/dist/schema/parser.js.map +1 -0
- package/dist/schema/simple-test.d.ts +7 -0
- package/dist/schema/simple-test.d.ts.map +1 -0
- package/dist/schema/simple-test.js +26 -0
- package/dist/schema/simple-test.js.map +1 -0
- package/dist/schema/test-refactor.d.ts +7 -0
- package/dist/schema/test-refactor.d.ts.map +1 -0
- package/dist/schema/test-refactor.js +97 -0
- package/dist/schema/test-refactor.js.map +1 -0
- package/dist/schema/types.d.ts +27 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +7 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/schema/validator.d.ts +8 -0
- package/dist/schema/validator.d.ts.map +1 -0
- package/dist/schema/validator.js +79 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/value/blob.d.ts +85 -0
- package/dist/value/blob.d.ts.map +1 -0
- package/dist/value/blob.js +255 -0
- package/dist/value/blob.js.map +1 -0
- package/dist/value/bool.d.ts +16 -0
- package/dist/value/bool.d.ts.map +1 -0
- package/dist/value/bool.js +46 -0
- package/dist/value/bool.js.map +1 -0
- package/dist/value/date.d.ts +71 -0
- package/dist/value/date.d.ts.map +1 -0
- package/dist/value/date.js +261 -0
- package/dist/value/date.js.map +1 -0
- package/dist/value/datetime.d.ts +99 -0
- package/dist/value/datetime.d.ts.map +1 -0
- package/dist/value/datetime.js +401 -0
- package/dist/value/datetime.js.map +1 -0
- package/dist/value/float4.d.ts +19 -0
- package/dist/value/float4.d.ts.map +1 -0
- package/dist/value/float4.js +68 -0
- package/dist/value/float4.js.map +1 -0
- package/dist/value/float8.d.ts +16 -0
- package/dist/value/float8.d.ts.map +1 -0
- package/dist/value/float8.js +44 -0
- package/dist/value/float8.js.map +1 -0
- package/dist/value/index.d.ts +38 -0
- package/dist/value/index.d.ts.map +1 -0
- package/dist/value/index.js +31 -0
- package/dist/value/index.js.map +1 -0
- package/dist/value/int1.d.ts +18 -0
- package/dist/value/int1.d.ts.map +1 -0
- package/dist/value/int1.js +46 -0
- package/dist/value/int1.js.map +1 -0
- package/dist/value/int16.d.ts +18 -0
- package/dist/value/int16.d.ts.map +1 -0
- package/dist/value/int16.js +67 -0
- package/dist/value/int16.js.map +1 -0
- package/dist/value/int2.d.ts +18 -0
- package/dist/value/int2.d.ts.map +1 -0
- package/dist/value/int2.js +46 -0
- package/dist/value/int2.js.map +1 -0
- package/dist/value/int4.d.ts +18 -0
- package/dist/value/int4.d.ts.map +1 -0
- package/dist/value/int4.js +46 -0
- package/dist/value/int4.js.map +1 -0
- package/dist/value/int8.d.ts +18 -0
- package/dist/value/int8.d.ts.map +1 -0
- package/dist/value/int8.js +53 -0
- package/dist/value/int8.js.map +1 -0
- package/dist/value/interval.d.ts +144 -0
- package/dist/value/interval.d.ts.map +1 -0
- package/dist/value/interval.js +357 -0
- package/dist/value/interval.js.map +1 -0
- package/dist/value/rowid.d.ts +18 -0
- package/dist/value/rowid.d.ts.map +1 -0
- package/dist/value/rowid.js +53 -0
- package/dist/value/rowid.js.map +1 -0
- package/dist/value/time.d.ts +74 -0
- package/dist/value/time.d.ts.map +1 -0
- package/dist/value/time.js +214 -0
- package/dist/value/time.js.map +1 -0
- package/dist/value/uint1.d.ts +18 -0
- package/dist/value/uint1.d.ts.map +1 -0
- package/dist/value/uint1.js +46 -0
- package/dist/value/uint1.js.map +1 -0
- package/dist/value/uint16.d.ts +18 -0
- package/dist/value/uint16.d.ts.map +1 -0
- package/dist/value/uint16.js +67 -0
- package/dist/value/uint16.js.map +1 -0
- package/dist/value/uint2.d.ts +18 -0
- package/dist/value/uint2.d.ts.map +1 -0
- package/dist/value/uint2.js +46 -0
- package/dist/value/uint2.js.map +1 -0
- package/dist/value/uint4.d.ts +18 -0
- package/dist/value/uint4.d.ts.map +1 -0
- package/dist/value/uint4.js +46 -0
- package/dist/value/uint4.js.map +1 -0
- package/dist/value/uint8.d.ts +19 -0
- package/dist/value/uint8.d.ts.map +1 -0
- package/dist/value/uint8.js +58 -0
- package/dist/value/uint8.js.map +1 -0
- package/dist/value/undefined.d.ts +48 -0
- package/dist/value/undefined.d.ts.map +1 -0
- package/dist/value/undefined.js +77 -0
- package/dist/value/undefined.js.map +1 -0
- package/dist/value/utf8.d.ts +16 -0
- package/dist/value/utf8.d.ts.map +1 -0
- package/dist/value/utf8.js +39 -0
- package/dist/value/utf8.js.map +1 -0
- package/dist/value/uuid4.d.ts +69 -0
- package/dist/value/uuid4.d.ts.map +1 -0
- package/dist/value/uuid4.js +162 -0
- package/dist/value/uuid4.js.map +1 -0
- package/dist/value/uuid7.d.ts +74 -0
- package/dist/value/uuid7.d.ts.map +1 -0
- package/dist/value/uuid7.js +175 -0
- package/dist/value/uuid7.js.map +1 -0
- package/package.json +12 -11
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MIT License
|
|
3
|
+
* Copyright (c) 2025 ReifyDB
|
|
4
|
+
* See license.md file for full license text
|
|
5
|
+
*/
|
|
6
|
+
import { UNDEFINED_VALUE } from "../constant";
|
|
7
|
+
/**
|
|
8
|
+
* A date value representing a calendar date (year, month, day) without time information.
|
|
9
|
+
* Always interpreted in UTC.
|
|
10
|
+
* Internally stored as months and days.
|
|
11
|
+
*/
|
|
12
|
+
export class DateValue {
|
|
13
|
+
constructor(value) {
|
|
14
|
+
this.type = "Date";
|
|
15
|
+
if (value !== undefined) {
|
|
16
|
+
if (value instanceof Date) {
|
|
17
|
+
// Remove time component - set to UTC midnight
|
|
18
|
+
const year = value.getUTCFullYear();
|
|
19
|
+
const month = value.getUTCMonth() + 1; // Convert to 1-based
|
|
20
|
+
const day = value.getUTCDate();
|
|
21
|
+
this.months = year * 12 + (month - 1);
|
|
22
|
+
this.days = day;
|
|
23
|
+
}
|
|
24
|
+
else if (typeof value === 'string') {
|
|
25
|
+
// Parse YYYY-MM-DD format
|
|
26
|
+
const parsed = DateValue.parseDate(value);
|
|
27
|
+
if (!parsed) {
|
|
28
|
+
throw new Error(`Invalid date string: ${value}`);
|
|
29
|
+
}
|
|
30
|
+
this.months = parsed.months;
|
|
31
|
+
this.days = parsed.days;
|
|
32
|
+
}
|
|
33
|
+
else if (typeof value === 'number') {
|
|
34
|
+
// Interpret as days since epoch
|
|
35
|
+
const date = DateValue.fromDaysSinceEpochToComponents(value);
|
|
36
|
+
if (!date) {
|
|
37
|
+
throw new Error(`Invalid days since epoch: ${value}`);
|
|
38
|
+
}
|
|
39
|
+
this.months = date.months;
|
|
40
|
+
this.days = date.days;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new Error(`Date value must be a Date, string, or number, got ${typeof value}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.months = undefined;
|
|
48
|
+
this.days = undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create a DateValue from year, month (1-12), and day (1-31)
|
|
53
|
+
*/
|
|
54
|
+
static fromYMD(year, month, day) {
|
|
55
|
+
// Validate the date is valid
|
|
56
|
+
if (!DateValue.isValidDate(year, month, day)) {
|
|
57
|
+
throw new Error(`Invalid date: ${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`);
|
|
58
|
+
}
|
|
59
|
+
const result = new DateValue(undefined);
|
|
60
|
+
result.months = year * 12 + (month - 1);
|
|
61
|
+
result.days = day;
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get today's date (in UTC)
|
|
66
|
+
*/
|
|
67
|
+
static today() {
|
|
68
|
+
const now = new Date();
|
|
69
|
+
return DateValue.fromYMD(now.getUTCFullYear(), now.getUTCMonth() + 1, now.getUTCDate());
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Parse a date string in YYYY-MM-DD format
|
|
73
|
+
*/
|
|
74
|
+
static parse(str) {
|
|
75
|
+
const trimmed = str.trim();
|
|
76
|
+
if (trimmed === '' || trimmed === UNDEFINED_VALUE) {
|
|
77
|
+
return new DateValue(undefined);
|
|
78
|
+
}
|
|
79
|
+
const parsed = DateValue.parseDate(trimmed);
|
|
80
|
+
if (!parsed) {
|
|
81
|
+
throw new Error(`Cannot parse "${str}" as Date`);
|
|
82
|
+
}
|
|
83
|
+
const result = new DateValue(undefined);
|
|
84
|
+
result.months = parsed.months;
|
|
85
|
+
result.days = parsed.days;
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Convert to days since Unix epoch (1970-01-01) for storage
|
|
90
|
+
*/
|
|
91
|
+
toDaysSinceEpoch() {
|
|
92
|
+
if (this.months === undefined || this.days === undefined) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
const year = Math.floor(this.months / 12);
|
|
96
|
+
// Handle negative months correctly
|
|
97
|
+
let m = this.months % 12;
|
|
98
|
+
if (m < 0)
|
|
99
|
+
m += 12;
|
|
100
|
+
const month = m + 1;
|
|
101
|
+
// Create date with special handling for years < 100
|
|
102
|
+
let date;
|
|
103
|
+
if (year >= 0 && year < 100) {
|
|
104
|
+
date = new Date(Date.UTC(2000, month - 1, this.days));
|
|
105
|
+
date.setUTCFullYear(year);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
date = new Date(Date.UTC(year, month - 1, this.days));
|
|
109
|
+
}
|
|
110
|
+
const epoch = new Date(Date.UTC(1970, 0, 1));
|
|
111
|
+
const diffMs = date.getTime() - epoch.getTime();
|
|
112
|
+
return Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Create from days since Unix epoch
|
|
116
|
+
*/
|
|
117
|
+
static fromDaysSinceEpochToComponents(days) {
|
|
118
|
+
const epoch = new Date(Date.UTC(1970, 0, 1));
|
|
119
|
+
const ms = days * 24 * 60 * 60 * 1000;
|
|
120
|
+
const date = new Date(epoch.getTime() + ms);
|
|
121
|
+
// Check for valid date
|
|
122
|
+
if (!isFinite(date.getTime())) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const year = date.getUTCFullYear();
|
|
126
|
+
const month = date.getUTCMonth() + 1;
|
|
127
|
+
const day = date.getUTCDate();
|
|
128
|
+
return {
|
|
129
|
+
months: year * 12 + (month - 1),
|
|
130
|
+
days: day
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get the year component
|
|
135
|
+
*/
|
|
136
|
+
year() {
|
|
137
|
+
if (this.months === undefined)
|
|
138
|
+
return undefined;
|
|
139
|
+
return Math.floor(this.months / 12);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get the month component (1-12)
|
|
143
|
+
*/
|
|
144
|
+
month() {
|
|
145
|
+
if (this.months === undefined)
|
|
146
|
+
return undefined;
|
|
147
|
+
// Handle negative months correctly
|
|
148
|
+
let m = this.months % 12;
|
|
149
|
+
if (m < 0)
|
|
150
|
+
m += 12;
|
|
151
|
+
return m + 1;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get the day component (1-31)
|
|
155
|
+
*/
|
|
156
|
+
day() {
|
|
157
|
+
return this.days;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Format as YYYY-MM-DD string
|
|
161
|
+
*/
|
|
162
|
+
toString() {
|
|
163
|
+
if (this.months === undefined || this.days === undefined) {
|
|
164
|
+
return 'undefined';
|
|
165
|
+
}
|
|
166
|
+
const year = Math.floor(this.months / 12);
|
|
167
|
+
// Handle negative months correctly
|
|
168
|
+
let m = this.months % 12;
|
|
169
|
+
if (m < 0)
|
|
170
|
+
m += 12;
|
|
171
|
+
const month = String(m + 1).padStart(2, '0');
|
|
172
|
+
const day = String(this.days).padStart(2, '0');
|
|
173
|
+
// Handle negative years (BC dates)
|
|
174
|
+
if (year < 0) {
|
|
175
|
+
const absYear = Math.abs(year);
|
|
176
|
+
return `-${String(absYear).padStart(4, '0')}-${month}-${day}`;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
return `${String(year).padStart(4, '0')}-${month}-${day}`;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
valueOf() {
|
|
183
|
+
if (this.months === undefined || this.days === undefined) {
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
const year = Math.floor(this.months / 12);
|
|
187
|
+
// Handle negative months correctly
|
|
188
|
+
let m = this.months % 12;
|
|
189
|
+
if (m < 0)
|
|
190
|
+
m += 12;
|
|
191
|
+
const month = m + 1;
|
|
192
|
+
// Handle years < 100 specially
|
|
193
|
+
let date;
|
|
194
|
+
if (year >= 0 && year < 100) {
|
|
195
|
+
date = new Date(Date.UTC(2000, month - 1, this.days));
|
|
196
|
+
date.setUTCFullYear(year);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
date = new Date(Date.UTC(year, month - 1, this.days));
|
|
200
|
+
}
|
|
201
|
+
return date;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get the internal representation
|
|
205
|
+
*/
|
|
206
|
+
get value() {
|
|
207
|
+
return this.valueOf();
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Helper to parse YYYY-MM-DD format
|
|
211
|
+
*/
|
|
212
|
+
static parseDate(str) {
|
|
213
|
+
// Match YYYY-MM-DD format, including negative years
|
|
214
|
+
const match = str.match(/^(-?\d{1,4})-(\d{2})-(\d{2})$/);
|
|
215
|
+
if (!match) {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
const year = parseInt(match[1], 10);
|
|
219
|
+
const month = parseInt(match[2], 10);
|
|
220
|
+
const day = parseInt(match[3], 10);
|
|
221
|
+
// Validate month and day ranges
|
|
222
|
+
if (month < 1 || month > 12) {
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
if (day < 1 || day > 31) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
// Validate the date is valid (e.g., no Feb 30)
|
|
229
|
+
if (!DateValue.isValidDate(year, month, day)) {
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
months: year * 12 + (month - 1),
|
|
234
|
+
days: day
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Helper to validate a date
|
|
239
|
+
*/
|
|
240
|
+
static isValidDate(year, month, day) {
|
|
241
|
+
// Create a date and check if components match
|
|
242
|
+
let date;
|
|
243
|
+
if (year >= 0 && year < 100) {
|
|
244
|
+
date = new Date(Date.UTC(2000, month - 1, day));
|
|
245
|
+
date.setUTCFullYear(year);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
date = new Date(Date.UTC(year, month - 1, day));
|
|
249
|
+
}
|
|
250
|
+
return date.getUTCFullYear() === year &&
|
|
251
|
+
date.getUTCMonth() === month - 1 &&
|
|
252
|
+
date.getUTCDate() === day;
|
|
253
|
+
}
|
|
254
|
+
encode() {
|
|
255
|
+
return {
|
|
256
|
+
type: this.type,
|
|
257
|
+
value: this.value === undefined ? UNDEFINED_VALUE : this.toString()
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/value/date.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MIT License
|
|
3
|
+
* Copyright (c) 2025 ReifyDB
|
|
4
|
+
* See license.md file for full license text
|
|
5
|
+
*/
|
|
6
|
+
import { Type, Value, TypeValuePair } from ".";
|
|
7
|
+
import { DateValue } from "./date";
|
|
8
|
+
import { TimeValue } from "./time";
|
|
9
|
+
/**
|
|
10
|
+
* A date and time value with nanosecond precision.
|
|
11
|
+
* Always in UTC timezone.
|
|
12
|
+
* Internally stored as months, days, and nanoseconds.
|
|
13
|
+
*/
|
|
14
|
+
export declare class DateTimeValue implements Value {
|
|
15
|
+
readonly type: Type;
|
|
16
|
+
private readonly months?;
|
|
17
|
+
private readonly days?;
|
|
18
|
+
private readonly nanos?;
|
|
19
|
+
constructor(value?: Date | string | number | bigint);
|
|
20
|
+
/**
|
|
21
|
+
* Create a DateTimeValue from year, month, day, hour, minute, second, nanosecond
|
|
22
|
+
*/
|
|
23
|
+
static fromYMDHMSN(year: number, month: number, day: number, hour: number, minute: number, second: number, nano?: number): DateTimeValue;
|
|
24
|
+
/**
|
|
25
|
+
* Create a DateTimeValue from year, month, day, hour, minute, second (no fractional)
|
|
26
|
+
*/
|
|
27
|
+
static fromYMDHMS(year: number, month: number, day: number, hour: number, minute: number, second: number): DateTimeValue;
|
|
28
|
+
/**
|
|
29
|
+
* Create from Unix timestamp in seconds
|
|
30
|
+
*/
|
|
31
|
+
static fromTimestamp(seconds: number): DateTimeValue;
|
|
32
|
+
/**
|
|
33
|
+
* Create from Unix timestamp in milliseconds
|
|
34
|
+
*/
|
|
35
|
+
static fromTimestampMillis(millis: number): DateTimeValue;
|
|
36
|
+
/**
|
|
37
|
+
* Create from nanoseconds since Unix epoch
|
|
38
|
+
*/
|
|
39
|
+
static fromNanosSinceEpoch(nanos: bigint): DateTimeValue;
|
|
40
|
+
/**
|
|
41
|
+
* Create from separate seconds and nanoseconds
|
|
42
|
+
*/
|
|
43
|
+
static fromParts(seconds: number, nanos: number): DateTimeValue;
|
|
44
|
+
/**
|
|
45
|
+
* Get current datetime
|
|
46
|
+
*/
|
|
47
|
+
static now(): DateTimeValue;
|
|
48
|
+
/**
|
|
49
|
+
* Get default datetime (Unix epoch)
|
|
50
|
+
*/
|
|
51
|
+
static default(): DateTimeValue;
|
|
52
|
+
/**
|
|
53
|
+
* Parse a datetime string in ISO 8601 format
|
|
54
|
+
*/
|
|
55
|
+
static parse(str: string): DateTimeValue;
|
|
56
|
+
/**
|
|
57
|
+
* Get Unix timestamp in seconds
|
|
58
|
+
*/
|
|
59
|
+
timestamp(): number | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Get Unix timestamp in nanoseconds
|
|
62
|
+
*/
|
|
63
|
+
timestampNanos(): bigint | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Convert to nanoseconds since Unix epoch for storage
|
|
66
|
+
*/
|
|
67
|
+
toNanosSinceEpoch(): bigint | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Get separate seconds and nanoseconds for storage
|
|
70
|
+
*/
|
|
71
|
+
toParts(): [number, number] | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Get the date component
|
|
74
|
+
*/
|
|
75
|
+
date(): DateValue | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Get the time component
|
|
78
|
+
*/
|
|
79
|
+
time(): TimeValue | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Format as ISO 8601 string with nanosecond precision and Z suffix
|
|
82
|
+
*/
|
|
83
|
+
toString(): string;
|
|
84
|
+
valueOf(): Date | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Get the internal representation as a Date
|
|
87
|
+
*/
|
|
88
|
+
get value(): Date | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Helper to parse ISO 8601 datetime format
|
|
91
|
+
*/
|
|
92
|
+
private static parseDateTime;
|
|
93
|
+
/**
|
|
94
|
+
* Helper to validate a date
|
|
95
|
+
*/
|
|
96
|
+
private static isValidDate;
|
|
97
|
+
encode(): TypeValuePair;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=datetime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../src/value/datetime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,GAAG,CAAC;AAE7C,OAAO,EAAC,SAAS,EAAC,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,QAAQ,CAAC;AAEjC;;;;GAIG;AACH,qBAAa,aAAc,YAAW,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAuB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAS;gBAEpB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IA2EnD;;OAEG;IACH,MAAM,CAAC,WAAW,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAU,GACjB,aAAa;IA8BhB;;OAEG;IACH,MAAM,CAAC,UAAU,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACf,aAAa;IAIhB;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAIpD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAIzD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;IAIxD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa;IAe/D;;OAEG;IACH,MAAM,CAAC,GAAG,IAAI,aAAa;IAI3B;;OAEG;IACH,MAAM,CAAC,OAAO,IAAI,aAAa;IAI/B;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAmBxC;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,SAAS;IAM/B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAcpC;;OAEG;IACH,iBAAiB,IAAI,MAAM,GAAG,SAAS;IAIvC;;OAEG;IACH,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IAWvC;;OAEG;IACH,IAAI,IAAI,SAAS,GAAG,SAAS;IAU7B;;OAEG;IACH,IAAI,IAAI,SAAS,GAAG,SAAS;IAK7B;;OAEG;IACH,QAAQ,IAAI,MAAM;IAsClB,OAAO,IAAI,IAAI,GAAG,SAAS;IAiC3B;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,GAAG,SAAS,CAE5B;IAED;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAqD5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAe1B,MAAM,IAAI,aAAa;CAM1B"}
|