@scrypted/server 0.7.91 → 0.7.93

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.

Potentially problematic release.


This version of @scrypted/server might be problematic. Click here for more details.

Files changed (185) hide show
  1. package/package.json +1 -1
  2. package/src/services/addresses.ts +2 -0
  3. package/dist/asynciterable-utils.d.ts +0 -2
  4. package/dist/asynciterable-utils.js +0 -24
  5. package/dist/asynciterable-utils.js.map +0 -1
  6. package/dist/cert.d.ts +0 -6
  7. package/dist/cert.js +0 -75
  8. package/dist/cert.js.map +0 -1
  9. package/dist/collection.d.ts +0 -1
  10. package/dist/collection.js +0 -16
  11. package/dist/collection.js.map +0 -1
  12. package/dist/db-types.d.ts +0 -38
  13. package/dist/db-types.js +0 -45
  14. package/dist/db-types.js.map +0 -1
  15. package/dist/event-registry.d.ts +0 -19
  16. package/dist/event-registry.js +0 -92
  17. package/dist/event-registry.js.map +0 -1
  18. package/dist/http-interfaces.d.ts +0 -3
  19. package/dist/http-interfaces.js +0 -73
  20. package/dist/http-interfaces.js.map +0 -1
  21. package/dist/infer-defaults.d.ts +0 -11
  22. package/dist/infer-defaults.js +0 -119
  23. package/dist/infer-defaults.js.map +0 -1
  24. package/dist/io.d.ts +0 -22
  25. package/dist/io.js +0 -3
  26. package/dist/io.js.map +0 -1
  27. package/dist/level.d.ts +0 -110
  28. package/dist/level.js +0 -135
  29. package/dist/level.js.map +0 -1
  30. package/dist/listen-zero.d.ts +0 -13
  31. package/dist/listen-zero.js +0 -48
  32. package/dist/listen-zero.js.map +0 -1
  33. package/dist/logger.d.ts +0 -29
  34. package/dist/logger.js +0 -78
  35. package/dist/logger.js.map +0 -1
  36. package/dist/media-helpers.d.ts +0 -5
  37. package/dist/media-helpers.js +0 -89
  38. package/dist/media-helpers.js.map +0 -1
  39. package/dist/mixin/mixin-cycle.d.ts +0 -3
  40. package/dist/mixin/mixin-cycle.js +0 -32
  41. package/dist/mixin/mixin-cycle.js.map +0 -1
  42. package/dist/plugin/acl.d.ts +0 -16
  43. package/dist/plugin/acl.js +0 -83
  44. package/dist/plugin/acl.js.map +0 -1
  45. package/dist/plugin/descriptor.d.ts +0 -22
  46. package/dist/plugin/descriptor.js +0 -35
  47. package/dist/plugin/descriptor.js.map +0 -1
  48. package/dist/plugin/media.d.ts +0 -71
  49. package/dist/plugin/media.js +0 -420
  50. package/dist/plugin/media.js.map +0 -1
  51. package/dist/plugin/mediaobject.d.ts +0 -10
  52. package/dist/plugin/mediaobject.js +0 -26
  53. package/dist/plugin/mediaobject.js.map +0 -1
  54. package/dist/plugin/plugin-api.d.ts +0 -106
  55. package/dist/plugin/plugin-api.js +0 -120
  56. package/dist/plugin/plugin-api.js.map +0 -1
  57. package/dist/plugin/plugin-console.d.ts +0 -28
  58. package/dist/plugin/plugin-console.js +0 -291
  59. package/dist/plugin/plugin-console.js.map +0 -1
  60. package/dist/plugin/plugin-debug.d.ts +0 -4
  61. package/dist/plugin/plugin-debug.js +0 -3
  62. package/dist/plugin/plugin-debug.js.map +0 -1
  63. package/dist/plugin/plugin-device.d.ts +0 -54
  64. package/dist/plugin/plugin-device.js +0 -413
  65. package/dist/plugin/plugin-device.js.map +0 -1
  66. package/dist/plugin/plugin-error.d.ts +0 -2
  67. package/dist/plugin/plugin-error.js +0 -7
  68. package/dist/plugin/plugin-error.js.map +0 -1
  69. package/dist/plugin/plugin-host-api.d.ts +0 -43
  70. package/dist/plugin/plugin-host-api.js +0 -177
  71. package/dist/plugin/plugin-host-api.js.map +0 -1
  72. package/dist/plugin/plugin-host.d.ts +0 -45
  73. package/dist/plugin/plugin-host.js +0 -398
  74. package/dist/plugin/plugin-host.js.map +0 -1
  75. package/dist/plugin/plugin-http.d.ts +0 -18
  76. package/dist/plugin/plugin-http.js +0 -120
  77. package/dist/plugin/plugin-http.js.map +0 -1
  78. package/dist/plugin/plugin-lazy-remote.d.ts +0 -31
  79. package/dist/plugin/plugin-lazy-remote.js +0 -75
  80. package/dist/plugin/plugin-lazy-remote.js.map +0 -1
  81. package/dist/plugin/plugin-npm-dependencies.d.ts +0 -8
  82. package/dist/plugin/plugin-npm-dependencies.js +0 -103
  83. package/dist/plugin/plugin-npm-dependencies.js.map +0 -1
  84. package/dist/plugin/plugin-remote-stats.d.ts +0 -8
  85. package/dist/plugin/plugin-remote-stats.js +0 -30
  86. package/dist/plugin/plugin-remote-stats.js.map +0 -1
  87. package/dist/plugin/plugin-remote-websocket.d.ts +0 -29
  88. package/dist/plugin/plugin-remote-websocket.js +0 -152
  89. package/dist/plugin/plugin-remote-websocket.js.map +0 -1
  90. package/dist/plugin/plugin-remote-worker.d.ts +0 -5
  91. package/dist/plugin/plugin-remote-worker.js +0 -348
  92. package/dist/plugin/plugin-remote-worker.js.map +0 -1
  93. package/dist/plugin/plugin-remote.d.ts +0 -75
  94. package/dist/plugin/plugin-remote.js +0 -598
  95. package/dist/plugin/plugin-remote.js.map +0 -1
  96. package/dist/plugin/plugin-repl.d.ts +0 -2
  97. package/dist/plugin/plugin-repl.js +0 -74
  98. package/dist/plugin/plugin-repl.js.map +0 -1
  99. package/dist/plugin/plugin-state-check.d.ts +0 -1
  100. package/dist/plugin/plugin-state-check.js +0 -27
  101. package/dist/plugin/plugin-state-check.js.map +0 -1
  102. package/dist/plugin/plugin-volume.d.ts +0 -3
  103. package/dist/plugin/plugin-volume.js +0 -31
  104. package/dist/plugin/plugin-volume.js.map +0 -1
  105. package/dist/plugin/runtime/child-process-worker.d.ts +0 -20
  106. package/dist/plugin/runtime/child-process-worker.js +0 -42
  107. package/dist/plugin/runtime/child-process-worker.js.map +0 -1
  108. package/dist/plugin/runtime/node-fork-worker.d.ts +0 -9
  109. package/dist/plugin/runtime/node-fork-worker.js +0 -67
  110. package/dist/plugin/runtime/node-fork-worker.js.map +0 -1
  111. package/dist/plugin/runtime/node-thread-worker.d.ts +0 -20
  112. package/dist/plugin/runtime/node-thread-worker.js +0 -73
  113. package/dist/plugin/runtime/node-thread-worker.js.map +0 -1
  114. package/dist/plugin/runtime/python-worker.d.ts +0 -10
  115. package/dist/plugin/runtime/python-worker.js +0 -91
  116. package/dist/plugin/runtime/python-worker.js.map +0 -1
  117. package/dist/plugin/runtime/runtime-worker.d.ts +0 -26
  118. package/dist/plugin/runtime/runtime-worker.js +0 -3
  119. package/dist/plugin/runtime/runtime-worker.js.map +0 -1
  120. package/dist/plugin/socket-serializer.d.ts +0 -5
  121. package/dist/plugin/socket-serializer.js +0 -17
  122. package/dist/plugin/socket-serializer.js.map +0 -1
  123. package/dist/plugin/system.d.ts +0 -39
  124. package/dist/plugin/system.js +0 -216
  125. package/dist/plugin/system.js.map +0 -1
  126. package/dist/rpc-buffer-serializer.d.ts +0 -11
  127. package/dist/rpc-buffer-serializer.js +0 -30
  128. package/dist/rpc-buffer-serializer.js.map +0 -1
  129. package/dist/rpc-serializer.d.ts +0 -24
  130. package/dist/rpc-serializer.js +0 -144
  131. package/dist/rpc-serializer.js.map +0 -1
  132. package/dist/rpc.d.ts +0 -147
  133. package/dist/rpc.js +0 -689
  134. package/dist/rpc.js.map +0 -1
  135. package/dist/runtime.d.ts +0 -103
  136. package/dist/runtime.js +0 -815
  137. package/dist/runtime.js.map +0 -1
  138. package/dist/scrypted-main-exports.d.ts +0 -6
  139. package/dist/scrypted-main-exports.js +0 -57
  140. package/dist/scrypted-main-exports.js.map +0 -1
  141. package/dist/scrypted-main.d.ts +0 -1
  142. package/dist/scrypted-main.js +0 -8
  143. package/dist/scrypted-main.js.map +0 -1
  144. package/dist/scrypted-plugin-main.d.ts +0 -2
  145. package/dist/scrypted-plugin-main.js +0 -43
  146. package/dist/scrypted-plugin-main.js.map +0 -1
  147. package/dist/scrypted-server-main.d.ts +0 -6
  148. package/dist/scrypted-server-main.js +0 -559
  149. package/dist/scrypted-server-main.js.map +0 -1
  150. package/dist/server-settings.d.ts +0 -5
  151. package/dist/server-settings.js +0 -91
  152. package/dist/server-settings.js.map +0 -1
  153. package/dist/services/addresses.d.ts +0 -7
  154. package/dist/services/addresses.js +0 -41
  155. package/dist/services/addresses.js.map +0 -1
  156. package/dist/services/alerts.d.ts +0 -9
  157. package/dist/services/alerts.js +0 -27
  158. package/dist/services/alerts.js.map +0 -1
  159. package/dist/services/cors.d.ts +0 -18
  160. package/dist/services/cors.js +0 -18
  161. package/dist/services/cors.js.map +0 -1
  162. package/dist/services/info.d.ts +0 -5
  163. package/dist/services/info.js +0 -18
  164. package/dist/services/info.js.map +0 -1
  165. package/dist/services/plugin.d.ts +0 -46
  166. package/dist/services/plugin.js +0 -172
  167. package/dist/services/plugin.js.map +0 -1
  168. package/dist/services/service-control.d.ts +0 -8
  169. package/dist/services/service-control.js +0 -39
  170. package/dist/services/service-control.js.map +0 -1
  171. package/dist/services/users.d.ts +0 -19
  172. package/dist/services/users.js +0 -75
  173. package/dist/services/users.js.map +0 -1
  174. package/dist/sleep.d.ts +0 -1
  175. package/dist/sleep.js +0 -8
  176. package/dist/sleep.js.map +0 -1
  177. package/dist/state.d.ts +0 -39
  178. package/dist/state.js +0 -247
  179. package/dist/state.js.map +0 -1
  180. package/dist/threading.d.ts +0 -3
  181. package/dist/threading.js +0 -93
  182. package/dist/threading.js.map +0 -1
  183. package/dist/usertoken.d.ts +0 -11
  184. package/dist/usertoken.js +0 -52
  185. package/dist/usertoken.js.map +0 -1
@@ -1,598 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.attachPluginRemote = exports.setupPluginRemote = exports.DeviceManagerImpl = void 0;
4
- const types_1 = require("@scrypted/types");
5
- const rpc_1 = require("../rpc");
6
- const rpc_buffer_serializer_1 = require("../rpc-buffer-serializer");
7
- const plugin_remote_websocket_1 = require("./plugin-remote-websocket");
8
- const plugin_state_check_1 = require("./plugin-state-check");
9
- const system_1 = require("./system");
10
- class DeviceLogger {
11
- console;
12
- nativeId;
13
- api;
14
- logger;
15
- constructor(api, nativeId, console) {
16
- this.console = console;
17
- this.api = api;
18
- this.nativeId = nativeId;
19
- }
20
- async ensureLogger() {
21
- if (!this.logger)
22
- this.logger = this.api.getLogger(this.nativeId);
23
- return await this.logger;
24
- }
25
- async log(level, message) {
26
- (await this.ensureLogger()).log(level, message);
27
- }
28
- a(msg) {
29
- this.log('a', msg);
30
- }
31
- async clear() {
32
- (await this.ensureLogger()).clear();
33
- }
34
- async clearAlert(msg) {
35
- (await this.ensureLogger()).clearAlert(msg);
36
- }
37
- async clearAlerts() {
38
- (await this.ensureLogger()).clearAlerts();
39
- }
40
- d(msg) {
41
- this.log('d', msg);
42
- }
43
- e(msg) {
44
- this.log('e', msg);
45
- }
46
- i(msg) {
47
- this.log('i', msg);
48
- }
49
- v(msg) {
50
- this.log('v', msg);
51
- }
52
- w(msg) {
53
- this.log('w', msg);
54
- }
55
- }
56
- class EndpointManagerImpl {
57
- deviceManager;
58
- api;
59
- pluginId;
60
- mediaManager;
61
- getEndpoint(nativeId) {
62
- if (!nativeId)
63
- return this.pluginId;
64
- const id = this.deviceManager.nativeIds.get(nativeId)?.id;
65
- if (!id)
66
- throw new Error('invalid nativeId ' + nativeId);
67
- if (!nativeId)
68
- return this.pluginId;
69
- return id;
70
- }
71
- async getUrlSafeIp() {
72
- // ipv6 addresses have colons and need to be bracketed for url safety
73
- const ip = await this.api.getComponent('SCRYPTED_IP_ADDRESS');
74
- return ip?.includes(':') ? `[${ip}]` : ip;
75
- }
76
- /**
77
- * @deprecated
78
- */
79
- async getAuthenticatedPath(nativeId) {
80
- return this.getPath(nativeId);
81
- }
82
- /**
83
- * @deprecated
84
- */
85
- async getInsecurePublicLocalEndpoint(nativeId) {
86
- return this.getLocalEndpoint(nativeId, {
87
- insecure: true,
88
- public: true,
89
- });
90
- }
91
- /**
92
- * @deprecated
93
- */
94
- async getPublicCloudEndpoint(nativeId) {
95
- return this.getCloudEndpoint(nativeId, {
96
- public: true,
97
- });
98
- }
99
- /**
100
- * @deprecated
101
- */
102
- async getPublicLocalEndpoint(nativeId) {
103
- return this.getLocalEndpoint(nativeId, {
104
- public: true,
105
- });
106
- }
107
- /**
108
- * @deprecated
109
- */
110
- async getPublicPushEndpoint(nativeId) {
111
- const mo = await this.mediaManager.createMediaObject(Buffer.from(this.getEndpoint(nativeId)), types_1.ScryptedMimeTypes.PushEndpoint);
112
- return this.mediaManager.convertMediaObjectToUrl(mo, types_1.ScryptedMimeTypes.PushEndpoint);
113
- }
114
- async getPath(nativeId, options) {
115
- return `/endpoint/${this.getEndpoint(nativeId)}/${options?.public ? 'public/' : ''}`;
116
- }
117
- async getLocalEndpoint(nativeId, options) {
118
- const protocol = options?.insecure ? 'http' : 'https';
119
- const port = await this.api.getComponent(options?.insecure ? 'SCRYPTED_INSECURE_PORT' : 'SCRYPTED_SECURE_PORT');
120
- const path = await this.getPath(nativeId, options);
121
- const url = `${protocol}://${await this.getUrlSafeIp()}:${port}${path}`;
122
- return url;
123
- }
124
- async getCloudEndpoint(nativeId, options) {
125
- const local = await this.getLocalEndpoint(nativeId, options);
126
- const mo = await this.mediaManager.createMediaObject(Buffer.from(local), types_1.ScryptedMimeTypes.LocalUrl);
127
- return this.mediaManager.convertMediaObjectToUrl(mo, types_1.ScryptedMimeTypes.LocalUrl);
128
- }
129
- async getCloudPushEndpoint(nativeId) {
130
- const mo = await this.mediaManager.createMediaObject(Buffer.from(this.getEndpoint(nativeId)), types_1.ScryptedMimeTypes.PushEndpoint);
131
- return this.mediaManager.convertMediaObjectToUrl(mo, types_1.ScryptedMimeTypes.PushEndpoint);
132
- }
133
- async setLocalAddresses(addresses) {
134
- const addressSettings = await this.api.getComponent('addresses');
135
- return addressSettings.setLocalAddresses(addresses);
136
- }
137
- async getLocalAddresses() {
138
- const addressSettings = await this.api.getComponent('addresses');
139
- return await addressSettings.getLocalAddresses();
140
- }
141
- async setAccessControlAllowOrigin(options) {
142
- const self = this;
143
- const setAccessControlAllowOrigin = await this.deviceManager.systemManager.getComponent('setAccessControlAllowOrigin');
144
- return setAccessControlAllowOrigin(options);
145
- }
146
- }
147
- class DeviceStateProxyHandler {
148
- deviceManager;
149
- id;
150
- setState;
151
- constructor(deviceManager, id, setState) {
152
- this.deviceManager = deviceManager;
153
- this.id = id;
154
- this.setState = setState;
155
- }
156
- get(target, p, receiver) {
157
- if (p === 'id')
158
- return this.id;
159
- if (p === rpc_1.RpcPeer.PROPERTY_PROXY_PROPERTIES)
160
- return { id: this.id };
161
- if (p === 'setState')
162
- return this.setState;
163
- return this.deviceManager.systemManager.state[this.id][p]?.value;
164
- }
165
- set(target, p, value, receiver) {
166
- (0, plugin_state_check_1.checkProperty)(p.toString(), value);
167
- const now = Date.now();
168
- this.deviceManager.systemManager.state[this.id][p] = {
169
- value,
170
- };
171
- this.setState(p.toString(), value);
172
- return true;
173
- }
174
- }
175
- class DeviceManagerImpl {
176
- systemManager;
177
- getDeviceConsole;
178
- getMixinConsole;
179
- api;
180
- nativeIds = new Map();
181
- deviceStorage = new Map();
182
- mixinStorage = new Map();
183
- constructor(systemManager, getDeviceConsole, getMixinConsole) {
184
- this.systemManager = systemManager;
185
- this.getDeviceConsole = getDeviceConsole;
186
- this.getMixinConsole = getMixinConsole;
187
- }
188
- async requestRestart() {
189
- return this.api.requestRestart();
190
- }
191
- getDeviceLogger(nativeId) {
192
- return new DeviceLogger(this.api, nativeId, this.getDeviceConsole?.(nativeId) || console);
193
- }
194
- getDeviceState(nativeId) {
195
- const handler = new DeviceStateProxyHandler(this, this.nativeIds.get(nativeId).id, (property, value) => this.api.setState(nativeId, property, value));
196
- return new Proxy(handler, handler);
197
- }
198
- createDeviceState(id, setState) {
199
- const handler = new DeviceStateProxyHandler(this, id, setState);
200
- return new Proxy(handler, handler);
201
- }
202
- getDeviceStorage(nativeId) {
203
- let ret = this.deviceStorage.get(nativeId);
204
- if (!ret) {
205
- ret = new StorageImpl(this, nativeId);
206
- this.deviceStorage.set(nativeId, ret);
207
- }
208
- return ret;
209
- }
210
- getMixinStorage(id, nativeId) {
211
- let ms = this.mixinStorage.get(nativeId);
212
- if (!ms) {
213
- ms = new Map();
214
- this.mixinStorage.set(nativeId, ms);
215
- }
216
- let ret = ms.get(id);
217
- if (!ret) {
218
- ret = new StorageImpl(this, nativeId, `mixin:${id}:`);
219
- ms.set(id, ret);
220
- }
221
- return ret;
222
- }
223
- pruneMixinStorage() {
224
- for (const nativeId of this.nativeIds.keys()) {
225
- const storage = this.nativeIds.get(nativeId).storage;
226
- for (const key of Object.keys(storage)) {
227
- if (!key.startsWith('mixin:'))
228
- continue;
229
- const [, id,] = key.split(':');
230
- // there's no rush to persist this, it will happen automatically on the plugin
231
- // persisting something at some point.
232
- // the key itself is unreachable due to the device no longer existing.
233
- if (id && !this.systemManager.state[id])
234
- delete storage[key];
235
- }
236
- }
237
- }
238
- async onMixinEvent(id, nativeId, eventInterface, eventData) {
239
- return this.api.onMixinEvent(id, nativeId, eventInterface, eventData);
240
- }
241
- getNativeIds() {
242
- return Array.from(this.nativeIds.keys());
243
- }
244
- async onDeviceDiscovered(device) {
245
- return this.api.onDeviceDiscovered(device);
246
- }
247
- async onDeviceRemoved(nativeId) {
248
- return this.api.onDeviceRemoved(nativeId);
249
- }
250
- async onDeviceEvent(nativeId, eventInterface, eventData) {
251
- return this.api.onDeviceEvent(nativeId, eventInterface, eventData);
252
- }
253
- async onDevicesChanged(devices) {
254
- return this.api.onDevicesChanged(devices);
255
- }
256
- }
257
- exports.DeviceManagerImpl = DeviceManagerImpl;
258
- function toStorageString(value) {
259
- if (value === null)
260
- return 'null';
261
- if (value === undefined)
262
- return 'undefined';
263
- return value.toString();
264
- }
265
- class StorageImpl {
266
- deviceManager;
267
- nativeId;
268
- prefix;
269
- api;
270
- static allowedMethods = [
271
- 'length',
272
- 'clear',
273
- 'getItem',
274
- 'setItem',
275
- 'key',
276
- 'removeItem',
277
- ];
278
- static indexedHandler = {
279
- get(target, property) {
280
- const keyString = property.toString();
281
- if (StorageImpl.allowedMethods.includes(keyString)) {
282
- const f = target[keyString];
283
- if (keyString === 'length')
284
- return f;
285
- return f.bind(target);
286
- }
287
- return target.getItem(toStorageString(property));
288
- },
289
- set(target, property, value) {
290
- target.setItem(toStorageString(property), value);
291
- return true;
292
- }
293
- };
294
- constructor(deviceManager, nativeId, prefix) {
295
- this.deviceManager = deviceManager;
296
- this.nativeId = nativeId;
297
- this.prefix = prefix;
298
- this.deviceManager = deviceManager;
299
- this.api = deviceManager.api;
300
- this.nativeId = nativeId;
301
- if (!this.prefix)
302
- this.prefix = '';
303
- return new Proxy(this, StorageImpl.indexedHandler);
304
- }
305
- get storage() {
306
- return this.deviceManager.nativeIds.get(this.nativeId).storage;
307
- }
308
- get length() {
309
- return Object.keys(this.storage).filter(key => key.startsWith(this.prefix)).length;
310
- }
311
- clear() {
312
- if (!this.prefix) {
313
- this.deviceManager.nativeIds.get(this.nativeId).storage = {};
314
- }
315
- else {
316
- const storage = this.storage;
317
- Object.keys(this.storage).filter(key => key.startsWith(this.prefix)).forEach(key => delete storage[key]);
318
- }
319
- this.api.setStorage(this.nativeId, this.storage);
320
- }
321
- getItem(key) {
322
- return this.storage[this.prefix + key];
323
- }
324
- key(index) {
325
- if (!this.prefix) {
326
- return Object.keys(this.storage)[index];
327
- }
328
- return Object.keys(this.storage).filter(key => key.startsWith(this.prefix))[index].substring(this.prefix.length);
329
- }
330
- removeItem(key) {
331
- delete this.storage[this.prefix + key];
332
- this.api.setStorage(this.nativeId, this.storage);
333
- }
334
- setItem(key, value) {
335
- key = toStorageString(key);
336
- value = toStorageString(value);
337
- if (this.storage[this.prefix + key] === value)
338
- return;
339
- this.storage[this.prefix + key] = value;
340
- this.api.setStorage(this.nativeId, this.storage);
341
- }
342
- }
343
- async function setupPluginRemote(peer, api, pluginId, hostInfo, getSystemState) {
344
- try {
345
- // the host/remote connection can be from server to plugin (node to node),
346
- // core plugin to web (node to browser).
347
- // always add the BufferSerializer, so serialization is gauranteed to work.
348
- // but in plugin-host, mark Buffer as transport safe.
349
- if (!peer.constructorSerializerMap.get(Buffer))
350
- peer.addSerializer(Buffer, 'Buffer', new rpc_buffer_serializer_1.BufferSerializer());
351
- const getRemote = await peer.getParam('getRemote');
352
- const remote = await getRemote(api, pluginId, hostInfo);
353
- const accessControls = peer.tags.acl;
354
- const getAccessControlDeviceState = (id, state) => {
355
- state = state || getSystemState()[id];
356
- if (accessControls && state) {
357
- state = Object.assign({}, state);
358
- for (const property of Object.keys(state)) {
359
- if (accessControls.shouldRejectProperty(id, property))
360
- delete state[property];
361
- }
362
- let interfaces = state.interfaces?.value;
363
- if (interfaces) {
364
- interfaces = interfaces.filter(scryptedInterface => !accessControls.shouldRejectInterface(id, scryptedInterface));
365
- state.interfaces = {
366
- value: interfaces,
367
- };
368
- }
369
- }
370
- return state;
371
- };
372
- const getAccessControlSystemState = () => {
373
- let state = getSystemState();
374
- if (accessControls) {
375
- state = Object.assign({}, state);
376
- for (const id of Object.keys(state)) {
377
- if (accessControls.shouldRejectDevice(id)) {
378
- delete state[id];
379
- continue;
380
- }
381
- state[id] = getAccessControlDeviceState(id, state[id]);
382
- }
383
- }
384
- return state;
385
- };
386
- await remote.setSystemState(getAccessControlSystemState());
387
- api.listen((id, eventDetails, eventData) => {
388
- if (accessControls?.shouldRejectEvent(eventDetails.property === types_1.ScryptedInterfaceProperty.id ? eventData : id, eventDetails))
389
- return;
390
- // ScryptedDevice events will be handled specially and repropagated by the remote.
391
- if (eventDetails.eventInterface === types_1.ScryptedInterface.ScryptedDevice) {
392
- if (eventDetails.property === types_1.ScryptedInterfaceProperty.id) {
393
- // a change on the id property means device was deleted
394
- remote.updateDeviceState(eventData, undefined);
395
- }
396
- else {
397
- // a change on anything else is a descriptor update
398
- remote.updateDeviceState(id, getAccessControlDeviceState(id));
399
- }
400
- return;
401
- }
402
- if (eventDetails.property && !eventDetails.mixinId) {
403
- remote.notify(id, eventDetails, getSystemState()[id]?.[eventDetails.property]).catch(() => { });
404
- }
405
- else {
406
- remote.notify(id, eventDetails, eventData).catch(() => { });
407
- }
408
- });
409
- return remote;
410
- }
411
- catch (e) {
412
- throw new rpc_1.RPCResultError(peer, 'error while retrieving PluginRemote', e);
413
- }
414
- }
415
- exports.setupPluginRemote = setupPluginRemote;
416
- function attachPluginRemote(peer, options) {
417
- const { createMediaManager, getServicePort, getDeviceConsole, getMixinConsole } = options || {};
418
- if (!peer.constructorSerializerMap.get(Buffer))
419
- peer.addSerializer(Buffer, 'Buffer', new rpc_buffer_serializer_1.BufferSerializer());
420
- const ioSockets = {};
421
- const websocketSerializer = new plugin_remote_websocket_1.WebSocketSerializer();
422
- peer.addSerializer(plugin_remote_websocket_1.WebSocketConnection, plugin_remote_websocket_1.WebSocketConnection.name, websocketSerializer);
423
- let done;
424
- const retPromise = new Promise(resolve => done = resolve);
425
- peer.params.getRemote = async (api, pluginId, hostInfo) => {
426
- websocketSerializer.WebSocket = (0, plugin_remote_websocket_1.createWebSocketClass)((connection, callbacks) => {
427
- const { url } = connection;
428
- if (url.startsWith('io://') || url.startsWith('ws://')) {
429
- const id = url.substring('xx://'.length);
430
- ioSockets[id] = callbacks;
431
- callbacks.connect(undefined, {
432
- close: (message) => connection.close(message),
433
- send: (message) => connection.send(message),
434
- });
435
- }
436
- else {
437
- throw new Error('unsupported websocket');
438
- }
439
- });
440
- await options?.onGetRemote?.(api, pluginId);
441
- const systemManager = new system_1.SystemManagerImpl();
442
- const deviceManager = new DeviceManagerImpl(systemManager, getDeviceConsole, getMixinConsole);
443
- const endpointManager = new EndpointManagerImpl();
444
- const hostMediaManager = await api.getMediaManager();
445
- if (!hostMediaManager) {
446
- peer.params['createMediaManager'] = async () => createMediaManager(systemManager, deviceManager);
447
- }
448
- const mediaManager = hostMediaManager || await createMediaManager(systemManager, deviceManager);
449
- peer.params['mediaManager'] = mediaManager;
450
- systemManager.api = api;
451
- deviceManager.api = api;
452
- const log = deviceManager.getDeviceLogger(undefined);
453
- systemManager.log = log;
454
- const ret = {
455
- systemManager,
456
- deviceManager,
457
- endpointManager,
458
- mediaManager,
459
- log,
460
- pluginHostAPI: api,
461
- pluginRemoteAPI: undefined,
462
- serverVersion: hostInfo?.serverVersion,
463
- };
464
- delete peer.params.getRemote;
465
- endpointManager.api = api;
466
- endpointManager.deviceManager = deviceManager;
467
- endpointManager.mediaManager = mediaManager;
468
- endpointManager.pluginId = pluginId;
469
- const localStorage = new StorageImpl(deviceManager, undefined);
470
- const remote = {
471
- [rpc_1.RpcPeer.PROPERTY_JSON_DISABLE_SERIALIZATION]: true,
472
- [rpc_1.RpcPeer.PROPERTY_PROXY_ONEWAY_METHODS]: [
473
- 'notify',
474
- 'updateDeviceState',
475
- 'setSystemState',
476
- 'ioEvent',
477
- 'setNativeId',
478
- ],
479
- getServicePort,
480
- async createDeviceState(id, setState) {
481
- return deviceManager.createDeviceState(id, setState);
482
- },
483
- async ioEvent(id, event, message) {
484
- // console.log(id, event, message);
485
- const io = ioSockets[id];
486
- if (!io)
487
- return;
488
- switch (event) {
489
- case 'message':
490
- io.data(message);
491
- break;
492
- case 'close':
493
- io.end();
494
- delete ioSockets[id];
495
- break;
496
- }
497
- },
498
- async setNativeId(nativeId, id, storage) {
499
- // JSON stringify over rpc turns undefined into null.
500
- if (nativeId === null)
501
- nativeId = undefined;
502
- if (id) {
503
- deviceManager.nativeIds.set(nativeId?.toString(), {
504
- id,
505
- storage,
506
- });
507
- }
508
- else {
509
- deviceManager.nativeIds.delete(nativeId);
510
- }
511
- },
512
- async updateDeviceState(id, state) {
513
- if (!state) {
514
- delete systemManager.state[id];
515
- systemManager.events.notify(undefined, undefined, types_1.ScryptedInterface.ScryptedDevice, types_1.ScryptedInterfaceProperty.id, id, { changed: true });
516
- }
517
- else {
518
- systemManager.state[id] = state;
519
- systemManager.events.notify(id, undefined, types_1.ScryptedInterface.ScryptedDevice, undefined, state, { changed: true });
520
- }
521
- },
522
- async notify(id, eventTimeOrDetails, eventInterfaceOrData, property, value, changed) {
523
- if (typeof eventTimeOrDetails === 'number') {
524
- // TODO: remove legacy code path
525
- // 12/30/2022
526
- const eventTime = eventTimeOrDetails;
527
- const eventInterface = eventInterfaceOrData;
528
- if (property) {
529
- const state = systemManager.state?.[id];
530
- if (!state) {
531
- log.w(`state not found for ${id}`);
532
- return;
533
- }
534
- state[property] = value;
535
- systemManager.events.notify(id, eventTime, eventInterface, property, value.value, { changed });
536
- }
537
- else {
538
- systemManager.events.notify(id, eventTime, eventInterface, property, value, { changed });
539
- }
540
- }
541
- else {
542
- const eventDetails = eventTimeOrDetails;
543
- const eventData = eventInterfaceOrData;
544
- if (eventDetails.property && !eventDetails.mixinId) {
545
- const state = systemManager.state?.[id];
546
- if (!state) {
547
- log.w(`state not found for ${id}`);
548
- return;
549
- }
550
- state[eventDetails.property] = eventData;
551
- systemManager.events.notifyEventDetails(id, eventDetails, eventData.value);
552
- }
553
- else {
554
- systemManager.events.notifyEventDetails(id, eventDetails, eventData);
555
- }
556
- }
557
- },
558
- async setSystemState(state) {
559
- systemManager.state = state;
560
- deviceManager.pruneMixinStorage();
561
- done(ret);
562
- },
563
- async loadZip(packageJson, zipData, zipOptions) {
564
- const params = {
565
- __filename: undefined,
566
- deviceManager,
567
- systemManager,
568
- mediaManager,
569
- endpointManager,
570
- log,
571
- localStorage,
572
- pluginHostAPI: api,
573
- // TODO:
574
- // 10/10/2022: remove this shim from all plugins and server.
575
- WebSocket: function (url) {
576
- if (typeof url === 'string')
577
- throw new Error('unsupported websocket');
578
- return url;
579
- },
580
- pluginRuntimeAPI: ret,
581
- };
582
- params.pluginRuntimeAPI = ret;
583
- try {
584
- return await options.onLoadZip(ret, params, packageJson, zipData, zipOptions);
585
- }
586
- catch (e) {
587
- console.error('plugin start/fork failed', e);
588
- throw e;
589
- }
590
- },
591
- };
592
- ret.pluginRemoteAPI = remote;
593
- return remote;
594
- };
595
- return retPromise;
596
- }
597
- exports.attachPluginRemote = attachPluginRemote;
598
- //# sourceMappingURL=plugin-remote.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-remote.js","sourceRoot":"","sources":["../../src/plugin/plugin-remote.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { ScryptedStatic } from '@scrypted/types';
2
- export declare function createREPLServer(scrypted: ScryptedStatic, params: any, plugin: any): Promise<number>;