@@ -24,22 +24,22 @@ import {
24
24
DateTimeWithZoneId ,
25
25
DateTimeWithZoneOffset ,
26
26
Duration ,
27
- Time ,
28
27
isDate ,
29
28
isDateTimeWithZoneId ,
30
29
isDateTimeWithZoneOffset ,
31
30
isDuration ,
32
31
isLocalDateTime ,
33
32
isLocalTime ,
34
- isTime
33
+ isTime ,
34
+ Time
35
35
} from '../temporal-types' ;
36
36
import { int } from '../integer' ;
37
37
import {
38
38
dateToEpochDay ,
39
- localDateTimeToEpochSecond ,
40
- localTimeToNanoOfDay ,
41
39
epochDayToDate ,
42
40
epochSecondAndNanoToLocalDateTime ,
41
+ localDateTimeToEpochSecond ,
42
+ localTimeToNanoOfDay ,
43
43
nanoOfDayToLocalTime
44
44
} from '../internal/temporal-util' ;
45
45
@@ -143,6 +143,12 @@ export class Unpacker extends v1.Unpacker {
143
143
}
144
144
}
145
145
146
+ /**
147
+ * Pack given 2D or 3D point.
148
+ * @param {Point } point the point value to pack.
149
+ * @param {Packer } packer the packer to use.
150
+ * @param {function } onError the error callback.
151
+ */
146
152
function packPoint ( point , packer , onError ) {
147
153
const is2DPoint = point . z === null || point . z === undefined ;
148
154
if ( is2DPoint ) {
@@ -152,6 +158,12 @@ function packPoint(point, packer, onError) {
152
158
}
153
159
}
154
160
161
+ /**
162
+ * Pack given 2D point.
163
+ * @param {Point } point the point value to pack.
164
+ * @param {Packer } packer the packer to use.
165
+ * @param {function } onError the error callback.
166
+ */
155
167
function packPoint2D ( point , packer , onError ) {
156
168
const packableStructFields = [
157
169
packer . packable ( int ( point . srid ) , onError ) ,
@@ -161,6 +173,12 @@ function packPoint2D(point, packer, onError) {
161
173
packer . packStruct ( POINT_2D , packableStructFields , onError ) ;
162
174
}
163
175
176
+ /**
177
+ * Pack given 3D point.
178
+ * @param {Point } point the point value to pack.
179
+ * @param {Packer } packer the packer to use.
180
+ * @param {function } onError the error callback.
181
+ */
164
182
function packPoint3D ( point , packer , onError ) {
165
183
const packableStructFields = [
166
184
packer . packable ( int ( point . srid ) , onError ) ,
@@ -171,6 +189,13 @@ function packPoint3D(point, packer, onError) {
171
189
packer . packStruct ( POINT_3D , packableStructFields , onError ) ;
172
190
}
173
191
192
+ /**
193
+ * Unpack 2D point value using the given unpacker.
194
+ * @param {Unpacker } unpacker the unpacker to use.
195
+ * @param {number } structSize the retrieved struct size.
196
+ * @param {BaseBuffer } buffer the buffer to unpack from.
197
+ * @return {Point } the unpacked 2D point value.
198
+ */
174
199
function unpackPoint2D ( unpacker , structSize , buffer ) {
175
200
unpacker . _verifyStructSize ( 'Point2D' , POINT_2D_STRUCT_SIZE , structSize ) ;
176
201
@@ -182,6 +207,13 @@ function unpackPoint2D(unpacker, structSize, buffer) {
182
207
) ;
183
208
}
184
209
210
+ /**
211
+ * Unpack 3D point value using the given unpacker.
212
+ * @param {Unpacker } unpacker the unpacker to use.
213
+ * @param {number } structSize the retrieved struct size.
214
+ * @param {BaseBuffer } buffer the buffer to unpack from.
215
+ * @return {Point } the unpacked 3D point value.
216
+ */
185
217
function unpackPoint3D ( unpacker , structSize , buffer ) {
186
218
unpacker . _verifyStructSize ( 'Point3D' , POINT_3D_STRUCT_SIZE , structSize ) ;
187
219
@@ -193,6 +225,12 @@ function unpackPoint3D(unpacker, structSize, buffer) {
193
225
) ;
194
226
}
195
227
228
+ /**
229
+ * Pack given duration.
230
+ * @param {Duration } value the duration value to pack.
231
+ * @param {Packer } packer the packer to use.
232
+ * @param {function } onError the error callback.
233
+ */
196
234
function packDuration ( value , packer , onError ) {
197
235
const months = int ( value . months ) ;
198
236
const days = int ( value . days ) ;
@@ -208,6 +246,13 @@ function packDuration(value, packer, onError) {
208
246
packer . packStruct ( DURATION , packableStructFields , onError ) ;
209
247
}
210
248
249
+ /**
250
+ * Unpack duration value using the given unpacker.
251
+ * @param {Unpacker } unpacker the unpacker to use.
252
+ * @param {number } structSize the retrieved struct size.
253
+ * @param {BaseBuffer } buffer the buffer to unpack from.
254
+ * @return {Duration } the unpacked duration value.
255
+ */
211
256
function unpackDuration ( unpacker , structSize , buffer ) {
212
257
unpacker . _verifyStructSize ( 'Duration' , DURATION_STRUCT_SIZE , structSize ) ;
213
258
@@ -219,15 +264,28 @@ function unpackDuration(unpacker, structSize, buffer) {
219
264
return new Duration ( months , days , seconds , nanoseconds ) ;
220
265
}
221
266
267
+ /**
268
+ * Pack given local time.
269
+ * @param {LocalTime } value the local time value to pack.
270
+ * @param {Packer } packer the packer to use.
271
+ * @param {function } onError the error callback.
272
+ */
222
273
function packLocalTime ( value , packer , onError ) {
223
- const nanoOfDay = localTimeToNanoOfDay ( value ) ;
274
+ const nanoOfDay = localTimeToNanoOfDay ( value . hour , value . minute , value . second , value . nanosecond ) ;
224
275
225
276
const packableStructFields = [
226
277
packer . packable ( nanoOfDay , onError )
227
278
] ;
228
279
packer . packStruct ( LOCAL_TIME , packableStructFields , onError ) ;
229
280
}
230
281
282
+ /**
283
+ * Unpack local time value using the given unpacker.
284
+ * @param {Unpacker } unpacker the unpacker to use.
285
+ * @param {number } structSize the retrieved struct size.
286
+ * @param {BaseBuffer } buffer the buffer to unpack from.
287
+ * @return {LocalTime } the unpacked local time value.
288
+ */
231
289
function unpackLocalTime ( unpacker , structSize , buffer ) {
232
290
unpacker . _verifyStructSize ( 'LocalTime' , LOCAL_TIME_STRUCT_SIZE , structSize ) ;
233
291
@@ -242,7 +300,7 @@ function unpackLocalTime(unpacker, structSize, buffer) {
242
300
* @param {function } onError the error callback.
243
301
*/
244
302
function packTime ( value , packer , onError ) {
245
- const nanoOfDay = localTimeToNanoOfDay ( value . localTime ) ;
303
+ const nanoOfDay = localTimeToNanoOfDay ( value . hour , value . minute , value . second , value . nanosecond ) ;
246
304
const offsetSeconds = int ( value . offsetSeconds ) ;
247
305
248
306
const packableStructFields = [
@@ -266,7 +324,7 @@ function unpackTime(unpacker, structSize, buffer) {
266
324
const offsetSeconds = unpacker . unpack ( buffer ) ;
267
325
268
326
const localTime = nanoOfDayToLocalTime ( nanoOfDay ) ;
269
- return new Time ( localTime , offsetSeconds ) ;
327
+ return new Time ( localTime . hour , localTime . minute , localTime . second , localTime . nanosecond , offsetSeconds ) ;
270
328
}
271
329
272
330
/**
@@ -276,7 +334,7 @@ function unpackTime(unpacker, structSize, buffer) {
276
334
* @param {function } onError the error callback.
277
335
*/
278
336
function packDate ( value , packer , onError ) {
279
- const epochDay = dateToEpochDay ( value ) ;
337
+ const epochDay = dateToEpochDay ( value . year , value . month , value . day ) ;
280
338
281
339
const packableStructFields = [
282
340
packer . packable ( epochDay , onError )
@@ -305,8 +363,8 @@ function unpackDate(unpacker, structSize, buffer) {
305
363
* @param {function } onError the error callback.
306
364
*/
307
365
function packLocalDateTime ( value , packer , onError ) {
308
- const epochSecond = localDateTimeToEpochSecond ( value ) ;
309
- const nano = int ( value . localTime . nanosecond ) ;
366
+ const epochSecond = localDateTimeToEpochSecond ( value . year , value . month , value . day , value . hour , value . minute , value . second , value . nanosecond ) ;
367
+ const nano = int ( value . nanosecond ) ;
310
368
311
369
const packableStructFields = [
312
370
packer . packable ( epochSecond , onError ) ,
@@ -338,8 +396,8 @@ function unpackLocalDateTime(unpacker, structSize, buffer) {
338
396
* @param {function } onError the error callback.
339
397
*/
340
398
function packDateTimeWithZoneOffset ( value , packer , onError ) {
341
- const epochSecond = localDateTimeToEpochSecond ( value . localDateTime ) ;
342
- const nano = int ( value . localDateTime . localTime . nanosecond ) ;
399
+ const epochSecond = localDateTimeToEpochSecond ( value . year , value . month , value . day , value . hour , value . minute , value . second , value . nanosecond ) ;
400
+ const nano = int ( value . nanosecond ) ;
343
401
const offsetSeconds = int ( value . offsetSeconds ) ;
344
402
345
403
const packableStructFields = [
@@ -365,7 +423,8 @@ function unpackDateTimeWithZoneOffset(unpacker, structSize, buffer) {
365
423
const offsetSeconds = unpacker . unpack ( buffer ) ;
366
424
367
425
const localDateTime = epochSecondAndNanoToLocalDateTime ( epochSecond , nano ) ;
368
- return new DateTimeWithZoneOffset ( localDateTime , offsetSeconds ) ;
426
+ return new DateTimeWithZoneOffset ( localDateTime . year , localDateTime . month , localDateTime . day , localDateTime . hour ,
427
+ localDateTime . minute , localDateTime . second , localDateTime . nanosecond , offsetSeconds ) ;
369
428
}
370
429
371
430
/**
@@ -375,8 +434,8 @@ function unpackDateTimeWithZoneOffset(unpacker, structSize, buffer) {
375
434
* @param {function } onError the error callback.
376
435
*/
377
436
function packDateTimeWithZoneId ( value , packer , onError ) {
378
- const epochSecond = localDateTimeToEpochSecond ( value . localDateTime ) ;
379
- const nano = int ( value . localDateTime . localTime . nanosecond ) ;
437
+ const epochSecond = localDateTimeToEpochSecond ( value . year , value . month , value . day , value . hour , value . minute , value . second , value . nanosecond ) ;
438
+ const nano = int ( value . nanosecond ) ;
380
439
const zoneId = value . zoneId ;
381
440
382
441
const packableStructFields = [
@@ -402,5 +461,6 @@ function unpackDateTimeWithZoneId(unpacker, structSize, buffer) {
402
461
const zoneId = unpacker . unpack ( buffer ) ;
403
462
404
463
const localDateTime = epochSecondAndNanoToLocalDateTime ( epochSecond , nano ) ;
405
- return new DateTimeWithZoneId ( localDateTime , zoneId ) ;
464
+ return new DateTimeWithZoneId ( localDateTime . year , localDateTime . month , localDateTime . day , localDateTime . hour ,
465
+ localDateTime . minute , localDateTime . second , localDateTime . nanosecond , zoneId ) ;
406
466
}
0 commit comments