@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
package/dist/generator/lwm2m.js
CHANGED
|
@@ -24,15 +24,15 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
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
26
|
var _path;
|
|
27
|
-
import chalk from
|
|
28
|
-
import { readFile, readdir, writeFile } from
|
|
29
|
-
import path from
|
|
30
|
-
import { unwrapNestedArray } from
|
|
31
|
-
import xml2js from
|
|
32
|
-
import { generateLwm2mTimestampResources } from
|
|
33
|
-
import { printNode } from
|
|
34
|
-
import os from
|
|
35
|
-
import { generateLwM2MDefinitions } from
|
|
27
|
+
import chalk from 'chalk';
|
|
28
|
+
import { readFile, readdir, writeFile } from 'node:fs/promises';
|
|
29
|
+
import path from 'node:path';
|
|
30
|
+
import { unwrapNestedArray } from '../lwm2m/unwrapNestedArray.js';
|
|
31
|
+
import xml2js from 'xml2js';
|
|
32
|
+
import { generateLwm2mTimestampResources } from './generateLwm2mTimestampResources.js';
|
|
33
|
+
import { printNode } from './printNode.js';
|
|
34
|
+
import os from 'node:os';
|
|
35
|
+
import { generateLwM2MDefinitions } from './generateLwM2MDefinitions.js';
|
|
36
36
|
var baseDir = process.cwd();
|
|
37
37
|
var subDir = function() {
|
|
38
38
|
for(var _len = arguments.length, tree = new Array(_len), _key = 0; _key < _len; _key++){
|
|
@@ -42,16 +42,16 @@ var subDir = function() {
|
|
|
42
42
|
baseDir
|
|
43
43
|
].concat(_to_consumable_array(tree)));
|
|
44
44
|
};
|
|
45
|
-
console.log(chalk.gray(
|
|
45
|
+
console.log(chalk.gray('LwM2M'));
|
|
46
46
|
// Load definitions
|
|
47
47
|
var definitions = [];
|
|
48
48
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
49
49
|
try {
|
|
50
|
-
for(var _iterator = (await readdir(subDir(
|
|
51
|
-
return s.endsWith(
|
|
50
|
+
for(var _iterator = (await readdir(subDir('lwm2m'))).filter(function(s) {
|
|
51
|
+
return s.endsWith('.xml');
|
|
52
52
|
})[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
53
53
|
var objectDefinitionFile = _step.value;
|
|
54
|
-
var definition = unwrapNestedArray(await xml2js.parseStringPromise(await readFile(subDir(
|
|
54
|
+
var definition = unwrapNestedArray(await xml2js.parseStringPromise(await readFile(subDir('lwm2m', objectDefinitionFile), 'utf-8'))).LWM2M.Object;
|
|
55
55
|
definitions.push(definition);
|
|
56
56
|
}
|
|
57
57
|
} catch (err) {
|
|
@@ -68,7 +68,7 @@ try {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
console.log(chalk.gray(
|
|
71
|
+
console.log(chalk.gray('', '·'), chalk.gray('timestamp resources map'));
|
|
72
72
|
var timestampResources = {};
|
|
73
73
|
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
74
74
|
try {
|
|
@@ -78,10 +78,10 @@ try {
|
|
|
78
78
|
var ObjectID = parseInt(definition1.ObjectID, 10);
|
|
79
79
|
var ResourceId = parseInt((_definition_Resources_Item_find = definition1.Resources.Item.find(function(param) {
|
|
80
80
|
var Type = param.Type;
|
|
81
|
-
return Type ===
|
|
81
|
+
return Type === 'Time';
|
|
82
82
|
})) === null || _definition_Resources_Item_find === void 0 ? void 0 : _definition_Resources_Item_find.$.ID, 10);
|
|
83
83
|
timestampResources[ObjectID] = ResourceId;
|
|
84
|
-
console.log(
|
|
84
|
+
console.log(' ', chalk.gray('·'), "".concat(chalk.white(ObjectID)).concat(chalk.gray('.')).concat(chalk.white(ResourceId)));
|
|
85
85
|
}
|
|
86
86
|
} catch (err) {
|
|
87
87
|
_didIteratorError1 = true;
|
|
@@ -97,10 +97,10 @@ try {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
-
var timestampResourcesFile = subDir(
|
|
101
|
-
console.log(chalk.green(
|
|
102
|
-
await writeFile(timestampResourcesFile, generateLwm2mTimestampResources(timestampResources).map(printNode).join(os.EOL),
|
|
103
|
-
console.log(chalk.gray(
|
|
104
|
-
var definitionsFile = subDir(
|
|
105
|
-
console.log(chalk.green(
|
|
106
|
-
await writeFile(definitionsFile, generateLwM2MDefinitions(definitions).map(printNode).join(os.EOL),
|
|
100
|
+
var timestampResourcesFile = subDir('lwm2m', 'timestampResources.ts');
|
|
101
|
+
console.log(chalk.green('Writing'), chalk.blue(timestampResourcesFile.replace(baseDir, '')));
|
|
102
|
+
await writeFile(timestampResourcesFile, generateLwm2mTimestampResources(timestampResources).map(printNode).join(os.EOL), 'utf-8');
|
|
103
|
+
console.log(chalk.gray('', '·'), chalk.gray('static object information'));
|
|
104
|
+
var definitionsFile = subDir('lwm2m', 'definitions.ts');
|
|
105
|
+
console.log(chalk.green('Writing'), chalk.blue(definitionsFile.replace(baseDir, '')));
|
|
106
|
+
await writeFile(definitionsFile, generateLwM2MDefinitions(definitions).map(printNode).join(os.EOL), 'utf-8');
|
package/dist/generator/models.js
CHANGED
|
@@ -150,16 +150,12 @@ function _ts_generator(thisArg, body) {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
var _path;
|
|
153
|
-
import chalk from
|
|
154
|
-
import { readFile, readdir, stat, writeFile } from
|
|
155
|
-
import os from
|
|
156
|
-
import path from
|
|
157
|
-
import {
|
|
158
|
-
import {
|
|
159
|
-
import { generateModels } from "./generateModels.js";
|
|
160
|
-
import { printNode } from "./printNode.js";
|
|
161
|
-
import { FrontMatter } from "../models/types.js";
|
|
162
|
-
import { isDir } from "./isDir.js";
|
|
153
|
+
import chalk from 'chalk';
|
|
154
|
+
import { readFile, readdir, stat, writeFile } from 'node:fs/promises';
|
|
155
|
+
import os from 'node:os';
|
|
156
|
+
import path from 'node:path';
|
|
157
|
+
import { generateModels } from './generateModels.js';
|
|
158
|
+
import { printNode } from './printNode.js';
|
|
163
159
|
var baseDir = process.cwd();
|
|
164
160
|
var subDir = function() {
|
|
165
161
|
for(var _len = arguments.length, tree = new Array(_len), _key = 0; _key < _len; _key++){
|
|
@@ -169,80 +165,8 @@ var subDir = function() {
|
|
|
169
165
|
baseDir
|
|
170
166
|
].concat(_to_consumable_array(tree)));
|
|
171
167
|
};
|
|
172
|
-
console.log(chalk.gray(
|
|
173
|
-
var
|
|
174
|
-
var _ref = _async_to_generator(function(model) {
|
|
175
|
-
var transformersDir, _;
|
|
176
|
-
return _ts_generator(this, function(_state) {
|
|
177
|
-
switch(_state.label){
|
|
178
|
-
case 0:
|
|
179
|
-
transformersDir = subDir("models", model, "transforms");
|
|
180
|
-
return [
|
|
181
|
-
4,
|
|
182
|
-
isDir(transformersDir)
|
|
183
|
-
];
|
|
184
|
-
case 1:
|
|
185
|
-
if (!_state.sent()) return [
|
|
186
|
-
2,
|
|
187
|
-
[]
|
|
188
|
-
];
|
|
189
|
-
_ = Promise.all;
|
|
190
|
-
return [
|
|
191
|
-
4,
|
|
192
|
-
readdir(transformersDir)
|
|
193
|
-
];
|
|
194
|
-
case 2:
|
|
195
|
-
return [
|
|
196
|
-
2,
|
|
197
|
-
_.apply(Promise, [
|
|
198
|
-
_state.sent()
|
|
199
|
-
]).then(function(entries) {
|
|
200
|
-
return entries.filter(function(e) {
|
|
201
|
-
return e.endsWith(".md");
|
|
202
|
-
});
|
|
203
|
-
}).then(function() {
|
|
204
|
-
var _ref = _async_to_generator(function(expressions) {
|
|
205
|
-
return _ts_generator(this, function(_state) {
|
|
206
|
-
return [
|
|
207
|
-
2,
|
|
208
|
-
Promise.all(expressions.map(function() {
|
|
209
|
-
var _ref = _async_to_generator(function(expression) {
|
|
210
|
-
return _ts_generator(this, function(_state) {
|
|
211
|
-
return [
|
|
212
|
-
2,
|
|
213
|
-
readFile(subDir("models", model, "transforms", expression), "utf-8")
|
|
214
|
-
];
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
return function(expression) {
|
|
218
|
-
return _ref.apply(this, arguments);
|
|
219
|
-
};
|
|
220
|
-
}()))
|
|
221
|
-
];
|
|
222
|
-
});
|
|
223
|
-
});
|
|
224
|
-
return function(expressions) {
|
|
225
|
-
return _ref.apply(this, arguments);
|
|
226
|
-
};
|
|
227
|
-
}()).then(function(transforms) {
|
|
228
|
-
return transforms.map(function(markdown) {
|
|
229
|
-
var findBlock = getCodeBlock(markdown);
|
|
230
|
-
return {
|
|
231
|
-
type: getFrontMatter(markdown, FrontMatter).type,
|
|
232
|
-
match: findBlock("jsonata", "Match Expression"),
|
|
233
|
-
transform: findBlock("jsonata", "Transform Expression")
|
|
234
|
-
};
|
|
235
|
-
});
|
|
236
|
-
})
|
|
237
|
-
];
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
return function loadModelTransforms(model) {
|
|
242
|
-
return _ref.apply(this, arguments);
|
|
243
|
-
};
|
|
244
|
-
}();
|
|
245
|
-
var models = await Promise.all((await Promise.all((await readdir(subDir("models"))).map(function() {
|
|
168
|
+
console.log(chalk.gray('Models'));
|
|
169
|
+
var models = await Promise.all((await Promise.all((await readdir(subDir('models'))).map(function() {
|
|
246
170
|
var _ref = _async_to_generator(function(f) {
|
|
247
171
|
var _tmp;
|
|
248
172
|
return _ts_generator(this, function(_state) {
|
|
@@ -253,7 +177,7 @@ var models = await Promise.all((await Promise.all((await readdir(subDir("models"
|
|
|
253
177
|
};
|
|
254
178
|
return [
|
|
255
179
|
4,
|
|
256
|
-
stat(subDir(
|
|
180
|
+
stat(subDir('models', f))
|
|
257
181
|
];
|
|
258
182
|
case 1:
|
|
259
183
|
return [
|
|
@@ -275,21 +199,15 @@ var models = await Promise.all((await Promise.all((await readdir(subDir("models"
|
|
|
275
199
|
return _ts_generator(this, function(_state) {
|
|
276
200
|
switch(_state.label){
|
|
277
201
|
case 0:
|
|
278
|
-
console.log(chalk.gray(
|
|
202
|
+
console.log(chalk.gray('·'), chalk.white(model.name));
|
|
279
203
|
_tmp = {
|
|
280
204
|
id: model.name
|
|
281
205
|
};
|
|
282
206
|
return [
|
|
283
207
|
4,
|
|
284
|
-
|
|
208
|
+
readFile(path.join(subDir('models'), model.name, 'README.md'), 'utf-8')
|
|
285
209
|
];
|
|
286
210
|
case 1:
|
|
287
|
-
_tmp.transforms = _state.sent();
|
|
288
|
-
return [
|
|
289
|
-
4,
|
|
290
|
-
readFile(path.join(subDir("models"), model.name, "README.md"), "utf-8")
|
|
291
|
-
];
|
|
292
|
-
case 2:
|
|
293
211
|
return [
|
|
294
212
|
2,
|
|
295
213
|
(_tmp.readmeMarkdown = _state.sent(), _tmp)
|
|
@@ -301,6 +219,6 @@ var models = await Promise.all((await Promise.all((await readdir(subDir("models"
|
|
|
301
219
|
return _ref.apply(this, arguments);
|
|
302
220
|
};
|
|
303
221
|
}()));
|
|
304
|
-
var modelsFile = subDir(
|
|
305
|
-
console.log(chalk.green(
|
|
306
|
-
await writeFile(modelsFile, generateModels(models).map(printNode).join(os.EOL),
|
|
222
|
+
var modelsFile = subDir('models', 'models.ts');
|
|
223
|
+
console.log(chalk.green('Writing'), chalk.blue(modelsFile.replace(baseDir, '')));
|
|
224
|
+
await writeFile(modelsFile, generateModels(models).map(printNode).join(os.EOL), 'utf-8');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import ts from
|
|
2
|
-
var resultFile = ts.createSourceFile("stub.ts",
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
var resultFile = ts.createSourceFile("stub.ts", '', ts.ScriptTarget.Latest, /*setParentNodes*/ false, ts.ScriptKind.TS);
|
|
3
3
|
var printer = ts.createPrinter({
|
|
4
4
|
newLine: ts.NewLineKind.LineFeed
|
|
5
5
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export var tokenizeName = function(name) {
|
|
2
|
-
return name.split(
|
|
2
|
+
return name.split(' ').map(function(s) {
|
|
3
3
|
return "".concat(s.slice(0, 1).toUpperCase()).concat(s.slice(1));
|
|
4
|
-
}).join(
|
|
4
|
+
}).join(' ').replaceAll(' ', '').replaceAll('&', 'and').replace(/^(\d)(.+)/, 'n$1$2').replaceAll(/[^a-z0-9]/gi, '_').replaceAll(/_{2,}/g, '_').replaceAll(/_+$/g, '').trim();
|
|
5
5
|
};
|
|
@@ -44,10 +44,10 @@ 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 { tokenizeName } from
|
|
48
|
-
import { describe, it } from
|
|
49
|
-
import assert from
|
|
50
|
-
void describe(
|
|
47
|
+
import { tokenizeName } from './tokenizeName.js';
|
|
48
|
+
import { describe, it } from 'node:test';
|
|
49
|
+
import assert from 'node:assert/strict';
|
|
50
|
+
void describe('tokenizeName', function() {
|
|
51
51
|
var _loop = function(_i, _iter) {
|
|
52
52
|
var _iter__i = _sliced_to_array(_iter[_i], 2), name = _iter__i[0], expected = _iter__i[1];
|
|
53
53
|
void it("should replaced ".concat(name, " to ").concat(expected), function() {
|
|
@@ -57,42 +57,42 @@ void describe("tokenizeName", function() {
|
|
|
57
57
|
for(var _i = 0, _iter = [
|
|
58
58
|
// Uppercase words
|
|
59
59
|
[
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
'Battery and Power',
|
|
61
|
+
'BatteryAndPower'
|
|
62
62
|
],
|
|
63
63
|
[
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
'LwM2M Server',
|
|
65
|
+
'LwM2MServer'
|
|
66
66
|
],
|
|
67
67
|
// Dash -> underline
|
|
68
68
|
[
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
'LTE-MTC Band Config',
|
|
70
|
+
'LTE_MTCBandConfig'
|
|
71
71
|
],
|
|
72
72
|
// Number at the Beginning, prefix with n
|
|
73
73
|
[
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
'5GNR Connectivity',
|
|
75
|
+
'n5GNRConnectivity'
|
|
76
76
|
],
|
|
77
77
|
// Slash -> underline
|
|
78
78
|
[
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
'On/Off Switch',
|
|
80
|
+
'On_OffSwitch'
|
|
81
81
|
],
|
|
82
82
|
// Dot -> underline
|
|
83
83
|
[
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
'LwM2M v1.1 Test Object',
|
|
85
|
+
'LwM2MV1_1TestObject'
|
|
86
86
|
],
|
|
87
87
|
// & -> and
|
|
88
88
|
[
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
'AT&T Connectivity Extension',
|
|
90
|
+
'ATandTConnectivityExtension'
|
|
91
91
|
],
|
|
92
92
|
// Remove whitespace
|
|
93
93
|
[
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
' Server ',
|
|
95
|
+
'Server'
|
|
96
96
|
]
|
|
97
97
|
]; _i < _iter.length; _i++)_loop(_i, _iter);
|
|
98
98
|
});
|
package/dist/generator/types.js
CHANGED
|
@@ -24,19 +24,19 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
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
26
|
var _path;
|
|
27
|
-
import chalk from
|
|
28
|
-
import { mkdir, readFile, readdir, writeFile } from
|
|
29
|
-
import path from
|
|
30
|
-
import { unwrapNestedArray } from
|
|
31
|
-
import xml2js from
|
|
32
|
-
import ts from
|
|
33
|
-
import { printNode } from
|
|
34
|
-
import os from
|
|
35
|
-
import { generateType } from
|
|
36
|
-
import { addDocBlock } from
|
|
37
|
-
import { generateName } from
|
|
38
|
-
import { generateValidator } from
|
|
39
|
-
import { generateValidators } from
|
|
27
|
+
import chalk from 'chalk';
|
|
28
|
+
import { mkdir, readFile, readdir, writeFile } from 'node:fs/promises';
|
|
29
|
+
import path from 'node:path';
|
|
30
|
+
import { unwrapNestedArray } from '../lwm2m/unwrapNestedArray.js';
|
|
31
|
+
import xml2js from 'xml2js';
|
|
32
|
+
import ts from 'typescript';
|
|
33
|
+
import { printNode } from './printNode.js';
|
|
34
|
+
import os from 'node:os';
|
|
35
|
+
import { generateType } from './generateType.js';
|
|
36
|
+
import { addDocBlock } from './addDocBlock.js';
|
|
37
|
+
import { generateName } from './generateType.js';
|
|
38
|
+
import { generateValidator } from './generateValidator.js';
|
|
39
|
+
import { generateValidators } from './generateValidators.js';
|
|
40
40
|
var baseDir = process.cwd();
|
|
41
41
|
var subDir = function() {
|
|
42
42
|
for(var _len = arguments.length, tree = new Array(_len), _key = 0; _key < _len; _key++){
|
|
@@ -48,14 +48,14 @@ var subDir = function() {
|
|
|
48
48
|
};
|
|
49
49
|
var idMembers = [];
|
|
50
50
|
var objects = [];
|
|
51
|
-
console.log(chalk.gray(
|
|
51
|
+
console.log(chalk.gray('Creating TypeBox definition for LwM2M objects'));
|
|
52
52
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
53
53
|
try {
|
|
54
|
-
for(var _iterator = (await readdir(subDir(
|
|
55
|
-
return s.endsWith(
|
|
54
|
+
for(var _iterator = (await readdir(subDir('lwm2m'))).filter(function(s) {
|
|
55
|
+
return s.endsWith('.xml');
|
|
56
56
|
})[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
57
57
|
var objectDefinitionFile = _step.value;
|
|
58
|
-
var definition = unwrapNestedArray(await xml2js.parseStringPromise(await readFile(subDir(
|
|
58
|
+
var definition = unwrapNestedArray(await xml2js.parseStringPromise(await readFile(subDir('lwm2m', objectDefinitionFile), 'utf-8'))).LWM2M.Object;
|
|
59
59
|
var ObjectID = parseInt(definition.ObjectID, 10);
|
|
60
60
|
var member = ts.factory.createEnumMember(generateName(definition), ts.factory.createNumericLiteral(ObjectID));
|
|
61
61
|
addDocBlock([
|
|
@@ -65,18 +65,18 @@ try {
|
|
|
65
65
|
], member);
|
|
66
66
|
idMembers.push(member);
|
|
67
67
|
try {
|
|
68
|
-
await mkdir(subDir(
|
|
68
|
+
await mkdir(subDir('lwm2m', "object"));
|
|
69
69
|
} catch (e) {
|
|
70
70
|
// pass
|
|
71
71
|
}
|
|
72
72
|
// Type
|
|
73
|
-
var typeFile = subDir(
|
|
74
|
-
console.log(chalk.green(
|
|
75
|
-
await writeFile(typeFile, generateType(definition).map(printNode).join(os.EOL),
|
|
73
|
+
var typeFile = subDir('lwm2m', "object", "".concat(ObjectID, ".d.ts"));
|
|
74
|
+
console.log(chalk.green('Writing'), chalk.blue(typeFile.replace(baseDir, '')));
|
|
75
|
+
await writeFile(typeFile, generateType(definition).map(printNode).join(os.EOL), 'utf-8');
|
|
76
76
|
// Validator
|
|
77
|
-
var validatorFile = subDir(
|
|
78
|
-
console.log(chalk.green(
|
|
79
|
-
await writeFile(validatorFile, generateValidator(definition).map(printNode).join(os.EOL),
|
|
77
|
+
var validatorFile = subDir('lwm2m', "object", "validate".concat(ObjectID, ".ts"));
|
|
78
|
+
console.log(chalk.green('Writing'), chalk.blue(validatorFile.replace(baseDir, '')));
|
|
79
|
+
await writeFile(validatorFile, generateValidator(definition).map(printNode).join(os.EOL), 'utf-8');
|
|
80
80
|
objects.push(definition);
|
|
81
81
|
}
|
|
82
82
|
} catch (err) {
|
|
@@ -93,36 +93,36 @@ try {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
var validatorsFile = subDir(
|
|
97
|
-
console.log(chalk.green(
|
|
98
|
-
await writeFile(validatorsFile, generateValidators(objects).map(printNode).join(os.EOL),
|
|
99
|
-
var idFile = subDir(
|
|
100
|
-
console.log(chalk.green(
|
|
96
|
+
var validatorsFile = subDir('lwm2m', "validators.ts");
|
|
97
|
+
console.log(chalk.green('Writing'), chalk.blue(validatorsFile.replace(baseDir, '')));
|
|
98
|
+
await writeFile(validatorsFile, generateValidators(objects).map(printNode).join(os.EOL), 'utf-8');
|
|
99
|
+
var idFile = subDir('lwm2m', "LwM2MObjectID.ts");
|
|
100
|
+
console.log(chalk.green('Writing'), chalk.blue(idFile.replace(baseDir, '')));
|
|
101
101
|
var enumNode = ts.factory.createEnumDeclaration([
|
|
102
102
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
103
|
-
], ts.factory.createIdentifier(
|
|
103
|
+
], ts.factory.createIdentifier('LwM2MObjectID'), idMembers);
|
|
104
104
|
addDocBlock([
|
|
105
|
-
|
|
105
|
+
'The LwM2M Object IDs defined in this repo.'
|
|
106
106
|
], enumNode);
|
|
107
107
|
var objectIdArray = ts.factory.createVariableStatement([
|
|
108
108
|
ts.factory.createToken(ts.SyntaxKind.ExportKeyword)
|
|
109
109
|
], ts.factory.createVariableDeclarationList([
|
|
110
110
|
ts.factory.createVariableDeclaration(ts.factory.createIdentifier("LwM2MObjectIDs"), undefined, undefined, ts.factory.createArrayLiteralExpression(objects.map(function(definition) {
|
|
111
111
|
// const id = ts.factory.createNumericLiteral(ObjectID)
|
|
112
|
-
var id = ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(
|
|
112
|
+
var id = ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('LwM2MObjectID'), ts.factory.createIdentifier(generateName(definition)));
|
|
113
113
|
ts.addSyntheticLeadingComment(id, ts.SyntaxKind.SingleLineCommentTrivia, " ".concat(definition.Name, " (").concat(definition.ObjectID, ")"), true);
|
|
114
114
|
return id;
|
|
115
115
|
})))
|
|
116
116
|
], ts.NodeFlags.Const));
|
|
117
117
|
addDocBlock([
|
|
118
|
-
|
|
118
|
+
'The LwM2M Object IDs defined in this repo.'
|
|
119
119
|
], objectIdArray);
|
|
120
120
|
await writeFile(idFile, [
|
|
121
121
|
enumNode,
|
|
122
122
|
objectIdArray
|
|
123
|
-
].map(printNode).join(os.EOL),
|
|
124
|
-
var objectsFile = subDir(
|
|
125
|
-
console.log(chalk.green(
|
|
123
|
+
].map(printNode).join(os.EOL), 'utf-8');
|
|
124
|
+
var objectsFile = subDir('lwm2m', "objects.ts");
|
|
125
|
+
console.log(chalk.green('Writing'), chalk.blue(objectsFile.replace(baseDir, '')));
|
|
126
126
|
await writeFile(objectsFile, objects.map(function(param) {
|
|
127
127
|
var ObjectID = param.ObjectID, Name = param.Name;
|
|
128
128
|
var name = generateName({
|
|
@@ -137,4 +137,4 @@ await writeFile(objectsFile, objects.map(function(param) {
|
|
|
137
137
|
ts.factory.createExportSpecifier(false, undefined, ts.factory.createIdentifier("validate".concat(ObjectID)))
|
|
138
138
|
]), ts.factory.createStringLiteral("./object/validate".concat(ObjectID, ".js")))
|
|
139
139
|
];
|
|
140
|
-
}).flat().map(printNode).join(os.EOL),
|
|
140
|
+
}).flat().map(printNode).join(os.EOL), 'utf-8');
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import { Type } from
|
|
1
|
+
import { Type } from '@sinclair/typebox';
|
|
2
2
|
var ResourceType = Type.Union([
|
|
3
|
-
Type.Literal(
|
|
4
|
-
Type.Literal(
|
|
5
|
-
Type.Literal(
|
|
6
|
-
Type.Literal(
|
|
7
|
-
Type.Literal(
|
|
8
|
-
Type.Literal(
|
|
3
|
+
Type.Literal('String'),
|
|
4
|
+
Type.Literal('Integer'),
|
|
5
|
+
Type.Literal('Float'),
|
|
6
|
+
Type.Literal('Boolean'),
|
|
7
|
+
Type.Literal('Opaque'),
|
|
8
|
+
Type.Literal('Time')
|
|
9
9
|
]);
|
|
10
10
|
export var RangeEnumerationRegExp = RegExp("^(?<min>-?[0-9]+(?:\\.[0-9]+)?)\\.\\.(?<max>-?[0-9]+(?:\\.[0-9]+)?)$");
|
|
11
11
|
var RangeEnumeration = Type.RegExp(RangeEnumerationRegExp, {
|
|
12
|
-
title:
|
|
12
|
+
title: 'RangeEnumeration'
|
|
13
13
|
});
|
|
14
14
|
export var LWM2MObjectDefinition = Type.Object({
|
|
15
15
|
Name: Type.String({
|
|
16
16
|
minLength: 1,
|
|
17
17
|
examples: [
|
|
18
|
-
|
|
18
|
+
'Location'
|
|
19
19
|
]
|
|
20
20
|
}),
|
|
21
21
|
Description1: Type.String({
|
|
22
22
|
minLength: 1,
|
|
23
23
|
examples: [
|
|
24
|
-
|
|
24
|
+
'This LwM2M Object provides a range of location telemetry related information which can be queried by the LwM2M Server.'
|
|
25
25
|
]
|
|
26
26
|
}),
|
|
27
27
|
ObjectID: Type.RegExp(/^14[0-9]{3}$/),
|
|
28
28
|
ObjectURN: Type.RegExp(/^urn:oma:lwm2m:x:14[0-9]{3}$/),
|
|
29
|
-
LWM2MVersion: Type.Literal(
|
|
30
|
-
title:
|
|
31
|
-
description:
|
|
29
|
+
LWM2MVersion: Type.Literal('1.1', {
|
|
30
|
+
title: 'LwM2M version',
|
|
31
|
+
description: 'Defaults to 1.1'
|
|
32
32
|
}),
|
|
33
33
|
ObjectVersion: Type.Optional(Type.String({
|
|
34
34
|
minLength: 1,
|
|
35
35
|
examples: [
|
|
36
|
-
|
|
36
|
+
'1.1'
|
|
37
37
|
],
|
|
38
|
-
title:
|
|
39
|
-
description:
|
|
38
|
+
title: 'ObjectVersion',
|
|
39
|
+
description: 'Defaults to 1.0'
|
|
40
40
|
})),
|
|
41
|
-
MultipleInstances: Type.Literal(
|
|
42
|
-
Mandatory: Type.Literal(
|
|
41
|
+
MultipleInstances: Type.Literal('Multiple'),
|
|
42
|
+
Mandatory: Type.Literal('Optional'),
|
|
43
43
|
Resources: Type.Record(Type.Integer({
|
|
44
44
|
minimum: 0,
|
|
45
45
|
maximum: 65534
|
|
@@ -47,42 +47,42 @@ export var LWM2MObjectDefinition = Type.Object({
|
|
|
47
47
|
Name: Type.String({
|
|
48
48
|
minLength: 1,
|
|
49
49
|
examples: [
|
|
50
|
-
|
|
50
|
+
'Latitude'
|
|
51
51
|
]
|
|
52
52
|
}),
|
|
53
|
-
Operations: Type.Literal(
|
|
54
|
-
description:
|
|
53
|
+
Operations: Type.Literal('R', {
|
|
54
|
+
description: 'Only read-properties are supported'
|
|
55
55
|
}),
|
|
56
|
-
MultipleInstances: Type.Literal(
|
|
56
|
+
MultipleInstances: Type.Literal('Single'),
|
|
57
57
|
Mandatory: Type.Union([
|
|
58
|
-
Type.Literal(
|
|
59
|
-
Type.Literal(
|
|
58
|
+
Type.Literal('Optional'),
|
|
59
|
+
Type.Literal('Mandatory')
|
|
60
60
|
]),
|
|
61
61
|
Type: ResourceType,
|
|
62
62
|
RangeEnumeration: Type.Union([
|
|
63
63
|
Type.String({
|
|
64
64
|
maxLength: 0,
|
|
65
|
-
title:
|
|
65
|
+
title: 'an empty string'
|
|
66
66
|
}),
|
|
67
67
|
RangeEnumeration
|
|
68
68
|
]),
|
|
69
69
|
Units: Type.String({
|
|
70
70
|
examples: [
|
|
71
|
-
|
|
71
|
+
'lat'
|
|
72
72
|
],
|
|
73
|
-
title:
|
|
73
|
+
title: 'Units'
|
|
74
74
|
}),
|
|
75
75
|
Description: Type.String({
|
|
76
76
|
minLength: 1,
|
|
77
77
|
examples: [
|
|
78
|
-
|
|
78
|
+
'The decimal notation of latitude, e.g. -43.5723 [World Geodetic System 1984].'
|
|
79
79
|
]
|
|
80
80
|
})
|
|
81
81
|
}), {
|
|
82
82
|
minProperties: 1,
|
|
83
|
-
description:
|
|
83
|
+
description: 'Defines the object resources as a map'
|
|
84
84
|
}),
|
|
85
85
|
Description2: Type.String()
|
|
86
86
|
}, {
|
|
87
|
-
description:
|
|
87
|
+
description: 'LwM2M Object definitions with additional limitations applied to suit the hello.nrfcloud.com/map use-case'
|
|
88
88
|
});
|