@hello.nrfcloud.com/proto-map 4.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.
Files changed (169) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +122 -0
  3. package/dist/generator/addDocBlock.js +5 -0
  4. package/dist/generator/generateLwM2MDefinitions.js +82 -0
  5. package/dist/generator/generateLwM2MDefinitions.spec.js +91 -0
  6. package/dist/generator/generateLwm2mTimestampResources.js +69 -0
  7. package/dist/generator/generateModels.js +142 -0
  8. package/dist/generator/generateType.js +90 -0
  9. package/dist/generator/generateValidator.js +132 -0
  10. package/dist/generator/generateValidators.js +63 -0
  11. package/dist/generator/isDir.js +163 -0
  12. package/dist/generator/isDir.spec.js +212 -0
  13. package/dist/generator/lwm2m.js +106 -0
  14. package/dist/generator/models.js +306 -0
  15. package/dist/generator/printNode.js +8 -0
  16. package/dist/generator/tokenizeName.js +5 -0
  17. package/dist/generator/tokenizeName.spec.js +98 -0
  18. package/dist/generator/types.js +140 -0
  19. package/dist/lwm2m/LWM2MObjectDefinition.js +88 -0
  20. package/dist/lwm2m/LWM2MObjectInfo.js +9 -0
  21. package/dist/lwm2m/LwM2MObject.d.js +1 -0
  22. package/dist/lwm2m/LwM2MObjectID.js +57 -0
  23. package/dist/lwm2m/ParsedLwM2MObjectDefinition.js +1 -0
  24. package/dist/lwm2m/check-lwm2m-rules.js +480 -0
  25. package/dist/lwm2m/definitions.js +596 -0
  26. package/dist/lwm2m/fromXML2JSON.js +194 -0
  27. package/dist/lwm2m/instanceTs.js +9 -0
  28. package/dist/lwm2m/instanceTs.spec.js +16 -0
  29. package/dist/lwm2m/isRegisteredLwM2MObject.js +3 -0
  30. package/dist/lwm2m/isRegisteredLwM2MObject.spec.js +45 -0
  31. package/dist/lwm2m/object/14201.d.js +5 -0
  32. package/dist/lwm2m/object/14202.d.js +5 -0
  33. package/dist/lwm2m/object/14203.d.js +5 -0
  34. package/dist/lwm2m/object/14204.d.js +5 -0
  35. package/dist/lwm2m/object/14205.d.js +5 -0
  36. package/dist/lwm2m/object/14210.d.js +5 -0
  37. package/dist/lwm2m/object/14220.d.js +5 -0
  38. package/dist/lwm2m/object/14230.d.js +5 -0
  39. package/dist/lwm2m/object/validate14201.js +18 -0
  40. package/dist/lwm2m/object/validate14202.js +17 -0
  41. package/dist/lwm2m/object/validate14203.js +19 -0
  42. package/dist/lwm2m/object/validate14204.js +17 -0
  43. package/dist/lwm2m/object/validate14205.js +15 -0
  44. package/dist/lwm2m/object/validate14210.js +13 -0
  45. package/dist/lwm2m/object/validate14220.js +12 -0
  46. package/dist/lwm2m/object/validate14230.js +13 -0
  47. package/dist/lwm2m/objects.js +8 -0
  48. package/dist/lwm2m/parseRangeEnumeration.js +20 -0
  49. package/dist/lwm2m/parseRangeEnumeration.spec.js +27 -0
  50. package/dist/lwm2m/resourceType.js +12 -0
  51. package/dist/lwm2m/timestampResources.js +12 -0
  52. package/dist/lwm2m/unwrapNestedArray.js +114 -0
  53. package/dist/lwm2m/unwrapNestedArray.spec.js +374 -0
  54. package/dist/lwm2m/validate.js +14 -0
  55. package/dist/lwm2m/validation.js +146 -0
  56. package/dist/lwm2m/validators.js +20 -0
  57. package/dist/markdown/getCodeBlock.js +74 -0
  58. package/dist/markdown/getFrontMatter.js +15 -0
  59. package/dist/markdown/parseREADME.js +19 -0
  60. package/dist/models/asset_tracker_v2+AWS/examples/examples.spec.js +489 -0
  61. package/dist/models/check-model-rules.js +137 -0
  62. package/dist/models/models.js +137 -0
  63. package/dist/models/types.js +13 -0
  64. package/dist/senml/SenMLSchema.js +79 -0
  65. package/dist/senml/SenMLSchema.spec.js +23 -0
  66. package/dist/senml/hasValue.js +8 -0
  67. package/dist/senml/hasValue.spec.js +103 -0
  68. package/dist/senml/lwm2mToSenML.js +137 -0
  69. package/dist/senml/lwm2mToSenML.spec.js +104 -0
  70. package/dist/senml/parseResourceId.js +58 -0
  71. package/dist/senml/parseResourceId.spec.js +13 -0
  72. package/dist/senml/senMLtoLwM2M.js +126 -0
  73. package/dist/senml/senMLtoLwM2M.spec.js +226 -0
  74. package/dist/senml/validateSenML.js +6 -0
  75. package/dist/senml/validateSenML.spec.js +31 -0
  76. package/export.js +13 -0
  77. package/index.d.ts +14 -0
  78. package/lwm2m/14201.xml +94 -0
  79. package/lwm2m/14202.xml +84 -0
  80. package/lwm2m/14203.xml +104 -0
  81. package/lwm2m/14204.xml +84 -0
  82. package/lwm2m/14205.xml +64 -0
  83. package/lwm2m/14210.xml +44 -0
  84. package/lwm2m/14220.xml +34 -0
  85. package/lwm2m/14230.xml +44 -0
  86. package/lwm2m/LWM2M-v1_1.xsd +168 -0
  87. package/lwm2m/LWM2MObjectDefinition.ts +84 -0
  88. package/lwm2m/LWM2MObjectInfo.ts +42 -0
  89. package/lwm2m/LwM2MObject.d.ts +19 -0
  90. package/lwm2m/LwM2MObjectID.ts +73 -0
  91. package/lwm2m/ParsedLwM2MObjectDefinition.ts +28 -0
  92. package/lwm2m/check-lwm2m-rules.ts +160 -0
  93. package/lwm2m/definitions.ts +278 -0
  94. package/lwm2m/format.sh +3 -0
  95. package/lwm2m/fromXML2JSON.ts +44 -0
  96. package/lwm2m/instanceTs.spec.ts +19 -0
  97. package/lwm2m/instanceTs.ts +10 -0
  98. package/lwm2m/isRegisteredLwM2MObject.spec.ts +48 -0
  99. package/lwm2m/isRegisteredLwM2MObject.ts +4 -0
  100. package/lwm2m/object/14201.d.ts +73 -0
  101. package/lwm2m/object/14202.d.ts +59 -0
  102. package/lwm2m/object/14203.d.ts +67 -0
  103. package/lwm2m/object/14204.d.ts +55 -0
  104. package/lwm2m/object/14205.d.ts +43 -0
  105. package/lwm2m/object/14210.d.ts +31 -0
  106. package/lwm2m/object/14220.d.ts +25 -0
  107. package/lwm2m/object/14230.d.ts +31 -0
  108. package/lwm2m/object/validate14201.ts +10 -0
  109. package/lwm2m/object/validate14202.ts +10 -0
  110. package/lwm2m/object/validate14203.ts +10 -0
  111. package/lwm2m/object/validate14204.ts +10 -0
  112. package/lwm2m/object/validate14205.ts +10 -0
  113. package/lwm2m/object/validate14210.ts +10 -0
  114. package/lwm2m/object/validate14220.ts +10 -0
  115. package/lwm2m/object/validate14230.ts +10 -0
  116. package/lwm2m/objects.ts +16 -0
  117. package/lwm2m/parseRangeEnumeration.spec.ts +34 -0
  118. package/lwm2m/parseRangeEnumeration.ts +29 -0
  119. package/lwm2m/resourceType.ts +11 -0
  120. package/lwm2m/timestampResources.ts +4 -0
  121. package/lwm2m/unwrapNestedArray.spec.ts +241 -0
  122. package/lwm2m/unwrapNestedArray.ts +27 -0
  123. package/lwm2m/validate.ts +30 -0
  124. package/lwm2m/validation.ts +120 -0
  125. package/lwm2m/validators.ts +21 -0
  126. package/models/PCA20035+solar/README.md +10 -0
  127. package/models/PCA20035+solar/transforms/airQuality.md +48 -0
  128. package/models/PCA20035+solar/transforms/battery.md +46 -0
  129. package/models/PCA20035+solar/transforms/button.md +45 -0
  130. package/models/PCA20035+solar/transforms/deviceInfo.md +72 -0
  131. package/models/PCA20035+solar/transforms/gain.md +45 -0
  132. package/models/PCA20035+solar/transforms/geolocationFromGroundfix.md +67 -0
  133. package/models/PCA20035+solar/transforms/geolocationFromMessage.md +80 -0
  134. package/models/PCA20035+solar/transforms/humidity.md +43 -0
  135. package/models/PCA20035+solar/transforms/networkInfo.md +84 -0
  136. package/models/PCA20035+solar/transforms/pressure.md +43 -0
  137. package/models/PCA20035+solar/transforms/temperature.md +43 -0
  138. package/models/README.md +10 -0
  139. package/models/asset_tracker_v2+AWS/README.md +6 -0
  140. package/models/asset_tracker_v2+AWS/examples/examples.spec.ts +229 -0
  141. package/models/asset_tracker_v2+AWS/examples/shadow/example-1.json +24 -0
  142. package/models/asset_tracker_v2+AWS/examples/shadow/example-2.json +30 -0
  143. package/models/asset_tracker_v2+AWS/examples/shadow/example-3.json +37 -0
  144. package/models/asset_tracker_v2+AWS/examples/shadow/example-4.json +48 -0
  145. package/models/asset_tracker_v2+AWS/examples/shadow/example-5.json +43 -0
  146. package/models/asset_tracker_v2+AWS/transforms/GNSS.md +66 -0
  147. package/models/asset_tracker_v2+AWS/transforms/battery-voltage.md +50 -0
  148. package/models/asset_tracker_v2+AWS/transforms/device-info.md +61 -0
  149. package/models/asset_tracker_v2+AWS/transforms/env.md +69 -0
  150. package/models/asset_tracker_v2+AWS/transforms/fuel-gauge.md +62 -0
  151. package/models/asset_tracker_v2+AWS/transforms/roam.md +100 -0
  152. package/models/asset_tracker_v2+AWS/transforms/solar.md +58 -0
  153. package/models/check-model-rules.ts +125 -0
  154. package/models/kartverket-vasstandsdata/README.md +13 -0
  155. package/models/models.ts +36 -0
  156. package/models/types.ts +17 -0
  157. package/package.json +111 -0
  158. package/senml/SenMLSchema.spec.ts +21 -0
  159. package/senml/SenMLSchema.ts +74 -0
  160. package/senml/hasValue.spec.ts +19 -0
  161. package/senml/hasValue.ts +12 -0
  162. package/senml/lwm2mToSenML.spec.ts +74 -0
  163. package/senml/lwm2mToSenML.ts +62 -0
  164. package/senml/parseResourceId.spec.ts +13 -0
  165. package/senml/parseResourceId.ts +23 -0
  166. package/senml/senMLtoLwM2M.spec.ts +181 -0
  167. package/senml/senMLtoLwM2M.ts +121 -0
  168. package/senml/validateSenML.spec.ts +16 -0
  169. package/senml/validateSenML.ts +8 -0
@@ -0,0 +1,194 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_without_holes(arr) {
7
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
8
+ }
9
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
+ try {
11
+ var info = gen[key](arg);
12
+ var value = info.value;
13
+ } catch (error) {
14
+ reject(error);
15
+ return;
16
+ }
17
+ if (info.done) {
18
+ resolve(value);
19
+ } else {
20
+ Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ }
23
+ function _async_to_generator(fn) {
24
+ return function() {
25
+ var self = this, args = arguments;
26
+ return new Promise(function(resolve, reject) {
27
+ var gen = fn.apply(self, args);
28
+ function _next(value) {
29
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
+ }
31
+ function _throw(err) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
+ }
34
+ _next(undefined);
35
+ });
36
+ };
37
+ }
38
+ function _iterable_to_array(iter) {
39
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
40
+ }
41
+ function _non_iterable_spread() {
42
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
43
+ }
44
+ function _to_consumable_array(arr) {
45
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
46
+ }
47
+ function _unsupported_iterable_to_array(o, minLen) {
48
+ if (!o) return;
49
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
50
+ var n = Object.prototype.toString.call(o).slice(8, -1);
51
+ if (n === "Object" && o.constructor) n = o.constructor.name;
52
+ if (n === "Map" || n === "Set") return Array.from(n);
53
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
54
+ }
55
+ function _ts_generator(thisArg, body) {
56
+ var f, y, t, g, _ = {
57
+ label: 0,
58
+ sent: function() {
59
+ if (t[0] & 1) throw t[1];
60
+ return t[1];
61
+ },
62
+ trys: [],
63
+ ops: []
64
+ };
65
+ return g = {
66
+ next: verb(0),
67
+ "throw": verb(1),
68
+ "return": verb(2)
69
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
70
+ return this;
71
+ }), g;
72
+ function verb(n) {
73
+ return function(v) {
74
+ return step([
75
+ n,
76
+ v
77
+ ]);
78
+ };
79
+ }
80
+ function step(op) {
81
+ if (f) throw new TypeError("Generator is already executing.");
82
+ while(_)try {
83
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
84
+ if (y = 0, t) op = [
85
+ op[0] & 2,
86
+ t.value
87
+ ];
88
+ switch(op[0]){
89
+ case 0:
90
+ case 1:
91
+ t = op;
92
+ break;
93
+ case 4:
94
+ _.label++;
95
+ return {
96
+ value: op[1],
97
+ done: false
98
+ };
99
+ case 5:
100
+ _.label++;
101
+ y = op[1];
102
+ op = [
103
+ 0
104
+ ];
105
+ continue;
106
+ case 7:
107
+ op = _.ops.pop();
108
+ _.trys.pop();
109
+ continue;
110
+ default:
111
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
112
+ _ = 0;
113
+ continue;
114
+ }
115
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
116
+ _.label = op[1];
117
+ break;
118
+ }
119
+ if (op[0] === 6 && _.label < t[1]) {
120
+ _.label = t[1];
121
+ t = op;
122
+ break;
123
+ }
124
+ if (t && _.label < t[2]) {
125
+ _.label = t[2];
126
+ _.ops.push(op);
127
+ break;
128
+ }
129
+ if (t[2]) _.ops.pop();
130
+ _.trys.pop();
131
+ continue;
132
+ }
133
+ op = body.call(thisArg, _);
134
+ } catch (e) {
135
+ op = [
136
+ 6,
137
+ e
138
+ ];
139
+ y = 0;
140
+ } finally{
141
+ f = t = 0;
142
+ }
143
+ if (op[0] & 5) throw op[1];
144
+ return {
145
+ value: op[0] ? op[1] : void 0,
146
+ done: true
147
+ };
148
+ }
149
+ }
150
+ import xml2js from "xml2js";
151
+ import { readFile } from "node:fs/promises";
152
+ import path from "node:path";
153
+ /**
154
+ * From XML to JSON
155
+ */ export var fromXML2JSON = function() {
156
+ var _ref = _async_to_generator(function(id) {
157
+ var _path, baseDir, subDir, jsonObject, _;
158
+ return _ts_generator(this, function(_state) {
159
+ switch(_state.label){
160
+ case 0:
161
+ baseDir = process.cwd();
162
+ subDir = function() {
163
+ for(var _len = arguments.length, tree = new Array(_len), _key = 0; _key < _len; _key++){
164
+ tree[_key] = arguments[_key];
165
+ }
166
+ return (_path = path).join.apply(_path, [
167
+ baseDir
168
+ ].concat(_to_consumable_array(tree)));
169
+ };
170
+ _ = xml2js.parseStringPromise;
171
+ return [
172
+ 4,
173
+ readFile(subDir("lwm2m", "".concat(id, ".xml")), "utf-8")
174
+ ];
175
+ case 1:
176
+ return [
177
+ 4,
178
+ _.apply(xml2js, [
179
+ _state.sent()
180
+ ])
181
+ ];
182
+ case 2:
183
+ jsonObject = _state.sent();
184
+ return [
185
+ 2,
186
+ jsonObject.LWM2M.Object[0]
187
+ ];
188
+ }
189
+ });
190
+ });
191
+ return function fromXML2JSON(id) {
192
+ return _ref.apply(this, arguments);
193
+ };
194
+ }();
@@ -0,0 +1,9 @@
1
+ import { definitions } from "./definitions.js";
2
+ import { timestampResources } from "./timestampResources.js";
3
+ export var instanceTs = function(instance) {
4
+ var definition = definitions[instance.ObjectID];
5
+ var tsResourceId = timestampResources[definition.ObjectID]// All registered objects must have a timestamp resource
6
+ ;
7
+ var ts = instance.Resources[tsResourceId];
8
+ return new Date(ts);
9
+ };
@@ -0,0 +1,16 @@
1
+ import { describe, it } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { instanceTs } from "./instanceTs.js";
4
+ void describe("instanceTs()", function() {
5
+ void it("should return the timestamp of the instance", function() {
6
+ return assert.equal(instanceTs({
7
+ ObjectID: 14210,
8
+ ObjectVersion: "1.0",
9
+ Resources: {
10
+ "0": 3.5399999618530273,
11
+ "1": 4.168000221252441,
12
+ "99": "2024-02-23T10:18:20.474Z"
13
+ }
14
+ }).getTime(), new Date("2024-02-23T10:18:20.474Z").getTime());
15
+ });
16
+ });
@@ -0,0 +1,3 @@
1
+ import { validators } from "./validators.js";
2
+ import { validate } from "./validate.js";
3
+ export var isRegisteredLwM2MObject = validate(validators);
@@ -0,0 +1,45 @@
1
+ import { describe, it } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { isRegisteredLwM2MObject } from "./isRegisteredLwM2MObject.js";
4
+ void describe("isRegisteredLwM2MObject()", function() {
5
+ void it("should validate a LwM2M object", function() {
6
+ var o = {
7
+ ObjectID: 14201,
8
+ ObjectVersion: "1.0",
9
+ Resources: {
10
+ 0: 33.98771459323253,
11
+ 1: -84.50632147267358,
12
+ 2: 241.9342498779297,
13
+ 3: 11.317643165588379,
14
+ 4: 0.03478508070111275,
15
+ 5: 90.31222534179688,
16
+ 6: "GNSS",
17
+ 99: new Date(1699049744000)
18
+ }
19
+ };
20
+ assert.equal(isRegisteredLwM2MObject(o), true);
21
+ });
22
+ void it("should validate a LwM2M object with optional resources", function() {
23
+ var o = {
24
+ ObjectID: 14201,
25
+ ObjectVersion: "1.0",
26
+ Resources: {
27
+ 0: 33.98771459323253,
28
+ 1: -84.50632147267358,
29
+ 6: "GNSS",
30
+ 99: new Date(1699049744000)
31
+ }
32
+ };
33
+ assert.equal(isRegisteredLwM2MObject(o), true);
34
+ });
35
+ void it("should not validate an unknown LwM2M object", function() {
36
+ var o = {
37
+ ObjectID: 666,
38
+ ObjectVersion: "1.0",
39
+ Resources: {
40
+ 0: 42
41
+ }
42
+ };
43
+ assert.equal(isRegisteredLwM2MObject(o), false);
44
+ });
45
+ });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Geolocation (14201)
3
+ *
4
+ * Describes the geo location of a device
5
+ */ export { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Battery and Power (14202)
3
+ *
4
+ * Information about the battery and power status of the device.
5
+ */ export { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Connection information (14203)
3
+ *
4
+ * Details about the device's connection.
5
+ */ export { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Device information (14204)
3
+ *
4
+ * Details about the device's connection.
5
+ */ export { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Environment (14205)
3
+ *
4
+ * Environment information.
5
+ */ export { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Solar charge (14210)
3
+ *
4
+ * Measurements from the solar shield.
5
+ */ export { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Button press (14220)
3
+ *
4
+ * Describes a button press event.
5
+ */ export { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sea Water Level (14230)
3
+ *
4
+ * Describes observed sea water level.
5
+ */ export { };
@@ -0,0 +1,18 @@
1
+ import { NumberResource, StringResource, DateResource, OptionalResource, validate } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate Geolocation (14201)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14201.xml.
7
+ */ export var validate14201 = function(o, onError) {
8
+ return validate(LwM2MObjectID.Geolocation_14201, "1.0", {
9
+ 0: NumberResource,
10
+ 1: NumberResource,
11
+ 6: StringResource,
12
+ 99: DateResource,
13
+ 2: OptionalResource(NumberResource),
14
+ 3: OptionalResource(NumberResource),
15
+ 4: OptionalResource(NumberResource),
16
+ 5: OptionalResource(NumberResource)
17
+ })(o, onError);
18
+ };
@@ -0,0 +1,17 @@
1
+ import { DateResource, NumberResource, OptionalResource, validate } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate Battery and Power (14202)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14202.xml.
7
+ */ export var validate14202 = function(o, onError) {
8
+ return validate(LwM2MObjectID.BatteryAndPower_14202, "1.0", {
9
+ 99: DateResource,
10
+ 0: OptionalResource(NumberResource),
11
+ 1: OptionalResource(NumberResource),
12
+ 2: OptionalResource(NumberResource),
13
+ 3: OptionalResource(NumberResource),
14
+ 4: OptionalResource(NumberResource),
15
+ 5: OptionalResource(NumberResource)
16
+ })(o, onError);
17
+ };
@@ -0,0 +1,19 @@
1
+ import { DateResource, StringResource, OptionalResource, NumberResource, validate } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate Connection information (14203)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14203.xml.
7
+ */ export var validate14203 = function(o, onError) {
8
+ return validate(LwM2MObjectID.ConnectionInformation_14203, "1.0", {
9
+ 99: DateResource,
10
+ 0: OptionalResource(StringResource),
11
+ 1: OptionalResource(NumberResource),
12
+ 2: OptionalResource(NumberResource),
13
+ 3: OptionalResource(NumberResource),
14
+ 4: OptionalResource(NumberResource),
15
+ 5: OptionalResource(NumberResource),
16
+ 6: OptionalResource(StringResource),
17
+ 11: OptionalResource(NumberResource)
18
+ })(o, onError);
19
+ };
@@ -0,0 +1,17 @@
1
+ import { StringResource, DateResource, OptionalResource, validate } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate Device information (14204)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14204.xml.
7
+ */ export var validate14204 = function(o, onError) {
8
+ return validate(LwM2MObjectID.DeviceInformation_14204, "1.0", {
9
+ 0: StringResource,
10
+ 2: StringResource,
11
+ 3: StringResource,
12
+ 4: StringResource,
13
+ 99: DateResource,
14
+ 1: OptionalResource(StringResource),
15
+ 5: OptionalResource(StringResource)
16
+ })(o, onError);
17
+ };
@@ -0,0 +1,15 @@
1
+ import { DateResource, NumberResource, OptionalResource, validate } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate Environment (14205)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14205.xml.
7
+ */ export var validate14205 = function(o, onError) {
8
+ return validate(LwM2MObjectID.Environment_14205, "1.0", {
9
+ 99: DateResource,
10
+ 0: OptionalResource(NumberResource),
11
+ 1: OptionalResource(NumberResource),
12
+ 2: OptionalResource(NumberResource),
13
+ 10: OptionalResource(NumberResource)
14
+ })(o, onError);
15
+ };
@@ -0,0 +1,13 @@
1
+ import { NumberResource, DateResource, OptionalResource, validate } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate Solar charge (14210)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14210.xml.
7
+ */ export var validate14210 = function(o, onError) {
8
+ return validate(LwM2MObjectID.SolarCharge_14210, "1.0", {
9
+ 0: NumberResource,
10
+ 99: DateResource,
11
+ 1: OptionalResource(NumberResource)
12
+ })(o, onError);
13
+ };
@@ -0,0 +1,12 @@
1
+ import { NumberResource, DateResource, validate } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate Button press (14220)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14220.xml.
7
+ */ export var validate14220 = function(o, onError) {
8
+ return validate(LwM2MObjectID.ButtonPress_14220, "1.0", {
9
+ 0: NumberResource,
10
+ 99: DateResource
11
+ })(o, onError);
12
+ };
@@ -0,0 +1,13 @@
1
+ import { NumberResource, StringResource, DateResource, validate } from "../validation.js";
2
+ import { LwM2MObjectID } from "../LwM2MObjectID.js";
3
+ /**
4
+ * Validate Sea Water Level (14230)
5
+ *
6
+ * Ensures the given object is an LwM2M object according to the schema 14230.xml.
7
+ */ export var validate14230 = function(o, onError) {
8
+ return validate(LwM2MObjectID.SeaWaterLevel_14230, "1.0", {
9
+ 0: NumberResource,
10
+ 1: StringResource,
11
+ 99: DateResource
12
+ })(o, onError);
13
+ };
@@ -0,0 +1,8 @@
1
+ export { validate14201 } from "./object/validate14201.js";
2
+ export { validate14202 } from "./object/validate14202.js";
3
+ export { validate14203 } from "./object/validate14203.js";
4
+ export { validate14204 } from "./object/validate14204.js";
5
+ export { validate14205 } from "./object/validate14205.js";
6
+ export { validate14210 } from "./object/validate14210.js";
7
+ export { validate14220 } from "./object/validate14220.js";
8
+ export { validate14230 } from "./object/validate14230.js";
@@ -0,0 +1,20 @@
1
+ import { RangeEnumerationRegExp } from "./LWM2MObjectDefinition.js";
2
+ export var parseRangeEnumeration = function(re) {
3
+ var match = RangeEnumerationRegExp.exec(re);
4
+ if (match === null) return {
5
+ error: new Error("Could not match '".concat(re, "' against ").concat(RangeEnumerationRegExp, "!"))
6
+ };
7
+ var _match_groups;
8
+ var _ref = (_match_groups = match.groups) !== null && _match_groups !== void 0 ? _match_groups : {}, minS = _ref.min, maxS = _ref.max;
9
+ var min = parseFloat(minS);
10
+ var max = parseFloat(maxS);
11
+ if (min > max) return {
12
+ error: new Error("'min' must be smaller than 'max' in RangeEnumeration '".concat(re, "'!"))
13
+ };
14
+ return {
15
+ range: {
16
+ min: min,
17
+ max: max
18
+ }
19
+ };
20
+ };
@@ -0,0 +1,27 @@
1
+ import { describe, it } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { parseRangeEnumeration } from "./parseRangeEnumeration.js";
4
+ import { RangeEnumerationRegExp } from "./LWM2MObjectDefinition.js";
5
+ void describe("parseRangeEnumeration()", function() {
6
+ void it("should parse valid range enumeration", function() {
7
+ var result = parseRangeEnumeration("1..10");
8
+ assert.deepEqual(result, {
9
+ range: {
10
+ min: 1,
11
+ max: 10
12
+ }
13
+ });
14
+ });
15
+ void it("should handle invalid range enumeration", function() {
16
+ var result = parseRangeEnumeration("10..1");
17
+ assert.deepEqual(result, {
18
+ error: new Error("'min' must be smaller than 'max' in RangeEnumeration '10..1'!")
19
+ });
20
+ });
21
+ void it("should handle invalid input", function() {
22
+ var result = parseRangeEnumeration("invalid");
23
+ assert.deepEqual(result, {
24
+ error: new Error("Could not match 'invalid' against ".concat(RangeEnumerationRegExp, "!"))
25
+ });
26
+ });
27
+ });
@@ -0,0 +1,12 @@
1
+ export var LwM2MType;
2
+ (function(LwM2MType) {
3
+ LwM2MType["Boolean"] = "Boolean";
4
+ LwM2MType["Float"] = "Float";
5
+ LwM2MType["Integer"] = "Integer";
6
+ LwM2MType["UnsignedInteger"] = "Unsigned Integer";
7
+ LwM2MType["Objlnk"] = "Objlnk";
8
+ LwM2MType["Corelnk"] = "Corelnk";
9
+ LwM2MType["Opaque"] = "Opaque";
10
+ LwM2MType["String"] = "String";
11
+ LwM2MType["Time"] = "Time";
12
+ })(LwM2MType || (LwM2MType = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Contains the ID of the resource that defines the timestamp for each LwM2M object definition
3
+ */ export var timestampResources = {
4
+ 14201: 99,
5
+ 14202: 99,
6
+ 14203: 99,
7
+ 14204: 99,
8
+ 14205: 99,
9
+ 14210: 99,
10
+ 14220: 99,
11
+ 14230: 99
12
+ };
@@ -0,0 +1,114 @@
1
+ /**
2
+ * A recursive function that walks through the given object and for each property checks if its value is an array and only has one element. If that is the case it takes the first element and uses it instead.
3
+ */ function _array_like_to_array(arr, len) {
4
+ if (len == null || len > arr.length) len = arr.length;
5
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
6
+ return arr2;
7
+ }
8
+ function _array_with_holes(arr) {
9
+ if (Array.isArray(arr)) return arr;
10
+ }
11
+ function _define_property(obj, key, value) {
12
+ if (key in obj) {
13
+ Object.defineProperty(obj, key, {
14
+ value: value,
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true
18
+ });
19
+ } else {
20
+ obj[key] = value;
21
+ }
22
+ return obj;
23
+ }
24
+ function _iterable_to_array_limit(arr, i) {
25
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
26
+ if (_i == null) return;
27
+ var _arr = [];
28
+ var _n = true;
29
+ var _d = false;
30
+ var _s, _e;
31
+ try {
32
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
33
+ _arr.push(_s.value);
34
+ if (i && _arr.length === i) break;
35
+ }
36
+ } catch (err) {
37
+ _d = true;
38
+ _e = err;
39
+ } finally{
40
+ try {
41
+ if (!_n && _i["return"] != null) _i["return"]();
42
+ } finally{
43
+ if (_d) throw _e;
44
+ }
45
+ }
46
+ return _arr;
47
+ }
48
+ function _non_iterable_rest() {
49
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
50
+ }
51
+ function _object_spread(target) {
52
+ for(var i = 1; i < arguments.length; i++){
53
+ var source = arguments[i] != null ? arguments[i] : {};
54
+ var ownKeys = Object.keys(source);
55
+ if (typeof Object.getOwnPropertySymbols === "function") {
56
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
57
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
58
+ }));
59
+ }
60
+ ownKeys.forEach(function(key) {
61
+ _define_property(target, key, source[key]);
62
+ });
63
+ }
64
+ return target;
65
+ }
66
+ function ownKeys(object, enumerableOnly) {
67
+ var keys = Object.keys(object);
68
+ if (Object.getOwnPropertySymbols) {
69
+ var symbols = Object.getOwnPropertySymbols(object);
70
+ if (enumerableOnly) {
71
+ symbols = symbols.filter(function(sym) {
72
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
73
+ });
74
+ }
75
+ keys.push.apply(keys, symbols);
76
+ }
77
+ return keys;
78
+ }
79
+ function _object_spread_props(target, source) {
80
+ source = source != null ? source : {};
81
+ if (Object.getOwnPropertyDescriptors) {
82
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
83
+ } else {
84
+ ownKeys(Object(source)).forEach(function(key) {
85
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
86
+ });
87
+ }
88
+ return target;
89
+ }
90
+ function _sliced_to_array(arr, i) {
91
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
92
+ }
93
+ function _unsupported_iterable_to_array(o, minLen) {
94
+ if (!o) return;
95
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
96
+ var n = Object.prototype.toString.call(o).slice(8, -1);
97
+ if (n === "Object" && o.constructor) n = o.constructor.name;
98
+ if (n === "Map" || n === "Set") return Array.from(n);
99
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
100
+ }
101
+ export var unwrapNestedArray = function(object) {
102
+ if (typeof object === "string") return object;
103
+ return Object.entries(object).reduce(function(result, param) {
104
+ var _param = _sliced_to_array(param, 2), k = _param[0], v = _param[1];
105
+ if (typeof v === "string") return _object_spread_props(_object_spread({}, result), _define_property({}, k, v));
106
+ if (Array.isArray(v)) {
107
+ if (v.length === 1) {
108
+ return _object_spread_props(_object_spread({}, result), _define_property({}, k, unwrapNestedArray(v[0])));
109
+ }
110
+ return _object_spread_props(_object_spread({}, result), _define_property({}, k, v.map(unwrapNestedArray)));
111
+ }
112
+ return _object_spread_props(_object_spread({}, result), _define_property({}, k, unwrapNestedArray(v)));
113
+ }, {});
114
+ };