@scrypted/server 0.94.37 → 0.94.38

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.
@@ -16,14 +16,16 @@ const plugin_volume_1 = require("../plugin-volume");
16
16
  const child_process_worker_1 = require("./child-process-worker");
17
17
  class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
18
18
  static {
19
- try {
20
- const py = new py_1.PortablePython(packaged_python_1.version);
21
- const portablePython = py.executablePath;
22
- // is this possible?
23
- if (fs_1.default.existsSync(portablePython))
24
- process.env.SCRYPTED_PYTHON_PATH = portablePython;
25
- }
26
- catch (e) {
19
+ if (!fs_1.default.existsSync(process.env.SCRYPTED_PYTHON_PATH)) {
20
+ try {
21
+ const py = new py_1.PortablePython(packaged_python_1.version);
22
+ const portablePython = py.executablePath;
23
+ // is this possible?
24
+ if (fs_1.default.existsSync(portablePython))
25
+ process.env.SCRYPTED_PYTHON_PATH = portablePython;
26
+ }
27
+ catch (e) {
28
+ }
27
29
  }
28
30
  }
29
31
  serializer;
@@ -95,46 +97,55 @@ class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
95
97
  this.worker.stderr.pipe(this.stderr);
96
98
  };
97
99
  // if the plugin requests a specific python, then install it via portable python
98
- if (pluginPythonVersion) {
99
- const peerin = this.peerin = new stream_1.PassThrough();
100
- const peerout = this.peerout = new stream_1.PassThrough();
101
- const finishSetup = () => {
102
- setup();
103
- peerin.pipe(this.worker.stdio[3]);
104
- this.worker.stdio[4].pipe(peerout);
105
- };
106
- const pyVersion = require('py/package.json').version;
107
- const pyPath = path_1.default.join((0, plugin_volume_1.getPluginVolume)(pluginId), 'py');
108
- const portableInstallPath = path_1.default.join(pyPath, pyVersion);
109
- const py = new py_1.PortablePython(pluginPythonVersion, portableInstallPath);
110
- if (fs_1.default.existsSync(py.executablePath)) {
111
- pythonPath = py.executablePath;
112
- finishSetup();
113
- }
114
- else {
115
- (async () => {
116
- try {
117
- this.pythonInstallationComplete = false;
118
- await fs_1.default.promises.rm(pyPath, { recursive: true, force: true }).catch(() => { });
119
- pythonPath = await (0, packaged_python_1.installScryptedServerRequirements)(pluginPythonVersion, portableInstallPath);
120
- finishSetup();
121
- }
122
- catch (e) {
123
- process.nextTick(() => {
124
- this.emit('error', new Error('Failed to install portable python.'));
125
- });
126
- }
127
- finally {
128
- this.pythonInstallationComplete = true;
129
- }
130
- })();
131
- }
100
+ if (!pluginPythonVersion) {
101
+ setup();
102
+ this.peerin = this.worker.stdio[3];
103
+ this.peerout = this.worker.stdio[4];
104
+ this.setupWorker();
105
+ return;
132
106
  }
133
- else {
107
+ const strippedPythonVersion = pluginPythonVersion.replace('.', '');
108
+ const envPython = process.env[`SCRYPTED_PYTHON${strippedPythonVersion}_PATH`];
109
+ if (fs_1.default.existsSync(envPython)) {
110
+ pythonPath = envPython;
134
111
  setup();
135
112
  this.peerin = this.worker.stdio[3];
136
113
  this.peerout = this.worker.stdio[4];
137
114
  this.setupWorker();
115
+ return;
116
+ }
117
+ const peerin = this.peerin = new stream_1.PassThrough();
118
+ const peerout = this.peerout = new stream_1.PassThrough();
119
+ const finishSetup = () => {
120
+ setup();
121
+ peerin.pipe(this.worker.stdio[3]);
122
+ this.worker.stdio[4].pipe(peerout);
123
+ };
124
+ const pyVersion = require('py/package.json').version;
125
+ const pyPath = path_1.default.join((0, plugin_volume_1.getPluginVolume)(pluginId), 'py');
126
+ const portableInstallPath = path_1.default.join(pyPath, pyVersion);
127
+ const py = new py_1.PortablePython(pluginPythonVersion, portableInstallPath);
128
+ if (fs_1.default.existsSync(py.executablePath)) {
129
+ pythonPath = py.executablePath;
130
+ finishSetup();
131
+ }
132
+ else {
133
+ (async () => {
134
+ try {
135
+ this.pythonInstallationComplete = false;
136
+ await fs_1.default.promises.rm(pyPath, { recursive: true, force: true }).catch(() => { });
137
+ pythonPath = await (0, packaged_python_1.installScryptedServerRequirements)(pluginPythonVersion, portableInstallPath);
138
+ finishSetup();
139
+ }
140
+ catch (e) {
141
+ process.nextTick(() => {
142
+ this.emit('error', new Error('Failed to install portable python.'));
143
+ });
144
+ }
145
+ finally {
146
+ this.pythonInstallationComplete = true;
147
+ }
148
+ })();
138
149
  }
139
150
  }
140
151
  setupRpcPeer(peer) {
@@ -1 +1 @@
1
- {"version":3,"file":"python-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/python-worker.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA0C;AAC1C,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AACxB,2BAAoC;AACpC,mCAAyD;AACzD,kEAAmH;AAEnH,yDAAiE;AACjE,oDAAmD;AACnD,iEAA4D;AAG5D,MAAa,mBAAoB,SAAQ,yCAAkB;IACvD;QACI,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,mBAAc,CAAC,yBAAqB,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;YACzC,oBAAoB;YACpB,IAAI,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;QACX,CAAC;IACL,CAAC;IAED,UAAU,CAA+C;IACzD,MAAM,CAAW;IACjB,OAAO,CAAW;IAClB,OAAO,GAAG,IAAI,oBAAW,EAAE,CAAC;IAC5B,OAAO,GAAG,IAAI,oBAAW,EAAE,CAAC;IAC5B,0BAA0B,GAAG,IAAI,CAAC;IAElC,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,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;QAEF,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,WAAW,WAAW,CAAC,WAAW,EAAE,EACpC,mBAAmB,CACtB,CAAA;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CACL,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAC3D,IAAI,CAAC,QAAQ,CAChB,CAAA;QAED,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,+CAA+C;QAC/C,IAAI,YAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG;gBACb,iCAAiC;gBACjC,8BAA8B;aACjC,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,6BAA6B;gBAC7B,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;uBAClD,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;uBACtD,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC,EAAE,CAAC;oBACnE,MAAM,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC;oBACpC,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAClD,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,YAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,YAAE,CAAC,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;QAE5J,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,IAAI,YAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;gBAC5B,UAAU,GAAG,QAAQ,CAAC;YAC1B,CAAC;iBACI,CAAC;gBACF,UAAU,GAAG,SAAS,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,EAAE;YACf,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/E,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;gBAChD,2CAA2C;gBAC3C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAC/C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;oBACf,wEAAwE;oBACxE,uBAAuB,EAAE,UAAU;oBACnC,gBAAgB,EAAE,GAAG;oBACrB,UAAU;iBACb,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;aAC/B,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC;QAGF,gFAAgF;QAChF,IAAI,mBAAmB,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAW,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,oBAAW,EAAE,CAAC;YAEjD,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,KAAK,EAAE,CAAC;gBAER,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC,CAAC;YAEF,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;YACrD,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,IAAA,+BAAe,EAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1D,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEzD,MAAM,EAAE,GAAG,IAAI,mBAAc,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YACxE,IAAI,YAAE,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnC,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC;gBAC/B,WAAW,EAAE,CAAC;YAClB,CAAC;iBACI,CAAC;gBACF,CAAC,KAAK,IAAI,EAAE;oBACR,IAAI,CAAC;wBACD,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;wBACxC,MAAM,YAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;wBAChF,UAAU,GAAG,MAAM,IAAA,mDAAiC,EAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;wBAC/F,WAAW,EAAE,CAAC;oBAClB,CAAC;oBACD,OAAO,CAAC,EAAE,CAAC;wBACP,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;4BAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;wBACxE,CAAC,CAAC,CAAC;oBACP,CAAC;4BACO,CAAC;wBACL,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAA;oBAC1C,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;YACT,CAAC;QACL,CAAC;aACI,CAAC;YACF,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;YAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;YAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED,YAAY,CAAC,IAAa;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAA,0CAAyB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5E,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACtB,UAAU,CAAC,cAAc,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YACrB,UAAU,CAAC,cAAc,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC,OAAmB,EAAE,MAA2B,EAAE,oBAA0B;QAC7E,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,MAAM;gBAC/C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACL,CAAC;CACJ;AAhLD,kDAgLC"}
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.94.37",
3
+ "version": "0.94.38",
4
4
  "description": "",
5
5
  "dependencies": {
6
6
  "@mapbox/node-pre-gyp": "^1.0.11",
@@ -13,14 +13,16 @@ import { RuntimeWorkerOptions } from "./runtime-worker";
13
13
 
14
14
  export class PythonRuntimeWorker extends ChildProcessWorker {
15
15
  static {
16
- try {
17
- const py = new PortablePython(packagedPythonVersion);
18
- const portablePython = py.executablePath;
19
- // is this possible?
20
- if (fs.existsSync(portablePython))
21
- process.env.SCRYPTED_PYTHON_PATH = portablePython;
22
- }
23
- catch (e) {
16
+ if (!fs.existsSync(process.env.SCRYPTED_PYTHON_PATH)) {
17
+ try {
18
+ const py = new PortablePython(packagedPythonVersion);
19
+ const portablePython = py.executablePath;
20
+ // is this possible?
21
+ if (fs.existsSync(portablePython))
22
+ process.env.SCRYPTED_PYTHON_PATH = portablePython;
23
+ }
24
+ catch (e) {
25
+ }
24
26
  }
25
27
  }
26
28
 
@@ -85,7 +87,7 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
85
87
  }
86
88
 
87
89
  let pythonPath = process.env.SCRYPTED_PYTHON_PATH;
88
- const pluginPythonVersion = options.packageJson.scrypted.pythonVersion?.[os.platform()]?.[os.arch()] || options.packageJson.scrypted.pythonVersion?.default;
90
+ const pluginPythonVersion: string = options.packageJson.scrypted.pythonVersion?.[os.platform()]?.[os.arch()] || options.packageJson.scrypted.pythonVersion?.default;
89
91
 
90
92
  if (!pythonPath) {
91
93
  if (os.platform() === 'win32') {
@@ -114,53 +116,64 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
114
116
  this.worker.stderr.pipe(this.stderr);
115
117
  };
116
118
 
117
-
118
119
  // if the plugin requests a specific python, then install it via portable python
119
- if (pluginPythonVersion) {
120
- const peerin = this.peerin = new PassThrough();
121
- const peerout = this.peerout = new PassThrough();
120
+ if (!pluginPythonVersion) {
121
+ setup();
122
+ this.peerin = this.worker.stdio[3] as Writable;
123
+ this.peerout = this.worker.stdio[4] as Readable;
124
+ this.setupWorker();
125
+ return;
126
+ }
122
127
 
123
- const finishSetup = () => {
124
- setup();
128
+ const strippedPythonVersion = pluginPythonVersion.replace('.', '');
129
+ const envPython = process.env[`SCRYPTED_PYTHON${strippedPythonVersion}_PATH`];
130
+ if (fs.existsSync(envPython)) {
131
+ pythonPath = envPython;
132
+ setup();
133
+ this.peerin = this.worker.stdio[3] as Writable;
134
+ this.peerout = this.worker.stdio[4] as Readable;
135
+ this.setupWorker();
136
+ return;
137
+ }
125
138
 
126
- peerin.pipe(this.worker.stdio[3] as Writable);
127
- (this.worker.stdio[4] as Readable).pipe(peerout);
128
- };
139
+ const peerin = this.peerin = new PassThrough();
140
+ const peerout = this.peerout = new PassThrough();
129
141
 
130
- const pyVersion = require('py/package.json').version;
131
- const pyPath = path.join(getPluginVolume(pluginId), 'py');
132
- const portableInstallPath = path.join(pyPath, pyVersion);
142
+ const finishSetup = () => {
143
+ setup();
133
144
 
134
- const py = new PortablePython(pluginPythonVersion, portableInstallPath);
135
- if (fs.existsSync(py.executablePath)) {
136
- pythonPath = py.executablePath;
137
- finishSetup();
138
- }
139
- else {
140
- (async () => {
141
- try {
142
- this.pythonInstallationComplete = false;
143
- await fs.promises.rm(pyPath, { recursive: true, force: true }).catch(() => { });
144
- pythonPath = await installScryptedServerRequirements(pluginPythonVersion, portableInstallPath);
145
- finishSetup();
146
- }
147
- catch (e) {
148
- process.nextTick(() => {
149
- this.emit('error', new Error('Failed to install portable python.'));
150
- });
151
- }
152
- finally {
153
- this.pythonInstallationComplete = true
154
- }
155
- })();
156
- }
145
+ peerin.pipe(this.worker.stdio[3] as Writable);
146
+ (this.worker.stdio[4] as Readable).pipe(peerout);
147
+ };
148
+
149
+ const pyVersion = require('py/package.json').version;
150
+ const pyPath = path.join(getPluginVolume(pluginId), 'py');
151
+ const portableInstallPath = path.join(pyPath, pyVersion);
152
+
153
+ const py = new PortablePython(pluginPythonVersion, portableInstallPath);
154
+ if (fs.existsSync(py.executablePath)) {
155
+ pythonPath = py.executablePath;
156
+ finishSetup();
157
157
  }
158
158
  else {
159
- setup();
160
- this.peerin = this.worker.stdio[3] as Writable;
161
- this.peerout = this.worker.stdio[4] as Readable;
162
- this.setupWorker();
159
+ (async () => {
160
+ try {
161
+ this.pythonInstallationComplete = false;
162
+ await fs.promises.rm(pyPath, { recursive: true, force: true }).catch(() => { });
163
+ pythonPath = await installScryptedServerRequirements(pluginPythonVersion, portableInstallPath);
164
+ finishSetup();
165
+ }
166
+ catch (e) {
167
+ process.nextTick(() => {
168
+ this.emit('error', new Error('Failed to install portable python.'));
169
+ });
170
+ }
171
+ finally {
172
+ this.pythonInstallationComplete = true
173
+ }
174
+ })();
163
175
  }
176
+
164
177
  }
165
178
 
166
179
  setupRpcPeer(peer: RpcPeer): void {