@camera.ui/browser 0.0.1 → 0.0.3

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 (158) hide show
  1. package/package.json +9 -1
  2. package/dist/client/node/src/api.js +0 -27
  3. package/dist/client/node/src/api.js.map +0 -1
  4. package/dist/client/node/src/client.js +0 -106
  5. package/dist/client/node/src/client.js.map +0 -1
  6. package/dist/client/node/src/index.js +0 -19
  7. package/dist/client/node/src/index.js.map +0 -1
  8. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.browser.js +0 -176
  9. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.browser.js.map +0 -1
  10. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.mock.js +0 -3
  11. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.mock.js.map +0 -1
  12. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.node.js +0 -51
  13. package/dist/client/node/src/proxy/cameraDevice/cameraDevice.node.js.map +0 -1
  14. package/dist/client/node/src/proxy/cameraDevice/index.js +0 -11
  15. package/dist/client/node/src/proxy/cameraDevice/index.js.map +0 -1
  16. package/dist/client/node/src/proxy/deviceManager.js +0 -67
  17. package/dist/client/node/src/proxy/deviceManager.js.map +0 -1
  18. package/dist/client/node/src/proxy/index.js +0 -21
  19. package/dist/client/node/src/proxy/index.js.map +0 -1
  20. package/dist/client/node/src/proxy/pluginsManager.js +0 -25
  21. package/dist/client/node/src/proxy/pluginsManager.js.map +0 -1
  22. package/dist/client/node/src/proxy/systemManager.js +0 -25
  23. package/dist/client/node/src/proxy/systemManager.js.map +0 -1
  24. package/dist/client/node/src/socket.js +0 -45
  25. package/dist/client/node/src/socket.js.map +0 -1
  26. package/dist/client/node/src/types.js +0 -3
  27. package/dist/client/node/src/types.js.map +0 -1
  28. package/dist/package.json +0 -149
  29. package/dist/shared/common/utils.js +0 -66
  30. package/dist/shared/common/utils.js.map +0 -1
  31. package/dist/shared/types/index.js +0 -23
  32. package/dist/shared/types/index.js.map +0 -1
  33. package/dist/src/api/database/index.js +0 -203
  34. package/dist/src/api/database/index.js.map +0 -1
  35. package/dist/src/api/database/types.js +0 -3
  36. package/dist/src/api/database/types.js.map +0 -1
  37. package/dist/src/api/go2rtc/api/application.js +0 -32
  38. package/dist/src/api/go2rtc/api/application.js.map +0 -1
  39. package/dist/src/api/go2rtc/api/index.js +0 -33
  40. package/dist/src/api/go2rtc/api/index.js.map +0 -1
  41. package/dist/src/api/go2rtc/api/snapshot.js +0 -22
  42. package/dist/src/api/go2rtc/api/snapshot.js.map +0 -1
  43. package/dist/src/api/go2rtc/api/streams.js +0 -32
  44. package/dist/src/api/go2rtc/api/streams.js.map +0 -1
  45. package/dist/src/api/go2rtc/index.js +0 -13
  46. package/dist/src/api/go2rtc/index.js.map +0 -1
  47. package/dist/src/api/go2rtc/types.js +0 -3
  48. package/dist/src/api/go2rtc/types.js.map +0 -1
  49. package/dist/src/api/middlewares/socketAuth.middleware.js +0 -90
  50. package/dist/src/api/middlewares/socketAuth.middleware.js.map +0 -1
  51. package/dist/src/api/schemas/backup.schema.js +0 -94
  52. package/dist/src/api/schemas/backup.schema.js.map +0 -1
  53. package/dist/src/api/schemas/cameras.schema.js +0 -124
  54. package/dist/src/api/schemas/cameras.schema.js.map +0 -1
  55. package/dist/src/api/schemas/config.schema.js +0 -94
  56. package/dist/src/api/schemas/config.schema.js.map +0 -1
  57. package/dist/src/api/schemas/go2rtc.schema.js +0 -204
  58. package/dist/src/api/schemas/go2rtc.schema.js.map +0 -1
  59. package/dist/src/api/schemas/users.schema.js +0 -131
  60. package/dist/src/api/schemas/users.schema.js.map +0 -1
  61. package/dist/src/api/services/auth.service.js +0 -104
  62. package/dist/src/api/services/auth.service.js.map +0 -1
  63. package/dist/src/api/services/cameras.service.js +0 -535
  64. package/dist/src/api/services/cameras.service.js.map +0 -1
  65. package/dist/src/api/services/plugins.service.js +0 -115
  66. package/dist/src/api/services/plugins.service.js.map +0 -1
  67. package/dist/src/api/services/users.service.js +0 -54
  68. package/dist/src/api/services/users.service.js.map +0 -1
  69. package/dist/src/api/types/index.js +0 -12
  70. package/dist/src/api/types/index.js.map +0 -1
  71. package/dist/src/api/utils/cert.js +0 -437
  72. package/dist/src/api/utils/cert.js.map +0 -1
  73. package/dist/src/api/ws/index.js +0 -89
  74. package/dist/src/api/ws/index.js.map +0 -1
  75. package/dist/src/api/ws/nsp/logs.js +0 -121
  76. package/dist/src/api/ws/nsp/logs.js.map +0 -1
  77. package/dist/src/api/ws/nsp/main.js +0 -49
  78. package/dist/src/api/ws/nsp/main.js.map +0 -1
  79. package/dist/src/api/ws/nsp/metrics.js +0 -225
  80. package/dist/src/api/ws/nsp/metrics.js.map +0 -1
  81. package/dist/src/api/ws/nsp/notifications.js +0 -39
  82. package/dist/src/api/ws/nsp/notifications.js.map +0 -1
  83. package/dist/src/api/ws/nsp/plugins.js +0 -33
  84. package/dist/src/api/ws/nsp/plugins.js.map +0 -1
  85. package/dist/src/api/ws/nsp/status.js +0 -41
  86. package/dist/src/api/ws/nsp/status.js.map +0 -1
  87. package/dist/src/api/ws/nsp/streams.js +0 -140
  88. package/dist/src/api/ws/nsp/streams.js.map +0 -1
  89. package/dist/src/api/ws/types.js +0 -3
  90. package/dist/src/api/ws/types.js.map +0 -1
  91. package/dist/src/api.js +0 -66
  92. package/dist/src/api.js.map +0 -1
  93. package/dist/src/camera/index.js +0 -210
  94. package/dist/src/camera/index.js.map +0 -1
  95. package/dist/src/camera/streaming/peer-connection.js +0 -157
  96. package/dist/src/camera/streaming/peer-connection.js.map +0 -1
  97. package/dist/src/camera/streaming/streaming-session.js +0 -172
  98. package/dist/src/camera/streaming/streaming-session.js.map +0 -1
  99. package/dist/src/camera/streaming/webrtc-connection.js +0 -156
  100. package/dist/src/camera/streaming/webrtc-connection.js.map +0 -1
  101. package/dist/src/camera/subscribed.js +0 -14
  102. package/dist/src/camera/subscribed.js.map +0 -1
  103. package/dist/src/camera/types.js +0 -3
  104. package/dist/src/camera/types.js.map +0 -1
  105. package/dist/src/go2rtc/index.js +0 -220
  106. package/dist/src/go2rtc/index.js.map +0 -1
  107. package/dist/src/go2rtc/types.js +0 -76
  108. package/dist/src/go2rtc/types.js.map +0 -1
  109. package/dist/src/plugins/base.js +0 -26
  110. package/dist/src/plugins/base.js.map +0 -1
  111. package/dist/src/plugins/cameraStorage.js +0 -290
  112. package/dist/src/plugins/cameraStorage.js.map +0 -1
  113. package/dist/src/plugins/child.js +0 -140
  114. package/dist/src/plugins/child.js.map +0 -1
  115. package/dist/src/plugins/config.js +0 -234
  116. package/dist/src/plugins/config.js.map +0 -1
  117. package/dist/src/plugins/index.js +0 -328
  118. package/dist/src/plugins/index.js.map +0 -1
  119. package/dist/src/plugins/plugin.js +0 -215
  120. package/dist/src/plugins/plugin.js.map +0 -1
  121. package/dist/src/plugins/schema.js +0 -717
  122. package/dist/src/plugins/schema.js.map +0 -1
  123. package/dist/src/plugins/storage.js +0 -45
  124. package/dist/src/plugins/storage.js.map +0 -1
  125. package/dist/src/plugins/types.js +0 -21
  126. package/dist/src/plugins/types.js.map +0 -1
  127. package/dist/src/plugins/worker.js +0 -236
  128. package/dist/src/plugins/worker.js.map +0 -1
  129. package/dist/src/proxy/client/cameraDevice.js +0 -171
  130. package/dist/src/proxy/client/cameraDevice.js.map +0 -1
  131. package/dist/src/proxy/client/deviceManager.js +0 -239
  132. package/dist/src/proxy/client/deviceManager.js.map +0 -1
  133. package/dist/src/proxy/client/index.js +0 -21
  134. package/dist/src/proxy/client/index.js.map +0 -1
  135. package/dist/src/proxy/client/pluginsManager.js +0 -237
  136. package/dist/src/proxy/client/pluginsManager.js.map +0 -1
  137. package/dist/src/proxy/client/systemManager.js +0 -163
  138. package/dist/src/proxy/client/systemManager.js.map +0 -1
  139. package/dist/src/proxy/index.js +0 -98
  140. package/dist/src/proxy/index.js.map +0 -1
  141. package/dist/src/proxy/proxies/camera.js +0 -72
  142. package/dist/src/proxy/proxies/camera.js.map +0 -1
  143. package/dist/src/proxy/proxies/plugin.js +0 -110
  144. package/dist/src/proxy/proxies/plugin.js.map +0 -1
  145. package/dist/src/proxy/proxies/server.js +0 -92
  146. package/dist/src/proxy/proxies/server.js.map +0 -1
  147. package/dist/src/proxy/types.js +0 -3
  148. package/dist/src/proxy/types.js.map +0 -1
  149. package/dist/src/proxy/utils/generateKeys.js +0 -13
  150. package/dist/src/proxy/utils/generateKeys.js.map +0 -1
  151. package/dist/src/proxy/ws/index.js +0 -75
  152. package/dist/src/proxy/ws/index.js.map +0 -1
  153. package/dist/src/services/config/index.js +0 -319
  154. package/dist/src/services/config/index.js.map +0 -1
  155. package/dist/src/services/config/types.js +0 -13
  156. package/dist/src/services/config/types.js.map +0 -1
  157. package/dist/src/services/logger/index.js +0 -181
  158. package/dist/src/services/logger/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../../../../src/api/ws/nsp/status.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAUrC,MAAa,MAAM;IACV,GAAG,CAAY;IACf,OAAO,GAAc,SAAS,CAAC;IAE9B,aAAa,CAAgB;IAC7B,aAAa,CAAgB;IAC7B,MAAM,CAAS;IAEvB,YAAY,EAAU;QACpB,IAAI,CAAC,aAAa,GAAG,oBAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,GAAG,oBAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,GAAG,oBAAS,CAAC,OAAO,CAAS,QAAQ,CAAC,CAAC;QAElD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;YAC3C,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAc;QACpC,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC3B,CAAC;QAEF,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,QAAQ;YACd,MAAM,wCAAwB;SAC/B,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,MAAc;QAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE;YACpF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;CACF;AA3CD,wBA2CC"}
@@ -1,140 +0,0 @@
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
- exports.Streams = void 0;
7
- const ws_1 = __importDefault(require("ws"));
8
- const tsyringe_1 = require("tsyringe");
9
- class Streams {
10
- nsp;
11
- nspName = '/streams';
12
- go2rtcWsMap = new Map();
13
- logger;
14
- configService;
15
- constructor(io) {
16
- this.logger = tsyringe_1.container.resolve('logger');
17
- this.configService = tsyringe_1.container.resolve('configService');
18
- this.nsp = io.of(this.nspName);
19
- this.nsp.on('connection', (socket) => {
20
- socket.on('ws-open', this.go2rtcWsConnect.bind(this, socket));
21
- socket.on('ws-close', this.go2rtcClose.bind(this, socket, true));
22
- socket.on('ws-pause', this.go2rtcClose.bind(this, socket, false));
23
- socket.on('stream-payload', this.go2rtcWsSendMessage.bind(this, socket));
24
- socket.on('end', this.onEnd.bind(this, socket, true));
25
- socket.on('disconnect', this.onDestroy.bind(this, socket));
26
- });
27
- }
28
- go2rtcWsConnect(socket, { id, cameraSource }) {
29
- const wsInstance = this.go2rtcWsMap.get(`${socket.encodedToken}-${id}`);
30
- if (wsInstance) {
31
- if (wsInstance.state === 'open') {
32
- socket.emit('ws-open', { id });
33
- }
34
- else if (wsInstance.state === 'closed') {
35
- wsInstance.reconnect();
36
- }
37
- else {
38
- // connecting already
39
- return;
40
- }
41
- }
42
- const self = this;
43
- const url = `ws://localhost${this.configService.go2rtcConfig.api.listen}/api/ws?src=${cameraSource}`;
44
- const connection = {
45
- id: `${socket.encodedToken}-${id}`,
46
- ws: new ws_1.default(url),
47
- state: 'closed',
48
- connect: function () {
49
- this.state = 'connecting';
50
- self.logger.debug('Opening new go2rtc websocket connection to', url);
51
- this.ws = new ws_1.default(url);
52
- this.ws.binaryType = 'arraybuffer';
53
- this.ws.on('open', () => {
54
- this.state = 'open';
55
- self.logger.debug(`Websocket connection to ${url} opened`);
56
- socket.emit('ws-open', { id });
57
- });
58
- this.ws.on('close', () => {
59
- this.state = 'closed';
60
- self.logger.debug(`Websocket connection to ${url} closed`);
61
- socket.emit('ws-close', { id });
62
- });
63
- this.ws.on('error', (error) => {
64
- this.state = 'closed';
65
- self.logger.error(`Can not connect to go2rtc websocket: ${url} - ${error.message}`);
66
- });
67
- this.ws.on('message', (data) => {
68
- const stringMsg = data.toString();
69
- if (!stringMsg.includes('ArrayBuffer')) {
70
- // this.logger.verbose('Received payload:', stringMsg);
71
- const msg = JSON.parse(data);
72
- msg.wsURL = url;
73
- socket.emit('ws-message', { id, data: msg });
74
- }
75
- else {
76
- const msg = {
77
- type: 'binary',
78
- wsURL: url,
79
- value: data,
80
- };
81
- socket.emit('ws-message', { id, data: msg });
82
- }
83
- });
84
- },
85
- reconnect: function () {
86
- this.close(false);
87
- this.connect();
88
- },
89
- close: function (destroy) {
90
- this.ws?.removeAllListeners();
91
- this.ws?.once('error', () => { });
92
- this.ws?.close();
93
- this.state = 'closed';
94
- if (destroy) {
95
- self.logger.debug(`Websocket connection to ${url} closed and removed`);
96
- self.go2rtcWsMap?.delete(`${socket.encodedToken}-${id}`);
97
- }
98
- else {
99
- self.logger.debug(`Websocket connection to ${url} closed`);
100
- }
101
- },
102
- };
103
- connection.connect();
104
- this.go2rtcWsMap.set(connection.id, connection);
105
- }
106
- async go2rtcWsSendMessage(socket, { id, data }) {
107
- // this.logger.verbose('Sending payload:', id, JSON.stringify(data));
108
- const wsInstance = this.go2rtcWsMap.get(`${socket.encodedToken}-${id}`);
109
- if (wsInstance && wsInstance.state !== 'open') {
110
- wsInstance.reconnect();
111
- wsInstance.ws?.once('open', () => {
112
- wsInstance?.ws?.send(JSON.stringify(data));
113
- });
114
- return;
115
- }
116
- wsInstance?.ws?.send(JSON.stringify(data));
117
- }
118
- go2rtcClose(socket, remove, data) {
119
- for (const [name, wsInstance] of this.go2rtcWsMap) {
120
- if (data?.id) {
121
- if (name === `${socket.encodedToken}-${data?.id}`) {
122
- wsInstance.close(remove);
123
- }
124
- }
125
- else if (name.startsWith(socket.encodedToken)) {
126
- wsInstance.close(remove);
127
- }
128
- }
129
- }
130
- onEnd(socket, remove, id) {
131
- this.go2rtcClose(socket, remove, id ? { id } : undefined);
132
- socket.removeAllListeners('end');
133
- }
134
- onDestroy(socket) {
135
- this.onEnd(socket, true);
136
- socket.removeAllListeners('disconnect');
137
- }
138
- }
139
- exports.Streams = Streams;
140
- //# sourceMappingURL=streams.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../../../../../src/api/ws/nsp/streams.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,uCAAqC;AAyBrC,MAAa,OAAO;IACX,GAAG,CAAY;IACf,OAAO,GAAc,UAAU,CAAC;IAE/B,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,MAAM,CAAS;IACf,aAAa,CAAgB;IAErC,YAAY,EAAU;QACpB,IAAI,CAAC,MAAM,GAAG,oBAAS,CAAC,OAAO,CAAS,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,oBAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;YAC3C,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACzE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,EAAE,EAAE,EAAE,YAAY,EAAwC;QAChG,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,YAAa,IAAI,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACzC,UAAU,CAAC,SAAS,EAAE,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,qBAAqB;gBACrB,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,GAAG,GAAG,iBAAiB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,eAAe,YAAY,EAAE,CAAC;QAErG,MAAM,UAAU,GAAa;YAC3B,EAAE,EAAE,GAAG,MAAM,CAAC,YAAa,IAAI,EAAE,EAAE;YACnC,EAAE,EAAE,IAAI,YAAE,CAAC,GAAG,CAAC;YACf,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE;gBACP,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;gBAE1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;gBAErE,IAAI,CAAC,EAAE,GAAG,IAAI,YAAE,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC;gBAEnC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;oBACtB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;oBAEpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;oBAC3D,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBACvB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;oBAEtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;oBAC3D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC5B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;oBAEtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtF,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE;oBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;wBACvC,uDAAuD;wBAEvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC7B,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;wBAEhB,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC/C,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,GAAG;4BACV,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,GAAG;4BACV,KAAK,EAAE,IAAI;yBACZ,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,SAAS,EAAE;gBACT,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;YACD,KAAK,EAAE,UAAU,OAAiB;gBAChC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,CAAC;gBAC9B,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;gBAEjB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;gBAEtB,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,qBAAqB,CAAC,CAAC;oBACvE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,YAAa,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;SACF,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,MAAc,EAAE,EAAE,EAAE,EAAE,IAAI,EAAuC;QACjG,qEAAqE;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,YAAa,IAAI,EAAE,EAAE,CAAC,CAAC;QAEzE,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC9C,UAAU,CAAC,SAAS,EAAE,CAAC;YACvB,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC/B,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,MAAgB,EAAE,IAAsB;QAC1E,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAClD,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;gBACb,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,YAAa,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;oBACnD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAa,CAAC,EAAE,CAAC;gBACjD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAc,EAAE,MAAgB,EAAE,EAAW;QACzD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEO,SAAS,CAAC,MAAc;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;CACF;AAvJD,0BAuJC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/api/ws/types.ts"],"names":[],"mappings":""}
package/dist/src/api.js DELETED
@@ -1,66 +0,0 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.CameraUiAPI = exports.INTERNAL_API_EVENT = exports.API_EVENT = void 0;
16
- const events_1 = __importDefault(require("events"));
17
- const tsyringe_1 = require("tsyringe");
18
- const cameras_service_1 = __importDefault(require("./api/services/cameras.service"));
19
- const camera_1 = require("./camera");
20
- var API_EVENT;
21
- (function (API_EVENT) {
22
- API_EVENT["FINISH_LAUNCHING"] = "finishLaunching";
23
- API_EVENT["SHUTDOWN"] = "shutdown";
24
- })(API_EVENT || (exports.API_EVENT = API_EVENT = {}));
25
- var INTERNAL_API_EVENT;
26
- (function (INTERNAL_API_EVENT) {
27
- INTERNAL_API_EVENT["REGISTER_PLUGIN"] = "registerPlugin";
28
- })(INTERNAL_API_EVENT || (exports.INTERNAL_API_EVENT = INTERNAL_API_EVENT = {}));
29
- let CameraUiAPI = class CameraUiAPI extends events_1.default {
30
- devices = new Map();
31
- constructor() {
32
- super();
33
- tsyringe_1.container.register('api', { useValue: this });
34
- }
35
- registerPlugin(constructor, contract) {
36
- this.emit("registerPlugin" /* INTERNAL_API_EVENT.REGISTER_PLUGIN */, constructor, contract);
37
- }
38
- async configureCameras() {
39
- const camerasService = new cameras_service_1.default();
40
- const cameras = await camerasService.listTransformed();
41
- cameras.forEach((camera) => this.addCamera(camera));
42
- }
43
- addCamera(camera) {
44
- if (!this.devices.has(camera._id)) {
45
- this.devices.set(camera._id, new camera_1.CameraDeviceHub(camera, tsyringe_1.container.resolve('logger')));
46
- }
47
- }
48
- getCamera(cameraId) {
49
- return this.devices.get(cameraId);
50
- }
51
- async updateCamera(cameraData) {
52
- const camera = this.devices.get(cameraData._id);
53
- camera?.updateCamera(cameraData);
54
- }
55
- async removeCamera(cameraId) {
56
- const camera = this.devices.get(cameraId);
57
- camera?.removeCamera();
58
- this.devices.delete(cameraId);
59
- }
60
- };
61
- exports.CameraUiAPI = CameraUiAPI;
62
- exports.CameraUiAPI = CameraUiAPI = __decorate([
63
- (0, tsyringe_1.scoped)(tsyringe_1.Lifecycle.ContainerScoped),
64
- __metadata("design:paramtypes", [])
65
- ], CameraUiAPI);
66
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uCAAwD;AAExD,qFAA4D;AAC5D,qCAA2C;AAmB3C,IAAkB,SAGjB;AAHD,WAAkB,SAAS;IACzB,iDAAoC,CAAA;IACpC,kCAAqB,CAAA;AACvB,CAAC,EAHiB,SAAS,yBAAT,SAAS,QAG1B;AAED,IAAkB,kBAEjB;AAFD,WAAkB,kBAAkB;IAClC,wDAAkC,CAAA;AACpC,CAAC,EAFiB,kBAAkB,kCAAlB,kBAAkB,QAEnC;AAmCM,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,gBAAY;IACnC,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IAErD;QACE,KAAK,EAAE,CAAC;QAER,oBAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,cAAc,CAAC,WAA8B,EAAE,QAAwB;QAC5E,IAAI,CAAC,IAAI,4DAAqC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,gBAAgB;QAC3B,MAAM,cAAc,GAAG,IAAI,yBAAc,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC;QAEvD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC;IAEM,SAAS,CAAC,MAAc;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,wBAAe,CAAC,MAAM,EAAE,oBAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAEM,SAAS,CAAC,QAAgB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAAkB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,QAAgB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,EAAE,YAAY,EAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACF,CAAA;AAzCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,iBAAM,EAAC,oBAAS,CAAC,eAAe,CAAC;;GACrB,WAAW,CAyCvB"}
@@ -1,210 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CameraDeviceHub = void 0;
4
- require("reflect-metadata");
5
- const tsyringe_1 = require("tsyringe");
6
- const rxjs_1 = require("rxjs");
7
- const operators_1 = require("rxjs/operators");
8
- const webrtc_connection_1 = require("./streaming/webrtc-connection");
9
- const streaming_session_1 = require("./streaming/streaming-session");
10
- class CameraDeviceHub {
11
- isWorker = process.env.IS_WORKER === 'true';
12
- ffmpegPath = process.env.CAMERA_UI_FFMPEG_BINARY;
13
- logger;
14
- proxy;
15
- cameraSubject;
16
- lightState = new rxjs_1.BehaviorSubject({ state: false, timestamp: 0, lastTriggered: 0 });
17
- motionState = new rxjs_1.BehaviorSubject({ state: false, timestamp: 0, lastTriggered: 0 });
18
- audioState = new rxjs_1.BehaviorSubject({ state: false, timestamp: 0, lastTriggered: 0 });
19
- objectState = new rxjs_1.BehaviorSubject({ state: false, timestamp: 0, lastTriggered: 0, detections: [] });
20
- doorbellState = new rxjs_1.BehaviorSubject({ state: false, timestamp: 0, lastTriggered: 0 });
21
- sirenState = new rxjs_1.BehaviorSubject({ state: false, timestamp: 0, lastTriggered: 0 });
22
- onLightDetected = this.createStateObservable(this.lightState);
23
- onMotionDetected = this.createStateObservable(this.motionState);
24
- onAudioDetected = this.createStateObservable(this.audioState);
25
- onObjectDetected = this.createStateObservable(this.objectState);
26
- onDoorbellPressed = this.createStateObservable(this.doorbellState);
27
- onSirenDetected = this.createStateObservable(this.sirenState);
28
- get id() {
29
- return this.cameraSubject.getValue()._id;
30
- }
31
- get nativeId() {
32
- return this.cameraSubject.getValue().nativeId;
33
- }
34
- get pluginId() {
35
- return this.cameraSubject.getValue().pluginId;
36
- }
37
- get name() {
38
- return this.cameraSubject.getValue().name;
39
- }
40
- get type() {
41
- return this.cameraSubject.getValue().type;
42
- }
43
- get model() {
44
- return this.cameraSubject.getValue().model;
45
- }
46
- get sources() {
47
- return this.cameraSubject.getValue().sources;
48
- }
49
- constructor(camera, logger) {
50
- this.proxy = !this.isWorker ? tsyringe_1.container.resolve('proxy') : undefined;
51
- this.logger = logger;
52
- this.cameraSubject = new rxjs_1.BehaviorSubject(camera);
53
- if (!this.isWorker) {
54
- this.subscribeToCameraChanges();
55
- this.subscribeToStateChanges('light', this.lightState);
56
- this.subscribeToStateChanges('motion', this.motionState);
57
- this.subscribeToStateChanges('audio', this.audioState);
58
- this.subscribeToStateChanges('object', this.objectState);
59
- this.subscribeToStateChanges('doorbell', this.doorbellState);
60
- this.subscribeToStateChanges('siren', this.sirenState);
61
- }
62
- }
63
- getValue(stateName) {
64
- switch (stateName) {
65
- case 'light':
66
- return this.lightState.getValue();
67
- case 'motion':
68
- return this.motionState.getValue();
69
- case 'audio':
70
- return this.audioState.getValue();
71
- case 'object':
72
- return this.objectState.getValue();
73
- case 'doorbell':
74
- return this.doorbellState.getValue();
75
- case 'siren':
76
- return this.sirenState.getValue();
77
- default:
78
- throw new Error(`Unknown state: ${stateName}`);
79
- }
80
- }
81
- async createSession(cameraInput, options = {}) {
82
- const connection = new webrtc_connection_1.WebrtcConnection(this.cameraSubject.getValue().name, cameraInput, options, this.logger);
83
- return new streaming_session_1.StreamingSession(this.cameraSubject.getValue().name, this.ffmpegPath || 'ffmpeg', connection, this.logger);
84
- }
85
- async streamVideo(cameraInput, options) {
86
- const liveCall = await this.createSession(cameraInput);
87
- await liveCall.startTranscoding(options);
88
- return liveCall;
89
- }
90
- async recordToFile(cameraInput, outputPath, duration = 60) {
91
- const liveCall = await this.streamVideo(cameraInput, {
92
- output: ['-t', duration.toString(), outputPath],
93
- });
94
- await (0, rxjs_1.firstValueFrom)(liveCall.onCallEnded);
95
- }
96
- updateState(stateName, eventData) {
97
- const timestamp = Date.now();
98
- let newState;
99
- switch (stateName) {
100
- case 'light':
101
- newState = {
102
- ...eventData,
103
- timestamp,
104
- lastTriggered: eventData.state ? timestamp : this.lightState.getValue().lastTriggered,
105
- };
106
- this.lightState.next(this.isWorker ? eventData : newState);
107
- break;
108
- case 'motion':
109
- newState = {
110
- ...eventData,
111
- timestamp,
112
- lastTriggered: eventData.state ? timestamp : this.motionState.getValue().lastTriggered,
113
- };
114
- this.motionState.next(this.isWorker ? eventData : newState);
115
- break;
116
- case 'audio':
117
- newState = {
118
- ...eventData,
119
- timestamp,
120
- lastTriggered: eventData.state ? timestamp : this.audioState.getValue().lastTriggered,
121
- };
122
- this.audioState.next(this.isWorker ? eventData : newState);
123
- break;
124
- case 'object':
125
- newState = {
126
- ...eventData,
127
- timestamp,
128
- lastTriggered: eventData.state ? timestamp : this.objectState.getValue().lastTriggered,
129
- };
130
- this.objectState.next(this.isWorker ? eventData : newState);
131
- break;
132
- case 'doorbell':
133
- newState = {
134
- ...eventData,
135
- timestamp,
136
- lastTriggered: eventData.state ? timestamp : this.doorbellState.getValue().lastTriggered,
137
- };
138
- this.doorbellState.next(this.isWorker ? eventData : newState);
139
- break;
140
- case 'siren':
141
- newState = {
142
- ...eventData,
143
- timestamp,
144
- lastTriggered: eventData.state ? timestamp : this.sirenState.getValue().lastTriggered,
145
- };
146
- this.sirenState.next(this.isWorker ? eventData : newState);
147
- break;
148
- default:
149
- throw new Error(`Unbekannter Zustand: ${stateName}`);
150
- }
151
- }
152
- onStateChange(stateName) {
153
- const state = this[`${stateName}State`];
154
- return state.pipe((0, operators_1.pairwise)(), (0, operators_1.filter)(([oldState, newState]) => oldState.state !== newState.state), (0, operators_1.map)(([oldState, newState]) => ({ oldState, newState })), (0, operators_1.share)({ connector: () => new rxjs_1.ReplaySubject(1), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }));
155
- }
156
- onPropertyChange(property) {
157
- return this.cameraSubject.pipe((0, operators_1.pairwise)(), (0, operators_1.filter)(([oldCamera, newCamera]) => oldCamera[property] !== newCamera[property]), (0, operators_1.map)(([oldCamera, newCamera]) => ({ oldState: oldCamera[property], newState: newCamera[property] })), (0, operators_1.share)({ connector: () => new rxjs_1.ReplaySubject(1), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }));
158
- }
159
- updateCamera(camera) {
160
- this.cameraSubject.next(camera);
161
- }
162
- removeCamera() {
163
- this.removeAllListeners();
164
- this.triggerProxyEvent('removed');
165
- }
166
- removeAllListeners() {
167
- this.lightState.complete();
168
- this.motionState.complete();
169
- this.audioState.complete();
170
- this.objectState.complete();
171
- this.doorbellState.complete();
172
- this.sirenState.complete();
173
- }
174
- createStateObservable(stateSubject) {
175
- return stateSubject.pipe((0, operators_1.distinctUntilChanged)(), (0, operators_1.share)({ connector: () => new rxjs_1.ReplaySubject(1), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }));
176
- }
177
- subscribeToCameraChanges() {
178
- this.cameraSubject
179
- .pipe((0, operators_1.pairwise)(), (0, operators_1.filter)(([oldCamera, newCamera]) => JSON.stringify(oldCamera) !== JSON.stringify(newCamera)))
180
- .subscribe({
181
- next: ([, newCamera]) => {
182
- this.triggerProxyEvent('updated', newCamera);
183
- },
184
- error: (error) => this.logger.error(this.name, 'Error subscribing to camera subject:', error),
185
- });
186
- }
187
- subscribeToStateChanges(stateName, stateSubject) {
188
- stateSubject
189
- .pipe((0, operators_1.pairwise)(), (0, operators_1.filter)(([oldState, newState]) => oldState.state !== newState.state))
190
- .subscribe({
191
- next: ([oldState, newState]) => {
192
- this.triggerProxyEvent(stateName, newState, oldState);
193
- },
194
- error: (error) => this.logger.error(this.name, `Error subscribing '${stateName}':`, error),
195
- });
196
- }
197
- async triggerProxyEvent(stateName, newEvent, oldEvent) {
198
- if (stateName === 'updated') {
199
- await this.proxy?.camera?.publishCameraMessage(this.cameraSubject.getValue()._id, stateName, newEvent);
200
- }
201
- else if (stateName === 'removed') {
202
- await this.proxy?.camera?.publishCameraMessage(this.cameraSubject.getValue()._id, stateName);
203
- }
204
- else {
205
- await this.proxy?.camera?.publishCameraMessage(this.cameraSubject.getValue()._id, stateName, { newEvent, oldEvent });
206
- }
207
- }
208
- }
209
- exports.CameraDeviceHub = CameraDeviceHub;
210
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/camera/index.ts"],"names":[],"mappings":"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"}
@@ -1,157 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WeriftPeerConnection = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const werift_1 = require("werift");
6
- const subscribed_1 = require("../subscribed");
7
- // const iceServers: RTCIceServer[] = [
8
- // {
9
- // urls: 'stun:coturn.sydx.de:5349',
10
- // },
11
- // {
12
- // urls: 'turn:coturn.sydx.de:5349',
13
- // username: 'test',
14
- // credential: 'test',
15
- // },
16
- // ];
17
- class WeriftPeerConnection extends subscribed_1.Subscribed {
18
- onAudioRtp = new rxjs_1.Subject();
19
- onAudioRtcp = new rxjs_1.Subject();
20
- onVideoRtp = new rxjs_1.Subject();
21
- onVideoRtcp = new rxjs_1.Subject();
22
- onIceCandidate = new rxjs_1.Subject();
23
- onConnectionState = new rxjs_1.ReplaySubject(1);
24
- returnAudioTrack = new werift_1.MediaStreamTrack({ kind: 'audio' });
25
- pc;
26
- ws;
27
- cameraName;
28
- logger;
29
- onRequestKeyFrame = new rxjs_1.Subject();
30
- constructor(cameraName, logger, ws) {
31
- super();
32
- this.ws = ws;
33
- this.logger = logger;
34
- this.cameraName = cameraName;
35
- const pc = (this.pc = this.createPeerCoonection());
36
- const audioTransceiver = pc.addTransceiver(this.returnAudioTrack, {
37
- direction: 'sendrecv',
38
- });
39
- const videoTransceiver = pc.addTransceiver('video', {
40
- direction: 'recvonly',
41
- });
42
- audioTransceiver.onTrack.subscribe((track) => {
43
- track.onReceiveRtp.subscribe((rtp) => {
44
- this.onAudioRtp.next(rtp);
45
- });
46
- track.onReceiveRtcp.subscribe((rtcp) => {
47
- this.onAudioRtcp.next(rtcp);
48
- });
49
- track.onReceiveRtp.once(() => {
50
- this.logger.debug(this.cameraName, 'received first audio packet');
51
- });
52
- });
53
- videoTransceiver.onTrack.subscribe((track) => {
54
- track.onReceiveRtp.subscribe((rtp) => {
55
- this.onVideoRtp.next(rtp);
56
- });
57
- track.onReceiveRtcp.subscribe((rtcp) => {
58
- this.onVideoRtcp.next(rtcp);
59
- });
60
- track.onReceiveRtp.once(() => {
61
- this.logger.debug(this.cameraName, 'received first video packet');
62
- this.addSubscriptions((0, rxjs_1.merge)(this.onRequestKeyFrame, (0, rxjs_1.interval)(4000)).subscribe(() => {
63
- videoTransceiver.receiver.sendRtcpPLI(track.ssrc).catch((error) => this.logger.error(this.cameraName, error));
64
- }));
65
- this.requestKeyFrame();
66
- });
67
- });
68
- this.pc.onIceCandidate.subscribe((iceCandidate) => {
69
- this.onIceCandidate.next(iceCandidate);
70
- });
71
- pc.iceConnectionStateChange.subscribe(() => {
72
- this.logger.log(this.cameraName, `iceConnectionStateChange: ${pc.iceConnectionState}`);
73
- if (pc.iceConnectionState === 'closed') {
74
- this.onConnectionState.next('closed');
75
- }
76
- else if (pc.iceConnectionState === 'connected') {
77
- if (this.ws && !this.ws.CLOSED) {
78
- this.ws.close();
79
- }
80
- }
81
- });
82
- pc.connectionStateChange.subscribe(() => {
83
- this.logger.log(this.cameraName, `connectionStateChange: ${pc.connectionState}`);
84
- this.onConnectionState.next(pc.connectionState);
85
- });
86
- }
87
- async createOffer() {
88
- const offer = await this.pc.createOffer();
89
- await this.pc.setLocalDescription(offer);
90
- return offer;
91
- }
92
- async acceptAnswer(answer) {
93
- await this.pc.setRemoteDescription(answer);
94
- }
95
- addIceCandidate(candidate) {
96
- return this.pc.addIceCandidate(candidate);
97
- }
98
- requestKeyFrame() {
99
- this.onRequestKeyFrame.next();
100
- }
101
- close() {
102
- this.pc.close().catch((error) => this.logger.error(this.cameraName, error));
103
- this.unsubscribe();
104
- }
105
- createPeerCoonection() {
106
- return new werift_1.RTCPeerConnection({
107
- codecs: {
108
- video: [
109
- new werift_1.RTCRtpCodecParameters({
110
- mimeType: 'video/H264',
111
- clockRate: 90000,
112
- payloadType: 96,
113
- rtcpFeedback: [{ type: 'transport-cc' }, { type: 'ccm', parameter: 'fir' }, { type: 'nack' }, { type: 'nack', parameter: 'pli' }, { type: 'goog-remb' }],
114
- parameters: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f',
115
- }),
116
- new werift_1.RTCRtpCodecParameters({
117
- mimeType: 'video/H264',
118
- clockRate: 90000,
119
- payloadType: 97,
120
- rtcpFeedback: [{ type: 'transport-cc' }, { type: 'ccm', parameter: 'fir' }, { type: 'nack' }, { type: 'nack', parameter: 'pli' }, { type: 'goog-remb' }],
121
- parameters: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f',
122
- }),
123
- new werift_1.RTCRtpCodecParameters({
124
- mimeType: 'video/H264',
125
- clockRate: 90000,
126
- payloadType: 98,
127
- rtcpFeedback: [{ type: 'transport-cc' }, { type: 'ccm', parameter: 'fir' }, { type: 'nack' }, { type: 'nack', parameter: 'pli' }, { type: 'goog-remb' }],
128
- parameters: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032',
129
- }),
130
- ],
131
- audio: [
132
- new werift_1.RTCRtpCodecParameters({
133
- mimeType: 'audio/opus',
134
- clockRate: 48000,
135
- payloadType: 101,
136
- channels: 2,
137
- parameters: 'minptime=10;useinbandfec=1',
138
- }),
139
- new werift_1.RTCRtpCodecParameters({
140
- mimeType: 'audio/PCMU',
141
- clockRate: 8000,
142
- channels: 1,
143
- payloadType: 0,
144
- }),
145
- new werift_1.RTCRtpCodecParameters({
146
- mimeType: 'audio/PCMA',
147
- clockRate: 8000,
148
- channels: 1,
149
- payloadType: 8,
150
- }),
151
- ],
152
- },
153
- });
154
- }
155
- }
156
- exports.WeriftPeerConnection = WeriftPeerConnection;
157
- //# sourceMappingURL=peer-connection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peer-connection.js","sourceRoot":"","sources":["../../../../../../src/camera/streaming/peer-connection.ts"],"names":[],"mappings":"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"}