@hello.nrfcloud.com/proto-map 16.5.45 → 16.6.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.
Files changed (63) hide show
  1. package/api/Email.spec.ts +1 -1
  2. package/dist/api/IsoDateType.js +1 -1
  3. package/dist/generator/addDocBlock.js +1 -1
  4. package/dist/generator/generateLwM2MDefinitions.js +3 -3
  5. package/dist/generator/generateLwm2mTimestampResources.js +1 -1
  6. package/dist/generator/generateModels.js +1 -1
  7. package/dist/generator/generateType.js +4 -4
  8. package/dist/generator/generateValidator.js +4 -4
  9. package/dist/generator/generateValidators.js +1 -1
  10. package/dist/generator/lwm2m.js +1 -1
  11. package/dist/generator/models.js +12 -4
  12. package/dist/generator/printNode.js +1 -1
  13. package/dist/generator/tokenizeName.js +1 -1
  14. package/dist/generator/types.js +2 -2
  15. package/dist/lwm2m/aws/instanceMeasuresToRecord.js +1 -1
  16. package/dist/lwm2m/aws/instanceToMeasures.js +1 -1
  17. package/dist/lwm2m/aws/objectsToShadow.js +2 -3
  18. package/dist/lwm2m/aws/shadowToObjects.js +1 -1
  19. package/dist/lwm2m/check-lwm2m-rules.js +33 -17
  20. package/dist/lwm2m/correctOffset.js +1 -1
  21. package/dist/lwm2m/fromXML2JSON.js +13 -5
  22. package/dist/lwm2m/instanceTs.js +2 -2
  23. package/dist/lwm2m/isLwM2MObjectID.js +1 -1
  24. package/dist/lwm2m/isNumber.js +1 -1
  25. package/dist/lwm2m/isNumeric.js +1 -1
  26. package/dist/lwm2m/isUnixTimeInSeconds.js +1 -1
  27. package/dist/lwm2m/object/validate14201.js +1 -1
  28. package/dist/lwm2m/object/validate14202.js +1 -1
  29. package/dist/lwm2m/object/validate14203.js +1 -1
  30. package/dist/lwm2m/object/validate14204.js +1 -1
  31. package/dist/lwm2m/object/validate14205.js +1 -1
  32. package/dist/lwm2m/object/validate14210.js +1 -1
  33. package/dist/lwm2m/object/validate14220.js +1 -1
  34. package/dist/lwm2m/object/validate14230.js +1 -1
  35. package/dist/lwm2m/object/validate14240.js +1 -1
  36. package/dist/lwm2m/object/validate14250.js +1 -1
  37. package/dist/lwm2m/object/validate14301.js +1 -1
  38. package/dist/lwm2m/object/validate14401.js +1 -1
  39. package/dist/lwm2m/object/validate14501.js +1 -1
  40. package/dist/lwm2m/object/validate14502.js +1 -1
  41. package/dist/lwm2m/object/validate14503.js +1 -1
  42. package/dist/lwm2m/parseRangeEnumeration.js +2 -2
  43. package/dist/lwm2m/unwrapNestedArray.js +1 -1
  44. package/dist/lwm2m/validate.js +1 -1
  45. package/dist/lwm2m/validation.js +15 -15
  46. package/dist/markdown/getCodeBlock.js +5 -5
  47. package/dist/markdown/parseREADME.js +3 -3
  48. package/dist/models/check-model-rules.js +1 -1
  49. package/dist/senml/fromCBOR.js +1 -1
  50. package/dist/senml/hasName.js +1 -1
  51. package/dist/senml/hasValue.js +3 -3
  52. package/dist/senml/index.js +1 -0
  53. package/dist/senml/lwm2mToSenML.js +2 -2
  54. package/dist/senml/parseResourceId.js +1 -1
  55. package/dist/senml/senMLtoLwM2M.js +23 -14
  56. package/dist/senml/senMLtoLwM2M.spec.js +11 -3
  57. package/dist/senml/toCBOR.js +174 -0
  58. package/dist/senml/toCBOR.spec.js +75 -0
  59. package/dist/senml/validateSenML.js +1 -1
  60. package/package.json +8 -8
  61. package/senml/index.ts +1 -0
  62. package/senml/toCBOR.spec.ts +38 -0
  63. package/senml/toCBOR.ts +39 -0
package/senml/index.ts CHANGED
@@ -2,3 +2,4 @@ export * from './fromCBOR.js'
2
2
  export * from './lwm2mToSenML.js'
3
3
  export * from './SenMLSchema.js'
4
4
  export * from './senMLtoLwM2M.js'
5
+ export * from './toCBOR.js'
@@ -0,0 +1,38 @@
1
+ import assert from 'node:assert/strict'
2
+ import { describe, it } from 'node:test'
3
+ import { fromCBOR } from './fromCBOR.js'
4
+ import { toCBOR } from './toCBOR.js'
5
+
6
+ void describe('toCBOR()', () => {
7
+ void it('should convert JSON encoding to CBOR encoding', () =>
8
+ assert.deepEqual(
9
+ toCBOR([
10
+ { n: '0', v: 28.904369, bn: '14205/0/' },
11
+ { n: '1', v: 17.66905 },
12
+ { n: '2', v: 100562.21875 },
13
+ { n: '10', v: 57 },
14
+ ]),
15
+ [
16
+ { '0': '0', '2': 28.904369, '-2': '14205/0/' },
17
+ { '0': '1', '2': 17.66905 },
18
+ { '0': '2', '2': 100562.21875 },
19
+ { '0': '10', '2': 57 },
20
+ ],
21
+ ))
22
+
23
+ void it('should round-trip through fromCBOR', () => {
24
+ const json = [
25
+ { n: '0', v: 28.904369, bn: '14205/0/' },
26
+ { n: '1', v: 17.66905, u: 'lat' },
27
+ ]
28
+ assert.deepEqual(fromCBOR(toCBOR(json)), json)
29
+ })
30
+
31
+ void it('should round-trip through toCBOR', () => {
32
+ const cbor = [
33
+ { '0': '0', '2': 28.904369, '-2': '14205/0/' },
34
+ { '0': '1', '2': 17.66905, '1': 'lat' },
35
+ ]
36
+ assert.deepEqual(toCBOR(fromCBOR(cbor)), cbor)
37
+ })
38
+ })
@@ -0,0 +1,39 @@
1
+ const reverseLabelMap = new Map<string, number>([
2
+ ['bver', -1], // Base Version
3
+ ['bn', -2], // Base Name
4
+ ['bt', -3], // Base Time
5
+ ['bu', -4], // Base Unit
6
+ ['bv', -5], // Base Value
7
+ ['bs', -6], // Base Sum
8
+ ['n', 0], // Name
9
+ ['u', 1], // Unit
10
+ ['v', 2], // Value
11
+ ['vs', 3], // String Value
12
+ ['vb', 4], // Boolean Value
13
+ ['s', 5], // Sum
14
+ ['t', 6], // Time
15
+ ['ut', 7], // Update Time
16
+ ['vd', 8], // Data Value
17
+ ])
18
+
19
+ /**
20
+ * Convert SenML from JSON notation to CBOR notation.
21
+ *
22
+ * @see https://www.rfc-editor.org/rfc/rfc8428.html#section-6
23
+ */
24
+ export const toCBOR = (
25
+ records: Array<Record<string, unknown>>,
26
+ ): Array<Record<string, unknown>> =>
27
+ records.map((record) =>
28
+ Object.entries(record).reduce(
29
+ (cbor, [label, v]) => {
30
+ const key = reverseLabelMap.get(label)
31
+ if (key === undefined) return cbor
32
+ return {
33
+ ...cbor,
34
+ [String(key)]: v,
35
+ }
36
+ },
37
+ {} as Record<string, unknown>,
38
+ ),
39
+ )