@scrypted/server 0.1.4 → 0.1.5

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.

@@ -5,6 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.PythonRuntimeWorker = void 0;
7
7
  const child_process_1 = __importDefault(require("child_process"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const os_1 = __importDefault(require("os"));
8
10
  const path_1 = __importDefault(require("path"));
9
11
  const readline_1 = __importDefault(require("readline"));
10
12
  const child_process_worker_1 = require("./child-process-worker");
@@ -19,12 +21,26 @@ class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
19
21
  args.push('-m', 'debugpy', '--listen', `0.0.0.0:${pluginDebug.inspectPort}`, '--wait-for-client');
20
22
  }
21
23
  args.push(path_1.default.join(__dirname, '../../../python', 'plugin-remote.py'));
24
+ const gstEnv = {};
25
+ // hack to fix gst plugin search path on mac...
26
+ if (os_1.default.platform() === 'darwin') {
27
+ const gstPaths = [
28
+ '/opt/homebrew/lib/gstreamer-1.0',
29
+ '/usr/local/lib/gstreamer-1.0',
30
+ ];
31
+ for (const gstPath of gstPaths) {
32
+ if (fs_1.default.existsSync(path_1.default.join(gstPath, 'libgstx264.dylib'))) {
33
+ gstEnv['GST_PLUGIN_PATH'] = gstPath;
34
+ break;
35
+ }
36
+ }
37
+ }
22
38
  this.worker = child_process_1.default.spawn('python3', args, {
23
39
  // stdin, stdout, stderr, peer in, peer out
24
40
  stdio: ['pipe', 'pipe', 'pipe', 'pipe', 'pipe'],
25
41
  env: Object.assign({
26
42
  PYTHONPATH: path_1.default.join(process.cwd(), 'node_modules/@scrypted/types'),
27
- }, process.env, env),
43
+ }, gstEnv, process.env, env),
28
44
  });
29
45
  this.setupWorker();
30
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"python-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/python-worker.ts"],"names":[],"mappings":";;;;;;AACA,kEAA0C;AAC1C,gDAAwB;AAIxB,wDAAgC;AAChC,iEAA4D;AAE5D,MAAa,mBAAoB,SAAS,yCAAkB;IAExD,YAAY,QAAgB,EAAE,OAA6B;QACvD,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEzB,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACrC,MAAM,IAAI,GAAa;YACnB,IAAI;SACP,CAAC;QACF,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,IAAI,CACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,WAAW,WAAW,CAAC,WAAW,EAAE,EACpC,mBAAmB,CACtB,CAAA;SACJ;QACD,IAAI,CAAC,IAAI,CACL,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAC9D,CAAA;QAED,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE;YAC/C,2CAA2C;YAC3C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;gBACf,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,8BAA8B,CAAC;aACvE,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,IAAa;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;QAEjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhD,MAAM,aAAa,GAAG,kBAAQ,CAAC,eAAe,CAAC;YAC3C,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,OAAmB,EAAE,MAA2B;QACjD,IAAI;YACA,IAAI,CAAC,IAAI,CAAC,MAAM;gBACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACnG;QACL,OAAO,CAAC,EAAE;YACN,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;SACf;IACL,CAAC;CACJ;AAzDD,kDAyDC"}
1
+ {"version":3,"file":"python-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/python-worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrypted/server",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "",
5
5
  "dependencies": {
6
6
  "@mapbox/node-pre-gyp": "^1.0.8",
package/python/rpc.py CHANGED
@@ -77,8 +77,8 @@ class RpcProxy(object):
77
77
  return super().__setattr__(name, value)
78
78
 
79
79
  def __call__(self, *args, **kwargs):
80
- print('call')
81
- pass
80
+ return self.__dict__['__proxy_peer'].__apply__(self.__dict__['__proxy_id'], self.__dict__['__proxy_oneway_methods'], None, args)
81
+
82
82
 
83
83
  def __apply__(self, method: str, args: list):
84
84
  return self.__dict__['__proxy_peer'].__apply__(self.__dict__['__proxy_id'], self.__dict__['__proxy_oneway_methods'], method, args)
@@ -1,13 +1,14 @@
1
- import { RuntimeWorker, RuntimeWorkerOptions as RuntimeWorkerOptions } from "./runtime-worker";
2
1
  import child_process from 'child_process';
2
+ import fs from "fs";
3
+ import os from "os";
3
4
  import path from 'path';
4
- import { EventEmitter } from "ws";
5
- import { Writable, Readable } from 'stream';
6
- import { RpcMessage, RpcPeer } from "../../rpc";
7
5
  import readline from 'readline';
6
+ import { Readable, Writable } from 'stream';
7
+ import { RpcMessage, RpcPeer } from "../../rpc";
8
8
  import { ChildProcessWorker } from "./child-process-worker";
9
+ import { RuntimeWorkerOptions } from "./runtime-worker";
9
10
 
10
- export class PythonRuntimeWorker extends ChildProcessWorker {
11
+ export class PythonRuntimeWorker extends ChildProcessWorker {
11
12
 
12
13
  constructor(pluginId: string, options: RuntimeWorkerOptions) {
13
14
  super(pluginId, options);
@@ -29,12 +30,27 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
29
30
  path.join(__dirname, '../../../python', 'plugin-remote.py'),
30
31
  )
31
32
 
33
+ const gstEnv: NodeJS.ProcessEnv = {};
34
+ // hack to fix gst plugin search path on mac...
35
+ if (os.platform() === 'darwin') {
36
+ const gstPaths = [
37
+ '/opt/homebrew/lib/gstreamer-1.0',
38
+ '/usr/local/lib/gstreamer-1.0',
39
+ ];
40
+ for (const gstPath of gstPaths) {
41
+ if (fs.existsSync(path.join(gstPath, 'libgstx264.dylib'))) {
42
+ gstEnv['GST_PLUGIN_PATH'] = gstPath;
43
+ break;
44
+ }
45
+ }
46
+ }
47
+
32
48
  this.worker = child_process.spawn('python3', args, {
33
49
  // stdin, stdout, stderr, peer in, peer out
34
50
  stdio: ['pipe', 'pipe', 'pipe', 'pipe', 'pipe'],
35
51
  env: Object.assign({
36
52
  PYTHONPATH: path.join(process.cwd(), 'node_modules/@scrypted/types'),
37
- }, process.env, env),
53
+ }, gstEnv, process.env, env),
38
54
  });
39
55
 
40
56
  this.setupWorker();
@@ -58,8 +74,8 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
58
74
  try {
59
75
  if (!this.worker)
60
76
  throw new Error('worked has been killed');
61
- (this.worker.stdio[3] as Writable).write(JSON.stringify(message) + '\n', e => e && reject?.(e));
62
- }
77
+ (this.worker.stdio[3] as Writable).write(JSON.stringify(message) + '\n', e => e && reject?.(e));
78
+ }
63
79
  catch (e) {
64
80
  reject?.(e);
65
81
  }