@scrypted/server 0.58.0 → 0.61.0

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.
Files changed (62) hide show
  1. package/dist/cert.js +1 -1
  2. package/dist/cert.js.map +1 -1
  3. package/dist/event-registry.js.map +1 -1
  4. package/dist/http-interfaces.js.map +1 -1
  5. package/dist/infer-defaults.js.map +1 -1
  6. package/dist/level.js.map +1 -1
  7. package/dist/listen-zero.d.ts +1 -1
  8. package/dist/listen-zero.js +2 -2
  9. package/dist/listen-zero.js.map +1 -1
  10. package/dist/logger.js.map +1 -1
  11. package/dist/media-helpers.js +1 -0
  12. package/dist/media-helpers.js.map +1 -1
  13. package/dist/mixin/mixin-cycle.js.map +1 -1
  14. package/dist/plugin/acl.js.map +1 -1
  15. package/dist/plugin/descriptor.js.map +1 -1
  16. package/dist/plugin/media.js +2 -2
  17. package/dist/plugin/media.js.map +1 -1
  18. package/dist/plugin/mediaobject.js.map +1 -1
  19. package/dist/plugin/plugin-api.js.map +1 -1
  20. package/dist/plugin/plugin-console.js.map +1 -1
  21. package/dist/plugin/plugin-device.js.map +1 -1
  22. package/dist/plugin/plugin-host-api.js.map +1 -1
  23. package/dist/plugin/plugin-host.js.map +1 -1
  24. package/dist/plugin/plugin-http.js.map +1 -1
  25. package/dist/plugin/plugin-lazy-remote.js.map +1 -1
  26. package/dist/plugin/plugin-npm-dependencies.js.map +1 -1
  27. package/dist/plugin/plugin-remote-stats.js.map +1 -1
  28. package/dist/plugin/plugin-remote-websocket.js.map +1 -1
  29. package/dist/plugin/plugin-remote-worker.js.map +1 -1
  30. package/dist/plugin/plugin-remote.js.map +1 -1
  31. package/dist/plugin/plugin-repl.js.map +1 -1
  32. package/dist/plugin/plugin-state-check.js.map +1 -1
  33. package/dist/plugin/plugin-volume.js.map +1 -1
  34. package/dist/plugin/runtime/node-fork-worker.js.map +1 -1
  35. package/dist/plugin/runtime/node-thread-worker.js.map +1 -1
  36. package/dist/plugin/runtime/python-worker.js.map +1 -1
  37. package/dist/plugin/system.js.map +1 -1
  38. package/dist/rpc-serializer.js +36 -21
  39. package/dist/rpc-serializer.js.map +1 -1
  40. package/dist/rpc.js.map +1 -1
  41. package/dist/runtime.js.map +1 -1
  42. package/dist/scrypted-main-exports.js.map +1 -1
  43. package/dist/scrypted-plugin-main.js.map +1 -1
  44. package/dist/scrypted-server-main.js.map +1 -1
  45. package/dist/server-settings.js.map +1 -1
  46. package/dist/services/addresses.js.map +1 -1
  47. package/dist/services/alerts.js.map +1 -1
  48. package/dist/services/info.js.map +1 -1
  49. package/dist/services/plugin.js.map +1 -1
  50. package/dist/services/service-control.d.ts +1 -5
  51. package/dist/services/service-control.js +1 -2
  52. package/dist/services/service-control.js.map +1 -1
  53. package/dist/services/users.js.map +1 -1
  54. package/dist/state.js.map +1 -1
  55. package/dist/threading.js.map +1 -1
  56. package/dist/usertoken.js.map +1 -1
  57. package/package.json +24 -23
  58. package/src/listen-zero.ts +2 -2
  59. package/src/media-helpers.ts +1 -0
  60. package/src/plugin/media.ts +2 -2
  61. package/src/rpc-serializer.ts +38 -24
  62. package/src/services/service-control.ts +1 -2
@@ -363,7 +363,7 @@ export abstract class MediaManagerBase implements MediaManager {
363
363
  node[candidateId] = inputWeight + outputWeight;
364
364
  }
365
365
  catch (e) {
366
- console.warn(candidate.name, 'skipping converter due to error', e)
366
+ // console.warn(candidate.name, 'skipping converter due to error', e)
367
367
  }
368
368
  }
369
369
 
@@ -378,7 +378,7 @@ export abstract class MediaManagerBase implements MediaManager {
378
378
  }
379
379
  }
380
380
  catch (e) {
381
- console.warn('skipping converter due to error', e)
381
+ // console.warn('skipping converter due to error', e)
382
382
  }
383
383
  }
384
384
 
@@ -112,38 +112,52 @@ export function createRpcDuplexSerializer(writable: {
112
112
 
113
113
  let header: Buffer;
114
114
  let pending: Buffer;
115
-
116
- const readPending = (length: number) => {
117
- if (!pending || pending.length < length)
118
- return;
119
-
120
- const ret = pending.slice(0, length);
121
- pending = pending.slice(length);
122
- if (!pending.length)
123
- pending = undefined;
124
- return ret;
125
- }
115
+ let offset: number;
116
+ let type: number;
126
117
 
127
118
  const onData = (data: Buffer) => {
128
- if (!pending)
129
- pending = data;
130
- else
131
- pending = Buffer.concat([pending, data]);
132
-
133
- while (true) {
134
- if (!header) {
135
- header = readPending(5);
119
+ while (data.length) {
120
+ if (!pending) {
136
121
  if (!header)
122
+ header = data;
123
+ else
124
+ header = Buffer.concat([header, data]);
125
+ if (header.length < 5)
137
126
  return;
127
+
128
+ // slice is used below because in web environment,
129
+ // babel seems to return a Uint8Arrray when subarray is called.
130
+ data = header.slice(5);
131
+ // length includes type field.
132
+ const length = header.readUInt32BE(0) - 1;
133
+ type = header.readUInt8(4);
134
+ if (data.length >= length && type === 0) {
135
+ // no need to alloc a buffer for this, since it can be immediately parsed
136
+ // as json.
137
+ pending = data.length === length ? data : data.slice(0, length);
138
+ offset = length;
139
+ data = data.slice(length);
140
+ }
141
+ else {
142
+ pending = Buffer.alloc(length);
143
+ offset = 0;
144
+ }
145
+ header = undefined;
138
146
  }
139
147
 
140
- const length = header.readUInt32BE(0);
141
- const type = header.readUInt8(4);
142
- const payload: Buffer = readPending(length - 1);
143
- if (!payload)
148
+ const need = pending.length - offset;
149
+ if (need) {
150
+ const sub = data.slice(0, need);
151
+ data = data.slice(need);
152
+ pending.set(sub, offset);
153
+ offset += sub.length;
154
+ }
155
+
156
+ if (offset !== pending.length)
144
157
  return;
145
158
 
146
- header = undefined;
159
+ const payload = pending;
160
+ pending = undefined;
147
161
 
148
162
  if (type === 0) {
149
163
  try {
@@ -23,12 +23,11 @@ export class ServiceControl {
23
23
  const webhookUpdate = process.env.SCRYPTED_WEBHOOK_UPDATE;
24
24
  if (webhookUpdate) {
25
25
  const webhookUpdateAuthorization = process.env.SCRYPTED_WEBHOOK_UPDATE_AUTHORIZATION;
26
- const json = await fetchJSON(webhookUpdate, {
26
+ await fetchJSON(webhookUpdate, {
27
27
  headers: {
28
28
  Authorization: webhookUpdateAuthorization,
29
29
  }
30
30
  });
31
- return json;
32
31
  }
33
32
  else {
34
33
  fs.writeFileSync('.update', '');