@corvina/device-example 1.4.9 → 1.4.10
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/app.module.d.ts +3 -0
- package/dist/app.module.d.ts.map +1 -0
- package/dist/app.module.js +42 -0
- package/dist/app.module.js.map +1 -0
- package/dist/controllers/app.controller.d.ts +6 -0
- package/dist/controllers/app.controller.d.ts.map +1 -0
- package/dist/controllers/app.controller.js +26 -0
- package/dist/controllers/app.controller.js.map +1 -0
- package/dist/controllers/device/config.controller.d.ts +12 -0
- package/dist/controllers/device/config.controller.d.ts.map +1 -0
- package/dist/controllers/device/config.controller.js +76 -0
- package/dist/controllers/device/config.controller.js.map +1 -0
- package/dist/controllers/device/dice.controller.d.ts +7 -0
- package/dist/controllers/device/dice.controller.d.ts.map +1 -0
- package/dist/controllers/device/dice.controller.js +63 -0
- package/dist/controllers/device/dice.controller.js.map +1 -0
- package/dist/controllers/device/dto/datapoint.dto.d.ts +7 -0
- package/dist/controllers/device/dto/datapoint.dto.d.ts.map +1 -0
- package/dist/controllers/device/dto/datapoint.dto.js +10 -0
- package/dist/controllers/device/dto/datapoint.dto.js.map +1 -0
- package/dist/controllers/device/dto/deviceconfig.dto.d.ts +55 -0
- package/dist/controllers/device/dto/deviceconfig.dto.d.ts.map +1 -0
- package/dist/controllers/device/dto/deviceconfig.dto.js +95 -0
- package/dist/controllers/device/dto/deviceconfig.dto.js.map +1 -0
- package/dist/controllers/device/dto/licensedata.dto.d.ts +9 -0
- package/dist/controllers/device/dto/licensedata.dto.d.ts.map +1 -0
- package/dist/controllers/device/dto/licensedata.dto.js +12 -0
- package/dist/controllers/device/dto/licensedata.dto.js.map +1 -0
- package/dist/controllers/device/json.controller.d.ts +7 -0
- package/dist/controllers/device/json.controller.d.ts.map +1 -0
- package/dist/controllers/device/json.controller.js +135 -0
- package/dist/controllers/device/json.controller.js.map +1 -0
- package/dist/controllers/device/sine.controller.d.ts +7 -0
- package/dist/controllers/device/sine.controller.d.ts.map +1 -0
- package/dist/controllers/device/sine.controller.js +79 -0
- package/dist/controllers/device/sine.controller.js.map +1 -0
- package/dist/controllers/health.controller.d.ts +9 -0
- package/dist/controllers/health.controller.d.ts.map +1 -0
- package/dist/controllers/health.controller.js +39 -0
- package/dist/controllers/health.controller.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +64 -0
- package/dist/main.js.map +1 -0
- package/dist/services/device.health.d.ts +8 -0
- package/dist/services/device.health.d.ts.map +1 -0
- package/dist/services/device.health.js +36 -0
- package/dist/services/device.health.js.map +1 -0
- package/package.json +3 -3
- package/tsconfig.app.tsbuildinfo +1 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
var Json_1;
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.Json = void 0;
|
|
20
|
+
const common_1 = require("@nestjs/common");
|
|
21
|
+
const device_client_1 = require("@corvina/device-client");
|
|
22
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
23
|
+
const axios_1 = __importDefault(require("axios"));
|
|
24
|
+
let Json = Json_1 = class Json {
|
|
25
|
+
l = new common_1.Logger(Json_1.name);
|
|
26
|
+
deviceService;
|
|
27
|
+
async post(tagName = undefined, timestamp = undefined, qos = undefined, postCallback = undefined, v) {
|
|
28
|
+
const t = timestamp || Date.now();
|
|
29
|
+
const dataPoints = new Array();
|
|
30
|
+
const dp = {
|
|
31
|
+
tagName,
|
|
32
|
+
value: v,
|
|
33
|
+
timestamp: t,
|
|
34
|
+
};
|
|
35
|
+
dataPoints.push(dp);
|
|
36
|
+
await this.deviceService.post(dataPoints, {
|
|
37
|
+
qos: qos || 0,
|
|
38
|
+
cb: postCallback
|
|
39
|
+
? (error, tagName, modelPath) => {
|
|
40
|
+
axios_1.default.post(postCallback, { error: { message: error.message }, tagName, modelPath });
|
|
41
|
+
}
|
|
42
|
+
: undefined,
|
|
43
|
+
});
|
|
44
|
+
return dataPoints;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, common_1.Inject)(),
|
|
49
|
+
__metadata("design:type", device_client_1.DeviceService)
|
|
50
|
+
], Json.prototype, "deviceService", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, swagger_1.ApiOperation)({
|
|
53
|
+
summary: "Post a new JSON value",
|
|
54
|
+
callbacks: {
|
|
55
|
+
result: {
|
|
56
|
+
"{$request.query#/callback}": {
|
|
57
|
+
post: {
|
|
58
|
+
requestBody: {
|
|
59
|
+
required: true,
|
|
60
|
+
content: {
|
|
61
|
+
"application/json": {
|
|
62
|
+
schema: {
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: {
|
|
65
|
+
error: {
|
|
66
|
+
type: "object",
|
|
67
|
+
properties: {
|
|
68
|
+
message: {
|
|
69
|
+
type: "string",
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
tagName: {
|
|
74
|
+
type: "string",
|
|
75
|
+
},
|
|
76
|
+
modelPath: {
|
|
77
|
+
type: "string",
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
responses: {
|
|
85
|
+
"200": { description: "The server acknowledged the request" },
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
}),
|
|
92
|
+
(0, swagger_1.ApiQuery)({
|
|
93
|
+
name: "tagName",
|
|
94
|
+
description: "Prefix of device identifier (name) of data source. The actual tag names advertised to the cloud are automatically generated as this prefix plus each property JSON path. The prefix can be undefined, so that only JSON paths are used",
|
|
95
|
+
schema: { default: undefined, example: "temperature" },
|
|
96
|
+
required: false,
|
|
97
|
+
}),
|
|
98
|
+
(0, swagger_1.ApiQuery)({
|
|
99
|
+
name: "timestamp",
|
|
100
|
+
description: "Specify a timestamp (if omitted the request timestamp is used) ",
|
|
101
|
+
required: false,
|
|
102
|
+
}),
|
|
103
|
+
(0, swagger_1.ApiQuery)({
|
|
104
|
+
name: "callback",
|
|
105
|
+
description: "Specify an optional callback to be invoked when the message has been delivered",
|
|
106
|
+
schema: { type: "string", format: "uri", example: "http://localhost:30001" },
|
|
107
|
+
required: false,
|
|
108
|
+
}),
|
|
109
|
+
(0, swagger_1.ApiQuery)({
|
|
110
|
+
name: "qos",
|
|
111
|
+
description: "Specify an optional qos (by default is zeo)",
|
|
112
|
+
schema: { type: "number", minimum: 0, maximum: 2, default: 0, example: 1 },
|
|
113
|
+
required: false,
|
|
114
|
+
}),
|
|
115
|
+
(0, swagger_1.ApiBody)({
|
|
116
|
+
description: "The json value to set. Each property in the json is assigned as full tag name advertised to the cloud as ```availableTags``` the corresponding json path prefixed by ```tagName```. For instance, if ```tagName=\"tag\"``` and value is ```{ a: {b : 1 } }``` the advertised list of available tags is ```['tag.a.b']```. If ```tagName``` is undefined the advertised list of available tags is simply ```['a.b']```",
|
|
117
|
+
schema: { default: "{}", example: { Tag1: 1 } },
|
|
118
|
+
}),
|
|
119
|
+
(0, common_1.Post)(),
|
|
120
|
+
__param(0, (0, common_1.Query)("tagName")),
|
|
121
|
+
__param(1, (0, common_1.Query)("timestamp")),
|
|
122
|
+
__param(2, (0, common_1.Query)("qos")),
|
|
123
|
+
__param(3, (0, common_1.Query)("callback")),
|
|
124
|
+
__param(4, (0, common_1.Body)()),
|
|
125
|
+
__metadata("design:type", Function),
|
|
126
|
+
__metadata("design:paramtypes", [Object, Object, Object, Object, Object]),
|
|
127
|
+
__metadata("design:returntype", Promise)
|
|
128
|
+
], Json.prototype, "post", null);
|
|
129
|
+
Json = Json_1 = __decorate([
|
|
130
|
+
(0, swagger_1.ApiTags)("device"),
|
|
131
|
+
(0, common_1.Controller)("/device/json/"),
|
|
132
|
+
(0, common_1.Injectable)()
|
|
133
|
+
], Json);
|
|
134
|
+
exports.Json = Json;
|
|
135
|
+
//# sourceMappingURL=json.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.controller.js","sourceRoot":"","sources":["../../../src/controllers/device/json.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DataPointDTO } from "./dto/datapoint.dto";
|
|
2
|
+
export declare class Sine {
|
|
3
|
+
private readonly l;
|
|
4
|
+
private readonly deviceService;
|
|
5
|
+
post(tagName?: string, period?: number, amplitude?: number, phase?: number): Promise<DataPointDTO[]>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=sine.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sine.controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/device/sine.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,qBAGa,IAAI;IACb,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAyB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAyBlD,IAAI,CACY,OAAO,SAAQ,EAChB,MAAM,SAAO,EACV,SAAS,SAAO,EACpB,KAAK,SAAI,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;CAa7B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var Sine_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.Sine = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const device_client_1 = require("@corvina/device-client");
|
|
19
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
20
|
+
let Sine = Sine_1 = class Sine {
|
|
21
|
+
l = new common_1.Logger(Sine_1.name);
|
|
22
|
+
deviceService;
|
|
23
|
+
async post(tagName = "Tag", period = 1000, amplitude = 1000, phase = 0) {
|
|
24
|
+
const t = Date.now();
|
|
25
|
+
const v = amplitude * Math.sin(phase + (Date.now() / period) * 2 * Math.PI);
|
|
26
|
+
const dataPoints = new Array();
|
|
27
|
+
const dp = {
|
|
28
|
+
tagName,
|
|
29
|
+
value: v,
|
|
30
|
+
timestamp: t,
|
|
31
|
+
};
|
|
32
|
+
dataPoints.push(dp);
|
|
33
|
+
await this.deviceService.post(dataPoints);
|
|
34
|
+
return dataPoints;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, common_1.Inject)(),
|
|
39
|
+
__metadata("design:type", device_client_1.DeviceService)
|
|
40
|
+
], Sine.prototype, "deviceService", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, swagger_1.ApiOperation)({
|
|
43
|
+
summary: "Post a new value sampled from a sine wave with the given parameters, using wall clock as time base",
|
|
44
|
+
}),
|
|
45
|
+
(0, swagger_1.ApiQuery)({
|
|
46
|
+
name: "tagName",
|
|
47
|
+
description: "device identifier (name) of data source",
|
|
48
|
+
schema: { default: "Tag" },
|
|
49
|
+
required: false,
|
|
50
|
+
}),
|
|
51
|
+
(0, swagger_1.ApiQuery)({
|
|
52
|
+
name: "period",
|
|
53
|
+
description: "period in ms of the sine wave",
|
|
54
|
+
required: false,
|
|
55
|
+
schema: { default: 1000 },
|
|
56
|
+
}),
|
|
57
|
+
(0, swagger_1.ApiQuery)({
|
|
58
|
+
name: "amplitude",
|
|
59
|
+
description: "amplitude of the sine wave",
|
|
60
|
+
required: false,
|
|
61
|
+
schema: { default: 1000 },
|
|
62
|
+
}),
|
|
63
|
+
(0, swagger_1.ApiQuery)({ name: "phase", description: "phase of the sine wave", required: false, schema: { default: 0 } }),
|
|
64
|
+
(0, common_1.Post)(),
|
|
65
|
+
__param(0, (0, common_1.Query)("tagName")),
|
|
66
|
+
__param(1, (0, common_1.Query)("period")),
|
|
67
|
+
__param(2, (0, common_1.Query)("amplitude")),
|
|
68
|
+
__param(3, (0, common_1.Query)("phase")),
|
|
69
|
+
__metadata("design:type", Function),
|
|
70
|
+
__metadata("design:paramtypes", [Object, Object, Object, Object]),
|
|
71
|
+
__metadata("design:returntype", Promise)
|
|
72
|
+
], Sine.prototype, "post", null);
|
|
73
|
+
Sine = Sine_1 = __decorate([
|
|
74
|
+
(0, swagger_1.ApiTags)("device"),
|
|
75
|
+
(0, common_1.Controller)("/device/sine"),
|
|
76
|
+
(0, common_1.Injectable)()
|
|
77
|
+
], Sine);
|
|
78
|
+
exports.Sine = Sine;
|
|
79
|
+
//# sourceMappingURL=sine.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sine.controller.js","sourceRoot":"","sources":["../../../src/controllers/device/sine.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAqF;AACrF,0DAAuD;AAEvD,6CAAkE;AAM3D,IAAM,IAAI,YAAV,MAAM,IAAI;IACI,CAAC,GAAG,IAAI,eAAM,CAAC,MAAI,CAAC,IAAI,CAAC,CAAC;IAChB,aAAa,CAAgB;IAyBlD,AAAN,KAAK,CAAC,IAAI,CACY,UAAU,KAAK,EAChB,SAAS,IAAI,EACV,YAAY,IAAI,EACpB,QAAQ,CAAC;QAEzB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,IAAI,KAAK,EAAa,CAAC;QAC1C,MAAM,EAAE,GAAc;YAClB,OAAO;YACP,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,CAAC;SACf,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ,CAAA;AA3CG;IAAC,IAAA,eAAM,GAAE;8BAAiC,6BAAa;2CAAC;AAyBlD;IAvBL,IAAA,sBAAY,EAAC;QACV,OAAO,EAAE,oGAAoG;KAChH,CAAC;IACD,IAAA,kBAAQ,EAAC;QACN,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC1B,QAAQ,EAAE,KAAK;KAClB,CAAC;IACD,IAAA,kBAAQ,EAAC;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+BAA+B;QAC5C,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC5B,CAAC;IACD,IAAA,kBAAQ,EAAC;QACN,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC5B,CAAC;IACD,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3G,IAAA,aAAI,GAAE;IAEF,WAAA,IAAA,cAAK,EAAC,SAAS,CAAC,CAAA;IAChB,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;IACf,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAClB,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;;;;gCAalB;AA5CQ,IAAI;IAHhB,IAAA,iBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,mBAAU,EAAC,cAAc,CAAC;IAC1B,IAAA,mBAAU,GAAE;GACA,IAAI,CA6ChB;AA7CY,oBAAI"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DeviceHealthIndicator } from "../services/device.health";
|
|
2
|
+
import { HealthCheckService } from "@nestjs/terminus";
|
|
3
|
+
export declare class HealthController {
|
|
4
|
+
private health;
|
|
5
|
+
private deviceHealthIndicator;
|
|
6
|
+
constructor(health: HealthCheckService, deviceHealthIndicator: DeviceHealthIndicator);
|
|
7
|
+
check(): Promise<import("@nestjs/terminus").HealthCheckResult>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=health.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/health.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAe,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,qBACa,gBAAgB;IACb,OAAO,CAAC,MAAM;IAAsB,OAAO,CAAC,qBAAqB;gBAAzD,MAAM,EAAE,kBAAkB,EAAU,qBAAqB,EAAE,qBAAqB;IAIpG,KAAK;CAGR"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.HealthController = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const device_health_1 = require("../services/device.health");
|
|
15
|
+
const terminus_1 = require("@nestjs/terminus");
|
|
16
|
+
let HealthController = class HealthController {
|
|
17
|
+
health;
|
|
18
|
+
deviceHealthIndicator;
|
|
19
|
+
constructor(health, deviceHealthIndicator) {
|
|
20
|
+
this.health = health;
|
|
21
|
+
this.deviceHealthIndicator = deviceHealthIndicator;
|
|
22
|
+
}
|
|
23
|
+
check() {
|
|
24
|
+
return this.health.check([async () => this.deviceHealthIndicator.isHealthy("device")]);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, common_1.Get)(),
|
|
29
|
+
(0, terminus_1.HealthCheck)(),
|
|
30
|
+
__metadata("design:type", Function),
|
|
31
|
+
__metadata("design:paramtypes", []),
|
|
32
|
+
__metadata("design:returntype", void 0)
|
|
33
|
+
], HealthController.prototype, "check", null);
|
|
34
|
+
HealthController = __decorate([
|
|
35
|
+
(0, common_1.Controller)("health"),
|
|
36
|
+
__metadata("design:paramtypes", [terminus_1.HealthCheckService, device_health_1.DeviceHealthIndicator])
|
|
37
|
+
], HealthController);
|
|
38
|
+
exports.HealthController = HealthController;
|
|
39
|
+
//# sourceMappingURL=health.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.controller.js","sourceRoot":"","sources":["../../src/controllers/health.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiD;AACjD,6DAAkE;AAClE,+CAAmE;AAG5D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACL;IAAoC;IAAxD,YAAoB,MAA0B,EAAU,qBAA4C;QAAhF,WAAM,GAAN,MAAM,CAAoB;QAAU,0BAAqB,GAArB,qBAAqB,CAAuB;IAAG,CAAC;IAIxG,KAAK;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;CACJ,CAAA;AALG;IAAC,IAAA,YAAG,GAAE;IACL,IAAA,sBAAW,GAAE;;;;6CAGb;AAPQ,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,QAAQ,CAAC;qCAEW,6BAAkB,EAAiC,qCAAqB;GAD3F,gBAAgB,CAQ5B;AARY,4CAAgB"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const core_1 = require("@nestjs/core");
|
|
7
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
8
|
+
const axios_1 = __importDefault(require("axios"));
|
|
9
|
+
const app_module_1 = require("./app.module");
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const nestjs_pino_1 = require("nestjs-pino");
|
|
12
|
+
const device_client_1 = require("@corvina/device-client");
|
|
13
|
+
async function bootstrap() {
|
|
14
|
+
const app = await core_1.NestFactory.create(app_module_1.AppModule, {
|
|
15
|
+
bufferLogs: false,
|
|
16
|
+
});
|
|
17
|
+
const pinoLogger = app.get(nestjs_pino_1.Logger);
|
|
18
|
+
app.useLogger(pinoLogger);
|
|
19
|
+
const l = new common_1.Logger("example");
|
|
20
|
+
try {
|
|
21
|
+
const config = new swagger_1.DocumentBuilder()
|
|
22
|
+
.setTitle("Corvina NodeJS device API")
|
|
23
|
+
.setDescription("")
|
|
24
|
+
.setVersion("1.0")
|
|
25
|
+
.addTag("device")
|
|
26
|
+
.build();
|
|
27
|
+
const document = swagger_1.SwaggerModule.createDocument(app, config);
|
|
28
|
+
swagger_1.SwaggerModule.setup("swagger-ui", app, document);
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
l.error("Error caught: ");
|
|
32
|
+
l.error(e);
|
|
33
|
+
}
|
|
34
|
+
await app.listen(process.env.PORT || 3000);
|
|
35
|
+
app.get(device_client_1.DeviceRunnerService).run();
|
|
36
|
+
const device = app.get(device_client_1.DeviceService);
|
|
37
|
+
device.on("ready", (event) => {
|
|
38
|
+
l.log("Device is ready to transmit data");
|
|
39
|
+
});
|
|
40
|
+
device.on("not_ready", (event) => {
|
|
41
|
+
l.log("Device is not ready to transmit data");
|
|
42
|
+
});
|
|
43
|
+
device.on("write", (event) => {
|
|
44
|
+
l.log(`Write event received ${JSON.stringify(event)}`);
|
|
45
|
+
const t = Date.now();
|
|
46
|
+
const dataPoints = new Array();
|
|
47
|
+
const dp = {
|
|
48
|
+
tagName: event.tagName,
|
|
49
|
+
value: event.v,
|
|
50
|
+
timestamp: t,
|
|
51
|
+
};
|
|
52
|
+
dataPoints.push(dp);
|
|
53
|
+
device.post(dataPoints, {
|
|
54
|
+
qos: 0,
|
|
55
|
+
cb: process.env["WRITE_CALLBACK"]
|
|
56
|
+
? (error, tagName, modelPath) => {
|
|
57
|
+
axios_1.default.post(process.env["WRITE_CALLBACK"], event).catch((err) => "Error executing write callback");
|
|
58
|
+
}
|
|
59
|
+
: undefined,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
bootstrap();
|
|
64
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;AAAA,uCAA2C;AAC3C,6CAAiE;AACjE,kDAA0B;AAC1B,6CAAyC;AACzC,2CAAuD;AACvD,6CAAuD;AACvD,0DAAuF;AAEvF,KAAK,UAAU,SAAS;IACpB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,EAAE;QAC5C,UAAU,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,MAAM,UAAU,GAAkB,GAAG,CAAC,GAAG,CAAC,oBAAc,CAAC,CAAC;IAC1D,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE1B,MAAM,CAAC,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,CAAC;IAEhC,IAAI;QACA,MAAM,MAAM,GAAG,IAAI,yBAAe,EAAE;aAC/B,QAAQ,CAAC,2BAA2B,CAAC;aACrC,cAAc,CAAC,EAAE,CAAC;aAClB,UAAU,CAAC,KAAK,CAAC;aACjB,MAAM,CAAC,QAAQ,CAAC;aAChB,KAAK,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3D,uBAAa,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;KACpD;IAAC,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACd;IAED,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAE3C,GAAG,CAAC,GAAG,CAAC,mCAAmB,CAAC,CAAC,GAAG,EAAE,CAAC;IAEnC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,6BAAa,CAAC,CAAC;IAEtC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACzB,CAAC,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7B,CAAC,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACzB,CAAC,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEvD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,KAAK,EAAa,CAAC;QAC1C,MAAM,EAAE,GAAc;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,CAAC;YACd,SAAS,EAAE,CAAC;SACf,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,GAAG,EAAE,CAAC;YACN,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC7B,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;oBAC5B,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gCAAgC,CAAC,CAAC;gBACtG,CAAC;gBACD,CAAC,CAAC,SAAS;SAClB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { HealthIndicatorResult, HealthIndicator } from "@nestjs/terminus";
|
|
2
|
+
import { DeviceService } from "@corvina/device-client";
|
|
3
|
+
export declare class DeviceHealthIndicator extends HealthIndicator {
|
|
4
|
+
private readonly deviceService;
|
|
5
|
+
constructor(deviceService: DeviceService);
|
|
6
|
+
isHealthy(key: string): Promise<HealthIndicatorResult>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=device.health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.health.d.ts","sourceRoot":"","sources":["../../src/services/device.health.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAoB,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,qBACa,qBAAsB,SAAQ,eAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAInD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAS/D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DeviceHealthIndicator = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const terminus_1 = require("@nestjs/terminus");
|
|
15
|
+
const device_client_1 = require("@corvina/device-client");
|
|
16
|
+
let DeviceHealthIndicator = class DeviceHealthIndicator extends terminus_1.HealthIndicator {
|
|
17
|
+
deviceService;
|
|
18
|
+
constructor(deviceService) {
|
|
19
|
+
super();
|
|
20
|
+
this.deviceService = deviceService;
|
|
21
|
+
}
|
|
22
|
+
async isHealthy(key) {
|
|
23
|
+
const isHealthy = this.deviceService.status.ready == true;
|
|
24
|
+
const result = this.getStatus(key, isHealthy, this.deviceService.status);
|
|
25
|
+
if (this.deviceService.isReady) {
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
throw new terminus_1.HealthCheckError("Device not ready", result);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
DeviceHealthIndicator = __decorate([
|
|
32
|
+
(0, common_1.Injectable)(),
|
|
33
|
+
__metadata("design:paramtypes", [device_client_1.DeviceService])
|
|
34
|
+
], DeviceHealthIndicator);
|
|
35
|
+
exports.DeviceHealthIndicator = DeviceHealthIndicator;
|
|
36
|
+
//# sourceMappingURL=device.health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.health.js","sourceRoot":"","sources":["../../src/services/device.health.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+CAA4F;AAC5F,0DAAuD;AAGhD,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,0BAAe;IACzB;IAA7B,YAA6B,aAA4B;QACrD,KAAK,EAAE,CAAC;QADiB,kBAAa,GAAb,aAAa,CAAe;IAEzD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEzE,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAC5B,OAAO,MAAM,CAAC;SACjB;QACD,MAAM,IAAI,2BAAgB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;CACJ,CAAA;AAdY,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAEmC,6BAAa;GADhD,qBAAqB,CAcjC;AAdY,sDAAqB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@corvina/device-example",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.10",
|
|
4
4
|
"description": "Corvina Device Example base on @corvina/device-client",
|
|
5
5
|
"author": "arrigo.zanette@corvina.io",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"test:cov": "jest --coverage"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@corvina/device-client": "^1.4.
|
|
38
|
+
"@corvina/device-client": "^1.4.10",
|
|
39
39
|
"@nestjs/common": "^9.0.3",
|
|
40
40
|
"@nestjs/config": "^2.2.0",
|
|
41
41
|
"@nestjs/core": "^9.0.3",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"tsc-watch": "^5.0.3",
|
|
60
60
|
"typescript": "^4.7.4"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "1d644d971d754930338e0e02ddde521fb05c7f56"
|
|
63
63
|
}
|