@scrypted/server 0.119.0 → 0.119.2
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.
- package/dist/fetch/http-fetch.js +1 -1
- package/dist/fetch/http-fetch.js.map +1 -1
- package/dist/fetch/index.js +1 -1
- package/dist/fetch/index.js.map +1 -1
- package/dist/media-helpers.js.map +1 -1
- package/dist/plugin/runtime/child-process-worker.js +6 -0
- package/dist/plugin/runtime/child-process-worker.js.map +1 -1
- package/package.json +1 -1
- package/python/plugin_remote.py +144 -8
- package/src/fetch/http-fetch.ts +7 -7
- package/src/fetch/index.ts +6 -6
- package/src/media-helpers.ts +4 -4
- package/src/plugin/runtime/child-process-worker.ts +6 -0
package/dist/fetch/http-fetch.js
CHANGED
@@ -96,7 +96,7 @@ async function httpFetch(options) {
|
|
96
96
|
if (options?.checkStatusCode === undefined || options?.checkStatusCode) {
|
97
97
|
try {
|
98
98
|
const checker = typeof options?.checkStatusCode === 'function' ? options.checkStatusCode : _1.checkStatus;
|
99
|
-
if (!checker(response.statusCode))
|
99
|
+
if (!response.statusCode || !checker(response.statusCode))
|
100
100
|
throw new Error(`http response statusCode ${response.statusCode}`);
|
101
101
|
}
|
102
102
|
catch (e) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"http-fetch.js","sourceRoot":"","sources":["../../src/fetch/http-fetch.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"http-fetch.js","sourceRoot":"","sources":["../../src/fetch/http-fetch.ts"],"names":[],"mappings":"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"}
|
package/dist/fetch/index.js
CHANGED
@@ -91,7 +91,7 @@ function createStringOrBufferBody(headers, body) {
|
|
91
91
|
else if (typeof body === 'string') {
|
92
92
|
contentType = 'text/plain';
|
93
93
|
}
|
94
|
-
if (!hasHeader(headers, 'Content-Type'))
|
94
|
+
if (contentType && !hasHeader(headers, 'Content-Type'))
|
95
95
|
setHeader(headers, 'Content-Type', contentType);
|
96
96
|
if (!hasHeader(headers, 'Content-Length')) {
|
97
97
|
body = Buffer.from(body);
|
package/dist/fetch/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"media-helpers.js","sourceRoot":"","sources":["../src/media-helpers.ts"],"names":[],"mappings":";;;;;AAUA,wCA2BC;AAED,wDA+BC;AAED,4DAwBC;AA/FD,sDAA8B;AAC9B,mCAAgC;AAEhC,MAAM,QAAQ,GAAG;IACb,2BAA2B;IAC3B,WAAW;IACX,kBAAkB;CACrB,CAAC;AAEK,KAAK,UAAU,cAAc,CAAC,EAAgB;IACjD,IAAI,CAAC,EAAE;QACH,OAAO;IACX,IAAI,EAAE,CAAC,QAAQ,IAAI,IAAI;QACnB,OAAO;IACX,MAAM,IAAI,OAAO,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;QAC9B,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvB,mDAAmD;QACnD,IAAI,CAAC;YACD,EAAE,CAAC,
|
1
|
+
{"version":3,"file":"media-helpers.js","sourceRoot":"","sources":["../src/media-helpers.ts"],"names":[],"mappings":"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"}
|
@@ -17,6 +17,12 @@ class ChildProcessWorker extends ws_1.EventEmitter {
|
|
17
17
|
this.worker.on('disconnect', () => this.emit('error', new Error('disconnect')));
|
18
18
|
this.worker.on('exit', (code, signal) => this.emit('exit', code, signal));
|
19
19
|
this.worker.on('error', e => this.emit('error', e));
|
20
|
+
// aggressively catch errors
|
21
|
+
// ECONNRESET can be raised when the child process is killed
|
22
|
+
for (const stdio of this.worker.stdio || []) {
|
23
|
+
if (stdio)
|
24
|
+
stdio.on('error', e => this.emit('error', e));
|
25
|
+
}
|
20
26
|
}
|
21
27
|
get pid() {
|
22
28
|
return this.worker?.pid;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"child-process-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/child-process-worker.ts"],"names":[],"mappings":";;;AACA,2BAAkC;AAIlC,MAAsB,kBAAmB,SAAQ,iBAAY;IAOtC;IANT,MAAM,CAA6B;IAE7C,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,YAAmB,QAAgB,EAAE,OAA6B;QAC9D,KAAK,EAAE,CAAC;QADO,aAAQ,GAAR,QAAQ,CAAQ;IAEnC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,MAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAClH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"child-process-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/child-process-worker.ts"],"names":[],"mappings":";;;AACA,2BAAkC;AAIlC,MAAsB,kBAAmB,SAAQ,iBAAY;IAOtC;IANT,MAAM,CAA6B;IAE7C,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,YAAmB,QAAgB,EAAE,OAA6B;QAC9D,KAAK,EAAE,CAAC;QADO,aAAQ,GAAR,QAAQ,CAAQ;IAEnC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,MAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAClH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,4BAA4B;QAC5B,4DAA4D;QAC5D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK;gBACL,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAED,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,IAAI;QACA,IAAI,CAAC,IAAI,CAAC,MAAM;YACZ,OAAO;QACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;CAIJ;AA7CD,gDA6CC"}
|
package/package.json
CHANGED
package/python/plugin_remote.py
CHANGED
@@ -4,10 +4,12 @@ import asyncio
|
|
4
4
|
import base64
|
5
5
|
import gc
|
6
6
|
import hashlib
|
7
|
+
import inspect
|
7
8
|
import multiprocessing
|
8
9
|
import multiprocessing.connection
|
9
10
|
import os
|
10
11
|
import platform
|
12
|
+
import random
|
11
13
|
import sys
|
12
14
|
import threading
|
13
15
|
import time
|
@@ -18,7 +20,7 @@ from asyncio.futures import Future
|
|
18
20
|
from asyncio.streams import StreamReader, StreamWriter
|
19
21
|
from collections.abc import Mapping
|
20
22
|
from io import StringIO
|
21
|
-
from typing import Any, Optional, Set, Tuple, TypedDict
|
23
|
+
from typing import Any, Optional, Set, Tuple, TypedDict, Callable, Coroutine
|
22
24
|
|
23
25
|
import plugin_volume as pv
|
24
26
|
import rpc
|
@@ -57,6 +59,14 @@ class SystemDeviceState(TypedDict):
|
|
57
59
|
value: any
|
58
60
|
|
59
61
|
|
62
|
+
def ensure_not_coroutine(fn: Callable | Coroutine) -> Callable:
|
63
|
+
if inspect.iscoroutinefunction(fn):
|
64
|
+
def wrapper(*args, **kwargs):
|
65
|
+
return asyncio.create_task(fn(*args, **kwargs))
|
66
|
+
return wrapper
|
67
|
+
return fn
|
68
|
+
|
69
|
+
|
60
70
|
class DeviceProxy(object):
|
61
71
|
def __init__(self, systemManager: SystemManager, id: str):
|
62
72
|
self.systemManager = systemManager
|
@@ -97,6 +107,116 @@ class DeviceProxy(object):
|
|
97
107
|
return apply()
|
98
108
|
|
99
109
|
|
110
|
+
class EventListenerRegisterImpl(scrypted_python.scrypted_sdk.EventListenerRegister):
|
111
|
+
removeListener: Callable[[], None]
|
112
|
+
|
113
|
+
def __init__(self, removeListener: Callable[[], None] | Coroutine[Any, None, None]) -> None:
|
114
|
+
self.removeListener = ensure_not_coroutine(removeListener)
|
115
|
+
|
116
|
+
|
117
|
+
class EventRegistry(object):
|
118
|
+
systemListeners: Set[scrypted_python.scrypted_sdk.EventListener]
|
119
|
+
listeners: Mapping[str, Set[Callable[[scrypted_python.scrypted_sdk.EventDetails, Any], None]]]
|
120
|
+
|
121
|
+
__allowedEventInterfaces = set([
|
122
|
+
ScryptedInterface.ScryptedDevice.value,
|
123
|
+
'Logger',
|
124
|
+
'Storage'
|
125
|
+
])
|
126
|
+
|
127
|
+
def __init__(self) -> None:
|
128
|
+
self.systemListeners = set()
|
129
|
+
self.listeners = {}
|
130
|
+
|
131
|
+
def __getMixinEventName(self, options: str | scrypted_python.scrypted_sdk.EventListenerOptions) -> str:
|
132
|
+
mixinId = None
|
133
|
+
if type(options) == str:
|
134
|
+
event = options
|
135
|
+
else:
|
136
|
+
options = options or {}
|
137
|
+
event = options.get("event", None)
|
138
|
+
mixinId = options.get("mixinId", None)
|
139
|
+
if not event:
|
140
|
+
event = "undefined"
|
141
|
+
if not mixinId:
|
142
|
+
return event
|
143
|
+
return f"{event}-mixin-{mixinId}"
|
144
|
+
|
145
|
+
def __generateBase36Str(self) -> str:
|
146
|
+
alphabet = "0123456789abcdefghijklmnopqrstuvwxyz"
|
147
|
+
return "".join(random.choices(alphabet, k=10))
|
148
|
+
|
149
|
+
def listen(
|
150
|
+
self, callback: scrypted_python.scrypted_sdk.EventListener
|
151
|
+
) -> scrypted_python.scrypted_sdk.EventListenerRegister:
|
152
|
+
callback = ensure_not_coroutine(callback)
|
153
|
+
self.systemListeners.add(callback)
|
154
|
+
return EventListenerRegisterImpl(lambda: self.systemListeners.remove(callback))
|
155
|
+
|
156
|
+
def listenDevice(
|
157
|
+
self,
|
158
|
+
id: str,
|
159
|
+
options: str | scrypted_python.scrypted_sdk.EventListenerOptions,
|
160
|
+
callback: Callable[[scrypted_python.scrypted_sdk.EventDetails, Any], None],
|
161
|
+
) -> scrypted_python.scrypted_sdk.EventListenerRegister:
|
162
|
+
event = self.__getMixinEventName(options)
|
163
|
+
token = f"{id}#{event}"
|
164
|
+
events = self.listeners.get(token)
|
165
|
+
if not events:
|
166
|
+
events = set()
|
167
|
+
self.listeners[token] = events
|
168
|
+
callback = ensure_not_coroutine(callback)
|
169
|
+
self.listeners[id].add(callback)
|
170
|
+
return EventListenerRegisterImpl(lambda: self.listeners[id].remove(callback))
|
171
|
+
|
172
|
+
def notify(self, id: str, eventTime: int, eventInterface: str, property: str, value: Any, options: dict = None):
|
173
|
+
options = options or {}
|
174
|
+
changed = options.get("changed")
|
175
|
+
mixinId = options.get("mixinId")
|
176
|
+
|
177
|
+
# prevent property event noise
|
178
|
+
if property and not changed:
|
179
|
+
return False
|
180
|
+
|
181
|
+
eventDetails = {
|
182
|
+
"eventId": None,
|
183
|
+
"eventTime": eventTime,
|
184
|
+
"eventInterface": eventInterface,
|
185
|
+
"property": property,
|
186
|
+
"mixinId": mixinId,
|
187
|
+
}
|
188
|
+
|
189
|
+
return self.notifyEventDetails(id, eventDetails, value)
|
190
|
+
|
191
|
+
def notifyEventDetails(self, id: str, eventDetails: scrypted_python.scrypted_sdk.EventDetails, value: Any, eventInterface: str = None):
|
192
|
+
if not eventDetails.get("eventId"):
|
193
|
+
eventDetails["eventId"] = self.__generateBase36Str()
|
194
|
+
if not eventInterface:
|
195
|
+
eventInterface = eventDetails.get("eventInterface")
|
196
|
+
|
197
|
+
# system listeners only get state changes.
|
198
|
+
# there are many potentially noisy stateless events, like
|
199
|
+
# object detection and settings changes
|
200
|
+
if (eventDetails.get("property") and not eventDetails.get("mixinId")) or \
|
201
|
+
(eventInterface in EventRegistry.__allowedEventInterfaces):
|
202
|
+
for listener in self.systemListeners:
|
203
|
+
listener(id, eventDetails, value)
|
204
|
+
|
205
|
+
token = f"{id}#{eventInterface}"
|
206
|
+
listeners = self.listeners.get(token)
|
207
|
+
if listeners:
|
208
|
+
for listener in listeners:
|
209
|
+
listener(eventDetails, value)
|
210
|
+
|
211
|
+
token = f"{id}#undefined"
|
212
|
+
listeners = self.listeners.get(token)
|
213
|
+
if listeners:
|
214
|
+
for listener in listeners:
|
215
|
+
listener(eventDetails, value)
|
216
|
+
|
217
|
+
return True
|
218
|
+
|
219
|
+
|
100
220
|
class SystemManager(scrypted_python.scrypted_sdk.types.SystemManager):
|
101
221
|
def __init__(
|
102
222
|
self, api: Any, systemState: Mapping[str, Mapping[str, SystemDeviceState]]
|
@@ -105,6 +225,7 @@ class SystemManager(scrypted_python.scrypted_sdk.types.SystemManager):
|
|
105
225
|
self.api = api
|
106
226
|
self.systemState = systemState
|
107
227
|
self.deviceProxies: Mapping[str, DeviceProxy] = {}
|
228
|
+
self.events = EventRegistry()
|
108
229
|
|
109
230
|
async def getComponent(self, id: str) -> Any:
|
110
231
|
return await self.api.getComponent(id)
|
@@ -170,20 +291,34 @@ class SystemManager(scrypted_python.scrypted_sdk.types.SystemManager):
|
|
170
291
|
if checkName.get("value", None) == name:
|
171
292
|
return self.getDeviceById(check)
|
172
293
|
|
173
|
-
|
174
|
-
async def listen(
|
294
|
+
def listen(
|
175
295
|
self, callback: scrypted_python.scrypted_sdk.EventListener
|
176
296
|
) -> scrypted_python.scrypted_sdk.EventListenerRegister:
|
177
|
-
return
|
297
|
+
return self.events.listen(callback)
|
178
298
|
|
179
|
-
|
180
|
-
async def listenDevice(
|
299
|
+
def listenDevice(
|
181
300
|
self,
|
182
301
|
id: str,
|
183
|
-
|
302
|
+
options: str | scrypted_python.scrypted_sdk.EventListenerOptions,
|
184
303
|
callback: scrypted_python.scrypted_sdk.EventListener,
|
185
304
|
) -> scrypted_python.scrypted_sdk.EventListenerRegister:
|
186
|
-
|
305
|
+
callback = ensure_not_coroutine(callback)
|
306
|
+
if type(options) != str and options.get("watch"):
|
307
|
+
return self.events.listenDevice(
|
308
|
+
id, options,
|
309
|
+
lambda eventDetails, eventData: callback(self.getDeviceById(id), eventDetails, eventData)
|
310
|
+
)
|
311
|
+
|
312
|
+
register_fut = asyncio.ensure_future(
|
313
|
+
self.api.listenDevice(
|
314
|
+
id, options,
|
315
|
+
lambda eventDetails, eventData: callback(self.getDeviceById(id), eventDetails, eventData)
|
316
|
+
)
|
317
|
+
)
|
318
|
+
async def unregister():
|
319
|
+
register = await register_fut
|
320
|
+
await register.removeListener()
|
321
|
+
return EventListenerRegisterImpl(lambda: asyncio.ensure_future(unregister()))
|
187
322
|
|
188
323
|
async def removeDevice(self, id: str) -> None:
|
189
324
|
return await self.api.removeDevice(id)
|
@@ -443,6 +578,7 @@ class PluginRemote:
|
|
443
578
|
"ioEvent",
|
444
579
|
"setNativeId",
|
445
580
|
]
|
581
|
+
self.peer.params["createMediaManager"] = lambda: api.getMediaManager()
|
446
582
|
|
447
583
|
async def print_async(
|
448
584
|
self,
|
package/src/fetch/http-fetch.ts
CHANGED
@@ -83,13 +83,13 @@ export async function httpFetch<T extends HttpFetchOptions<Readable>>(options: T
|
|
83
83
|
body = newBody;
|
84
84
|
}
|
85
85
|
|
86
|
-
let controller: AbortController;
|
86
|
+
let controller: AbortController | undefined;
|
87
87
|
let timeout: NodeJS.Timeout;
|
88
88
|
if (options.timeout) {
|
89
89
|
controller = new AbortController();
|
90
|
-
timeout = setTimeout(() => controller
|
90
|
+
timeout = setTimeout(() => controller!.abort(), options.timeout);
|
91
91
|
|
92
|
-
options.signal?.addEventListener('abort', () => controller
|
92
|
+
options.signal?.addEventListener('abort', () => controller!.abort(options.signal?.reason));
|
93
93
|
}
|
94
94
|
|
95
95
|
const signal = controller?.signal || options.signal;
|
@@ -126,7 +126,7 @@ export async function httpFetch<T extends HttpFetchOptions<Readable>>(options: T
|
|
126
126
|
if (options?.checkStatusCode === undefined || options?.checkStatusCode) {
|
127
127
|
try {
|
128
128
|
const checker = typeof options?.checkStatusCode === 'function' ? options.checkStatusCode : checkStatus;
|
129
|
-
if (!checker(response.statusCode))
|
129
|
+
if (!response.statusCode || !checker(response.statusCode))
|
130
130
|
throw new Error(`http response statusCode ${response.statusCode}`);
|
131
131
|
}
|
132
132
|
catch (e) {
|
@@ -137,19 +137,19 @@ export async function httpFetch<T extends HttpFetchOptions<Readable>>(options: T
|
|
137
137
|
|
138
138
|
const incomingHeaders = new Headers();
|
139
139
|
for (const [k, v] of Object.entries(response.headers)) {
|
140
|
-
for (const vv of (typeof v === 'string' ? [v] : v)) {
|
140
|
+
for (const vv of (typeof v === 'string' ? [v] : v!)) {
|
141
141
|
incomingHeaders.append(k, vv)
|
142
142
|
}
|
143
143
|
}
|
144
144
|
|
145
145
|
return {
|
146
|
-
statusCode: response.statusCode
|
146
|
+
statusCode: response.statusCode!,
|
147
147
|
headers: incomingHeaders,
|
148
148
|
body: await httpFetchParseIncomingMessage(response, options.responseType),
|
149
149
|
};
|
150
150
|
}
|
151
151
|
finally {
|
152
|
-
clearTimeout(timeout);
|
152
|
+
clearTimeout(timeout!);
|
153
153
|
}
|
154
154
|
}
|
155
155
|
|
package/src/fetch/index.ts
CHANGED
@@ -134,7 +134,7 @@ export function createHeadersArray(headers: HeadersInit | undefined): [string, s
|
|
134
134
|
* @returns Returns the body and Content-Type header that was set.
|
135
135
|
*/
|
136
136
|
export function createStringOrBufferBody(headers: [string, string][], body: any) {
|
137
|
-
let contentType: string;
|
137
|
+
let contentType: string | undefined;
|
138
138
|
if (typeof body === 'object') {
|
139
139
|
body = JSON.stringify(body);
|
140
140
|
contentType = 'application/json';
|
@@ -143,7 +143,7 @@ export function createStringOrBufferBody(headers: [string, string][], body: any)
|
|
143
143
|
contentType = 'text/plain';
|
144
144
|
}
|
145
145
|
|
146
|
-
if (!hasHeader(headers, 'Content-Type'))
|
146
|
+
if (contentType && !hasHeader(headers, 'Content-Type'))
|
147
147
|
setHeader(headers, 'Content-Type', contentType);
|
148
148
|
|
149
149
|
if (!hasHeader(headers, 'Content-Length')) {
|
@@ -180,13 +180,13 @@ export async function domFetch<T extends HttpFetchOptions<BodyInit>>(options: T)
|
|
180
180
|
body = createStringOrBufferBody(headers, body);
|
181
181
|
}
|
182
182
|
|
183
|
-
let controller: AbortController;
|
183
|
+
let controller: AbortController | undefined;
|
184
184
|
let timeout: NodeJS.Timeout;
|
185
185
|
if (options.timeout) {
|
186
186
|
controller = new AbortController();
|
187
|
-
timeout = setTimeout(() => controller
|
187
|
+
timeout = setTimeout(() => controller!.abort(), options.timeout);
|
188
188
|
|
189
|
-
options.signal?.addEventListener('abort', () => controller
|
189
|
+
options.signal?.addEventListener('abort', () => controller!.abort(options.signal?.reason));
|
190
190
|
}
|
191
191
|
|
192
192
|
try {
|
@@ -218,6 +218,6 @@ export async function domFetch<T extends HttpFetchOptions<BodyInit>>(options: T)
|
|
218
218
|
};
|
219
219
|
}
|
220
220
|
finally {
|
221
|
-
clearTimeout(timeout);
|
221
|
+
clearTimeout(timeout!);
|
222
222
|
}
|
223
223
|
}
|
package/src/media-helpers.ts
CHANGED
@@ -17,8 +17,8 @@ export async function safeKillFFmpeg(cp: ChildProcess) {
|
|
17
17
|
cp.on('exit', resolve);
|
18
18
|
// this will allow ffmpeg to send rtsp TEARDOWN etc
|
19
19
|
try {
|
20
|
-
cp.stdin
|
21
|
-
cp.stdin
|
20
|
+
cp.stdin!.on('error', () => { });
|
21
|
+
cp.stdin!.write('q\n');
|
22
22
|
}
|
23
23
|
catch (e) {
|
24
24
|
}
|
@@ -55,8 +55,8 @@ export function ffmpegLogInitialOutput(console: Console, cp: ChildProcess, forev
|
|
55
55
|
if (!SCRYPTED_FFMPEG_NOISY && !forever && (str.indexOf('frame=') !== -1 || str.indexOf('size=') !== -1)) {
|
56
56
|
log(str);
|
57
57
|
log('video/audio detected, discarding further input');
|
58
|
-
cp.stdout
|
59
|
-
cp.stderr
|
58
|
+
cp.stdout!.removeListener('data', ret);
|
59
|
+
cp.stderr!.removeListener('data', ret);
|
60
60
|
return;
|
61
61
|
}
|
62
62
|
|
@@ -19,6 +19,12 @@ export abstract class ChildProcessWorker extends EventEmitter implements Runtime
|
|
19
19
|
this.worker.on('disconnect', () => this.emit('error', new Error('disconnect')));
|
20
20
|
this.worker.on('exit', (code, signal) => this.emit('exit', code, signal));
|
21
21
|
this.worker.on('error', e => this.emit('error', e));
|
22
|
+
// aggressively catch errors
|
23
|
+
// ECONNRESET can be raised when the child process is killed
|
24
|
+
for (const stdio of this.worker.stdio || []) {
|
25
|
+
if (stdio)
|
26
|
+
stdio.on('error', e => this.emit('error', e));
|
27
|
+
}
|
22
28
|
}
|
23
29
|
|
24
30
|
get pid() {
|