kuzzle-device-manager 2.3.2 → 2.4.0-beta.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/modules/asset/AssetsController.d.ts +5 -0
- package/dist/lib/modules/asset/AssetsController.js +48 -15
- package/dist/lib/modules/asset/AssetsController.js.map +1 -1
- package/dist/lib/modules/asset/collections/assetsMappings.js +1 -0
- package/dist/lib/modules/asset/collections/assetsMappings.js.map +1 -1
- package/dist/lib/modules/asset/types/AssetApi.d.ts +10 -0
- package/dist/lib/modules/decoder/PayloadService.js +1 -0
- package/dist/lib/modules/decoder/PayloadService.js.map +1 -1
- package/dist/lib/modules/device/DeviceService.js +1 -0
- package/dist/lib/modules/device/DeviceService.js.map +1 -1
- package/dist/lib/modules/device/DevicesController.d.ts +5 -0
- package/dist/lib/modules/device/DevicesController.js +46 -16
- package/dist/lib/modules/device/DevicesController.js.map +1 -1
- package/dist/lib/modules/device/collections/deviceMappings.d.ts +3 -0
- package/dist/lib/modules/device/collections/deviceMappings.js +1 -0
- package/dist/lib/modules/device/collections/deviceMappings.js.map +1 -1
- package/dist/lib/modules/device/types/DeviceApi.d.ts +10 -0
- package/dist/lib/modules/measure/MeasureExporter.d.ts +23 -33
- package/dist/lib/modules/measure/MeasureExporter.js +55 -88
- package/dist/lib/modules/measure/MeasureExporter.js.map +1 -1
- package/dist/lib/modules/measure/MeasureService.js +10 -0
- package/dist/lib/modules/measure/MeasureService.js.map +1 -1
- package/dist/lib/modules/shared/index.d.ts +1 -0
- package/dist/lib/modules/shared/index.js +1 -0
- package/dist/lib/modules/shared/index.js.map +1 -1
- package/dist/lib/modules/shared/services/AbstractExporter.d.ts +52 -0
- package/dist/lib/modules/shared/services/AbstractExporter.js +87 -0
- package/dist/lib/modules/shared/services/AbstractExporter.js.map +1 -0
- package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +14 -0
- package/dist/lib/modules/shared/services/DigitalTwinExporter.js +94 -0
- package/dist/lib/modules/shared/services/DigitalTwinExporter.js.map +1 -0
- package/dist/lib/modules/shared/services/index.d.ts +2 -0
- package/dist/lib/modules/shared/services/index.js +19 -0
- package/dist/lib/modules/shared/services/index.js.map +1 -0
- package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DigitalTwinExporter = void 0;
|
|
4
|
+
const plugin_1 = require("../../plugin");
|
|
5
|
+
const __1 = require("../");
|
|
6
|
+
const AbstractExporter_1 = require("./AbstractExporter");
|
|
7
|
+
class DigitalTwinExporter extends AbstractExporter_1.AbstractExporter {
|
|
8
|
+
exportRedisKey(engineId, exportId) {
|
|
9
|
+
return `exports:${engineId}:${this.target}:${exportId}`;
|
|
10
|
+
}
|
|
11
|
+
getLink(engineId, exportId) {
|
|
12
|
+
return `/_/device-manager/${engineId}/${this.target}/_export/${exportId}`;
|
|
13
|
+
}
|
|
14
|
+
async sendExport(engineId, exportId) {
|
|
15
|
+
try {
|
|
16
|
+
const { query, sort } = await this.getExport(engineId, exportId);
|
|
17
|
+
const digitalTwins = await this.sdk.document.search(engineId, this.target, { query, sort }, { lang: "koncorde", size: 200 });
|
|
18
|
+
const namedMeasures = await this.getNamedMeasures(engineId);
|
|
19
|
+
const measureColumns = await this.generateMeasureColumns(namedMeasures);
|
|
20
|
+
const columns = [
|
|
21
|
+
{ header: "Model", path: "_source.model" },
|
|
22
|
+
{ header: "Reference", path: "_source.reference" },
|
|
23
|
+
...measureColumns,
|
|
24
|
+
{ header: "lastMeasuredAt", path: "_source.lastMeasuredAt" },
|
|
25
|
+
];
|
|
26
|
+
const stream = this.getExportStream(digitalTwins, columns);
|
|
27
|
+
await this.sdk.ms.del(this.exportRedisKey(engineId, exportId));
|
|
28
|
+
return stream;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
this.log.error(error);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the deduplicated Named Measures get from models
|
|
36
|
+
*/
|
|
37
|
+
async getNamedMeasures(engineId) {
|
|
38
|
+
const type = this.target === plugin_1.InternalCollection.ASSETS ? "asset" : "device";
|
|
39
|
+
const query = {
|
|
40
|
+
and: [{ equals: { type } }],
|
|
41
|
+
};
|
|
42
|
+
if (this.target === plugin_1.InternalCollection.ASSETS) {
|
|
43
|
+
const engine = await this.getEngine(engineId);
|
|
44
|
+
query.and.push({ equals: { engineGroup: engine.group } });
|
|
45
|
+
}
|
|
46
|
+
let result = await this.sdk.document.search(this.plugin.config.adminIndex, plugin_1.InternalCollection.MODELS, {
|
|
47
|
+
query: { equals: { type } },
|
|
48
|
+
}, { lang: "koncorde" });
|
|
49
|
+
// ? Use a map to dedup the NamedMeasures get from models
|
|
50
|
+
const namedMeasures = new Map();
|
|
51
|
+
while (result) {
|
|
52
|
+
for (const { _source } of result.hits) {
|
|
53
|
+
for (const namedMeasure of _source[type].measures) {
|
|
54
|
+
if (!namedMeasures.has(namedMeasure.name)) {
|
|
55
|
+
namedMeasures.set(namedMeasure.name, namedMeasure);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
result = await result.next();
|
|
60
|
+
}
|
|
61
|
+
// ? Ensure stable measures order
|
|
62
|
+
return [...namedMeasures.values()].sort((a, b) => {
|
|
63
|
+
if (a.name < b.name) {
|
|
64
|
+
return -1;
|
|
65
|
+
}
|
|
66
|
+
if (a.name > b.name) {
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
return 0;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async generateMeasureColumns(namedMeasures) {
|
|
73
|
+
const columns = [];
|
|
74
|
+
const measuresPath = new Map();
|
|
75
|
+
for (const { name, type } of namedMeasures) {
|
|
76
|
+
if (!measuresPath.has(name)) {
|
|
77
|
+
const { measure: measureDefinition } = await (0, __1.ask)("ask:device-manager:model:measure:get", { type });
|
|
78
|
+
const flattenMeasuresPath = Object.keys((0, __1.flattenObject)(measureDefinition.valuesMappings)).map((path) => path.replace(".type", "").replace(".properties", ""));
|
|
79
|
+
measuresPath.set(name, flattenMeasuresPath);
|
|
80
|
+
}
|
|
81
|
+
for (const path of measuresPath.get(name)) {
|
|
82
|
+
const header = `${name}.${path}`.replace(`${name}.${type}`, name);
|
|
83
|
+
columns.push({
|
|
84
|
+
header,
|
|
85
|
+
isMeasure: true,
|
|
86
|
+
path: `_source.measures.${name}.values.${path}`,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return columns;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.DigitalTwinExporter = DigitalTwinExporter;
|
|
94
|
+
//# sourceMappingURL=DigitalTwinExporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DigitalTwinExporter.js","sourceRoot":"","sources":["../../../../../lib/modules/shared/services/DigitalTwinExporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./AbstractExporter"), exports);
|
|
18
|
+
__exportStar(require("./DigitalTwinExporter"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/modules/shared/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,wDAAsC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kuzzle-device-manager",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0-beta.1-1",
|
|
4
4
|
"description": "Manage your IoT devices and assets. Choose a provisioning strategy, receive and decode payload, handle your IoT business logic.",
|
|
5
5
|
"author": "The Kuzzle Team (support@kuzzle.io)",
|
|
6
6
|
"repository": {
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"@types/lodash": "^4.14.195",
|
|
41
41
|
"@types/node": "^18.15.13",
|
|
42
42
|
"axios": "^1.3.6",
|
|
43
|
+
"csv-parse": "^5.4.0",
|
|
43
44
|
"cz-conventional-changelog": "^3.3.0",
|
|
44
45
|
"ergol": "^1.0.2",
|
|
45
46
|
"eslint-plugin-jest": "^27.2.1",
|