@scrypted/server 0.0.80 → 0.0.84

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 (38) hide show
  1. package/dist/plugin/plugin-console.js +93 -0
  2. package/dist/plugin/plugin-console.js.map +1 -0
  3. package/dist/plugin/plugin-device.js +6 -1
  4. package/dist/plugin/plugin-device.js.map +1 -1
  5. package/dist/plugin/plugin-host-api.js +1 -1
  6. package/dist/plugin/plugin-host-api.js.map +1 -1
  7. package/dist/plugin/plugin-host.js +74 -174
  8. package/dist/plugin/plugin-host.js.map +1 -1
  9. package/dist/plugin/plugin-npm-dependencies.js +2 -2
  10. package/dist/plugin/plugin-npm-dependencies.js.map +1 -1
  11. package/dist/plugin/plugin-remote.js +7 -9
  12. package/dist/plugin/plugin-remote.js.map +1 -1
  13. package/dist/plugin/plugin-repl.js +69 -0
  14. package/dist/plugin/plugin-repl.js.map +1 -0
  15. package/dist/runtime.js +2 -21
  16. package/dist/runtime.js.map +1 -1
  17. package/dist/scrypted-main.js +21 -15
  18. package/dist/scrypted-main.js.map +1 -1
  19. package/dist/services/plugin.js +8 -0
  20. package/dist/services/plugin.js.map +1 -1
  21. package/dist/state.js +1 -1
  22. package/dist/state.js.map +1 -1
  23. package/package.json +2 -2
  24. package/python/plugin-remote.py +45 -20
  25. package/python/rpc.py +1 -1
  26. package/src/plugin/plugin-api.ts +2 -2
  27. package/src/plugin/plugin-console.ts +115 -0
  28. package/src/plugin/plugin-device.ts +7 -1
  29. package/src/plugin/plugin-host-api.ts +1 -1
  30. package/src/plugin/plugin-host.ts +72 -198
  31. package/src/plugin/plugin-npm-dependencies.ts +2 -3
  32. package/src/plugin/plugin-remote.ts +11 -10
  33. package/src/plugin/plugin-repl.ts +74 -0
  34. package/src/runtime.ts +2 -28
  35. package/src/scrypted-main.ts +24 -17
  36. package/src/services/plugin.ts +8 -0
  37. package/src/state.ts +1 -1
  38. package/test/test-cert.json +4 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createConsoleServer = void 0;
4
+ const ws_1 = require("ws");
5
+ const listen_zero_1 = require("./listen-zero");
6
+ const net_1 = require("net");
7
+ const events_1 = require("events");
8
+ async function createConsoleServer(stdout, stderr) {
9
+ const outputs = new Map();
10
+ const appendOutput = (data, nativeId) => {
11
+ if (!nativeId)
12
+ nativeId = undefined;
13
+ let buffers = outputs.get(nativeId);
14
+ if (!buffers) {
15
+ buffers = [];
16
+ outputs.set(nativeId, buffers);
17
+ }
18
+ buffers.push(data);
19
+ // when we're over 4000 lines or whatever these buffer are,
20
+ // truncate down to 2000.
21
+ if (buffers.length > 4000)
22
+ outputs.set(nativeId, buffers.slice(buffers.length - 2000));
23
+ };
24
+ const sockets = new Set();
25
+ const events = new ws_1.EventEmitter();
26
+ events.on('stdout', appendOutput);
27
+ events.on('stderr', appendOutput);
28
+ stdout.on('data', data => events.emit('stdout', data));
29
+ stderr.on('data', data => events.emit('stderr', data));
30
+ const readServer = new net_1.Server(async (socket) => {
31
+ sockets.add(socket);
32
+ let [filter] = await (0, events_1.once)(socket, 'data');
33
+ filter = filter.toString().trim();
34
+ if (filter === 'undefined')
35
+ filter = undefined;
36
+ const buffers = outputs.get(filter);
37
+ if (buffers) {
38
+ const concat = Buffer.concat(buffers);
39
+ outputs.set(filter, [concat]);
40
+ socket.write(concat);
41
+ }
42
+ const cb = (data, nativeId) => {
43
+ if (nativeId !== filter)
44
+ return;
45
+ socket.write(data);
46
+ };
47
+ events.on('stdout', cb);
48
+ events.on('stderr', cb);
49
+ const cleanup = () => {
50
+ events.removeListener('stdout', cb);
51
+ events.removeListener('stderr', cb);
52
+ socket.destroy();
53
+ socket.removeAllListeners();
54
+ sockets.delete(socket);
55
+ };
56
+ socket.on('close', cleanup);
57
+ socket.on('error', cleanup);
58
+ socket.on('end', cleanup);
59
+ });
60
+ const writeServer = new net_1.Server(async (socket) => {
61
+ sockets.add(socket);
62
+ const [data] = await (0, events_1.once)(socket, 'data');
63
+ let filter = data.toString();
64
+ const newline = filter.indexOf('\n');
65
+ if (newline !== -1) {
66
+ socket.unshift(Buffer.from(filter.substring(newline + 1)));
67
+ }
68
+ filter = filter.substring(0, newline);
69
+ if (filter === 'undefined')
70
+ filter = undefined;
71
+ const cb = (data) => events.emit('stdout', data, filter);
72
+ socket.on('data', cb);
73
+ const cleanup = () => {
74
+ socket.destroy();
75
+ socket.removeAllListeners();
76
+ sockets.delete(socket);
77
+ };
78
+ socket.once('close', cleanup);
79
+ socket.once('error', cleanup);
80
+ socket.once('end', cleanup);
81
+ });
82
+ const readPort = await (0, listen_zero_1.listenZero)(readServer);
83
+ const writePort = await (0, listen_zero_1.listenZero)(writeServer);
84
+ return {
85
+ readPort,
86
+ writePort,
87
+ readServer,
88
+ writeServer,
89
+ sockets,
90
+ };
91
+ }
92
+ exports.createConsoleServer = createConsoleServer;
93
+ //# sourceMappingURL=plugin-console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-console.js","sourceRoot":"","sources":["../../src/plugin/plugin-console.ts"],"names":[],"mappings":"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"}
@@ -9,12 +9,12 @@ const descriptor_1 = require("./descriptor");
9
9
  class PluginDeviceProxyHandler {
10
10
  scrypted;
11
11
  id;
12
- // proxy: Promise<any>;
13
12
  mixinTable;
14
13
  constructor(scrypted, id) {
15
14
  this.scrypted = scrypted;
16
15
  this.id = id;
17
16
  }
17
+ // should this be async?
18
18
  invalidate() {
19
19
  const mixinTable = this.mixinTable;
20
20
  this.mixinTable = undefined;
@@ -168,6 +168,11 @@ class PluginDeviceProxyHandler {
168
168
  const userInitiated = argArray[1];
169
169
  return this.scrypted.stateManager.refresh(this.id, refreshInterface, userInitiated);
170
170
  }
171
+ if (method === 'createDevice') {
172
+ const nativeId = await this.applyMixin(method, argArray);
173
+ const newDevice = this.scrypted.findPluginDevice(pluginDevice.pluginId, nativeId);
174
+ return newDevice._id;
175
+ }
171
176
  return this.applyMixin(method, argArray);
172
177
  }
173
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-device.js","sourceRoot":"","sources":["../../src/plugin/plugin-device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-device.js","sourceRoot":"","sources":["../../src/plugin/plugin-device.ts"],"names":[],"mappings":";;;AAAA,+CAAgO;AAIhO,gCAAmD;AACnD,oCAAoC;AACpC,sDAAmD;AACnD,6CAAgG;AAQhG,MAAa,wBAAwB;IACjC,QAAQ,CAAkB;IAC1B,EAAE,CAAS;IACX,UAAU,CAAwB;IAElC,YAAY,QAAyB,EAAE,EAAU;QAC7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,wBAAwB;IACxB,UAAU;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,CAAC,KAAK,IAAI,EAAE;YACR,KAAK,MAAM,UAAU,IAAI,CAAC,MAAM,UAAU,IAAI,EAAE,CAAC,EAAE;gBAC/C,IAAI,CAAC,UAAU,CAAC,eAAe;oBAC3B,SAAS;gBACb,CAAC,KAAK,IAAI,EAAE;oBACR,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAmC,CAAC;oBAC5G,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;gBACjE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;aACzB;QACL,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAAA,CAAC;IAC3B,CAAC;IAED,0EAA0E;IAC1E,WAAW;QACP,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY;YACb,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,UAAU;YACf,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEzC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,KAAU,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;gBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC5D,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;aAC/B;iBACI;gBACD,MAAM,UAAU,GAAG,IAAA,gBAAQ,EAAC,YAAY,EAAE,iCAAyB,CAAC,UAAU,CAAC,CAAC;gBAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAoC,CAAC;gBACxF,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;aAC3D;YAED,IAAI,CAAC,KAAK;gBACN,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,wDAAwD;YACxD,MAAM,IAAI,GAAG,IAAA,+BAAc,EAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAwB,IAAA,gBAAQ,EAAC,YAAY,EAAE,iCAAyB,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAEtH,MAAM,UAAU,GAAiB,EAAE,CAAC;YACpC,UAAU,CAAC,OAAO,CAAC;gBACf,eAAe,EAAE,SAAS;gBAC1B,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE;gBACjC,KAAK;aACR,CAAC,CAAA;YAEF,KAAK,MAAM,OAAO,IAAI,IAAA,gBAAQ,EAAC,YAAY,EAAE,iCAAyB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;gBAClF,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAmC,CAAC;gBAEzF,IAAI;oBACA,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAA+B,CAAC;oBACpG,IAAI,CAAC,UAAU,EAAE;wBACb,OAAO,CAAC,IAAI,CAAC,kBAAkB,OAAO,wBAAwB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;wBACzE,MAAM,MAAM,GAAa,IAAA,gBAAQ,EAAC,YAAY,EAAE,iCAAyB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACxF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,YAAY,EAAE,iCAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAA;wBACtI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBAC7C,SAAS;qBACZ;oBAED,MAAM,cAAc,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5E,cAAc,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;oBAChE,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;oBAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;oBAC7D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAC3D,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC/G,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;oBAC1F,IAAI,CAAC,UAAU;wBACX,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,6BAA6B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrF,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;oBAClC,KAAK,GAAG,UAAU,CAAC;oBAEnB,UAAU,CAAC,OAAO,CAAC;wBACf,eAAe,EAAE,OAAO;wBACxB,UAAU;wBACV,KAAK;qBACR,CAAC,CAAA;iBACL;gBACD,OAAO,CAAC,EAAE;oBACN,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;iBACtD;aACJ;YAED,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,YAAY,EAAE,iCAAyB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YAErH,OAAO,UAAU,CAAC;QACtB,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,MAAW,EAAE,CAAc,EAAE,QAAa;QAC1C,IAAI,CAAC,KAAK,aAAa;YACnB,OAAO;QACX,MAAM,OAAO,GAAG,IAAA,+BAAyB,EAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrE,IAAI,OAAO;YACP,OAAO,OAAO,CAAC;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,yBAAyB;QACzB,IAAI,CAAC,YAAY;YACb,OAAO;QACX,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE1B,IAAI,mCAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrC,OAAO,IAAA,gBAAQ,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,KAAK,qBAAa;YACnB,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC,IAAA,mCAAsB,EAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;YAClE,OAAO;QAEX,IAAI,oCAA4B,CAAC,yBAAiB,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrF,OAAQ,IAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,KAAoC,EAAE,QAA8F;QACvI,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IACrK,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,iCAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,iCAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAwB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,iCAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI;YACA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,CAAC,EAAE;YACN,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,QAAc;QAC3C,MAAM,KAAK,GAAG,6BAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YACN,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;YAE5B,sBAAsB;YACtB,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAChC,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;SACvD;QAED,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,kBAAkB,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAW,EAAE,OAAY,EAAE,QAAc;QACjD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;QAExB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAE9C,IAAI,MAAM,KAAK,qBAAa;YACxB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAA,mCAAsB,EAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,EAAE,4BAA4B,MAAM,EAAE,CAAC,CAAC;QAE3E,IAAI,MAAM,KAAK,SAAS,EAAE;YACtB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;SACvF;QAED,IAAI,MAAM,KAAK,cAAc,EAAE;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClF,OAAO,SAAS,CAAC,GAAG,CAAC;SACxB;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACJ;AA3MD,4DA2MC;AAEY,QAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC"}
@@ -109,7 +109,7 @@ class PluginHostAPI extends plugin_api_1.PluginAPIManagedListeners {
109
109
  }
110
110
  }
111
111
  async onDeviceDiscovered(device) {
112
- await this.pluginHost.upsertDevice(device);
112
+ return this.pluginHost.upsertDevice(device);
113
113
  }
114
114
  async onDeviceRemoved(nativeId) {
115
115
  await this.scrypted.removeDevice(this.scrypted.findPluginDevice(this.pluginId, nativeId));
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-host-api.js","sourceRoot":"","sources":["../../src/plugin/plugin-host-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-host-api.js","sourceRoot":"","sources":["../../src/plugin/plugin-host-api.ts"],"names":[],"mappings":";;;;;;AAAA,+CAA+M;AAE/M,0CAAqC;AACrC,6CAAoE;AAEpE,oCAAoC;AAEpC,+DAAuC;AACvC,gCAAuD;AAGvD,MAAa,aAAc,SAAQ,sCAAyB;IA2BrC;IAAkD;IAA+B;IA1BpG,QAAQ,CAAS;IAEjB,CAAC,mCAA6B,CAAC,GAAG;QAC9B,cAAc;QACd,eAAe;QACf,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,mBAAmB;QACnB,aAAa;QACb,gBAAgB;QAChB,UAAU;KACb,CAAC;IAEF,gBAAgB,GAAG,IAAA,kBAAQ,EAAC,KAAK,IAAI,EAAE;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,sFAAsF,CAAC,CAAC;YACxG,OAAO;SACV;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,YAAmB,QAAyB,EAAE,MAAc,EAAS,UAAsB,EAAS,YAA0B;QAC1H,KAAK,EAAE,CAAC;QADO,aAAQ,GAAR,QAAQ,CAAiB;QAAyB,eAAU,GAAV,UAAU,CAAY;QAAS,iBAAY,GAAZ,YAAY,CAAc;QAE1H,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,QAA0B,EAAE,cAAmB,EAAE,SAAe;QAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAa,IAAA,gBAAQ,EAAC,MAAM,EAAE,iCAAyB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,CAAC,GAAG,gCAAgC,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3I,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,CAAC,GAAG,mBAAmB,cAAc,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,WAAwB;QACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAA0B;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,EAAU,EAAE,QAAmC,EAAE,KAAU;QACzE,QAAQ,QAAQ,EAAE;YACd,KAAK,iCAAyB,CAAC,IAAI,CAAC;YACpC,KAAK,iCAAyB,CAAC,IAAI,CAAC;YACpC,KAAK,iCAAyB,CAAC,IAAI;gBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;gBACtD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACzE,IAAI,CAAC,QAAQ,CAAC,mCAAmC,CAAC,MAAM,CAAC,CAAC;gBAC1D,OAAO;YACX;gBACI,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;SAClE;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACpB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,OAAe;QACpC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAA0B,EAAE,GAAW,EAAE,KAAU;QAC9D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAA0B,EAAE,OAAkC;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACtE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,cAA8B;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAC3H,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;YAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC5C;QAED,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE;YACzC,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC9C;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB;QAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC7F,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAa,EAAE,cAAmB,EAAE,SAAe;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,aAAa,CAAI,EAAU;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,aAAkF;QAC3F,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,KAAoC,EAAE,QAAiE;QAClI,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE;YACR,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,IAAA,gBAAQ,EAAC,MAAM,EAAE,iCAAyB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACjJ;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACnC,CAAC;CACJ;AAnJD,sCAmJC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.startPluginClusterWorker = exports.PluginHost = void 0;
6
+ exports.startPluginRemote = exports.PluginHost = void 0;
7
7
  const rpc_1 = require("../rpc");
8
8
  const adm_zip_1 = __importDefault(require("adm-zip"));
9
9
  const types_1 = require("@scrypted/sdk/types");
@@ -11,22 +11,19 @@ const engine_io_1 = __importDefault(require("engine.io"));
11
11
  const plugin_remote_1 = require("./plugin-remote");
12
12
  const media_1 = require("./media");
13
13
  const state_1 = require("../state");
14
- const ws_1 = require("ws");
15
- const listen_zero_1 = require("./listen-zero");
16
- const net_1 = require("net");
17
- const repl_1 = __importDefault(require("repl"));
18
- const events_1 = require("events");
19
14
  const stream_1 = require("stream");
20
15
  const console_1 = require("console");
21
16
  const sleep_1 = require("../sleep");
22
17
  const plugin_host_api_1 = require("./plugin-host-api");
23
18
  const path_1 = __importDefault(require("path"));
24
19
  const source_map_support_1 = require("source-map-support");
25
- const net_2 = __importDefault(require("net"));
20
+ const net_1 = __importDefault(require("net"));
26
21
  const child_process_1 = __importDefault(require("child_process"));
27
22
  const readline_1 = __importDefault(require("readline"));
28
23
  const plugin_volume_1 = require("./plugin-volume");
29
24
  const plugin_npm_dependencies_1 = require("./plugin-npm-dependencies");
25
+ const plugin_console_1 = require("./plugin-console");
26
+ const plugin_repl_1 = require("./plugin-repl");
30
27
  class PluginHost {
31
28
  pluginDebug;
32
29
  worker;
@@ -46,6 +43,7 @@ class PluginHost {
46
43
  listener;
47
44
  stats;
48
45
  killed = false;
46
+ consoleServer;
49
47
  kill() {
50
48
  this.killed = true;
51
49
  this.listener.removeListener();
@@ -68,6 +66,13 @@ class PluginHost {
68
66
  }
69
67
  }
70
68
  }
69
+ this.consoleServer?.then(server => {
70
+ server.readServer.close();
71
+ server.writeServer.close();
72
+ for (const s of server.sockets) {
73
+ s.destroy();
74
+ }
75
+ });
71
76
  setTimeout(() => this.peer.kill('plugin killed'), 500);
72
77
  }
73
78
  toString() {
@@ -76,6 +81,7 @@ class PluginHost {
76
81
  async upsertDevice(upsert) {
77
82
  const pi = await this.scrypted.upsertDevice(this.pluginId, upsert, true);
78
83
  await this.remote.setNativeId(pi.nativeId, pi._id, pi.storage || {});
84
+ return pi._id;
79
85
  }
80
86
  constructor(scrypted, plugin, pluginDebug) {
81
87
  this.pluginDebug = pluginDebug;
@@ -86,7 +92,7 @@ class PluginHost {
86
92
  const logger = scrypted.getDeviceLogger(scrypted.findPluginDevice(plugin._id));
87
93
  const volume = path_1.default.join(process.cwd(), 'volume');
88
94
  const cwd = (0, plugin_volume_1.ensurePluginVolume)(this.pluginId);
89
- this.startPluginClusterHost(logger, {
95
+ this.startPluginHost(logger, {
90
96
  NODE_PATH: path_1.default.join(cwd, 'node_modules'),
91
97
  SCRYPTED_PLUGIN_VOLUME: cwd,
92
98
  }, plugin.packageJson.scrypted.runtime);
@@ -177,7 +183,7 @@ class PluginHost {
177
183
  this.listener.removeListener();
178
184
  });
179
185
  }
180
- startPluginClusterHost(logger, env, runtime) {
186
+ startPluginHost(logger, env, runtime) {
181
187
  let connected = true;
182
188
  if (runtime === 'python') {
183
189
  const args = [
@@ -187,9 +193,9 @@ class PluginHost {
187
193
  args.push('-m', 'debugpy', '--listen', `0.0.0.0:${this.pluginDebug.inspectPort}`, '--wait-for-client');
188
194
  }
189
195
  args.push(path_1.default.join(__dirname, '../../python', 'plugin-remote.py'));
190
- this.worker = child_process_1.default.spawn('python', args, {
196
+ this.worker = child_process_1.default.spawn('python3', args, {
191
197
  // stdin, stdout, stderr, peer in, peer out
192
- stdio: ['pipe', 'inherit', 'inherit', 'pipe', 'pipe'],
198
+ stdio: ['pipe', 'pipe', 'pipe', 'pipe', 'pipe'],
193
199
  env: Object.assign({}, process.env, env),
194
200
  });
195
201
  const peerin = this.worker.stdio[3];
@@ -218,7 +224,7 @@ class PluginHost {
218
224
  execArgv.push(`--inspect=0.0.0.0:${this.pluginDebug.inspectPort}`);
219
225
  }
220
226
  this.worker = child_process_1.default.fork(require.main.filename, ['child'], {
221
- stdio: ['pipe', 'inherit', 'inherit', 'ipc'],
227
+ stdio: ['pipe', 'pipe', 'pipe', 'ipc'],
222
228
  env: Object.assign({}, process.env, env),
223
229
  serialization: 'advanced',
224
230
  execArgv,
@@ -237,8 +243,9 @@ class PluginHost {
237
243
  this.peer.transportSafeArgumentTypes.add(Buffer.name);
238
244
  this.worker.on('message', message => this.peer.handleMessage(message));
239
245
  }
240
- // this.worker.stdout.on('data', data => console.log(data.toString()));
241
- // this.worker.stderr.on('data', data => console.error(data.toString()));
246
+ this.worker.stdout.on('data', data => console.log(data.toString()));
247
+ this.worker.stderr.on('data', data => console.error(data.toString()));
248
+ this.consoleServer = (0, plugin_console_1.createConsoleServer)(this.worker.stdout, this.worker.stderr);
242
249
  this.worker.on('disconnect', () => {
243
250
  connected = false;
244
251
  logger.log('e', `${this.pluginName} disconnected`);
@@ -259,143 +266,19 @@ class PluginHost {
259
266
  }
260
267
  }
261
268
  exports.PluginHost = PluginHost;
262
- async function createConsoleServer(events) {
263
- const outputs = new Map();
264
- const appendOutput = (data, nativeId) => {
265
- if (!nativeId)
266
- nativeId = undefined;
267
- let buffers = outputs.get(nativeId);
268
- if (!buffers) {
269
- buffers = [];
270
- outputs.set(nativeId, buffers);
271
- }
272
- buffers.push(data);
273
- // when we're over 4000 lines or whatever these buffer are,
274
- // truncate down to 2000.
275
- if (buffers.length > 4000)
276
- outputs.set(nativeId, buffers.slice(buffers.length - 2000));
277
- };
278
- events.on('stdout', appendOutput);
279
- events.on('stderr', appendOutput);
280
- const server = new net_1.Server(async (socket) => {
281
- let [filter] = await (0, events_1.once)(socket, 'data');
282
- filter = filter.toString().trim();
283
- if (filter === 'undefined')
284
- filter = undefined;
285
- const buffers = outputs.get(filter);
286
- if (buffers) {
287
- const concat = Buffer.concat(buffers);
288
- outputs.set(filter, [concat]);
289
- socket.write(concat);
290
- }
291
- const cb = (data, nativeId) => {
292
- if (nativeId !== filter)
293
- return;
294
- socket.write(data);
295
- };
296
- events.on('stdout', cb);
297
- events.on('stderr', cb);
298
- const cleanup = () => {
299
- events.removeListener('stdout', cb);
300
- events.removeListener('stderr', cb);
301
- };
302
- socket.on('close', cleanup);
303
- socket.on('error', cleanup);
304
- socket.on('end', cleanup);
305
- });
306
- const writeServer = new net_1.Server(async (socket) => {
307
- const [data] = await (0, events_1.once)(socket, 'data');
308
- let filter = data.toString();
309
- const newline = filter.indexOf('\n');
310
- if (newline !== -1) {
311
- socket.unshift(Buffer.from(filter.substring(newline + 1)));
312
- }
313
- filter = filter.substring(0, newline);
314
- if (filter === 'undefined')
315
- filter = undefined;
316
- const cb = (data) => events.emit('stdout', data, filter);
317
- socket.on('data', cb);
318
- const cleanup = () => {
319
- events.removeListener('data', cb);
320
- };
321
- socket.on('close', cleanup);
322
- socket.on('error', cleanup);
323
- socket.on('end', cleanup);
324
- });
325
- const consoleReader = await (0, listen_zero_1.listenZero)(server);
326
- const consoleWriter = await (0, listen_zero_1.listenZero)(writeServer);
327
- return [consoleReader, consoleWriter];
328
- }
329
- async function createREPLServer(events) {
330
- const [[scrypted], [params], [plugin]] = await Promise.all([(0, events_1.once)(events, 'scrypted'), (0, events_1.once)(events, 'params'), (0, events_1.once)(events, 'plugin')]);
331
- const { deviceManager, systemManager } = scrypted;
332
- const server = new net_1.Server(async (socket) => {
333
- let [filter] = await (0, events_1.once)(socket, 'data');
334
- filter = filter.toString().trim();
335
- if (filter === 'undefined')
336
- filter = undefined;
337
- const chain = [];
338
- const nativeIds = deviceManager.nativeIds;
339
- const reversed = new Map();
340
- for (const nativeId of nativeIds.keys()) {
341
- reversed.set(nativeIds.get(nativeId).id, nativeId);
342
- }
343
- while (filter) {
344
- const { id } = nativeIds.get(filter);
345
- const d = await systemManager.getDeviceById(id);
346
- chain.push(filter);
347
- filter = reversed.get(d.providerId);
348
- }
349
- chain.reverse();
350
- let device = plugin;
351
- for (const c of chain) {
352
- device = await device.getDevice(c);
353
- }
354
- const ctx = Object.assign(params, {
355
- device
356
- });
357
- delete ctx.console;
358
- delete ctx.window;
359
- delete ctx.WebSocket;
360
- delete ctx.pluginHostAPI;
361
- const replFilter = new Set(['require', 'localStorage']);
362
- const replVariables = Object.keys(ctx).filter(key => !replFilter.has(key));
363
- const welcome = `JavaScript REPL variables:\n${replVariables.map(key => ' ' + key).join('\n')}\n\n`;
364
- socket.write(welcome);
365
- const r = repl_1.default.start({
366
- terminal: true,
367
- input: socket,
368
- output: socket,
369
- // writer(this: REPLServer, obj: any) {
370
- // const ret = util.inspect(obj, {
371
- // colors: true,
372
- // });
373
- // return ret;//.replaceAll('\n', '\r\n');
374
- // },
375
- preview: false,
376
- });
377
- Object.assign(r.context, ctx);
378
- const cleanup = () => {
379
- r.close();
380
- };
381
- socket.on('close', cleanup);
382
- socket.on('error', cleanup);
383
- socket.on('end', cleanup);
384
- });
385
- return (0, listen_zero_1.listenZero)(server);
386
- }
387
- function startPluginClusterWorker() {
269
+ function startPluginRemote() {
388
270
  const peer = new rpc_1.RpcPeer('unknown', 'host', (message, reject) => process.send(message, undefined, {
389
271
  swallowErrors: !reject,
390
272
  }, e => {
391
273
  if (e)
392
- reject(e);
274
+ reject?.(e);
393
275
  }));
394
276
  peer.transportSafeArgumentTypes.add(Buffer.name);
395
277
  process.on('message', message => peer.handleMessage(message));
396
- const events = new ws_1.EventEmitter();
397
278
  let systemManager;
398
279
  let deviceManager;
280
+ let api;
281
+ let pluginId;
399
282
  function idForNativeId(nativeId) {
400
283
  if (!deviceManager)
401
284
  return;
@@ -439,15 +322,30 @@ function startPluginClusterWorker() {
439
322
  };
440
323
  const getDeviceConsole = (nativeId) => {
441
324
  return getConsole(async (stdout, stderr) => {
442
- stdout.on('data', data => events.emit('stdout', data, nativeId));
443
- stderr.on('data', data => events.emit('stderr', data, nativeId));
325
+ const plugins = await api.getComponent('plugins');
326
+ const connect = async () => {
327
+ const port = await plugins.getRemoteServicePort(peer.selfName, 'console-writer');
328
+ const socket = net_1.default.connect(port);
329
+ socket.write(nativeId + '\n');
330
+ const writer = (data) => {
331
+ socket.write(data);
332
+ };
333
+ stdout.on('data', writer);
334
+ stderr.on('data', writer);
335
+ socket.on('error', () => {
336
+ stdout.removeAllListeners();
337
+ stderr.removeAllListeners();
338
+ stdout.pause();
339
+ stderr.pause();
340
+ setTimeout(connect, 10000);
341
+ });
342
+ };
343
+ connect();
444
344
  }, undefined, undefined);
445
345
  };
446
346
  const getMixinConsole = (mixinId, nativeId) => {
447
347
  return getConsole(async (stdout, stderr) => {
448
348
  if (!mixinId || !systemManager.getDeviceById(mixinId).mixins.includes(idForNativeId(nativeId))) {
449
- stdout.on('data', data => events.emit('stdout', data, nativeId));
450
- stderr.on('data', data => events.emit('stderr', data, nativeId));
451
349
  return;
452
350
  }
453
351
  const plugins = await systemManager.getComponent('plugins');
@@ -459,7 +357,7 @@ function startPluginClusterWorker() {
459
357
  }
460
358
  const { pluginId, nativeId: mixinNativeId } = await plugins.getDeviceInfo(mixinId);
461
359
  const port = await plugins.getRemoteServicePort(pluginId, 'console-writer');
462
- const socket = net_2.default.connect(port);
360
+ const socket = net_1.default.connect(port);
463
361
  socket.write(mixinNativeId + '\n');
464
362
  const writer = (data) => {
465
363
  let str = data.toString().trim();
@@ -491,26 +389,38 @@ function startPluginClusterWorker() {
491
389
  });
492
390
  global?.gc();
493
391
  }, 10000);
494
- const consolePorts = createConsoleServer(events);
495
- const replPort = createREPLServer(events);
496
- const pluginConsole = getDeviceConsole(undefined);
392
+ let replPort;
393
+ let _pluginConsole;
394
+ const getPluginConsole = () => {
395
+ if (_pluginConsole)
396
+ return _pluginConsole;
397
+ _pluginConsole = getDeviceConsole(undefined);
398
+ };
497
399
  (0, plugin_remote_1.attachPluginRemote)(peer, {
498
- createMediaManager: async (systemManager) => new media_1.MediaManagerImpl(systemManager, pluginConsole),
499
- events,
400
+ createMediaManager: async (sm) => {
401
+ systemManager = sm;
402
+ return new media_1.MediaManagerImpl(systemManager, getPluginConsole());
403
+ },
404
+ onGetRemote: async (_api, _pluginId) => {
405
+ api = _api;
406
+ pluginId = _pluginId;
407
+ peer.selfName = pluginId;
408
+ },
409
+ onPluginReady: async (scrypted, params, plugin) => {
410
+ replPort = (0, plugin_repl_1.createREPLServer)(scrypted, params, plugin);
411
+ },
412
+ getPluginConsole,
500
413
  getDeviceConsole,
501
414
  getMixinConsole,
502
415
  async getServicePort(name) {
503
- if (name === 'repl')
416
+ if (name === 'repl') {
417
+ if (!replPort)
418
+ throw new Error('REPL unavailable: Plugin not loaded.');
504
419
  return replPort;
505
- if (name === 'console')
506
- return (await consolePorts)[0];
507
- if (name === 'console-writer')
508
- return (await consolePorts)[1];
420
+ }
509
421
  throw new Error(`unknown service ${name}`);
510
422
  },
511
- async beforeLoadZip(zip, packageJson) {
512
- const pluginId = packageJson.name;
513
- peer.selfName = pluginId;
423
+ async onLoadZip(zip, packageJson) {
514
424
  (0, source_map_support_1.install)({
515
425
  environment: 'node',
516
426
  retrieveSourceMap(source) {
@@ -527,32 +437,22 @@ function startPluginClusterWorker() {
527
437
  return null;
528
438
  }
529
439
  });
530
- const cp = await consolePorts;
531
- const writer = cp[1];
532
- const socket = net_2.default.connect(writer);
533
- await (0, events_1.once)(socket, 'connect');
534
- try {
535
- await (0, plugin_npm_dependencies_1.installOptionalDependencies)(pluginConsole, socket, packageJson);
536
- }
537
- finally {
538
- socket.destroy();
539
- }
440
+ await (0, plugin_npm_dependencies_1.installOptionalDependencies)(getPluginConsole(), packageJson);
540
441
  }
541
442
  }).then(scrypted => {
542
443
  systemManager = scrypted.systemManager;
543
444
  deviceManager = scrypted.deviceManager;
544
- events.emit('scrypted', scrypted);
545
445
  process.on('uncaughtException', e => {
546
- pluginConsole.error('uncaughtException', e);
446
+ getPluginConsole().error('uncaughtException', e);
547
447
  scrypted.log.e('uncaughtException ' + e?.toString());
548
448
  });
549
449
  process.on('unhandledRejection', e => {
550
- pluginConsole.error('unhandledRejection', e);
450
+ getPluginConsole().error('unhandledRejection', e);
551
451
  scrypted.log.e('unhandledRejection ' + e?.toString());
552
452
  });
553
453
  });
554
454
  }
555
- exports.startPluginClusterWorker = startPluginClusterWorker;
455
+ exports.startPluginRemote = startPluginRemote;
556
456
  /**
557
457
  * Warning: do not await in any of these methods unless necessary, otherwise
558
458
  * execution order of state reporting may fail.