@scrypted/server 0.94.32 → 0.94.34

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.
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { BufferConverter, DeviceManager, FFmpegInput, MediaManager, MediaObject as MediaObjectInterface, MediaObjectOptions, ScryptedDevice, ScryptedNativeId, SystemDeviceState, SystemManager } from "@scrypted/types";
2
+ import { BufferConverter, DeviceManager, FFmpegInput, MediaManager, MediaObjectCreateOptions, MediaObject as MediaObjectInterface, ScryptedDevice, ScryptedNativeId, SystemDeviceState, SystemManager } from "@scrypted/types";
3
3
  import { MediaObjectRemote } from "./plugin-api";
4
4
  type IdBufferConverter = BufferConverter & {
5
5
  id: string;
@@ -29,10 +29,10 @@ export declare abstract class MediaManagerBase implements MediaManager {
29
29
  convertMediaObjectToBuffer(mediaObject: MediaObjectInterface, toMimeType: string): Promise<Buffer>;
30
30
  convertMediaObjectToLocalUrl(mediaObject: string | MediaObjectInterface, toMimeType: string): Promise<string>;
31
31
  convertMediaObjectToUrl(mediaObject: string | MediaObjectInterface, toMimeType: string): Promise<string>;
32
- createMediaObjectRemote<T extends MediaObjectOptions>(data: any | Buffer | Promise<string | Buffer>, mimeType: string, options?: T): MediaObjectRemote & T;
33
- createFFmpegMediaObject(ffMpegInput: FFmpegInput, options?: MediaObjectOptions): Promise<MediaObjectInterface>;
34
- createMediaObjectFromUrl(data: string, options?: MediaObjectOptions): Promise<MediaObjectInterface>;
35
- createMediaObject<T extends MediaObjectOptions>(data: any, mimeType: string, options?: T): Promise<MediaObjectInterface & T>;
32
+ createMediaObjectRemote<T extends MediaObjectCreateOptions>(data: any | Buffer | Promise<string | Buffer>, mimeType: string, options?: T): MediaObjectRemote & T;
33
+ createFFmpegMediaObject<T extends MediaObjectCreateOptions>(ffMpegInput: FFmpegInput, options?: T): Promise<MediaObjectInterface & T>;
34
+ createMediaObjectFromUrl<T extends MediaObjectCreateOptions>(data: string, options?: T): Promise<MediaObjectInterface & T>;
35
+ createMediaObject<T extends MediaObjectCreateOptions>(data: any, mimeType: string, options?: T): Promise<MediaObjectInterface & T>;
36
36
  convert(converters: IdBufferConverter[], mediaObject: MediaObjectRemote, toMimeType: string): Promise<{
37
37
  data: Buffer | string | any;
38
38
  mimeType: string;
@@ -4,16 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MediaManagerHostImpl = exports.MediaManagerImpl = exports.MediaManagerBase = void 0;
7
- const types_1 = require("@scrypted/types");
8
7
  const ffmpeg_static_1 = require("@scrypted/ffmpeg-static");
8
+ const types_1 = require("@scrypted/types");
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const https_1 = __importDefault(require("https"));
11
11
  const node_dijkstra_1 = __importDefault(require("node-dijkstra"));
12
12
  const os_1 = __importDefault(require("os"));
13
13
  const path_1 = __importDefault(require("path"));
14
+ const send_1 = __importDefault(require("send"));
14
15
  const whatwg_mimetype_1 = __importDefault(require("whatwg-mimetype"));
15
16
  const mediaobject_1 = require("./mediaobject");
16
- const send_1 = __importDefault(require("send"));
17
17
  function typeMatches(target, candidate) {
18
18
  // candidate will accept anything
19
19
  if (candidate === '*' || target === '*')
@@ -170,7 +170,7 @@ class MediaManagerBase {
170
170
  return ret;
171
171
  }
172
172
  getConverters() {
173
- const converters = Object.entries(this.getSystemState())
173
+ const bufferConverters = Object.entries(this.getSystemState())
174
174
  .filter(([id, state]) => state[types_1.ScryptedInterfaceProperty.interfaces]?.value?.includes(types_1.ScryptedInterface.BufferConverter))
175
175
  .map(([id]) => {
176
176
  const device = this.getDeviceById(id);
@@ -184,6 +184,26 @@ class MediaManagerBase {
184
184
  },
185
185
  };
186
186
  });
187
+ const mediaConverters = Object.entries(this.getSystemState())
188
+ .filter(([id, state]) => state[types_1.ScryptedInterfaceProperty.interfaces]?.value?.includes(types_1.ScryptedInterface.MediaConverter))
189
+ .map(([id]) => {
190
+ const device = this.getDeviceById(id);
191
+ return (device.converters || []).map(([fromMimeType, toMimeType], index) => {
192
+ return {
193
+ id: `${id}-${index}`,
194
+ name: device.name,
195
+ fromMimeType,
196
+ toMimeType,
197
+ convert(data, fromMimeType, toMimeType, options) {
198
+ // MediaConverter is injected the plugin's node runtime which may be compiled against an
199
+ // older sdk that does not have MediaConverter. use the older convert method instead.
200
+ // once BufferConverter is removed, this can be simplified to device.convertMedia.
201
+ return (device.convertMedia || device.convert)(data, fromMimeType, toMimeType, options);
202
+ },
203
+ };
204
+ });
205
+ });
206
+ const converters = [...mediaConverters.flat(), ...bufferConverters];
187
207
  // builtins should be after system converters. these should not be overriden by system,
188
208
  // as it could cause system instability with misconfiguration.
189
209
  converters.push(...this.builtinConverters);
@@ -226,8 +246,6 @@ class MediaManagerBase {
226
246
  return url.data.toString();
227
247
  }
228
248
  createMediaObjectRemote(data, mimeType, options) {
229
- if (typeof data === 'string')
230
- throw new Error('string is not a valid type. if you intended to send a url, use createMediaObjectFromUrl.');
231
249
  if (!mimeType)
232
250
  throw new Error('no mimeType provided');
233
251
  if (mimeType === types_1.ScryptedMimeTypes.MediaObject)
@@ -235,10 +253,8 @@ class MediaManagerBase {
235
253
  if (data.constructor?.name === Object.name)
236
254
  data = Buffer.from(JSON.stringify(data));
237
255
  const sourceId = typeof options?.sourceId === 'string' ? options?.sourceId : this.getPluginDeviceId();
238
- if (sourceId) {
239
- options ||= {};
240
- options.sourceId = sourceId;
241
- }
256
+ options ||= {};
257
+ options.sourceId = sourceId;
242
258
  return new mediaobject_1.MediaObject(mimeType, data, options);
243
259
  }
244
260
  async createFFmpegMediaObject(ffMpegInput, options) {
@@ -248,19 +264,7 @@ class MediaManagerBase {
248
264
  const url = new URL(data);
249
265
  const scheme = url.protocol.slice(0, -1);
250
266
  const mimeType = types_1.ScryptedMimeTypes.SchemePrefix + scheme;
251
- const sourceId = typeof options?.sourceId === 'string' ? options?.sourceId : this.getPluginDeviceId();
252
- class MediaObjectImpl {
253
- __proxy_props = {
254
- mimeType,
255
- sourceId,
256
- };
257
- mimeType = mimeType;
258
- sourceId = sourceId;
259
- async getData() {
260
- return Promise.resolve(data);
261
- }
262
- }
263
- return new MediaObjectImpl();
267
+ return this.createMediaObjectRemote(data, mimeType, options);
264
268
  }
265
269
  async createMediaObject(data, mimeType, options) {
266
270
  return this.createMediaObjectRemote(data, mimeType, options);
@@ -287,6 +291,42 @@ class MediaManagerBase {
287
291
  const mediaNode = {};
288
292
  nodes['mediaObject'] = mediaNode;
289
293
  nodes['output'] = {};
294
+ const minimumWeight = .000001;
295
+ for (const toMimeType of mediaObject.toMimeTypes instanceof Array ? mediaObject.toMimeTypes : []) {
296
+ console.log('biultin toMimeType', toMimeType);
297
+ const id = `media-${toMimeType}`;
298
+ converterMap.set(id, {
299
+ id,
300
+ name: `MediaObject to ${toMimeType}`,
301
+ fromMimeType: mediaObject.mimeType,
302
+ toMimeType,
303
+ convert: async (data, fromMimeType, toMimeType) => {
304
+ return mediaObject.convert(toMimeType);
305
+ }
306
+ });
307
+ // connect the media object to the intrinsic target mime type
308
+ mediaNode[id] = minimumWeight;
309
+ const node = nodes[id] = {};
310
+ const convertedMime = new whatwg_mimetype_1.default(toMimeType);
311
+ // target output matches
312
+ if (mimeMatches(outputMime, convertedMime) || toMimeType === types_1.ScryptedMimeTypes.MediaObject) {
313
+ node['output'] = minimumWeight;
314
+ }
315
+ // connect the intrinsic converter to other converters
316
+ for (const candidate of converters) {
317
+ try {
318
+ const candidateMime = new whatwg_mimetype_1.default(candidate.fromMimeType);
319
+ if (!mimeMatches(convertedMime, candidateMime))
320
+ continue;
321
+ const outputWeight = parseFloat(candidateMime.parameters.get('converter-weight')) || (candidateMime.essence === '*/*' ? 1000 : 1);
322
+ const candidateId = candidate.id;
323
+ node[candidateId] = outputWeight;
324
+ }
325
+ catch (e) {
326
+ // console.warn(candidate.name, 'skipping converter due to error', e)
327
+ }
328
+ }
329
+ }
290
330
  for (const converter of converters) {
291
331
  try {
292
332
  const inputMime = new whatwg_mimetype_1.default(converter.fromMimeType);
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/plugin/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/plugin/media.ts"],"names":[],"mappings":";;;;;;AAAA,2DAAwD;AACxD,2CAAgU;AAChU,4CAAoB;AACpB,kDAA0B;AAC1B,kEAAkC;AAClC,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AACxB,sEAAuC;AACvC,+CAA4C;AAG5C,SAAS,WAAW,CAAC,MAAc,EAAE,SAAiB;IAClD,iCAAiC;IACjC,IAAI,SAAS,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QACnC,OAAO,IAAI,CAAC;IAChB,OAAO,MAAM,KAAK,SAAS,CAAC;AAChC,CAAC;AAED,SAAS,WAAW,CAAC,MAAgB,EAAE,SAAmB;IACtD,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,eAAK,CAAC,KAAK,CAAC;IAC/B,kBAAkB,EAAE,KAAK;CAC5B,CAAC,CAAC;AAOH,SAAS,YAAY,CAAC,CAAS;IAC3B,OAAO,UAAU,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IACzB,OAAO,QAAQ,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,MAAsB,gBAAgB;IAClC,iBAAiB,GAAwB,EAAE,CAAC;IAC5C,eAAe,GAAwB,EAAE,CAAC;IAE1C;QACI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACxB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBAC/C,IAAI,EAAE,gBAAgB;gBACtB,YAAY,EAAE,yBAAiB,CAAC,YAAY,GAAG,CAAC;gBAChD,UAAU,EAAE,yBAAiB,CAAC,WAAW;gBACzC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE;oBAC9C,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC;oBAC9D,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACjF,OAAO,EAAE,CAAC;gBACd,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC/C,IAAI,EAAE,gBAAgB;YACtB,YAAY,EAAE,yBAAiB,CAAC,YAAY,GAAG,MAAM;YACrD,UAAU,EAAE,yBAAiB,CAAC,WAAW;YACzC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE;gBAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAE/C,IAAI,UAAU,KAAK,yBAAiB,CAAC,WAAW,EAAE,CAAC;oBAC/C,MAAM,WAAW,GAAgB;wBAC7B,GAAG;wBACH,cAAc,EAAE;4BACZ,IAAI,EAAE,QAAQ;yBACjB;qBACJ,CAAC;oBACF,OAAO,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;gBACrD,CAAC;gBAED,MAAM,EAAE,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,EAAE,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1C,OAAO,EAAE,CAAC;YACd,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC/C,IAAI,EAAE,8BAA8B;YACpC,YAAY,EAAE,yBAAiB,CAAC,GAAG;YACnC,UAAU,EAAE,yBAAiB,CAAC,WAAW;YACzC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY;gBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAgB;oBACtB,GAAG;oBACH,cAAc,EAAE;wBACZ,IAAI,EAAE,GAAG;qBACZ;iBACJ,CAAA;gBAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC/C,IAAI,EAAE,yCAAyC;YAC/C,YAAY,EAAE,yBAAiB,CAAC,WAAW;YAC3C,UAAU,EAAE,yBAAiB,CAAC,cAAc;YAC5C,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,YAAoB;gBAC5C,OAAO,IAAI,CAAC;YAChB,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC/C,IAAI,EAAE,yCAAyC;YAC/C,YAAY,EAAE,yBAAiB,CAAC,cAAc;YAC9C,UAAU,EAAE,yBAAiB,CAAC,WAAW;YACzC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,YAAoB;gBACpC,MAAM,QAAQ,GAAmB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE7D,MAAM,cAAc,GAAa;oBAC7B,IAAI,EAAE,QAAQ,CAAC,GAAG;iBACrB,CAAC;gBAEF,MAAM,GAAG,GAAgB,MAAM,CAAC,MAAM,CAAC;oBACnC,cAAc;iBACjB,EAAE,QAAQ,CAAC,CAAC;gBAEb,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;oBACvB,cAAc,CAAC,OAAO,CAClB,iBAAiB,EAAE,KAAK,CAC3B,CAAC;gBACN,CAAC;gBAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC;SACJ,CAAC,CAAC;QAEH,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC/C,IAAI,EAAE,iBAAiB;YACvB,YAAY,EAAE,SAAS;YACvB,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAoB,EAAmB,EAAE;gBAC3D,OAAO,IAAc,CAAC;YAC1B,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAA4B;QAC3C,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAI,WAAiC,EAAE,UAAkB;QACnF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,CAAC;IAOD,KAAK,CAAC,aAAa;QACf,4DAA4D;QAC5D,wBAAwB;QACxB,6EAA6E;QAC7E,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;QACxD,IAAI,CAAC,EAAE,CAAC;YACJ,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,YAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,OAAO,CAAC,CAAC;QACjB,CAAC;QAED,6CAA6C;QAC7C,MAAM;QACN,wDAAwD;QACxD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC3C,IAAI,CAAC,IAAI,YAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QAEb,MAAM,WAAW,GAAG,YAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxE,OAAO,IAAA,6BAAa,GAAE,IAAI,WAAW,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,YAAY;QACd,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;QACrD,IAAI,CAAC,SAAS;YACV,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE;YACzB,SAAS,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC;IAED,aAAa;QACT,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACzD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,iCAAyB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,yBAAiB,CAAC,eAAe,CAAC,CAAC;aACxH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAkB,EAAE,CAAC,CAAC;YACvD,OAAO;gBACH,EAAE;gBACF,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,OAAQ;oBAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBACnE,CAAC;aACiB,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEP,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;aACxD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,iCAAyB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,yBAAiB,CAAC,cAAc,CAAC,CAAC;aACvH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAmC,EAAE,CAAC,CAAC;YAExE,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;gBACvE,OAAO;oBACH,EAAE,EAAE,GAAG,EAAE,IAAI,KAAK,EAAE;oBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,YAAY;oBACZ,UAAU;oBACV,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,OAAQ;wBAC5C,wFAAwF;wBACxF,qFAAqF;wBACrF,kFAAkF;wBAClF,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC5F,CAAC;iBACiB,CAAC;YAC3B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEP,MAAM,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAC;QAEpE,uFAAuF;QACvF,8DAA8D;QAC9D,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE3C,uEAAuE;QACvE,wDAAwD;QACxD,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,uBAAuB,CAAC,WAA0C;QAC9D,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,WAAgC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAI,WAAiC,EAAE,UAAkB;QAC7E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QAClH,OAAO,SAAS,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,oCAAoC,CAAC,WAA0C,EAAE,UAAkB;QACrG,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QACrH,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,yBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACpG,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,WAAiC,EAAE,UAAkB;QAClF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QACrH,OAAO,YAAY,CAAC,IAAc,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,4BAA4B,CAAC,WAA0C,EAAE,UAAkB;QAC7F,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QACrH,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,yBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5F,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IACD,KAAK,CAAC,uBAAuB,CAAC,WAA0C,EAAE,UAAkB;QACxF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QACrH,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,yBAAiB,CAAC,GAAG,CAAC,CAAC;QACvF,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,uBAAuB,CAAqC,IAA6C,EAAE,QAAgB,EAAE,OAAW;QACpI,IAAI,CAAC,QAAQ;YACT,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,yBAAiB,CAAC,WAAW;YAC1C,OAAO,IAAI,CAAC;QAEhB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI;YACtC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,OAAO,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtG,OAAO,KAAK,EAAO,CAAC;QACpB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE5B,OAAO,IAAI,yBAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAoB,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAqC,WAAwB,EAAE,OAAW;QACnG,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,yBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1H,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAqC,IAAY,EAAE,OAAW;QACxF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,yBAAiB,CAAC,YAAY,GAAG,MAAM,CAAC;QAEzD,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAqC,IAAS,EAAE,QAAgB,EAAE,OAAW;QAChG,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAA+B,EAAE,WAA8B,EAAE,UAAkB;QAC7F,+DAA+D;QAC/D,MAAM,SAAS,GAAG,IAAI,yBAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,yBAAQ,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;YACrC,OAAO;gBACH,QAAQ,EAAE,UAAU,CAAC,OAAO;gBAC5B,IAAI,EAAE,MAAM,WAAW,CAAC,OAAO,EAAE;aACpC,CAAA;QACL,CAAC;QAED,IAAI,QAAQ,GAAG,WAAW,EAAE,QAAQ,CAAC;QACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE1D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YACzB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,KAAK,GAAmD,EAAE,CAAC;QACjE,MAAM,SAAS,GAAQ,EAAE,CAAC;QAC1B,KAAK,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;QACjC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAErB,MAAM,aAAa,GAAG,OAAO,CAAC;QAE9B,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/F,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;YAC9C,MAAM,EAAE,GAAG,SAAS,UAAU,EAAE,CAAC;YACjC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE;gBACjB,EAAE;gBACF,IAAI,EAAE,kBAAkB,UAAU,EAAE;gBACpC,YAAY,EAAE,WAAW,CAAC,QAAQ;gBAClC,UAAU;gBACV,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE;oBAC9C,OAAO,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3C,CAAC;aACJ,CAAC,CAAC;YAEH,6DAA6D;YAC7D,SAAS,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC;YAE9B,MAAM,IAAI,GAA+B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,yBAAQ,CAAC,UAAU,CAAC,CAAC;YAE/C,wBAAwB;YACxB,IAAI,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,UAAU,KAAK,yBAAiB,CAAC,WAAW,EAAE,CAAC;gBACzF,IAAI,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;YACnC,CAAC;YAED,sDAAsD;YACtD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACD,MAAM,aAAa,GAAG,IAAI,yBAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAC3D,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC;wBAC1C,SAAS;oBACb,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClI,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC;gBACrC,CAAC;gBACD,OAAO,CAAC,EAAE,CAAC;oBACP,qEAAqE;gBACzE,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,yBAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBACvD,MAAM,aAAa,GAAG,IAAI,yBAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACzD,yEAAyE;gBACzE,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzH,gKAAgK;gBAChK,0DAA0D;gBAC1D,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAA+B,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAE9D,eAAe;gBACf,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACjC,IAAI,CAAC;wBACD,MAAM,aAAa,GAAG,IAAI,yBAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;wBAC3D,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC;4BAC1C,SAAS;wBACb,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAClI,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;wBACjC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,YAAY,CAAC;oBACnD,CAAC;oBACD,OAAO,CAAC,EAAE,CAAC;wBACP,qEAAqE;oBACzE,CAAC;gBACL,CAAC;gBAED,iBAAiB;gBACjB,IAAI,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;oBACpC,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;gBACtC,CAAC;gBAED,wBAAwB;gBACxB,IAAI,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,SAAS,CAAC,UAAU,KAAK,yBAAiB,CAAC,WAAW,EAAE,CAAC;oBACnG,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;gBACjC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,EAAE,CAAC;gBACP,qDAAqD;YACzD,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,uBAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAkB,CAAC;QACnE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;YACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,EAAE,QAAQ,OAAO,UAAU,EAAE,CAAC,CAAC;QACrF,+DAA+D;QAC/D,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,+BAA+B;QAC/B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,SAAS,GAAG,IAAI,yBAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEnD,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,mBAAmB,GAAG,IAAI,yBAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,qBAAqB,GAAG,IAAI,yBAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC1F,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;YACtG,IAAI,cAAc,GAAG,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,cAAc,GAAG,IAAI,yBAAQ,CAAC,cAAc,CAAC,CAAC;gBACpD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC3C,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnE,CAAC;gBACD,cAAc,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC3C,CAAC;YAED,IAAI,SAAS,CAAC,UAAU,KAAK,yBAAiB,CAAC,WAAW,EAAE,CAAC;gBACzD,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAyB,CAAC;gBAC/G,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gBAC5D,OAAO;oBACH,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE,UAAU;iBACvB,CAAC;YACN,CAAC;YAED,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAoB,CAAC;YAC3G,SAAS,GAAG,IAAI,yBAAQ,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO;YACH,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,SAAS,CAAC,OAAO;SAC9B,CAAC;IACN,CAAC;CACJ;AA1bD,4CA0bC;AAED,MAAa,gBAAiB,SAAQ,gBAAgB;IAC/B;IAAqC;IAAxD,YAAmB,aAA4B,EAAS,aAA4B;QAChF,KAAK,EAAE,CAAC;QADO,kBAAa,GAAb,aAAa,CAAe;QAAS,kBAAa,GAAb,aAAa,CAAe;IAEpF,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IAC/C,CAAC;IAED,aAAa,CAAI,EAAU;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,eAAe,CAAC,OAAe,EAAE,QAAgB;QAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;CACJ;AAtBD,4CAsBC;AAED,MAAa,oBAAqB,SAAQ,gBAAgB;IACnC;IACR;IACA;IACA;IAHX,YAAmB,cAAsB,EAC9B,cAAiF,EACjF,OAAgB,EAChB,aAAkC;QACzC,KAAK,EAAE,CAAC;QAJO,mBAAc,GAAd,cAAc,CAAQ;QAC9B,mBAAc,GAAd,cAAc,CAAmE;QACjF,YAAO,GAAP,OAAO,CAAS;QAChB,kBAAa,GAAb,aAAa,CAAqB;IAE7C,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,eAAe,CAAC,OAAe,EAAE,QAAgB;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAfD,oDAeC"}
@@ -1,10 +1,10 @@
1
1
  /// <reference types="node" />
2
- import { MediaObjectOptions } from "@scrypted/types";
2
+ import { MediaObjectCreateOptions } from "@scrypted/types";
3
3
  import { MediaObjectRemote } from "./plugin-api";
4
4
  export declare class MediaObject implements MediaObjectRemote {
5
5
  mimeType: string;
6
6
  data: any;
7
7
  __proxy_props: any;
8
- constructor(mimeType: string, data: any, options: MediaObjectOptions);
8
+ constructor(mimeType: string, data: any, options: MediaObjectCreateOptions);
9
9
  getData(): Promise<Buffer | string>;
10
10
  }
@@ -12,6 +12,8 @@ class MediaObject {
12
12
  this.__proxy_props = {};
13
13
  options ||= {};
14
14
  options.mimeType = mimeType;
15
+ options.convert ||= null;
16
+ options.toMimeTypes ||= null;
15
17
  for (const [key, value] of Object.entries(options)) {
16
18
  if (rpc_1.RpcPeer.isTransportSafe(value))
17
19
  this.__proxy_props[key] = value;
@@ -1 +1 @@
1
- {"version":3,"file":"mediaobject.js","sourceRoot":"","sources":["../../src/plugin/mediaobject.ts"],"names":[],"mappings":";;;AACA,gCAAiC;AAGjC,MAAa,WAAW;IAGD;IAAyB;IAF5C,aAAa,CAAM;IAEnB,YAAmB,QAAgB,EAAS,IAAS,EAAE,OAA2B;QAA/D,aAAQ,GAAR,QAAQ,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAK;QACjD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,aAAO,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnC,IAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;AAjBD,kCAiBC"}
1
+ {"version":3,"file":"mediaobject.js","sourceRoot":"","sources":["../../src/plugin/mediaobject.ts"],"names":[],"mappings":";;;AACA,gCAAiC;AAGjC,MAAa,WAAW;IAGD;IAAyB;IAF5C,aAAa,CAAM;IAEnB,YAAmB,QAAgB,EAAS,IAAS,EAAE,OAAiC;QAArE,aAAQ,GAAR,QAAQ,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAK;QACjD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;QACzB,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;QAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,aAAO,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnC,IAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;AApBD,kCAoBC"}
@@ -5,7 +5,6 @@ import { createRpcDuplexSerializer } from '../../rpc-serializer';
5
5
  import { ChildProcessWorker } from "./child-process-worker";
6
6
  import { RuntimeWorkerOptions } from "./runtime-worker";
7
7
  export declare class PythonRuntimeWorker extends ChildProcessWorker {
8
- static pythonInstalls: Map<string, Promise<string>>;
9
8
  serializer: ReturnType<typeof createRpcDuplexSerializer>;
10
9
  peerin: Writable;
11
10
  peerout: Readable;
@@ -12,6 +12,7 @@ const py_1 = require("py");
12
12
  const stream_1 = require("stream");
13
13
  const packaged_python_1 = require("../../../bin/packaged-python");
14
14
  const rpc_serializer_1 = require("../../rpc-serializer");
15
+ const plugin_volume_1 = require("../plugin-volume");
15
16
  const child_process_worker_1 = require("./child-process-worker");
16
17
  class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
17
18
  static {
@@ -25,7 +26,6 @@ class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
25
26
  catch (e) {
26
27
  }
27
28
  }
28
- static pythonInstalls = new Map();
29
29
  serializer;
30
30
  peerin;
31
31
  peerout;
@@ -103,29 +103,31 @@ class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
103
103
  peerin.pipe(this.worker.stdio[3]);
104
104
  this.worker.stdio[4].pipe(peerout);
105
105
  };
106
- const py = new py_1.PortablePython(pluginPythonVersion);
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);
107
110
  if (fs_1.default.existsSync(py.executablePath)) {
108
111
  pythonPath = py.executablePath;
109
112
  finishSetup();
110
113
  }
111
114
  else {
112
- this.pythonInstallationComplete = false;
113
- let install = PythonRuntimeWorker.pythonInstalls.get(pluginPythonVersion);
114
- if (!install) {
115
- install = (0, packaged_python_1.installScryptedServerRequirements)(pluginPythonVersion);
116
- install.catch(() => { });
117
- PythonRuntimeWorker.pythonInstalls.set(pluginPythonVersion, install);
118
- }
119
- install.then(executablePath => {
120
- pythonPath = executablePath;
121
- finishSetup();
122
- })
123
- .catch(() => {
124
- process.nextTick(() => {
125
- this.emit('error', new Error('Failed to install portable python.'));
126
- });
127
- })
128
- .finally(() => this.pythonInstallationComplete = true);
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
+ })();
129
131
  }
130
132
  }
131
133
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"python-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/python-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"python-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/python-worker.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import { ScryptedRuntime } from "../runtime";
2
2
  export declare class ServiceControl {
3
3
  scrypted: ScryptedRuntime;
4
4
  constructor(scrypted: ScryptedRuntime);
5
- exit(): Promise<void>;
6
5
  restart(): Promise<void>;
7
6
  getUpdateAvailable(): Promise<string>;
8
7
  update(): Promise<void>;
@@ -11,11 +11,10 @@ class ServiceControl {
11
11
  constructor(scrypted) {
12
12
  this.scrypted = scrypted;
13
13
  }
14
- async exit() {
15
- fs_1.default.writeFileSync('.exit', '');
16
- this.restart();
17
- }
18
14
  async restart() {
15
+ // legacy file necessary to exit the npx scrypted service,
16
+ // and allow it to be restarted by launchd or systemd.
17
+ fs_1.default.writeFileSync('.exit', '');
19
18
  process.exit();
20
19
  }
21
20
  async getUpdateAvailable() {
@@ -1 +1 @@
1
- {"version":3,"file":"service-control.js","sourceRoot":"","sources":["../../src/services/service-control.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,oDAAgD;AAGhD,MAAa,cAAc;IACJ;IAAnB,YAAmB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI;QACN,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACpB,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;IACnH,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC1D,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,0BAA0B,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;YACrF,MAAM,IAAA,sBAAS,EAAC;gBACZ,GAAG,EAAE,aAAa;gBAClB,OAAO,EAAE;oBACL,aAAa,EAAE,0BAA0B;iBAC5C;aACJ,CAAC,CAAC;QACP,CAAC;aACI,CAAC;YACF,YAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;CACJ;AAjCD,wCAiCC"}
1
+ {"version":3,"file":"service-control.js","sourceRoot":"","sources":["../../src/services/service-control.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,oDAAgD;AAGhD,MAAa,cAAc;IACJ;IAAnB,YAAmB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO;QACT,0DAA0D;QAC1D,sDAAsD;QACtD,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACpB,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;IACnH,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC1D,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,0BAA0B,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;YACrF,MAAM,IAAA,sBAAS,EAAC;gBACZ,GAAG,EAAE,aAAa;gBAClB,OAAO,EAAE;oBACL,aAAa,EAAE,0BAA0B;iBAC5C;aACJ,CAAC,CAAC;QACP,CAAC;aACI,CAAC;YACF,YAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;CACJ;AA/BD,wCA+BC"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@scrypted/server",
3
- "version": "0.94.32",
3
+ "version": "0.94.34",
4
4
  "description": "",
5
5
  "dependencies": {
6
6
  "@mapbox/node-pre-gyp": "^1.0.11",
7
7
  "@scrypted/ffmpeg-static": "^6.1.0-build1",
8
- "@scrypted/types": "^0.3.17",
8
+ "@scrypted/types": "^0.3.27",
9
9
  "adm-zip": "^0.5.12",
10
10
  "body-parser": "^1.20.2",
11
11
  "cookie-parser": "^1.4.6",
12
12
  "engine.io": "^6.5.4",
13
- "express": "^4.18.3",
13
+ "express": "^4.19.0",
14
14
  "follow-redirects": "^1.15.6",
15
15
  "http-auth": "^4.2.0",
16
16
  "ip": "^2.0.1",
@@ -20,7 +20,7 @@
20
20
  "node-dijkstra": "^2.5.0",
21
21
  "node-forge": "^1.3.1",
22
22
  "node-gyp": "^10.0.1",
23
- "py": "npm:@bjia56/portable-python@^0.1.18",
23
+ "py": "npm:@bjia56/portable-python@^0.1.23",
24
24
  "router": "^1.3.8",
25
25
  "semver": "^7.6.0",
26
26
  "sharp": "^0.33.2",
@@ -1,14 +1,14 @@
1
- import { BufferConverter, DeviceManager, FFmpegInput, MediaManager, MediaObject as MediaObjectInterface, MediaObjectOptions, MediaStreamUrl, ScryptedDevice, ScryptedInterface, ScryptedInterfaceProperty, ScryptedMimeTypes, ScryptedNativeId, SystemDeviceState, SystemManager } from "@scrypted/types";
2
1
  import { getFfmpegPath } from '@scrypted/ffmpeg-static';
2
+ import { BufferConverter, DeviceManager, FFmpegInput, MediaConverter, MediaManager, MediaObjectCreateOptions, MediaObject as MediaObjectInterface, MediaStreamUrl, ScryptedDevice, ScryptedInterface, ScryptedInterfaceProperty, ScryptedMimeTypes, ScryptedNativeId, SystemDeviceState, SystemManager } from "@scrypted/types";
3
3
  import fs from 'fs';
4
4
  import https from 'https';
5
5
  import Graph from 'node-dijkstra';
6
6
  import os from 'os';
7
7
  import path from 'path';
8
+ import send from 'send';
8
9
  import MimeType from 'whatwg-mimetype';
9
10
  import { MediaObject } from "./mediaobject";
10
11
  import { MediaObjectRemote } from "./plugin-api";
11
- import send from 'send';
12
12
 
13
13
  function typeMatches(target: string, candidate: string): boolean {
14
14
  // candidate will accept anything
@@ -204,7 +204,7 @@ export abstract class MediaManagerBase implements MediaManager {
204
204
  }
205
205
 
206
206
  getConverters(): IdBufferConverter[] {
207
- const converters = Object.entries(this.getSystemState())
207
+ const bufferConverters = Object.entries(this.getSystemState())
208
208
  .filter(([id, state]) => state[ScryptedInterfaceProperty.interfaces]?.value?.includes(ScryptedInterface.BufferConverter))
209
209
  .map(([id]) => {
210
210
  const device = this.getDeviceById<BufferConverter>(id);
@@ -219,6 +219,29 @@ export abstract class MediaManagerBase implements MediaManager {
219
219
  } as IdBufferConverter;
220
220
  });
221
221
 
222
+ const mediaConverters = Object.entries(this.getSystemState())
223
+ .filter(([id, state]) => state[ScryptedInterfaceProperty.interfaces]?.value?.includes(ScryptedInterface.MediaConverter))
224
+ .map(([id]) => {
225
+ const device = this.getDeviceById<MediaConverter & BufferConverter>(id);
226
+
227
+ return (device.converters || []).map(([fromMimeType, toMimeType], index) => {
228
+ return {
229
+ id: `${id}-${index}`,
230
+ name: device.name,
231
+ fromMimeType,
232
+ toMimeType,
233
+ convert(data, fromMimeType, toMimeType, options?) {
234
+ // MediaConverter is injected the plugin's node runtime which may be compiled against an
235
+ // older sdk that does not have MediaConverter. use the older convert method instead.
236
+ // once BufferConverter is removed, this can be simplified to device.convertMedia.
237
+ return (device.convertMedia || device.convert)(data, fromMimeType, toMimeType, options);
238
+ },
239
+ } as IdBufferConverter;
240
+ });
241
+ });
242
+
243
+ const converters = [...mediaConverters.flat(), ...bufferConverters];
244
+
222
245
  // builtins should be after system converters. these should not be overriden by system,
223
246
  // as it could cause system instability with misconfiguration.
224
247
  converters.push(...this.builtinConverters);
@@ -266,9 +289,7 @@ export abstract class MediaManagerBase implements MediaManager {
266
289
  return url.data.toString();
267
290
  }
268
291
 
269
- createMediaObjectRemote<T extends MediaObjectOptions>(data: any | Buffer | Promise<string | Buffer>, mimeType: string, options?: T): MediaObjectRemote & T {
270
- if (typeof data === 'string')
271
- throw new Error('string is not a valid type. if you intended to send a url, use createMediaObjectFromUrl.');
292
+ createMediaObjectRemote<T extends MediaObjectCreateOptions>(data: any | Buffer | Promise<string | Buffer>, mimeType: string, options?: T): MediaObjectRemote & T {
272
293
  if (!mimeType)
273
294
  throw new Error('no mimeType provided');
274
295
  if (mimeType === ScryptedMimeTypes.MediaObject)
@@ -278,40 +299,25 @@ export abstract class MediaManagerBase implements MediaManager {
278
299
  data = Buffer.from(JSON.stringify(data));
279
300
 
280
301
  const sourceId = typeof options?.sourceId === 'string' ? options?.sourceId : this.getPluginDeviceId();
281
- if (sourceId) {
282
- options ||= {} as T;
283
- options.sourceId = sourceId;
284
- }
302
+ options ||= {} as T;
303
+ options.sourceId = sourceId;
285
304
 
286
305
  return new MediaObject(mimeType, data, options) as MediaObject & T;
287
306
  }
288
307
 
289
- async createFFmpegMediaObject(ffMpegInput: FFmpegInput, options?: MediaObjectOptions): Promise<MediaObjectInterface> {
308
+ async createFFmpegMediaObject<T extends MediaObjectCreateOptions>(ffMpegInput: FFmpegInput, options?: T): Promise<MediaObjectInterface & T> {
290
309
  return this.createMediaObjectRemote(Buffer.from(JSON.stringify(ffMpegInput)), ScryptedMimeTypes.FFmpegInput, options);
291
310
  }
292
311
 
293
- async createMediaObjectFromUrl(data: string, options?: MediaObjectOptions): Promise<MediaObjectInterface> {
312
+ async createMediaObjectFromUrl<T extends MediaObjectCreateOptions>(data: string, options?: T): Promise<MediaObjectInterface & T> {
294
313
  const url = new URL(data);
295
314
  const scheme = url.protocol.slice(0, -1);
296
315
  const mimeType = ScryptedMimeTypes.SchemePrefix + scheme;
297
316
 
298
- const sourceId = typeof options?.sourceId === 'string' ? options?.sourceId : this.getPluginDeviceId();
299
- class MediaObjectImpl implements MediaObjectRemote {
300
- __proxy_props = {
301
- mimeType,
302
- sourceId,
303
- }
304
-
305
- mimeType = mimeType;
306
- sourceId = sourceId;
307
- async getData(): Promise<Buffer | string> {
308
- return Promise.resolve(data);
309
- }
310
- }
311
- return new MediaObjectImpl();
317
+ return this.createMediaObjectRemote(data, mimeType, options);
312
318
  }
313
319
 
314
- async createMediaObject<T extends MediaObjectOptions>(data: any, mimeType: string, options?: T): Promise<MediaObjectInterface & T> {
320
+ async createMediaObject<T extends MediaObjectCreateOptions>(data: any, mimeType: string, options?: T): Promise<MediaObjectInterface & T> {
315
321
  return this.createMediaObjectRemote(data, mimeType, options);
316
322
  }
317
323
 
@@ -341,6 +347,49 @@ export abstract class MediaManagerBase implements MediaManager {
341
347
  const mediaNode: any = {};
342
348
  nodes['mediaObject'] = mediaNode;
343
349
  nodes['output'] = {};
350
+
351
+ const minimumWeight = .000001;
352
+
353
+ for (const toMimeType of mediaObject.toMimeTypes instanceof Array ? mediaObject.toMimeTypes : []) {
354
+ console.log('biultin toMimeType', toMimeType);
355
+ const id = `media-${toMimeType}`;
356
+ converterMap.set(id, {
357
+ id,
358
+ name: `MediaObject to ${toMimeType}`,
359
+ fromMimeType: mediaObject.mimeType,
360
+ toMimeType,
361
+ convert: async (data, fromMimeType, toMimeType) => {
362
+ return mediaObject.convert(toMimeType);
363
+ }
364
+ });
365
+
366
+ // connect the media object to the intrinsic target mime type
367
+ mediaNode[id] = minimumWeight;
368
+
369
+ const node: { [edge: string]: number } = nodes[id] = {};
370
+ const convertedMime = new MimeType(toMimeType);
371
+
372
+ // target output matches
373
+ if (mimeMatches(outputMime, convertedMime) || toMimeType === ScryptedMimeTypes.MediaObject) {
374
+ node['output'] = minimumWeight;
375
+ }
376
+
377
+ // connect the intrinsic converter to other converters
378
+ for (const candidate of converters) {
379
+ try {
380
+ const candidateMime = new MimeType(candidate.fromMimeType);
381
+ if (!mimeMatches(convertedMime, candidateMime))
382
+ continue;
383
+ const outputWeight = parseFloat(candidateMime.parameters.get('converter-weight')) || (candidateMime.essence === '*/*' ? 1000 : 1);
384
+ const candidateId = candidate.id;
385
+ node[candidateId] = outputWeight;
386
+ }
387
+ catch (e) {
388
+ // console.warn(candidate.name, 'skipping converter due to error', e)
389
+ }
390
+ }
391
+ }
392
+
344
393
  for (const converter of converters) {
345
394
  try {
346
395
  const inputMime = new MimeType(converter.fromMimeType);
@@ -1,14 +1,17 @@
1
- import { MediaObjectOptions } from "@scrypted/types";
1
+ import { MediaObjectCreateOptions } from "@scrypted/types";
2
2
  import { RpcPeer } from "../rpc";
3
3
  import { MediaObjectRemote } from "./plugin-api";
4
4
 
5
5
  export class MediaObject implements MediaObjectRemote {
6
6
  __proxy_props: any;
7
7
 
8
- constructor(public mimeType: string, public data: any, options: MediaObjectOptions) {
8
+ constructor(public mimeType: string, public data: any, options: MediaObjectCreateOptions) {
9
9
  this.__proxy_props = {}
10
10
  options ||= {};
11
11
  options.mimeType = mimeType;
12
+ options.convert ||= null;
13
+ options.toMimeTypes ||= null;
14
+
12
15
  for (const [key, value] of Object.entries(options)) {
13
16
  if (RpcPeer.isTransportSafe(value))
14
17
  this.__proxy_props[key] = value;
@@ -7,6 +7,7 @@ import { PassThrough, Readable, Writable } from 'stream';
7
7
  import { installScryptedServerRequirements, version as packagedPythonVersion } from '../../../bin/packaged-python';
8
8
  import { RpcMessage, RpcPeer } from "../../rpc";
9
9
  import { createRpcDuplexSerializer } from '../../rpc-serializer';
10
+ import { getPluginVolume } from '../plugin-volume';
10
11
  import { ChildProcessWorker } from "./child-process-worker";
11
12
  import { RuntimeWorkerOptions } from "./runtime-worker";
12
13
 
@@ -23,8 +24,6 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
23
24
  }
24
25
  }
25
26
 
26
- static pythonInstalls = new Map<string, Promise<string>>();
27
-
28
27
  serializer: ReturnType<typeof createRpcDuplexSerializer>;
29
28
  peerin: Writable;
30
29
  peerout: Readable;
@@ -128,30 +127,32 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
128
127
  (this.worker.stdio[4] as Readable).pipe(peerout);
129
128
  };
130
129
 
131
- const py = new PortablePython(pluginPythonVersion);
130
+ const pyVersion = require('py/package.json').version;
131
+ const pyPath = path.join(getPluginVolume(pluginId), 'py');
132
+ const portableInstallPath = path.join(pyPath, pyVersion);
133
+
134
+ const py = new PortablePython(pluginPythonVersion, portableInstallPath);
132
135
  if (fs.existsSync(py.executablePath)) {
133
136
  pythonPath = py.executablePath;
134
137
  finishSetup();
135
138
  }
136
139
  else {
137
- this.pythonInstallationComplete = false;
138
- let install = PythonRuntimeWorker.pythonInstalls.get(pluginPythonVersion);
139
- if (!install) {
140
- install = installScryptedServerRequirements(pluginPythonVersion);
141
- install.catch(() => { });
142
- PythonRuntimeWorker.pythonInstalls.set(pluginPythonVersion, install);
143
- }
144
-
145
- install.then(executablePath => {
146
- pythonPath = executablePath;
147
- finishSetup();
148
- })
149
- .catch(() => {
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) {
150
148
  process.nextTick(() => {
151
149
  this.emit('error', new Error('Failed to install portable python.'));
152
- })
153
- })
154
- .finally(() => this.pythonInstallationComplete = true);
150
+ });
151
+ }
152
+ finally {
153
+ this.pythonInstallationComplete = true
154
+ }
155
+ })();
155
156
  }
156
157
  }
157
158
  else {
@@ -6,12 +6,10 @@ export class ServiceControl {
6
6
  constructor(public scrypted: ScryptedRuntime) {
7
7
  }
8
8
 
9
- async exit() {
10
- fs.writeFileSync('.exit', '');
11
- this.restart();
12
- }
13
-
14
9
  async restart() {
10
+ // legacy file necessary to exit the npx scrypted service,
11
+ // and allow it to be restarted by launchd or systemd.
12
+ fs.writeFileSync('.exit', '');
15
13
  process.exit();
16
14
  }
17
15