File tree Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import {isFloat32} from '../../util/buffers/isFloat32';
22import { JsonPackExtension } from '../JsonPackExtension' ;
33import { CborEncoderFast } from './CborEncoderFast' ;
44import type { IWriter , IWriterGrowable } from '../../util/buffers' ;
5+ import { JsonPackValue } from '../JsonPackValue' ;
56
67export class CborEncoder < W extends IWriter & IWriterGrowable = IWriter & IWriterGrowable > extends CborEncoderFast < W > {
78 /**
@@ -35,6 +36,9 @@ export class CborEncoder<W extends IWriter & IWriterGrowable = IWriter & IWriter
3536 return this . writeMap ( value as Map < unknown , unknown > ) ;
3637 case JsonPackExtension :
3738 return this . writeTag ( ( < JsonPackExtension > value ) . tag , ( < JsonPackExtension > value ) . val ) ;
39+ case JsonPackValue :
40+ const buf = ( value as JsonPackValue ) . val ;
41+ return this . writer . buf ( buf , buf . length ) ;
3842 default :
3943 return this . writeUnknown ( value ) ;
4044 }
Original file line number Diff line number Diff line change 11import { Writer } from '../../../util/buffers/Writer' ;
2+ import { JsonPackValue } from '../../JsonPackValue' ;
23import { CborEncoder } from '../CborEncoder' ;
34import { decode } from 'cbor' ;
45
@@ -398,3 +399,15 @@ describe('tokens (simple values)', () => {
398399 testJsTokens ( null ) ;
399400 testJsTokens ( undefined ) ;
400401} ) ;
402+
403+ describe ( 'JsonPackValue' , ( ) => {
404+ test ( 'can encode pre-packed value' , ( ) => {
405+ const internal = encoder . encode ( { foo : 'bar' } ) ;
406+ const val = new JsonPackValue ( internal ) ;
407+ const data = { boo : [ 1 , val , 2 ] } ;
408+ const encoded = encoder . encode ( data ) ;
409+ expect ( decode ( encoded ) ) . toEqual ( {
410+ boo : [ 1 , { foo : 'bar' } , 2 ] ,
411+ } ) ;
412+ } ) ;
413+ } ) ;
You can’t perform that action at this time.
0 commit comments