cbor-x 0.9.1 → 1.0.0

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/test.js CHANGED
@@ -581,6 +581,18 @@
581
581
  outcomesScore: outcomesScore
582
582
  };
583
583
 
584
+ const senmlData = [
585
+ { bn: '/3303/0/5700', bt: 1278887, v: 35.5 },
586
+ { t: 10, v: 34 },
587
+ { t: 20, v: 33 },
588
+ { t: 30, v: 32 },
589
+ { t: 40, v: 31 },
590
+ { t: 50, v: 30 }
591
+ ];
592
+
593
+ const senmlKeys = { bs: -6, bv: -5, bu: -4, bt: -3, bn: -2, n: 0, u: 1, v: 2, vs: 3, t: 6, ut: 7, vd: 8 };
594
+
595
+
584
596
  //import inspector from 'inspector'; inspector.open(9229, null, true); debugger
585
597
  function tryRequire(module) {
586
598
  try {
@@ -608,6 +620,27 @@
608
620
  var ITERATIONS = 4000;
609
621
 
610
622
  suite('CBOR basic tests', function(){
623
+
624
+ test('encode/decode with keyMaps (basic)', function() {
625
+ var data = senmlData;
626
+ let cborSenml = new Encoder({ useRecords: false, keyMap: senmlKeys });
627
+ let cborBasic = new Encoder();
628
+ var serialized = cborSenml.encode(data);
629
+ var deserialized = cborSenml.decode(serialized);
630
+ assert(serialized.length < cborBasic.encode(data).length);
631
+ assert.deepEqual(deserialized, data);
632
+ });
633
+
634
+ test('encode/decode with keyMaps and Records)', function() {
635
+ var data = senmlData;
636
+ let cborSenml = new Encoder({ useRecords: true, keyMap: senmlKeys });
637
+ let cborBasic = new Encoder();
638
+ var serialized = cborSenml.encode(data);
639
+ var deserialized = cborSenml.decode(serialized);
640
+ assert(serialized.length < cborBasic.encode(data).length);
641
+ assert.deepEqual(deserialized, data);
642
+ });
643
+
611
644
  test('encode/decode data', function(){
612
645
  var data = {
613
646
  data: [
@@ -677,9 +710,10 @@
677
710
  });
678
711
  test('encode/decode sample data with records', function(){
679
712
  var data = sampleData;
680
- let structures = [];
681
- let encoder = new Encoder({ structures, useRecords: true });
713
+ let sharedSerialized;
714
+ let encoder = new Encoder({ getStructures() { return }, saveStructures(shared) { sharedSerialized = encode(shared); }, useRecords: true });
682
715
  var serialized = encoder.encode(data);
716
+ encoder = new Encoder({ getStructures() { return decode(sharedSerialized) }, saveStructures(shared) { sharedSerialized = encode(shared); }, useRecords: true });
683
717
  var deserialized = encoder.decode(serialized);
684
718
  assert.deepEqual(deserialized, data);
685
719
  });
@@ -692,8 +726,7 @@
692
726
  });
693
727
  test('encode/decode sample data with packing and records', function(){
694
728
  var data = sampleData;
695
- let structures = [];
696
- let encoder = new Encoder({ structures, pack: true, useRecords: true });
729
+ let encoder = new Encoder({ useStringRefs: true });
697
730
  var serialized = encoder.encode(data);
698
731
  var deserialized = encoder.decode(serialized);
699
732
  assert.deepEqual(deserialized, data);
@@ -732,6 +765,13 @@
732
765
  assert.deepEqual(deserialized, data);
733
766
  }
734
767
  });
768
+ test('pack/unpack sample data with bundled strings', function(){
769
+ var data = sampleData;
770
+ let encoder = new Encoder({ /*structures,*/ useRecords: false, bundleStrings: true });
771
+ var serialized = encoder.encode(data);
772
+ var deserialized = encoder.decode(serialized);
773
+ assert.deepEqual(deserialized, data);
774
+ });
735
775
  if (typeof Buffer != 'undefined')
736
776
  test('replace data', function(){
737
777
  var data1 = {
@@ -931,6 +971,7 @@
931
971
  date: new Date(1532219539733),
932
972
  farFutureDate: new Date(3532219539133),
933
973
  ancient: new Date(-3532219539133),
974
+ invalidDate: new Date('invalid')
934
975
  };
935
976
  let encoder = new Encoder();
936
977
  var serialized = encoder.encode(data);
@@ -940,6 +981,7 @@
940
981
  assert.equal(deserialized.date.getTime(), 1532219539733);
941
982
  assert.equal(deserialized.farFutureDate.getTime(), 3532219539133);
942
983
  assert.equal(deserialized.ancient.getTime(), -3532219539133);
984
+ assert.equal(deserialized.invalidDate.toString(), 'Invalid Date');
943
985
  });
944
986
  test('map/date with options', function(){
945
987
  var map = new Map();
@@ -948,6 +990,7 @@
948
990
  var data = {
949
991
  map: map,
950
992
  date: new Date(1532219539011),
993
+ invalidDate: new Date('invalid')
951
994
  };
952
995
  let encoder = new Encoder({
953
996
  mapsAsObjects: true,
@@ -959,6 +1002,7 @@
959
1002
  assert.equal(deserialized.map[4], 'four');
960
1003
  assert.equal(deserialized.map.three, 3);
961
1004
  assert.equal(deserialized.date.getTime(), 1532219539000);
1005
+ assert.isTrue(isNaN(deserialized.invalidDate.getTime()));
962
1006
  });
963
1007
  test('key caching', function() {
964
1008
  var data = {
@@ -1008,11 +1052,21 @@
1008
1052
  useFloat32: DECIMAL_FIT
1009
1053
  });
1010
1054
  var serialized = encoder.encode(data);
1011
- assert.equal(serialized.length, 35);
1055
+ assert.equal(serialized.length, 36);
1012
1056
  var deserialized = encoder.decode(serialized);
1013
1057
  assert.deepEqual(deserialized, data);
1014
1058
  });
1015
-
1059
+ test('bigint to float', function() {
1060
+ var data = {
1061
+ a: 325283295382932843n
1062
+ };
1063
+ let encoder = new Encoder({
1064
+ int64AsNumber: true
1065
+ });
1066
+ var serialized = encoder.encode(data);
1067
+ var deserialized = encoder.decode(serialized);
1068
+ assert.deepEqual(deserialized.a, 325283295382932843);
1069
+ });
1016
1070
  test('numbers', function(){
1017
1071
  var data = {
1018
1072
  bigEncodable: 48978578104322,
@@ -1133,7 +1187,7 @@
1133
1187
  let structures = [];
1134
1188
  var serialized = encode(data);
1135
1189
  console.log('CBOR size', serialized.length);
1136
- let encoder = new Encoder({ structures });
1190
+ let encoder = new Encoder({ structures, bundleStrings: true });
1137
1191
  var serialized = encoder.encode(data);
1138
1192
  console.log('CBOR w/ record ext size', serialized.length);
1139
1193
  for (var i = 0; i < ITERATIONS; i++) {
@@ -1144,7 +1198,7 @@
1144
1198
  var data = sampleData;
1145
1199
  this.timeout(10000);
1146
1200
  let structures = [];
1147
- let encoder = new Encoder({ structures });
1201
+ let encoder = new Encoder({ structures, bundleStrings: true });
1148
1202
  let buffer = typeof Buffer != 'undefined' ? Buffer.alloc(0x10000) : new Uint8Array(0x10000);
1149
1203
 
1150
1204
  for (var i = 0; i < ITERATIONS; i++) {
package/encode.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Decoder } from './decode'
2
- export { addExtension, FLOAT32_OPTIONS } from './unpack'
2
+ export { addExtension, FLOAT32_OPTIONS } from './decode'
3
3
  export class Encoder extends Decoder {
4
4
  encode(value: any): Buffer
5
5
  }