@hello.nrfcloud.com/proto-map 5.6.2 → 6.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/README.md +0 -16
- package/api/Context.ts +1 -1
- package/api/{ResourceUpdate.spec.ts → ObjectUpdate.spec.ts} +5 -5
- package/api/{ResourceUpdate.ts → ObjectUpdate.ts} +4 -4
- package/dist/api/Context.js +1 -1
- package/dist/api/DeviceId.js +7 -7
- package/dist/api/Devices.js +11 -11
- package/dist/api/History.js +10 -10
- package/dist/api/History.spec.js +17 -17
- package/dist/api/LwM2M.js +11 -11
- package/dist/api/ObjectUpdate.js +17 -0
- package/dist/api/ObjectUpdate.spec.js +26 -0
- package/dist/api/ShareDeviceOwnershipConfirmed.js +4 -4
- package/dist/api/ShareDeviceRequest.js +4 -4
- package/dist/api/Timestamp.js +3 -3
- package/dist/api/Timestamp.spec.js +9 -9
- package/dist/api/index.js +8 -8
- package/dist/generator/addDocBlock.js +2 -2
- package/dist/generator/generateLwM2MDefinitions.js +27 -27
- package/dist/generator/generateLwM2MDefinitions.spec.js +32 -32
- package/dist/generator/generateLwm2mTimestampResources.js +7 -7
- package/dist/generator/generateModels.js +26 -111
- package/dist/generator/generateType.js +21 -21
- package/dist/generator/generateValidator.js +29 -29
- package/dist/generator/generateValidators.js +9 -9
- package/dist/generator/lwm2m.js +23 -23
- package/dist/generator/models.js +14 -96
- package/dist/generator/printNode.js +2 -2
- package/dist/generator/tokenizeName.js +2 -2
- package/dist/generator/tokenizeName.spec.js +20 -20
- package/dist/generator/types.js +37 -37
- package/dist/lwm2m/LWM2MObjectDefinition.js +30 -30
- package/dist/lwm2m/check-lwm2m-rules.js +34 -34
- package/dist/lwm2m/definitions.js +4 -4
- package/dist/lwm2m/fromXML2JSON.js +4 -4
- package/dist/lwm2m/instanceTs.js +2 -2
- package/dist/lwm2m/instanceTs.spec.js +10 -10
- package/dist/lwm2m/isRegisteredLwM2MObject.js +2 -2
- package/dist/lwm2m/isRegisteredLwM2MObject.spec.js +12 -12
- package/dist/lwm2m/parseRangeEnumeration.js +1 -1
- package/dist/lwm2m/parseRangeEnumeration.spec.js +11 -11
- package/dist/lwm2m/unwrapNestedArray.js +2 -2
- package/dist/lwm2m/unwrapNestedArray.spec.js +155 -155
- package/dist/lwm2m/validate.js +1 -1
- package/dist/lwm2m/validation.js +16 -16
- package/dist/markdown/getCodeBlock.js +3 -29
- package/dist/markdown/parseREADME.js +5 -5
- package/dist/models/check-model-rules.js +16 -106
- package/dist/models/models.js +6 -115
- package/dist/models/types.js +0 -12
- package/dist/senml/SenMLSchema.js +16 -16
- package/dist/senml/SenMLSchema.spec.js +11 -11
- package/dist/senml/hasValue.js +2 -2
- package/dist/senml/hasValue.spec.js +4 -4
- package/dist/senml/lwm2mToSenML.js +8 -8
- package/dist/senml/lwm2mToSenML.spec.js +42 -42
- package/dist/senml/parseResourceId.js +1 -1
- package/dist/senml/parseResourceId.spec.js +6 -6
- package/dist/senml/senMLtoLwM2M.js +14 -14
- package/dist/senml/senMLtoLwM2M.spec.js +53 -53
- package/dist/senml/validateSenML.js +2 -2
- package/dist/senml/validateSenML.spec.js +11 -11
- package/models/README.md +0 -4
- package/models/check-model-rules.ts +1 -90
- package/models/models.ts +1 -8
- package/models/types.ts +0 -16
- package/package.json +5 -10
- package/dist/api/ResourceUpdate.js +0 -17
- package/dist/api/ResourceUpdate.spec.js +0 -26
- package/dist/generator/isDir.js +0 -163
- package/dist/generator/isDir.spec.js +0 -212
- package/dist/markdown/getFrontMatter.js +0 -15
- package/dist/models/asset_tracker_v2+AWS/examples/examples.spec.js +0 -489
- package/models/PCA20035+solar/README.md +0 -10
- package/models/PCA20035+solar/transforms/airQuality.md +0 -48
- package/models/PCA20035+solar/transforms/battery.md +0 -46
- package/models/PCA20035+solar/transforms/button.md +0 -45
- package/models/PCA20035+solar/transforms/deviceInfo.md +0 -72
- package/models/PCA20035+solar/transforms/gain.md +0 -45
- package/models/PCA20035+solar/transforms/geolocationFromGroundfix.md +0 -67
- package/models/PCA20035+solar/transforms/geolocationFromMessage.md +0 -80
- package/models/PCA20035+solar/transforms/humidity.md +0 -43
- package/models/PCA20035+solar/transforms/networkInfo.md +0 -84
- package/models/PCA20035+solar/transforms/pressure.md +0 -43
- package/models/PCA20035+solar/transforms/temperature.md +0 -43
- package/models/asset_tracker_v2+AWS/README.md +0 -6
- package/models/asset_tracker_v2+AWS/examples/examples.spec.ts +0 -229
- package/models/asset_tracker_v2+AWS/examples/shadow/example-1.json +0 -24
- package/models/asset_tracker_v2+AWS/examples/shadow/example-2.json +0 -30
- package/models/asset_tracker_v2+AWS/examples/shadow/example-3.json +0 -37
- package/models/asset_tracker_v2+AWS/examples/shadow/example-4.json +0 -48
- package/models/asset_tracker_v2+AWS/examples/shadow/example-5.json +0 -43
- package/models/asset_tracker_v2+AWS/transforms/GNSS.md +0 -66
- package/models/asset_tracker_v2+AWS/transforms/battery-voltage.md +0 -50
- package/models/asset_tracker_v2+AWS/transforms/device-info.md +0 -61
- package/models/asset_tracker_v2+AWS/transforms/env.md +0 -69
- package/models/asset_tracker_v2+AWS/transforms/fuel-gauge.md +0 -62
- package/models/asset_tracker_v2+AWS/transforms/roam.md +0 -100
- package/models/asset_tracker_v2+AWS/transforms/solar.md +0 -58
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { describe, it } from
|
|
2
|
-
import assert from
|
|
3
|
-
import { definitions } from
|
|
4
|
-
import { LwM2MObjectID } from
|
|
5
|
-
import { ResourceType } from
|
|
6
|
-
void describe(
|
|
7
|
-
void it(
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { definitions } from '../lwm2m/definitions.js';
|
|
4
|
+
import { LwM2MObjectID } from '../lwm2m/LwM2MObjectID.js';
|
|
5
|
+
import { ResourceType } from '../lwm2m/LWM2MObjectInfo.js';
|
|
6
|
+
void describe('generateLwM2MDefinitions()', function() {
|
|
7
|
+
void it('should have generated definitions from the XML files', function() {
|
|
8
8
|
assert.deepEqual(definitions[LwM2MObjectID.Geolocation_14201], {
|
|
9
9
|
ObjectID: 14201,
|
|
10
|
-
ObjectVersion:
|
|
11
|
-
Name:
|
|
12
|
-
Description:
|
|
10
|
+
ObjectVersion: '1.0',
|
|
11
|
+
Name: 'Geolocation',
|
|
12
|
+
Description: 'Describes the geo location of a device',
|
|
13
13
|
Resources: {
|
|
14
14
|
0: {
|
|
15
15
|
ResourceID: 0,
|
|
16
|
-
Name:
|
|
16
|
+
Name: 'Latitude',
|
|
17
17
|
Mandatory: true,
|
|
18
18
|
Type: ResourceType.Float,
|
|
19
|
-
Description:
|
|
20
|
-
Units:
|
|
19
|
+
Description: 'The decimal notation of latitude in degrees, e.g. -43.5723 [World Geodetic System 1984].',
|
|
20
|
+
Units: '°',
|
|
21
21
|
RangeEnumeration: {
|
|
22
22
|
max: 90,
|
|
23
23
|
min: -90
|
|
@@ -25,11 +25,11 @@ void describe("generateLwM2MDefinitions()", function() {
|
|
|
25
25
|
},
|
|
26
26
|
1: {
|
|
27
27
|
ResourceID: 1,
|
|
28
|
-
Name:
|
|
28
|
+
Name: 'Longitude',
|
|
29
29
|
Mandatory: true,
|
|
30
30
|
Type: ResourceType.Float,
|
|
31
|
-
Description:
|
|
32
|
-
Units:
|
|
31
|
+
Description: 'The decimal notation of longitude in degrees, e.g. 153.21760 [World Geodetic System 1984].',
|
|
32
|
+
Units: '°',
|
|
33
33
|
RangeEnumeration: {
|
|
34
34
|
max: 180,
|
|
35
35
|
min: -180
|
|
@@ -37,35 +37,35 @@ void describe("generateLwM2MDefinitions()", function() {
|
|
|
37
37
|
},
|
|
38
38
|
2: {
|
|
39
39
|
ResourceID: 2,
|
|
40
|
-
Name:
|
|
40
|
+
Name: 'Altitude',
|
|
41
41
|
Mandatory: false,
|
|
42
42
|
Type: ResourceType.Float,
|
|
43
|
-
Description:
|
|
44
|
-
Units:
|
|
43
|
+
Description: 'The decimal notation of altitude in meters above sea level.',
|
|
44
|
+
Units: 'm'
|
|
45
45
|
},
|
|
46
46
|
3: {
|
|
47
47
|
ResourceID: 3,
|
|
48
|
-
Name:
|
|
48
|
+
Name: 'Radius',
|
|
49
49
|
Mandatory: false,
|
|
50
50
|
Type: ResourceType.Float,
|
|
51
|
-
Description:
|
|
52
|
-
Units:
|
|
51
|
+
Description: 'The value in this resource indicates the radius of a circular area in meters. The circular area is used to describe uncertainty about a point for coordinates in a two-dimensional coordinate reference systems (CRS). The center point of a circular area is specified by using the Latitude and the Longitude Resources.',
|
|
52
|
+
Units: 'm'
|
|
53
53
|
},
|
|
54
54
|
4: {
|
|
55
55
|
ResourceID: 4,
|
|
56
|
-
Name:
|
|
56
|
+
Name: 'Speed',
|
|
57
57
|
Mandatory: false,
|
|
58
58
|
Type: ResourceType.Float,
|
|
59
|
-
Description:
|
|
60
|
-
Units:
|
|
59
|
+
Description: 'Speed is the time rate of change in position.',
|
|
60
|
+
Units: 'm/s'
|
|
61
61
|
},
|
|
62
62
|
5: {
|
|
63
63
|
ResourceID: 5,
|
|
64
|
-
Name:
|
|
64
|
+
Name: 'Heading',
|
|
65
65
|
Mandatory: false,
|
|
66
66
|
Type: ResourceType.Float,
|
|
67
|
-
Description:
|
|
68
|
-
Units:
|
|
67
|
+
Description: 'The angle of movement in degrees.',
|
|
68
|
+
Units: '°',
|
|
69
69
|
RangeEnumeration: {
|
|
70
70
|
min: 0,
|
|
71
71
|
max: 360
|
|
@@ -73,17 +73,17 @@ void describe("generateLwM2MDefinitions()", function() {
|
|
|
73
73
|
},
|
|
74
74
|
6: {
|
|
75
75
|
ResourceID: 6,
|
|
76
|
-
Name:
|
|
76
|
+
Name: 'Source',
|
|
77
77
|
Mandatory: true,
|
|
78
78
|
Type: ResourceType.String,
|
|
79
|
-
Description:
|
|
79
|
+
Description: 'The source of the geo location, e.g. GNSS, SCELL, MCELL, WIFI.'
|
|
80
80
|
},
|
|
81
81
|
99: {
|
|
82
82
|
ResourceID: 99,
|
|
83
|
-
Name:
|
|
83
|
+
Name: 'Timestamp',
|
|
84
84
|
Mandatory: true,
|
|
85
85
|
Type: ResourceType.Time,
|
|
86
|
-
Description:
|
|
86
|
+
Description: 'The timestamp of when the location measurement was performed.'
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
});
|
|
@@ -44,16 +44,16 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
44
44
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
45
45
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
46
46
|
}
|
|
47
|
-
import ts from
|
|
48
|
-
import { addDocBlock } from
|
|
47
|
+
import ts from 'typescript';
|
|
48
|
+
import { addDocBlock } from './addDocBlock.js';
|
|
49
49
|
export var generateLwm2mTimestampResources = function(timestampResources) {
|
|
50
50
|
var type = ts.factory.createVariableStatement([
|
|
51
51
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
52
52
|
], ts.factory.createVariableDeclarationList([
|
|
53
|
-
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("timestampResources"), undefined, ts.factory.createTypeReferenceNode(
|
|
54
|
-
ts.factory.createTypeReferenceNode(
|
|
55
|
-
ts.factory.createTypeReferenceNode(
|
|
56
|
-
ts.factory.createTypeReferenceNode(
|
|
53
|
+
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("timestampResources"), undefined, ts.factory.createTypeReferenceNode('Readonly', [
|
|
54
|
+
ts.factory.createTypeReferenceNode('Record', [
|
|
55
|
+
ts.factory.createTypeReferenceNode('number'),
|
|
56
|
+
ts.factory.createTypeReferenceNode('number')
|
|
57
57
|
])
|
|
58
58
|
]), ts.factory.createObjectLiteralExpression(Object.entries(timestampResources).map(function(param) {
|
|
59
59
|
var _param = _sliced_to_array(param, 2), k = _param[0], v = _param[1];
|
|
@@ -61,7 +61,7 @@ export var generateLwm2mTimestampResources = function(timestampResources) {
|
|
|
61
61
|
})))
|
|
62
62
|
], ts.NodeFlags.Const));
|
|
63
63
|
addDocBlock([
|
|
64
|
-
|
|
64
|
+
'Contains the ID of the resource that defines the timestamp for each LwM2M object definition'
|
|
65
65
|
], type);
|
|
66
66
|
return [
|
|
67
67
|
type
|
|
@@ -1,142 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
function _array_with_holes(arr) {
|
|
7
|
-
if (Array.isArray(arr)) return arr;
|
|
8
|
-
}
|
|
9
|
-
function _iterable_to_array_limit(arr, i) {
|
|
10
|
-
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
11
|
-
if (_i == null) return;
|
|
12
|
-
var _arr = [];
|
|
13
|
-
var _n = true;
|
|
14
|
-
var _d = false;
|
|
15
|
-
var _s, _e;
|
|
16
|
-
try {
|
|
17
|
-
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
18
|
-
_arr.push(_s.value);
|
|
19
|
-
if (i && _arr.length === i) break;
|
|
20
|
-
}
|
|
21
|
-
} catch (err) {
|
|
22
|
-
_d = true;
|
|
23
|
-
_e = err;
|
|
24
|
-
} finally{
|
|
25
|
-
try {
|
|
26
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
27
|
-
} finally{
|
|
28
|
-
if (_d) throw _e;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return _arr;
|
|
32
|
-
}
|
|
33
|
-
function _non_iterable_rest() {
|
|
34
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
35
|
-
}
|
|
36
|
-
function _sliced_to_array(arr, i) {
|
|
37
|
-
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
38
|
-
}
|
|
39
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
40
|
-
if (!o) return;
|
|
41
|
-
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
42
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
43
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
44
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
45
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
46
|
-
}
|
|
47
|
-
import ts from "typescript";
|
|
48
|
-
import { addDocBlock } from "./addDocBlock.js";
|
|
49
|
-
import { tokenizeName } from "./tokenizeName.js";
|
|
50
|
-
import { parseREADME } from "markdown/parseREADME.js";
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { addDocBlock } from './addDocBlock.js';
|
|
3
|
+
import { tokenizeName } from './tokenizeName.js';
|
|
4
|
+
import { parseREADME } from 'markdown/parseREADME.js';
|
|
51
5
|
export var generateModels = function(models) {
|
|
52
6
|
var types = [];
|
|
53
|
-
types.push(ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
|
|
54
|
-
ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier("Transform")),
|
|
55
|
-
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("TransformType"))
|
|
56
|
-
])), ts.factory.createStringLiteral("./types.js")));
|
|
57
7
|
types.push(addDocBlock([
|
|
58
|
-
|
|
8
|
+
'The Model IDs defined in this repo.'
|
|
59
9
|
], ts.factory.createEnumDeclaration([
|
|
60
10
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
61
|
-
], ts.factory.createIdentifier(
|
|
11
|
+
], ts.factory.createIdentifier('ModelID'), models.map(function(param) {
|
|
62
12
|
var id = param.id;
|
|
63
13
|
return ts.factory.createEnumMember(tokenizeName(id), ts.factory.createStringLiteral(id));
|
|
64
14
|
}))));
|
|
65
15
|
types.push(ts.factory.createTypeAliasDeclaration([
|
|
66
16
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
67
|
-
], ts.factory.createIdentifier(
|
|
17
|
+
], ts.factory.createIdentifier('Model'), undefined, ts.factory.createTypeLiteralNode([
|
|
68
18
|
addDocBlock([
|
|
69
|
-
|
|
70
|
-
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral(
|
|
19
|
+
'The Model ID'
|
|
20
|
+
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral('id'), undefined, ts.factory.createTypeReferenceNode('ModelID'))),
|
|
71
21
|
addDocBlock([
|
|
72
|
-
|
|
73
|
-
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral(
|
|
74
|
-
ts.factory.createTypeReferenceNode("Transform")
|
|
75
|
-
]))),
|
|
76
|
-
addDocBlock([
|
|
77
|
-
"Description of the Model from the README.md"
|
|
78
|
-
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral("about"), undefined, ts.factory.createTypeLiteralNode([
|
|
22
|
+
'Description of the Model from the README.md'
|
|
23
|
+
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral('about'), undefined, ts.factory.createTypeLiteralNode([
|
|
79
24
|
addDocBlock([
|
|
80
|
-
|
|
81
|
-
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral(
|
|
25
|
+
'The text of the H1 headline'
|
|
26
|
+
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral('title'), undefined, ts.factory.createTypeReferenceNode('string'))),
|
|
82
27
|
addDocBlock([
|
|
83
|
-
|
|
84
|
-
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral(
|
|
28
|
+
'The text of the paragraphs following the H1 headline'
|
|
29
|
+
], ts.factory.createPropertySignature(undefined, ts.factory.createStringLiteral('description'), undefined, ts.factory.createTypeReferenceNode('string')))
|
|
85
30
|
])))
|
|
86
31
|
])));
|
|
87
32
|
types.push(addDocBlock([
|
|
88
|
-
|
|
33
|
+
'The models defined for hello.nrfcloud.com'
|
|
89
34
|
], ts.factory.createVariableStatement([
|
|
90
35
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
91
36
|
], ts.factory.createVariableDeclarationList([
|
|
92
|
-
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("models"), undefined, ts.factory.createTypeReferenceNode(
|
|
93
|
-
ts.factory.createTypeReferenceNode(
|
|
94
|
-
ts.factory.createTypeReferenceNode(
|
|
95
|
-
ts.factory.createTypeReferenceNode(
|
|
37
|
+
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("models"), undefined, ts.factory.createTypeReferenceNode('Readonly', [
|
|
38
|
+
ts.factory.createTypeReferenceNode('Record', [
|
|
39
|
+
ts.factory.createTypeReferenceNode('ModelID', []),
|
|
40
|
+
ts.factory.createTypeReferenceNode('Model', [])
|
|
96
41
|
])
|
|
97
42
|
]), ts.factory.createAsExpression(ts.factory.createObjectLiteralExpression(models.map(function(model) {
|
|
98
43
|
var readme = parseREADME(model.readmeMarkdown);
|
|
99
|
-
return ts.factory.createPropertyAssignment(ts.factory.createComputedPropertyName(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(
|
|
44
|
+
return ts.factory.createPropertyAssignment(ts.factory.createComputedPropertyName(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('ModelID'), ts.factory.createIdentifier(tokenizeName(model.id)))), // The model object
|
|
100
45
|
ts.factory.createObjectLiteralExpression([
|
|
101
46
|
// id
|
|
102
|
-
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(
|
|
103
|
-
// transforms
|
|
104
|
-
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral("transforms"), ts.factory.createArrayLiteralExpression(model.transforms.map(function(transform) {
|
|
105
|
-
return ts.factory.createObjectLiteralExpression([
|
|
106
|
-
// type
|
|
107
|
-
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral("type"), transform.type === "messages" ? ts.factory.createIdentifier("TransformType.Messages") : ts.factory.createIdentifier("TransformType.Shadow")),
|
|
108
|
-
// match
|
|
109
|
-
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral("match"), createAssignment(transform.match)),
|
|
110
|
-
// transform
|
|
111
|
-
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral("transform"), createAssignment(transform.transform))
|
|
112
|
-
]);
|
|
113
|
-
}))),
|
|
47
|
+
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral('id'), ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('ModelID'), ts.factory.createIdentifier(tokenizeName(model.id)))),
|
|
114
48
|
// About
|
|
115
|
-
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(
|
|
116
|
-
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(
|
|
117
|
-
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(
|
|
49
|
+
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral('about'), ts.factory.createObjectLiteralExpression([
|
|
50
|
+
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral('title'), ts.factory.createStringLiteral(readme.heading)),
|
|
51
|
+
ts.factory.createPropertyAssignment(ts.factory.createStringLiteral('description'), ts.factory.createStringLiteral(readme.description.join('\n')))
|
|
118
52
|
]))
|
|
119
53
|
]));
|
|
120
|
-
})), ts.factory.createTypeReferenceNode(
|
|
54
|
+
})), ts.factory.createTypeReferenceNode('const')))
|
|
121
55
|
], ts.NodeFlags.Const))));
|
|
122
56
|
return types;
|
|
123
57
|
};
|
|
124
|
-
var createAssignment = function(v) {
|
|
125
|
-
if (v === null) return ts.factory.createNull();
|
|
126
|
-
if (typeof v === "string") {
|
|
127
|
-
return ts.factory.createStringLiteral(v);
|
|
128
|
-
}
|
|
129
|
-
if (Array.isArray(v)) {
|
|
130
|
-
return ts.factory.createArrayLiteralExpression(v.map(function(el) {
|
|
131
|
-
return createAssignment(el);
|
|
132
|
-
}));
|
|
133
|
-
}
|
|
134
|
-
if (typeof v === "object") return ts.factory.createObjectLiteralExpression(Object.entries(v).map(function(param) {
|
|
135
|
-
var _param = _sliced_to_array(param, 2), k = _param[0], _$v = _param[1];
|
|
136
|
-
return ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(k), createAssignment(_$v));
|
|
137
|
-
}));
|
|
138
|
-
return addDocBlock([
|
|
139
|
-
"Could not convert node",
|
|
140
|
-
JSON.stringify(v)
|
|
141
|
-
], ts.factory.createNull());
|
|
142
|
-
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import ts from
|
|
2
|
-
import { addDocBlock } from
|
|
3
|
-
import { LwM2MType } from
|
|
4
|
-
import { tokenizeName } from
|
|
5
|
-
import { parseRangeEnumeration } from
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { addDocBlock } from './addDocBlock.js';
|
|
3
|
+
import { LwM2MType } from '../lwm2m/resourceType.js';
|
|
4
|
+
import { tokenizeName } from './tokenizeName.js';
|
|
5
|
+
import { parseRangeEnumeration } from 'lwm2m/parseRangeEnumeration.js';
|
|
6
6
|
export var generateType = function(param) {
|
|
7
7
|
var ObjectID = param.ObjectID, ObjectVersion = param.ObjectVersion, Name = param.Name, Description1 = param.Description1, Resources = param.Resources;
|
|
8
8
|
var name = generateName({
|
|
@@ -11,27 +11,27 @@ export var generateType = function(param) {
|
|
|
11
11
|
});
|
|
12
12
|
var importLwM2MObject = ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(true, undefined, ts.factory.createNamedImports([
|
|
13
13
|
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("LwM2MObject"))
|
|
14
|
-
])), ts.factory.createStringLiteral(
|
|
14
|
+
])), ts.factory.createStringLiteral('../LwM2MObject.js'));
|
|
15
15
|
var importLwM2MObjectID = ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
|
|
16
16
|
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("LwM2MObjectID"))
|
|
17
|
-
])), ts.factory.createStringLiteral(
|
|
17
|
+
])), ts.factory.createStringLiteral('../LwM2MObjectID.js'));
|
|
18
18
|
// Generate the type
|
|
19
19
|
var exportType = ts.factory.createTypeAliasDeclaration([
|
|
20
20
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
21
|
-
], ts.factory.createIdentifier(name), undefined, ts.factory.createTypeReferenceNode(
|
|
21
|
+
], ts.factory.createIdentifier(name), undefined, ts.factory.createTypeReferenceNode('LwM2MObject', [
|
|
22
22
|
ts.factory.createTypeLiteralNode([
|
|
23
|
-
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(
|
|
24
|
-
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(
|
|
25
|
-
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(
|
|
26
|
-
var res = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier("".concat(resource.$.ID)), resource.Mandatory ===
|
|
23
|
+
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier('ObjectID'), undefined, ts.factory.createTypeReferenceNode("LwM2MObjectID.".concat(name), undefined)),
|
|
24
|
+
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier('ObjectVersion'), undefined, ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(ObjectVersion !== null && ObjectVersion !== void 0 ? ObjectVersion : '1.0'))),
|
|
25
|
+
ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier('Resources'), undefined, ts.factory.createTypeLiteralNode(byImportance(Resources.Item).map(function(resource) {
|
|
26
|
+
var res = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier("".concat(resource.$.ID)), resource.Mandatory === 'Mandatory' ? undefined : ts.factory.createToken(ts.SyntaxKind.QuestionToken), typeScriptResourceType(resource.Type));
|
|
27
27
|
addDocBlock([
|
|
28
|
-
"".concat(resource.Name).concat(resource.Units.length > 0 ? " (".concat(resource.Units, ")") :
|
|
28
|
+
"".concat(resource.Name).concat(resource.Units.length > 0 ? " (".concat(resource.Units, ")") : ''),
|
|
29
29
|
"",
|
|
30
30
|
resource.Description
|
|
31
31
|
], res);
|
|
32
32
|
if (resource.RangeEnumeration.length > 0) {
|
|
33
33
|
var maybeRange = parseRangeEnumeration(resource.RangeEnumeration);
|
|
34
|
-
if (
|
|
34
|
+
if ('error' in maybeRange) throw maybeRange.error;
|
|
35
35
|
addDocBlock([
|
|
36
36
|
"Minimum: ".concat(maybeRange.range.min),
|
|
37
37
|
"Maximum: ".concat(maybeRange.range.max)
|
|
@@ -43,7 +43,7 @@ export var generateType = function(param) {
|
|
|
43
43
|
]));
|
|
44
44
|
addDocBlock([
|
|
45
45
|
"".concat(Name, " (").concat(ObjectID, ")"),
|
|
46
|
-
|
|
46
|
+
'',
|
|
47
47
|
Description1
|
|
48
48
|
], exportType);
|
|
49
49
|
return [
|
|
@@ -61,16 +61,16 @@ var typeScriptResourceType = function(type) {
|
|
|
61
61
|
case LwM2MType.Float:
|
|
62
62
|
case LwM2MType.Integer:
|
|
63
63
|
case LwM2MType.UnsignedInteger:
|
|
64
|
-
return ts.factory.createTypeReferenceNode(
|
|
64
|
+
return ts.factory.createTypeReferenceNode('number');
|
|
65
65
|
case LwM2MType.Boolean:
|
|
66
|
-
return ts.factory.createTypeReferenceNode(
|
|
66
|
+
return ts.factory.createTypeReferenceNode('boolean');
|
|
67
67
|
case LwM2MType.String:
|
|
68
68
|
case LwM2MType.Opaque:
|
|
69
69
|
case LwM2MType.Corelnk:
|
|
70
70
|
case LwM2MType.Objlnk:
|
|
71
|
-
return ts.factory.createTypeReferenceNode(
|
|
71
|
+
return ts.factory.createTypeReferenceNode('string');
|
|
72
72
|
case LwM2MType.Time:
|
|
73
|
-
return ts.factory.createTypeReferenceNode(
|
|
73
|
+
return ts.factory.createTypeReferenceNode('Date');
|
|
74
74
|
default:
|
|
75
75
|
throw new Error("Unexpected resource type: ".concat(type));
|
|
76
76
|
}
|
|
@@ -83,8 +83,8 @@ var byImportance = function(resources) {
|
|
|
83
83
|
})// sort mandatory up
|
|
84
84
|
.sort(function(param, param1) {
|
|
85
85
|
var m1 = param.Mandatory, m2 = param1.Mandatory;
|
|
86
|
-
if (m1 ===
|
|
87
|
-
if (m1 ===
|
|
86
|
+
if (m1 === 'Mandatory' && m2 === 'Mandatory') return 0;
|
|
87
|
+
if (m1 === 'Mandatory') return -1;
|
|
88
88
|
return 1;
|
|
89
89
|
});
|
|
90
90
|
};
|
|
@@ -23,15 +23,15 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
23
23
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
24
24
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
25
25
|
}
|
|
26
|
-
import ts from
|
|
27
|
-
import { generateName } from
|
|
28
|
-
import { addDocBlock } from
|
|
26
|
+
import ts from 'typescript';
|
|
27
|
+
import { generateName } from './generateType.js';
|
|
28
|
+
import { addDocBlock } from './addDocBlock.js';
|
|
29
29
|
export var generateValidator = function(param) {
|
|
30
30
|
var ObjectID = param.ObjectID, ObjectVersion = param.ObjectVersion, Name = param.Name, Resources = param.Resources;
|
|
31
31
|
// import type { LwM2MObject } from './LwM2MObject.js'
|
|
32
32
|
var importLwM2MObject = ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(true, undefined, ts.factory.createNamedImports([
|
|
33
33
|
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("LwM2MObject"))
|
|
34
|
-
])), ts.factory.createStringLiteral(
|
|
34
|
+
])), ts.factory.createStringLiteral('../LwM2MObject.js'));
|
|
35
35
|
/*
|
|
36
36
|
import {
|
|
37
37
|
DateResource,
|
|
@@ -43,10 +43,10 @@ export var generateValidator = function(param) {
|
|
|
43
43
|
*/ var importValidation = ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports(_to_consumable_array(getResourceValidators({
|
|
44
44
|
Resources: Resources
|
|
45
45
|
})).concat([
|
|
46
|
-
|
|
46
|
+
'validate'
|
|
47
47
|
]).map(function(res) {
|
|
48
48
|
return ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(res));
|
|
49
|
-
}))), ts.factory.createStringLiteral(
|
|
49
|
+
}))), ts.factory.createStringLiteral('../validation.js'));
|
|
50
50
|
// import type { Geolocation_14201 } from './objects.js'
|
|
51
51
|
var name = generateName({
|
|
52
52
|
Name: Name,
|
|
@@ -54,32 +54,32 @@ export var generateValidator = function(param) {
|
|
|
54
54
|
});
|
|
55
55
|
var importObjectType = ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(true, undefined, ts.factory.createNamedImports([
|
|
56
56
|
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(name))
|
|
57
|
-
])), ts.factory.createStringLiteral(
|
|
57
|
+
])), ts.factory.createStringLiteral('../objects.js'));
|
|
58
58
|
// import { LwM2MObjectID } from './LwM2MObjectID.js'
|
|
59
59
|
var importLwM2MObjectID = ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
|
|
60
60
|
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("LwM2MObjectID"))
|
|
61
|
-
])), ts.factory.createStringLiteral(
|
|
61
|
+
])), ts.factory.createStringLiteral('../LwM2MObjectID.js'));
|
|
62
62
|
// validate ...
|
|
63
63
|
var validate = ts.factory.createVariableStatement([
|
|
64
64
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
65
65
|
], ts.factory.createVariableDeclarationList([
|
|
66
66
|
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("validate".concat(ObjectID)), undefined, undefined, ts.factory.createArrowFunction(undefined, undefined, [
|
|
67
|
-
ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier(
|
|
68
|
-
ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier(
|
|
69
|
-
ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier(
|
|
67
|
+
ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier('o'), undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword)),
|
|
68
|
+
ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier('onError'), ts.factory.createToken(ts.SyntaxKind.QuestionToken), ts.factory.createFunctionTypeNode(undefined, [
|
|
69
|
+
ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier('error'), undefined, ts.factory.createTypeReferenceNode(ts.factory.createIdentifier('Error')))
|
|
70
70
|
], ts.factory.createKeywordTypeNode(ts.SyntaxKind.VoidKeyword)))
|
|
71
|
-
], ts.factory.createTypePredicateNode(undefined, ts.factory.createIdentifier(
|
|
71
|
+
], ts.factory.createTypePredicateNode(undefined, ts.factory.createIdentifier('o'), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier('LwM2MObject'), [
|
|
72
72
|
ts.factory.createTypeReferenceNode(ts.factory.createIdentifier(name))
|
|
73
|
-
])), undefined, ts.factory.createCallExpression(ts.factory.createCallExpression(ts.factory.createIdentifier(
|
|
74
|
-
ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(
|
|
75
|
-
ts.factory.createStringLiteral(ObjectVersion !== null && ObjectVersion !== void 0 ? ObjectVersion :
|
|
73
|
+
])), undefined, ts.factory.createCallExpression(ts.factory.createCallExpression(ts.factory.createIdentifier('validate'), undefined, [
|
|
74
|
+
ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('LwM2MObjectID'), ts.factory.createIdentifier(name)),
|
|
75
|
+
ts.factory.createStringLiteral(ObjectVersion !== null && ObjectVersion !== void 0 ? ObjectVersion : '1.0'),
|
|
76
76
|
ts.factory.createObjectLiteralExpression(Resources.Item.map(function(Resource) {
|
|
77
77
|
var validator = ts.factory.createPropertyAssignment(ts.factory.createNumericLiteral(Resource.$.ID), toResourceValidator(Resource));
|
|
78
78
|
return validator;
|
|
79
79
|
}))
|
|
80
80
|
]), undefined, [
|
|
81
|
-
ts.factory.createIdentifier(
|
|
82
|
-
ts.factory.createIdentifier(
|
|
81
|
+
ts.factory.createIdentifier('o'),
|
|
82
|
+
ts.factory.createIdentifier('onError')
|
|
83
83
|
])))
|
|
84
84
|
], ts.NodeFlags.Const));
|
|
85
85
|
addDocBlock([
|
|
@@ -97,23 +97,23 @@ export var generateValidator = function(param) {
|
|
|
97
97
|
};
|
|
98
98
|
var toResourceValidator = function(Resource) {
|
|
99
99
|
var valueValidator = ts.factory.createIdentifier(typeToValidator(Resource.Type));
|
|
100
|
-
if (Resource.Mandatory ===
|
|
100
|
+
if (Resource.Mandatory === 'Optional') return ts.factory.createCallExpression(ts.factory.createIdentifier('OptionalResource'), undefined, [
|
|
101
101
|
valueValidator
|
|
102
102
|
]);
|
|
103
103
|
return valueValidator;
|
|
104
104
|
};
|
|
105
105
|
var typeToValidator = function(Type) {
|
|
106
106
|
switch(Type){
|
|
107
|
-
case
|
|
108
|
-
case
|
|
109
|
-
return
|
|
110
|
-
case
|
|
111
|
-
case
|
|
112
|
-
return
|
|
113
|
-
case
|
|
114
|
-
return
|
|
115
|
-
case
|
|
116
|
-
return
|
|
107
|
+
case 'String':
|
|
108
|
+
case 'Opaque':
|
|
109
|
+
return 'StringResource';
|
|
110
|
+
case 'Float':
|
|
111
|
+
case 'Integer':
|
|
112
|
+
return 'NumberResource';
|
|
113
|
+
case 'Boolean':
|
|
114
|
+
return 'BooleanResource';
|
|
115
|
+
case 'Time':
|
|
116
|
+
return 'DateResource';
|
|
117
117
|
default:
|
|
118
118
|
throw new Error("Unsupported Resource type ".concat(Type, "!"));
|
|
119
119
|
}
|
|
@@ -124,7 +124,7 @@ var getResourceValidators = function(param) {
|
|
|
124
124
|
var Type = param.Type, Mandatory = param.Mandatory;
|
|
125
125
|
return [
|
|
126
126
|
typeToValidator(Type),
|
|
127
|
-
Mandatory ===
|
|
127
|
+
Mandatory === 'Optional' ? 'OptionalResource' : undefined
|
|
128
128
|
];
|
|
129
129
|
}).flat().filter(function(d) {
|
|
130
130
|
return d !== undefined;
|
|
@@ -23,14 +23,14 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
23
23
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
24
24
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
25
25
|
}
|
|
26
|
-
import ts from
|
|
27
|
-
import { generateName } from
|
|
28
|
-
import { addDocBlock } from
|
|
26
|
+
import ts from 'typescript';
|
|
27
|
+
import { generateName } from './generateType.js';
|
|
28
|
+
import { addDocBlock } from './addDocBlock.js';
|
|
29
29
|
export var generateValidators = function(objects) {
|
|
30
30
|
// import { LwM2MObjectID } from './LwM2MObjectID.js'
|
|
31
31
|
var importLwM2MObjectID = ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
|
|
32
32
|
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("LwM2MObjectID"))
|
|
33
|
-
])), ts.factory.createStringLiteral(
|
|
33
|
+
])), ts.factory.createStringLiteral('./LwM2MObjectID.js'));
|
|
34
34
|
var validatorImports = objects.map(function(object) {
|
|
35
35
|
return ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
|
|
36
36
|
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("validate".concat(object.ObjectID)))
|
|
@@ -39,10 +39,10 @@ export var generateValidators = function(objects) {
|
|
|
39
39
|
var validators = ts.factory.createVariableStatement([
|
|
40
40
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
41
41
|
], ts.factory.createVariableDeclarationList([
|
|
42
|
-
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("validators"), undefined, undefined, ts.factory.createNewExpression(ts.factory.createIdentifier(
|
|
43
|
-
ts.factory.createTypeReferenceNode(
|
|
42
|
+
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("validators"), undefined, undefined, ts.factory.createNewExpression(ts.factory.createIdentifier('Map'), [
|
|
43
|
+
ts.factory.createTypeReferenceNode('LwM2MObjectID'),
|
|
44
44
|
ts.factory.createFunctionTypeNode(undefined, [
|
|
45
|
-
ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier(
|
|
45
|
+
ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createIdentifier('o'), undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword))
|
|
46
46
|
], ts.factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword))
|
|
47
47
|
], []))
|
|
48
48
|
], ts.NodeFlags.Const));
|
|
@@ -50,8 +50,8 @@ export var generateValidators = function(objects) {
|
|
|
50
50
|
"Contains the validators for all registered LwM2M objects."
|
|
51
51
|
], validators);
|
|
52
52
|
var validatorRegistrations = objects.map(function(object) {
|
|
53
|
-
return ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(
|
|
54
|
-
ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(
|
|
53
|
+
return ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('validators'), ts.factory.createIdentifier('set')), undefined, [
|
|
54
|
+
ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('LwM2MObjectID'), ts.factory.createIdentifier(generateName(object))),
|
|
55
55
|
ts.factory.createIdentifier("validate".concat(object.ObjectID))
|
|
56
56
|
]);
|
|
57
57
|
});
|