@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.
- package/api/Email.spec.ts +1 -1
- package/dist/api/IsoDateType.js +1 -1
- package/dist/generator/addDocBlock.js +1 -1
- package/dist/generator/generateLwM2MDefinitions.js +3 -3
- package/dist/generator/generateLwm2mTimestampResources.js +1 -1
- package/dist/generator/generateModels.js +1 -1
- package/dist/generator/generateType.js +4 -4
- package/dist/generator/generateValidator.js +4 -4
- package/dist/generator/generateValidators.js +1 -1
- package/dist/generator/lwm2m.js +1 -1
- package/dist/generator/models.js +12 -4
- package/dist/generator/printNode.js +1 -1
- package/dist/generator/tokenizeName.js +1 -1
- package/dist/generator/types.js +2 -2
- package/dist/lwm2m/aws/instanceMeasuresToRecord.js +1 -1
- package/dist/lwm2m/aws/instanceToMeasures.js +1 -1
- package/dist/lwm2m/aws/objectsToShadow.js +2 -3
- package/dist/lwm2m/aws/shadowToObjects.js +1 -1
- package/dist/lwm2m/check-lwm2m-rules.js +33 -17
- package/dist/lwm2m/correctOffset.js +1 -1
- package/dist/lwm2m/fromXML2JSON.js +13 -5
- package/dist/lwm2m/instanceTs.js +2 -2
- package/dist/lwm2m/isLwM2MObjectID.js +1 -1
- package/dist/lwm2m/isNumber.js +1 -1
- package/dist/lwm2m/isNumeric.js +1 -1
- package/dist/lwm2m/isUnixTimeInSeconds.js +1 -1
- package/dist/lwm2m/object/validate14201.js +1 -1
- package/dist/lwm2m/object/validate14202.js +1 -1
- package/dist/lwm2m/object/validate14203.js +1 -1
- package/dist/lwm2m/object/validate14204.js +1 -1
- package/dist/lwm2m/object/validate14205.js +1 -1
- package/dist/lwm2m/object/validate14210.js +1 -1
- package/dist/lwm2m/object/validate14220.js +1 -1
- package/dist/lwm2m/object/validate14230.js +1 -1
- package/dist/lwm2m/object/validate14240.js +1 -1
- package/dist/lwm2m/object/validate14250.js +1 -1
- package/dist/lwm2m/object/validate14301.js +1 -1
- package/dist/lwm2m/object/validate14401.js +1 -1
- package/dist/lwm2m/object/validate14501.js +1 -1
- package/dist/lwm2m/object/validate14502.js +1 -1
- package/dist/lwm2m/object/validate14503.js +1 -1
- package/dist/lwm2m/parseRangeEnumeration.js +2 -2
- package/dist/lwm2m/unwrapNestedArray.js +1 -1
- package/dist/lwm2m/validate.js +1 -1
- package/dist/lwm2m/validation.js +15 -15
- package/dist/markdown/getCodeBlock.js +5 -5
- package/dist/markdown/parseREADME.js +3 -3
- package/dist/models/check-model-rules.js +1 -1
- package/dist/senml/fromCBOR.js +1 -1
- package/dist/senml/hasName.js +1 -1
- package/dist/senml/hasValue.js +3 -3
- package/dist/senml/index.js +1 -0
- package/dist/senml/lwm2mToSenML.js +2 -2
- package/dist/senml/parseResourceId.js +1 -1
- package/dist/senml/senMLtoLwM2M.js +23 -14
- package/dist/senml/senMLtoLwM2M.spec.js +11 -3
- package/dist/senml/toCBOR.js +174 -0
- package/dist/senml/toCBOR.spec.js +75 -0
- package/dist/senml/validateSenML.js +1 -1
- package/package.json +8 -8
- package/senml/index.ts +1 -0
- package/senml/toCBOR.spec.ts +38 -0
- package/senml/toCBOR.ts +39 -0
package/senml/index.ts
CHANGED
|
@@ -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
|
+
})
|
package/senml/toCBOR.ts
ADDED
|
@@ -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
|
+
)
|