@fastybird/smart-panel-backend 1.1.0-alpha.15 → 1.1.0-alpha.17
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/modules/devices/utils/schema.utils.js +1 -1
- package/dist/modules/devices/utils/schema.utils.js.map +1 -1
- package/dist/modules/system/scripts/update-worker.sh +463 -59
- package/dist/modules/system/services/update-executor.service.d.ts +9 -0
- package/dist/modules/system/services/update-executor.service.js +170 -25
- package/dist/modules/system/services/update-executor.service.js.map +1 -1
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +2 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +22 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/button.mapper.d.ts +15 -0
- package/dist/plugins/devices-homekit/mappers/button.mapper.js +143 -0
- package/dist/plugins/devices-homekit/mappers/button.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +8 -0
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +5 -1
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +42 -0
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -1
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.d.ts +7 -3
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.js +63 -17
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.js.map +1 -1
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.d.ts +17 -0
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js +205 -0
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js.map +1 -0
- package/dist/plugins/devices-third-party/devices-third-party.openapi.d.ts +1 -1
- package/dist/plugins/devices-third-party/devices-third-party.plugin.js +2 -1
- package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.d.ts +5 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js +50 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js.map +1 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.d.ts +8 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js +81 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js.map +1 -0
- package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js +19 -4
- package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js.map +1 -1
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.d.ts +2 -0
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js +57 -0
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js.map +1 -1
- package/dist/plugins/simulator/controllers/simulator.controller.d.ts +8 -2
- package/dist/plugins/simulator/controllers/simulator.controller.js +102 -2
- package/dist/plugins/simulator/controllers/simulator.controller.js.map +1 -1
- package/dist/plugins/simulator/dto/simulate-occurrence.dto.d.ts +12 -0
- package/dist/plugins/simulator/dto/simulate-occurrence.dto.js +122 -0
- package/dist/plugins/simulator/dto/simulate-occurrence.dto.js.map +1 -0
- package/dist/plugins/simulator/models/simulator-response.model.d.ts +12 -0
- package/dist/plugins/simulator/models/simulator-response.model.js +84 -1
- package/dist/plugins/simulator/models/simulator-response.model.js.map +1 -1
- package/dist/plugins/simulator/scenarios/definitions/small-apartment.yaml +78 -0
- package/dist/plugins/simulator/services/scenario-executor.service.js +3 -1
- package/dist/plugins/simulator/services/scenario-executor.service.js.map +1 -1
- package/dist/plugins/simulator/services/simulation.service.js +10 -1
- package/dist/plugins/simulator/services/simulation.service.js.map +1 -1
- package/dist/plugins/simulator/simulator.openapi.d.ts +3 -2
- package/dist/plugins/simulator/simulator.openapi.js +5 -0
- package/dist/plugins/simulator/simulator.openapi.js.map +1 -1
- package/dist/plugins/simulator/simulators/device-simulator.interface.d.ts +2 -0
- package/dist/plugins/simulator/simulators/device-simulator.interface.js +83 -0
- package/dist/plugins/simulator/simulators/device-simulator.interface.js.map +1 -1
- package/dist/plugins/simulator/simulators/index.d.ts +1 -0
- package/dist/plugins/simulator/simulators/index.js +1 -0
- package/dist/plugins/simulator/simulators/index.js.map +1 -1
- package/dist/plugins/simulator/simulators/input-controller.simulator.d.ts +10 -0
- package/dist/plugins/simulator/simulators/input-controller.simulator.js +57 -0
- package/dist/plugins/simulator/simulators/input-controller.simulator.js.map +1 -0
- package/dist/plugins/simulator/simulators/lighting.simulator.js +1 -0
- package/dist/plugins/simulator/simulators/lighting.simulator.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,205 @@
|
|
|
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 ThirdPartyInputsController_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.ThirdPartyInputsController = void 0;
|
|
17
|
+
const class_validator_1 = require("class-validator");
|
|
18
|
+
const common_1 = require("@nestjs/common");
|
|
19
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
20
|
+
const logger_1 = require("../../../common/logger");
|
|
21
|
+
const channel_input_occurrence_model_1 = require("../../../modules/devices/models/channel-input-occurrence.model");
|
|
22
|
+
const channel_input_occurrences_service_1 = require("../../../modules/devices/services/channel-input-occurrences.service");
|
|
23
|
+
const channels_properties_service_1 = require("../../../modules/devices/services/channels.properties.service");
|
|
24
|
+
const channels_service_1 = require("../../../modules/devices/services/channels.service");
|
|
25
|
+
const devices_service_1 = require("../../../modules/devices/services/devices.service");
|
|
26
|
+
const api_documentation_decorator_1 = require("../../../modules/swagger/decorators/api-documentation.decorator");
|
|
27
|
+
const devices_third_party_constants_1 = require("../devices-third-party.constants");
|
|
28
|
+
const report_input_occurrence_dto_1 = require("../dto/report-input-occurrence.dto");
|
|
29
|
+
let ThirdPartyInputsController = ThirdPartyInputsController_1 = class ThirdPartyInputsController {
|
|
30
|
+
constructor(devicesService, channelsService, channelsPropertiesService, channelInputOccurrencesService) {
|
|
31
|
+
this.devicesService = devicesService;
|
|
32
|
+
this.channelsService = channelsService;
|
|
33
|
+
this.channelsPropertiesService = channelsPropertiesService;
|
|
34
|
+
this.channelInputOccurrencesService = channelInputOccurrencesService;
|
|
35
|
+
this.logger = (0, logger_1.createExtensionLogger)(devices_third_party_constants_1.DEVICES_THIRD_PARTY_PLUGIN_NAME, ThirdPartyInputsController_1.name);
|
|
36
|
+
}
|
|
37
|
+
async reportOccurrence(deviceId, channelId, dto, res) {
|
|
38
|
+
const device = await this.devicesService.findOne(deviceId);
|
|
39
|
+
if (!device) {
|
|
40
|
+
throw new common_1.NotFoundException(`Device id=${deviceId} not found`);
|
|
41
|
+
}
|
|
42
|
+
if (device.type !== devices_third_party_constants_1.DEVICES_THIRD_PARTY_TYPE) {
|
|
43
|
+
throw new common_1.BadRequestException(`Device id=${deviceId} is not a third-party device`);
|
|
44
|
+
}
|
|
45
|
+
const channel = await this.channelsService.findOne(channelId);
|
|
46
|
+
const devChannelId = typeof channel?.device === 'string' ? channel.device : channel?.device?.id;
|
|
47
|
+
if (!channel || devChannelId !== device.id) {
|
|
48
|
+
throw new common_1.NotFoundException(`Channel id=${channelId} not found on device id=${deviceId}`);
|
|
49
|
+
}
|
|
50
|
+
let property;
|
|
51
|
+
if (dto.property) {
|
|
52
|
+
if ((0, class_validator_1.isUUID)(dto.property)) {
|
|
53
|
+
property = await this.channelsPropertiesService.findOne(dto.property);
|
|
54
|
+
const propChannelId = typeof property?.channel === 'string' ? property.channel : property?.channel?.id;
|
|
55
|
+
if (!property || propChannelId !== channel.id) {
|
|
56
|
+
throw new common_1.NotFoundException(`Property id=${dto.property} not found on channel id=${channelId}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
property = await this.channelsPropertiesService.findOneBy('identifier', dto.property, channel.id);
|
|
61
|
+
if (!property ||
|
|
62
|
+
(typeof property.channel === 'string' ? property.channel : property.channel?.id) !== channel.id) {
|
|
63
|
+
const allProps = await this.channelsPropertiesService.findAll();
|
|
64
|
+
property =
|
|
65
|
+
allProps.find((p) => (typeof p.channel === 'string' ? p.channel : p.channel?.id) === channel.id &&
|
|
66
|
+
p.identifier === dto.property) ?? null;
|
|
67
|
+
}
|
|
68
|
+
if (!property) {
|
|
69
|
+
throw new common_1.NotFoundException(`Property identifier=${dto.property} not found on channel id=${channelId}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
property = await this.channelsPropertiesService.findOneBy('identifier', 'event', channel.id);
|
|
75
|
+
if (!property ||
|
|
76
|
+
(typeof property.channel === 'string' ? property.channel : property.channel?.id) !== channel.id) {
|
|
77
|
+
const allProps = await this.channelsPropertiesService.findAll();
|
|
78
|
+
property =
|
|
79
|
+
allProps.find((p) => (typeof p.channel === 'string' ? p.channel : p.channel?.id) === channel.id && p.identifier === 'event') ??
|
|
80
|
+
allProps.find((p) => (typeof p.channel === 'string' ? p.channel : p.channel?.id) === channel.id) ??
|
|
81
|
+
null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (!property) {
|
|
85
|
+
throw new common_1.NotFoundException(`No valid property found for channel id=${channelId} to associate event with`);
|
|
86
|
+
}
|
|
87
|
+
if (property.format && Array.isArray(property.format) && property.format.length > 0) {
|
|
88
|
+
const supportedEvents = property.format.map((val) => String(val));
|
|
89
|
+
if (!supportedEvents.includes(String(dto.event))) {
|
|
90
|
+
throw new common_1.UnprocessableEntityException(`Reported event '${dto.event}' is not within declared supported events: ${supportedEvents.join(', ')}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const occurrence = await this.channelInputOccurrencesService.publishOccurrence({
|
|
94
|
+
deviceId: device.id,
|
|
95
|
+
channelId: channel.id,
|
|
96
|
+
propertyId: property.id,
|
|
97
|
+
event: dto.event,
|
|
98
|
+
sourceOccurrenceId: dto.sourceOccurrenceId,
|
|
99
|
+
sourceTimestamp: dto.sourceTimestamp,
|
|
100
|
+
nativeEventType: dto.nativeEventType,
|
|
101
|
+
data: dto.data,
|
|
102
|
+
});
|
|
103
|
+
if (!occurrence) {
|
|
104
|
+
this.logger.debug(`Duplicate occurrence dropped: device=${deviceId} channel=${channelId} sourceOccurrenceId=${dto.sourceOccurrenceId}`);
|
|
105
|
+
if (res !== undefined) {
|
|
106
|
+
res.status(common_1.HttpStatus.NO_CONTENT);
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const response = new channel_input_occurrence_model_1.ChannelInputOccurrenceResponseModel();
|
|
111
|
+
response.data = occurrence;
|
|
112
|
+
return response;
|
|
113
|
+
}
|
|
114
|
+
async reportEvent(deviceId, channelId, dto, res) {
|
|
115
|
+
return this.reportOccurrence(deviceId, channelId, dto, res);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
exports.ThirdPartyInputsController = ThirdPartyInputsController;
|
|
119
|
+
__decorate([
|
|
120
|
+
(0, swagger_1.ApiOperation)({
|
|
121
|
+
tags: [devices_third_party_constants_1.DEVICES_THIRD_PARTY_PLUGIN_API_TAG_NAME],
|
|
122
|
+
summary: 'Report a physical hardware input occurrence from an authenticated third-party device',
|
|
123
|
+
description: 'Ingests physical button presses, switch clicks, or sensor occurrences for third-party devices. Validates device ownership, channel capabilities, and deduplication tokens.',
|
|
124
|
+
operationId: 'report-devices-third-party-input-occurrence',
|
|
125
|
+
}),
|
|
126
|
+
(0, swagger_1.ApiParam)({
|
|
127
|
+
name: 'id',
|
|
128
|
+
type: 'string',
|
|
129
|
+
format: 'uuid',
|
|
130
|
+
description: 'Third-party device unique identifier',
|
|
131
|
+
}),
|
|
132
|
+
(0, swagger_1.ApiParam)({
|
|
133
|
+
name: 'channelId',
|
|
134
|
+
type: 'string',
|
|
135
|
+
format: 'uuid',
|
|
136
|
+
description: 'Input channel unique identifier',
|
|
137
|
+
}),
|
|
138
|
+
(0, swagger_1.ApiBody)({
|
|
139
|
+
type: report_input_occurrence_dto_1.ReportInputOccurrenceDto,
|
|
140
|
+
description: 'Occurrence payload including event name and optional deduplication or timing metadata',
|
|
141
|
+
}),
|
|
142
|
+
(0, api_documentation_decorator_1.ApiCreatedSuccessResponse)(channel_input_occurrence_model_1.ChannelInputOccurrenceResponseModel, 'Occurrence ingested and broadcast successfully'),
|
|
143
|
+
(0, swagger_1.ApiNoContentResponse)({ description: 'Occurrence was deduplicated or dropped' }),
|
|
144
|
+
(0, api_documentation_decorator_1.ApiBadRequestResponse)('Invalid device type or input channel'),
|
|
145
|
+
(0, api_documentation_decorator_1.ApiNotFoundResponse)('Device, channel, or target property not found'),
|
|
146
|
+
(0, api_documentation_decorator_1.ApiUnprocessableEntityResponse)('Reported event is not declared as a supported capability for this channel'),
|
|
147
|
+
(0, api_documentation_decorator_1.ApiInternalServerErrorResponse)('Internal server error'),
|
|
148
|
+
(0, common_1.Post)(':id/channels/:channelId/occurrences'),
|
|
149
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.CREATED),
|
|
150
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
151
|
+
__param(1, (0, common_1.Param)('channelId', common_1.ParseUUIDPipe)),
|
|
152
|
+
__param(2, (0, common_1.Body)()),
|
|
153
|
+
__param(3, (0, common_1.Res)({ passthrough: true })),
|
|
154
|
+
__metadata("design:type", Function),
|
|
155
|
+
__metadata("design:paramtypes", [String, String, report_input_occurrence_dto_1.ReportInputOccurrenceDto, Object]),
|
|
156
|
+
__metadata("design:returntype", Promise)
|
|
157
|
+
], ThirdPartyInputsController.prototype, "reportOccurrence", null);
|
|
158
|
+
__decorate([
|
|
159
|
+
(0, swagger_1.ApiOperation)({
|
|
160
|
+
tags: [devices_third_party_constants_1.DEVICES_THIRD_PARTY_PLUGIN_API_TAG_NAME],
|
|
161
|
+
summary: 'Report a physical hardware input event for a third-party channel',
|
|
162
|
+
description: 'Alternative alias endpoint to report hardware input occurrences for third-party devices.',
|
|
163
|
+
operationId: 'report-devices-third-party-input-event',
|
|
164
|
+
}),
|
|
165
|
+
(0, swagger_1.ApiParam)({
|
|
166
|
+
name: 'id',
|
|
167
|
+
type: 'string',
|
|
168
|
+
format: 'uuid',
|
|
169
|
+
description: 'Third-party device unique identifier',
|
|
170
|
+
}),
|
|
171
|
+
(0, swagger_1.ApiParam)({
|
|
172
|
+
name: 'channelId',
|
|
173
|
+
type: 'string',
|
|
174
|
+
format: 'uuid',
|
|
175
|
+
description: 'Input channel unique identifier',
|
|
176
|
+
}),
|
|
177
|
+
(0, swagger_1.ApiBody)({
|
|
178
|
+
type: report_input_occurrence_dto_1.ReportInputOccurrenceDto,
|
|
179
|
+
description: 'Occurrence payload including event name and optional deduplication or timing metadata',
|
|
180
|
+
}),
|
|
181
|
+
(0, api_documentation_decorator_1.ApiCreatedSuccessResponse)(channel_input_occurrence_model_1.ChannelInputOccurrenceResponseModel, 'Occurrence ingested and broadcast successfully'),
|
|
182
|
+
(0, swagger_1.ApiNoContentResponse)({ description: 'Occurrence was deduplicated or dropped' }),
|
|
183
|
+
(0, api_documentation_decorator_1.ApiBadRequestResponse)('Invalid device type or input channel'),
|
|
184
|
+
(0, api_documentation_decorator_1.ApiNotFoundResponse)('Device, channel, or target property not found'),
|
|
185
|
+
(0, api_documentation_decorator_1.ApiUnprocessableEntityResponse)('Reported event is not declared as a supported capability for this channel'),
|
|
186
|
+
(0, api_documentation_decorator_1.ApiInternalServerErrorResponse)('Internal server error'),
|
|
187
|
+
(0, common_1.Post)(':id/channels/:channelId/events'),
|
|
188
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.CREATED),
|
|
189
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
190
|
+
__param(1, (0, common_1.Param)('channelId', common_1.ParseUUIDPipe)),
|
|
191
|
+
__param(2, (0, common_1.Body)()),
|
|
192
|
+
__param(3, (0, common_1.Res)({ passthrough: true })),
|
|
193
|
+
__metadata("design:type", Function),
|
|
194
|
+
__metadata("design:paramtypes", [String, String, report_input_occurrence_dto_1.ReportInputOccurrenceDto, Object]),
|
|
195
|
+
__metadata("design:returntype", Promise)
|
|
196
|
+
], ThirdPartyInputsController.prototype, "reportEvent", null);
|
|
197
|
+
exports.ThirdPartyInputsController = ThirdPartyInputsController = ThirdPartyInputsController_1 = __decorate([
|
|
198
|
+
(0, swagger_1.ApiTags)(devices_third_party_constants_1.DEVICES_THIRD_PARTY_PLUGIN_API_TAG_NAME),
|
|
199
|
+
(0, common_1.Controller)('devices'),
|
|
200
|
+
__metadata("design:paramtypes", [devices_service_1.DevicesService,
|
|
201
|
+
channels_service_1.ChannelsService,
|
|
202
|
+
channels_properties_service_1.ChannelsPropertiesService,
|
|
203
|
+
channel_input_occurrences_service_1.ChannelInputOccurrencesService])
|
|
204
|
+
], ThirdPartyInputsController);
|
|
205
|
+
//# sourceMappingURL=third-party-inputs.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"third-party-inputs.controller.js","sourceRoot":"","sources":["../../../../src/plugins/devices-third-party/controllers/third-party-inputs.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,4 @@ import { UpdateThirdPartyDeviceDto } from './dto/update-device.dto';
|
|
|
10
10
|
import { ThirdPartyChannelEntity, ThirdPartyChannelPropertyEntity, ThirdPartyDeviceEntity } from './entities/devices-third-party.entity';
|
|
11
11
|
import { ThirdPartyConfigModel } from './models/config.model';
|
|
12
12
|
import { DevicesThirdPartyPluginErrorCode } from './models/demo-control.model';
|
|
13
|
-
export declare const DEVICES_THIRD_PARTY_PLUGIN_SWAGGER_EXTRA_MODELS: (typeof PropertyUpdateRequestDto | typeof PropertyUpdateResultModel | typeof PropertiesUpdateResultModel | typeof
|
|
13
|
+
export declare const DEVICES_THIRD_PARTY_PLUGIN_SWAGGER_EXTRA_MODELS: (typeof PropertyUpdateRequestDto | typeof PropertyUpdateResultModel | typeof PropertiesUpdateResultModel | typeof ThirdPartyDeviceEntity | typeof ThirdPartyChannelEntity | typeof ThirdPartyChannelPropertyEntity | typeof CreateThirdPartyChannelPropertyDto | typeof CreateThirdPartyChannelDto | typeof CreateThirdPartyDeviceDto | typeof UpdateThirdPartyChannelPropertyDto | typeof UpdateThirdPartyChannelDto | typeof ThirdPartyUpdatePluginConfigDto | typeof UpdateThirdPartyDeviceDto | typeof ThirdPartyConfigModel | typeof DevicesThirdPartyPluginErrorCode)[];
|
|
@@ -33,6 +33,7 @@ const extended_discriminator_service_1 = require("../../modules/swagger/services
|
|
|
33
33
|
const swagger_models_registry_service_1 = require("../../modules/swagger/services/swagger-models-registry.service");
|
|
34
34
|
const swagger_module_1 = require("../../modules/swagger/swagger.module");
|
|
35
35
|
const third_party_demo_controller_1 = require("./controllers/third-party-demo.controller");
|
|
36
|
+
const third_party_inputs_controller_1 = require("./controllers/third-party-inputs.controller");
|
|
36
37
|
const devices_third_party_constants_1 = require("./devices-third-party.constants");
|
|
37
38
|
const devices_third_party_openapi_1 = require("./devices-third-party.openapi");
|
|
38
39
|
const create_channel_property_dto_2 = require("./dto/create-channel-property.dto");
|
|
@@ -194,7 +195,7 @@ exports.DevicesThirdPartyPlugin = DevicesThirdPartyPlugin = __decorate([
|
|
|
194
195
|
swagger_module_1.SwaggerModule,
|
|
195
196
|
],
|
|
196
197
|
providers: [third_party_device_platform_1.ThirdPartyDevicePlatform],
|
|
197
|
-
controllers: [third_party_demo_controller_1.ThirdPartyDemoController],
|
|
198
|
+
controllers: [third_party_demo_controller_1.ThirdPartyDemoController, third_party_inputs_controller_1.ThirdPartyInputsController],
|
|
198
199
|
}),
|
|
199
200
|
__metadata("design:paramtypes", [plugins_type_mapper_service_1.PluginsTypeMapperService,
|
|
200
201
|
devices_type_mapper_service_1.DevicesTypeMapperService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devices-third-party.plugin.js","sourceRoot":"","sources":["../../../src/plugins/devices-third-party/devices-third-party.plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"devices-third-party.plugin.js","sourceRoot":"","sources":["../../../src/plugins/devices-third-party/devices-third-party.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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.ReportInputOccurrenceResponseDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
16
|
+
let ReportInputOccurrenceResponseDto = class ReportInputOccurrenceResponseDto {
|
|
17
|
+
};
|
|
18
|
+
exports.ReportInputOccurrenceResponseDto = ReportInputOccurrenceResponseDto;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, swagger_1.ApiProperty)({
|
|
21
|
+
description: 'Assigned occurrence UUID',
|
|
22
|
+
example: 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11',
|
|
23
|
+
}),
|
|
24
|
+
(0, class_transformer_1.Expose)(),
|
|
25
|
+
(0, class_validator_1.IsUUID)(),
|
|
26
|
+
__metadata("design:type", String)
|
|
27
|
+
], ReportInputOccurrenceResponseDto.prototype, "id", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, swagger_1.ApiProperty)({
|
|
30
|
+
description: 'Ingestion timestamp in ISO format',
|
|
31
|
+
example: '2026-03-30T12:00:00.000Z',
|
|
32
|
+
}),
|
|
33
|
+
(0, class_transformer_1.Expose)(),
|
|
34
|
+
(0, class_validator_1.IsString)(),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], ReportInputOccurrenceResponseDto.prototype, "timestamp", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, swagger_1.ApiProperty)({
|
|
39
|
+
description: 'Reported event name',
|
|
40
|
+
example: 'press',
|
|
41
|
+
}),
|
|
42
|
+
(0, class_transformer_1.Expose)(),
|
|
43
|
+
(0, class_validator_1.IsString)(),
|
|
44
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], ReportInputOccurrenceResponseDto.prototype, "event", void 0);
|
|
47
|
+
exports.ReportInputOccurrenceResponseDto = ReportInputOccurrenceResponseDto = __decorate([
|
|
48
|
+
(0, swagger_1.ApiSchema)({ name: 'DevicesThirdPartyPluginReportInputOccurrenceResponse' })
|
|
49
|
+
], ReportInputOccurrenceResponseDto);
|
|
50
|
+
//# sourceMappingURL=report-input-occurrence-response.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-input-occurrence-response.dto.js","sourceRoot":"","sources":["../../../../src/plugins/devices-third-party/dto/report-input-occurrence-response.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAA2C;AAC3C,qDAA+D;AAE/D,6CAAyD;AAGlD,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;CAyB5C,CAAA;AAzBY,4EAAgC;AAO5C;IANC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,sCAAsC;KAC/C,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAM,GAAE;;4DACE;AAQX;IANC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,0BAA0B;KACnC,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;;mEACO;AASlB;IAPC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,OAAO;KAChB,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+DACC;2CAxBF,gCAAgC;IAD5C,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,sDAAsD,EAAE,CAAC;GAC/D,gCAAgC,CAyB5C"}
|
|
@@ -0,0 +1,81 @@
|
|
|
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.ReportInputOccurrenceDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
16
|
+
let ReportInputOccurrenceDto = class ReportInputOccurrenceDto {
|
|
17
|
+
};
|
|
18
|
+
exports.ReportInputOccurrenceDto = ReportInputOccurrenceDto;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, swagger_1.ApiProperty)({
|
|
21
|
+
description: 'Input event name, e.g. press, double_press, long_press',
|
|
22
|
+
example: 'press',
|
|
23
|
+
}),
|
|
24
|
+
(0, class_transformer_1.Expose)(),
|
|
25
|
+
(0, class_validator_1.IsString)(),
|
|
26
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], ReportInputOccurrenceDto.prototype, "event", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
31
|
+
description: 'Property identifier or UUID. If omitted, targets default event property',
|
|
32
|
+
example: 'event',
|
|
33
|
+
}),
|
|
34
|
+
(0, class_transformer_1.Expose)(),
|
|
35
|
+
(0, class_validator_1.IsString)(),
|
|
36
|
+
(0, class_validator_1.IsOptional)(),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], ReportInputOccurrenceDto.prototype, "property", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
41
|
+
description: 'Optional external source occurrence identifier for deduplication',
|
|
42
|
+
example: 'occ-12345',
|
|
43
|
+
}),
|
|
44
|
+
(0, class_transformer_1.Expose)(),
|
|
45
|
+
(0, class_validator_1.IsString)(),
|
|
46
|
+
(0, class_validator_1.IsOptional)(),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], ReportInputOccurrenceDto.prototype, "sourceOccurrenceId", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
51
|
+
description: 'ISO timestamp from external device',
|
|
52
|
+
example: '2026-03-30T12:00:00.000Z',
|
|
53
|
+
}),
|
|
54
|
+
(0, class_transformer_1.Expose)(),
|
|
55
|
+
(0, class_validator_1.IsDateString)(),
|
|
56
|
+
(0, class_validator_1.IsOptional)(),
|
|
57
|
+
__metadata("design:type", String)
|
|
58
|
+
], ReportInputOccurrenceDto.prototype, "sourceTimestamp", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
61
|
+
description: 'Native event type string before normalisation',
|
|
62
|
+
example: 'single_click',
|
|
63
|
+
}),
|
|
64
|
+
(0, class_transformer_1.Expose)(),
|
|
65
|
+
(0, class_validator_1.IsString)(),
|
|
66
|
+
(0, class_validator_1.IsOptional)(),
|
|
67
|
+
__metadata("design:type", String)
|
|
68
|
+
], ReportInputOccurrenceDto.prototype, "nativeEventType", void 0);
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
71
|
+
description: 'Arbitrary metadata payload',
|
|
72
|
+
}),
|
|
73
|
+
(0, class_transformer_1.Expose)(),
|
|
74
|
+
(0, class_validator_1.IsObject)(),
|
|
75
|
+
(0, class_validator_1.IsOptional)(),
|
|
76
|
+
__metadata("design:type", Object)
|
|
77
|
+
], ReportInputOccurrenceDto.prototype, "data", void 0);
|
|
78
|
+
exports.ReportInputOccurrenceDto = ReportInputOccurrenceDto = __decorate([
|
|
79
|
+
(0, swagger_1.ApiSchema)({ name: 'DevicesThirdPartyPluginReportInputOccurrence' })
|
|
80
|
+
], ReportInputOccurrenceDto);
|
|
81
|
+
//# sourceMappingURL=report-input-occurrence.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-input-occurrence.dto.js","sourceRoot":"","sources":["../../../../src/plugins/devices-third-party/dto/report-input-occurrence.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAA2C;AAC3C,qDAA2F;AAE3F,6CAA8E;AAGvE,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;CAqDpC,CAAA;AArDY,4DAAwB;AAQpC;IAPC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,wDAAwD;QACrE,OAAO,EAAE,OAAO;KAChB,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;uDACC;AASd;IAPC,IAAA,6BAAmB,EAAC;QACpB,WAAW,EAAE,yEAAyE;QACtF,OAAO,EAAE,OAAO;KAChB,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;0DACK;AASlB;IAPC,IAAA,6BAAmB,EAAC;QACpB,WAAW,EAAE,kEAAkE;QAC/E,OAAO,EAAE,WAAW;KACpB,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;oEACe;AAS5B;IAPC,IAAA,6BAAmB,EAAC;QACpB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,0BAA0B;KACnC,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,8BAAY,GAAE;IACd,IAAA,4BAAU,GAAE;;iEACY;AASzB;IAPC,IAAA,6BAAmB,EAAC;QACpB,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,cAAc;KACvB,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;iEACY;AAQzB;IANC,IAAA,6BAAmB,EAAC;QACpB,WAAW,EAAE,4BAA4B;KACzC,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;sDACkB;mCApDnB,wBAAwB;IADpC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC;GACvD,wBAAwB,CAqDpC"}
|
|
@@ -11,6 +11,7 @@ const class_validator_1 = require("class-validator");
|
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const extension_logger_service_1 = require("../../../common/logger/extension-logger.service");
|
|
13
13
|
const transform_utils_1 = require("../../../common/utils/transform.utils");
|
|
14
|
+
const devices_constants_1 = require("../../../modules/devices/devices.constants");
|
|
14
15
|
const http_device_platform_1 = require("../../../modules/devices/platforms/http-device.platform");
|
|
15
16
|
const devices_third_party_constants_1 = require("../devices-third-party.constants");
|
|
16
17
|
const third_party_property_update_request_dto_1 = require("../dto/third-party-property-update-request.dto");
|
|
@@ -28,10 +29,24 @@ let ThirdPartyDevicePlatform = class ThirdPartyDevicePlatform extends http_devic
|
|
|
28
29
|
}
|
|
29
30
|
async processBatch(updates) {
|
|
30
31
|
try {
|
|
31
|
-
const
|
|
32
|
+
const validUpdates = updates.filter((update) => {
|
|
33
|
+
const permissions = update.property.permissions ?? [];
|
|
34
|
+
const isWritable = permissions.includes(devices_constants_1.PermissionType.READ_WRITE) || permissions.includes(devices_constants_1.PermissionType.WRITE_ONLY);
|
|
35
|
+
const isEventOnly = permissions.includes(devices_constants_1.PermissionType.EVENT_ONLY);
|
|
36
|
+
const isInputChannel = [devices_constants_1.ChannelCategory.BUTTON, devices_constants_1.ChannelCategory.BINARY_INPUT].includes(update.channel.category);
|
|
37
|
+
if (isEventOnly || !isWritable || isInputChannel) {
|
|
38
|
+
this.logger.warn(`Refusing to dispatch actuator command for non-actuator/event-only property id=${update.property.id} on channel=${update.channel.id}`, { resource: update.device.id });
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
});
|
|
43
|
+
if (validUpdates.length === 0) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
const device = validUpdates[0].device;
|
|
32
47
|
const endpoint = device.serviceAddress;
|
|
33
48
|
const payload = {
|
|
34
|
-
properties:
|
|
49
|
+
properties: validUpdates.map((update) => ({
|
|
35
50
|
device: update.device.id,
|
|
36
51
|
channel: update.channel.id,
|
|
37
52
|
property: update.property.id,
|
|
@@ -47,7 +62,7 @@ let ThirdPartyDevicePlatform = class ThirdPartyDevicePlatform extends http_devic
|
|
|
47
62
|
return false;
|
|
48
63
|
}
|
|
49
64
|
else if (response.status === 204) {
|
|
50
|
-
this.logger.log('Successfully updated properties');
|
|
65
|
+
this.logger.log('Successfully updated properties', { resource: device.id });
|
|
51
66
|
return true;
|
|
52
67
|
}
|
|
53
68
|
else if (response.status === 207) {
|
|
@@ -56,7 +71,7 @@ let ThirdPartyDevicePlatform = class ThirdPartyDevicePlatform extends http_devic
|
|
|
56
71
|
return false;
|
|
57
72
|
}
|
|
58
73
|
const responseModel = (0, transform_utils_1.toInstance)(third_party_property_update_response_dto_1.PropertiesUpdateResultModel, responseBody);
|
|
59
|
-
const failedProperties = responseModel.properties.filter((p) => p.status
|
|
74
|
+
const failedProperties = responseModel.properties.filter((p) => p.status !== devices_third_party_constants_1.ThirdPartyPropertiesUpdateStatus.SUCCESS);
|
|
60
75
|
if (failedProperties.length > 0) {
|
|
61
76
|
this.logger.warn(`Some properties failed to update for device id=${device.id}: ${JSON.stringify(failedProperties)}`, { resource: device.id });
|
|
62
77
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"third-party-device.platform.js","sourceRoot":"","sources":["../../../../src/plugins/devices-third-party/platforms/third-party-device.platform.ts"],"names":[],"mappings":";;;;;;;;;AAAA,qDAA2C;AAE3C,2CAA4C;AAE5C,8FAAgH;AAChH,2EAAmE;
|
|
1
|
+
{"version":3,"file":"third-party-device.platform.js","sourceRoot":"","sources":["../../../../src/plugins/devices-third-party/platforms/third-party-device.platform.ts"],"names":[],"mappings":";;;;;;;;;AAAA,qDAA2C;AAE3C,2CAA4C;AAE5C,8FAAgH;AAChH,2EAAmE;AACnE,kFAA6F;AAE7F,kGAA6F;AAC7F,oFAI0C;AAC1C,4GAAwF;AACxF,8GAGyD;AAQlD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,yCAAkB;IAAzD;;QACW,WAAM,GAA2B,IAAA,gDAAqB,EACtE,+DAA+B,EAC/B,0BAA0B,CAC1B,CAAC;IAqIH,CAAC;IAnIA,OAAO;QACN,OAAO,wDAAwB,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAiC;QAChF,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA6C;QAC/D,IAAI,CAAC;YAEJ,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;gBACtD,MAAM,UAAU,GACf,WAAW,CAAC,QAAQ,CAAC,kCAAc,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,kCAAc,CAAC,UAAU,CAAC,CAAC;gBACpG,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,kCAAc,CAAC,UAAU,CAAC,CAAC;gBACpE,MAAM,cAAc,GAAG,CAAC,mCAAe,CAAC,MAAM,EAAE,mCAAe,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAEhH,IAAI,WAAW,IAAI,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;oBAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,iFAAiF,MAAM,CAAC,QAAQ,CAAC,EAAE,eAAe,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EACrI,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAC9B,CAAC;oBAEF,OAAO,KAAK,CAAC;gBACd,CAAC;gBAED,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;YAEH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACb,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;YAEvC,MAAM,OAAO,GAAG;gBACf,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACzC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;oBACxB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;oBAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;oBAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;iBACnB,CAAC,CAAC;aACH,CAAC;YAEF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,gEAAsB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC3E,OAAO,KAAK,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAElE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAEtD,OAAO,KAAK,CAAC;YACd,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBAE5E,OAAO,IAAI,CAAC;YACb,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpC,MAAM,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAY,CAAC;gBAExD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,sEAA2B,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;oBACtF,OAAO,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,aAAa,GAAG,IAAA,4BAAU,EAAC,sEAA2B,EAAE,YAAY,CAAC,CAAC;gBAE5E,MAAM,gBAAgB,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CACvD,CAAC,CAA4B,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,gEAAgC,CAAC,OAAO,CACvF,CAAC;gBAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,kDAAkD,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAClG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CACvB,CAAC;oBAEF,OAAO,KAAK,CAAC;gBACd,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6DAA6D,MAAM,CAAC,EAAE,EAAE,EAAE;oBACzF,QAAQ,EAAE,MAAM,CAAC,EAAE;iBACnB,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC;YACb,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAE5G,OAAO,KAAK,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YAElC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE;gBACrD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;aAChB,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,WAAW,CACxB,QAAqB,EACrB,IAAa,EACb,OAA+B;QAE/B,MAAM,QAAQ,GAAG,IAAA,4BAAU,EAAC,QAAQ,EAAE,IAAI,EAAE;YAC3C,uBAAuB,EAAE,KAAK;SAC9B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,QAAQ,EAAE;YACvC,SAAS,EAAE,IAAI;YACf,oBAAoB,EAAE,IAAI;YAC1B,gBAAgB,EAAE,KAAK;SACvB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,4BAA4B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAClH,CAAC;YAEF,OAAO,KAAK,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAA;AAzIY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;GACA,wBAAwB,CAyIpC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
2
2
|
import { ChannelPropertyEntity } from '../../../modules/devices/entities/devices.entity';
|
|
3
|
+
import { ChannelInputOccurrencePayload } from '../../../modules/devices/models/channel-input-occurrence.model';
|
|
3
4
|
import { VirtualPropertyIndexService } from '../services/virtual-property-index.service';
|
|
4
5
|
export declare class VirtualProjectionListener {
|
|
5
6
|
private readonly index;
|
|
@@ -7,4 +8,5 @@ export declare class VirtualProjectionListener {
|
|
|
7
8
|
private readonly logger;
|
|
8
9
|
constructor(index: VirtualPropertyIndexService, eventEmitter: EventEmitter2);
|
|
9
10
|
handlePropertyValueSet(property: ChannelPropertyEntity): void;
|
|
11
|
+
handleChannelInputOccurrence(occurrence: ChannelInputOccurrencePayload): void;
|
|
10
12
|
}
|
|
@@ -10,11 +10,13 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.VirtualProjectionListener = void 0;
|
|
13
|
+
const uuid_1 = require("uuid");
|
|
13
14
|
const common_1 = require("@nestjs/common");
|
|
14
15
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
15
16
|
const extension_logger_service_1 = require("../../../common/logger/extension-logger.service");
|
|
16
17
|
const devices_constants_1 = require("../../../modules/devices/devices.constants");
|
|
17
18
|
const devices_entity_1 = require("../../../modules/devices/entities/devices.entity");
|
|
19
|
+
const channel_input_occurrence_model_1 = require("../../../modules/devices/models/channel-input-occurrence.model");
|
|
18
20
|
const devices_virtual_constants_1 = require("../devices-virtual.constants");
|
|
19
21
|
const virtual_property_index_service_1 = require("../services/virtual-property-index.service");
|
|
20
22
|
let VirtualProjectionListener = class VirtualProjectionListener {
|
|
@@ -34,6 +36,55 @@ let VirtualProjectionListener = class VirtualProjectionListener {
|
|
|
34
36
|
}
|
|
35
37
|
this.logger.debug(`Projected value of property id=${property.id} to ${projections.length} virtual properties`);
|
|
36
38
|
}
|
|
39
|
+
handleChannelInputOccurrence(occurrence) {
|
|
40
|
+
if (typeof occurrence.data?.projection === 'object' &&
|
|
41
|
+
occurrence.data.projection !== null &&
|
|
42
|
+
'originalOccurrenceId' in occurrence.data.projection) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const projections = this.index.findBySourceProperty(occurrence.propertyId);
|
|
46
|
+
if (projections.length === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
for (const projection of projections) {
|
|
50
|
+
const channel = projection.channel;
|
|
51
|
+
if (!channel || typeof channel === 'string') {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const virtualDeviceId = typeof channel.device === 'string' ? channel.device : channel.device?.id;
|
|
55
|
+
if (!virtualDeviceId || !channel.id) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const deviceCategory = typeof channel.device !== 'string' ? channel.device?.category : undefined;
|
|
59
|
+
const projectedOccurrence = {
|
|
60
|
+
id: (0, uuid_1.v4)(),
|
|
61
|
+
deviceId: virtualDeviceId,
|
|
62
|
+
channelId: channel.id,
|
|
63
|
+
propertyId: projection.id,
|
|
64
|
+
channelCategory: channel.category,
|
|
65
|
+
propertyCategory: projection.category,
|
|
66
|
+
deviceCategory,
|
|
67
|
+
event: occurrence.event,
|
|
68
|
+
timestamp: new Date().toISOString(),
|
|
69
|
+
sourceTimestamp: occurrence.sourceTimestamp ?? occurrence.timestamp,
|
|
70
|
+
sourceOccurrenceId: occurrence.sourceOccurrenceId ?? occurrence.id,
|
|
71
|
+
nativeEventType: occurrence.nativeEventType,
|
|
72
|
+
integration: occurrence.integration,
|
|
73
|
+
endpoint: occurrence.endpoint,
|
|
74
|
+
data: {
|
|
75
|
+
...(occurrence.data ?? {}),
|
|
76
|
+
projection: {
|
|
77
|
+
originalOccurrenceId: occurrence.id,
|
|
78
|
+
sourceDeviceId: occurrence.deviceId,
|
|
79
|
+
sourceChannelId: occurrence.channelId,
|
|
80
|
+
sourcePropertyId: occurrence.propertyId,
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
this.eventEmitter.emit(devices_constants_1.EventType.CHANNEL_INPUT_OCCURRENCE, projectedOccurrence);
|
|
85
|
+
}
|
|
86
|
+
this.logger.debug(`Projected input occurrence event=${occurrence.event} from property id=${occurrence.propertyId} to ${projections.length} virtual properties`);
|
|
87
|
+
}
|
|
37
88
|
};
|
|
38
89
|
exports.VirtualProjectionListener = VirtualProjectionListener;
|
|
39
90
|
__decorate([
|
|
@@ -42,6 +93,12 @@ __decorate([
|
|
|
42
93
|
__metadata("design:paramtypes", [devices_entity_1.ChannelPropertyEntity]),
|
|
43
94
|
__metadata("design:returntype", void 0)
|
|
44
95
|
], VirtualProjectionListener.prototype, "handlePropertyValueSet", null);
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, event_emitter_1.OnEvent)(devices_constants_1.EventType.CHANNEL_INPUT_OCCURRENCE),
|
|
98
|
+
__metadata("design:type", Function),
|
|
99
|
+
__metadata("design:paramtypes", [channel_input_occurrence_model_1.ChannelInputOccurrencePayload]),
|
|
100
|
+
__metadata("design:returntype", void 0)
|
|
101
|
+
], VirtualProjectionListener.prototype, "handleChannelInputOccurrence", null);
|
|
45
102
|
exports.VirtualProjectionListener = VirtualProjectionListener = __decorate([
|
|
46
103
|
(0, common_1.Injectable)(),
|
|
47
104
|
__metadata("design:paramtypes", [virtual_property_index_service_1.VirtualPropertyIndexService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-projection.listener.js","sourceRoot":"","sources":["../../../../src/plugins/devices-virtual/listeners/virtual-projection.listener.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAA+D;AAE/D,8FAAwF;AACxF,kFAAuE;AACvE,qFAAyF;AACzF,4EAA2E;AAC3E,+FAAyF;AAalF,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAGrC,YACkB,KAAkC,EAClC,YAA2B;QAD3B,UAAK,GAAL,KAAK,CAA6B;QAClC,iBAAY,GAAZ,YAAY,CAAe;QAJ5B,WAAM,GAAG,IAAA,gDAAqB,EAAC,uDAA2B,EAAE,2BAA2B,CAAC,CAAC;IAKvG,CAAC;IAGJ,sBAAsB,CAAC,QAA+B;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEjE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACR,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YAGtC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAElC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,6BAAS,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,QAAQ,CAAC,EAAE,OAAO,WAAW,CAAC,MAAM,qBAAqB,CAAC,CAAC;IAChH,CAAC;CACD,CAAA;
|
|
1
|
+
{"version":3,"file":"virtual-projection.listener.js","sourceRoot":"","sources":["../../../../src/plugins/devices-virtual/listeners/virtual-projection.listener.ts"],"names":[],"mappings":"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"}
|