@remotion/renderer 4.0.211 → 4.0.213
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/browser/FrameManager.d.ts +1 -1
- package/dist/browser/FrameManager.js +3 -3
- package/dist/browser/NetworkEventManager.d.ts +3 -2
- package/dist/browser/NetworkEventManager.js +12 -8
- package/dist/browser/NetworkManager.d.ts +0 -1
- package/dist/browser/NetworkManager.js +18 -19
- package/dist/browser/flaky-errors.d.ts +2 -0
- package/dist/browser/flaky-errors.js +20 -0
- package/dist/browser/handle-failed-resource.d.ts +10 -0
- package/dist/browser/handle-failed-resource.js +21 -0
- package/dist/options/mute.js +2 -1
- package/dist/render-frames.js +5 -4
- package/dist/screenshot-task.js +3 -1
- package/dist/serve-handler/index.js +1 -0
- package/dist/streaming.d.ts +11 -0
- package/dist/streaming.js +140 -0
- package/ensure-browser.mjs +116 -808
- package/package.json +10 -10
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
import type { LogLevel } from '../log-level';
|
|
17
17
|
import type { Page } from './BrowserPage';
|
|
18
18
|
import type { CDPSession } from './Connection';
|
|
19
|
-
import type { Frame as TFrame } from './devtools-types';
|
|
20
19
|
import { DOMWorld } from './DOMWorld';
|
|
21
20
|
import type { EvaluateFn, EvaluateFnReturnType, EvaluateHandleFn, SerializableOrJSHandle, UnwrapPromiseLike } from './EvalTypes';
|
|
22
21
|
import { EventEmitter } from './EventEmitter';
|
|
@@ -25,6 +24,7 @@ import type { HTTPResponse } from './HTTPResponse';
|
|
|
25
24
|
import type { JSHandle } from './JSHandle';
|
|
26
25
|
import type { PuppeteerLifeCycleEvent } from './LifecycleWatcher';
|
|
27
26
|
import { NetworkManager } from './NetworkManager';
|
|
27
|
+
import type { Frame as TFrame } from './devtools-types';
|
|
28
28
|
export declare const FrameManagerEmittedEvents: {
|
|
29
29
|
FrameNavigated: symbol;
|
|
30
30
|
FrameDetached: symbol;
|
|
@@ -28,14 +28,14 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
28
28
|
var _FrameManager_instances, _FrameManager_page, _FrameManager_networkManager, _FrameManager_frames, _FrameManager_contextIdToContext, _FrameManager_isolatedWorlds, _FrameManager_mainFrame, _FrameManager_client, _FrameManager_onAttachedToTarget, _FrameManager_onDetachedFromTarget, _FrameManager_onLifecycleEvent, _FrameManager_onFrameStartedLoading, _FrameManager_onFrameStoppedLoading, _FrameManager_handleFrameTree, _FrameManager_onFrameAttached, _FrameManager_onFrameNavigated, _FrameManager_onFrameNavigatedWithinDocument, _FrameManager_onFrameDetached, _FrameManager_onExecutionContextCreated, _FrameManager_onExecutionContextDestroyed, _FrameManager_onExecutionContextsCleared, _FrameManager_removeFramesRecursively, _Frame_parentFrame, _Frame_url, _Frame_client;
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
30
|
exports.Frame = exports.FrameManager = exports.FrameManagerEmittedEvents = void 0;
|
|
31
|
-
const assert_1 = require("./assert");
|
|
32
31
|
const Connection_1 = require("./Connection");
|
|
33
32
|
const DOMWorld_1 = require("./DOMWorld");
|
|
34
33
|
const EventEmitter_1 = require("./EventEmitter");
|
|
35
34
|
const ExecutionContext_1 = require("./ExecutionContext");
|
|
36
|
-
const is_target_closed_err_1 = require("./is-target-closed-err");
|
|
37
35
|
const LifecycleWatcher_1 = require("./LifecycleWatcher");
|
|
38
36
|
const NetworkManager_1 = require("./NetworkManager");
|
|
37
|
+
const assert_1 = require("./assert");
|
|
38
|
+
const flaky_errors_1 = require("./flaky-errors");
|
|
39
39
|
const util_1 = require("./util");
|
|
40
40
|
const UTILITY_WORLD_NAME = '__puppeteer_utility_world__';
|
|
41
41
|
exports.FrameManagerEmittedEvents = {
|
|
@@ -131,7 +131,7 @@ class FrameManager extends EventEmitter_1.EventEmitter {
|
|
|
131
131
|
}
|
|
132
132
|
catch (error) {
|
|
133
133
|
// The target might have been closed before the initialization finished.
|
|
134
|
-
if ((0, util_1.isErrorLike)(error) && (0,
|
|
134
|
+
if ((0, util_1.isErrorLike)(error) && (0, flaky_errors_1.isTargetClosedErr)(error)) {
|
|
135
135
|
return;
|
|
136
136
|
}
|
|
137
137
|
throw error;
|
|
@@ -14,11 +14,12 @@ type RedirectInfo = {
|
|
|
14
14
|
export declare class NetworkEventManager {
|
|
15
15
|
#private;
|
|
16
16
|
forget(networkRequestId: NetworkRequestId): void;
|
|
17
|
-
|
|
17
|
+
queueFailedLoadInfo(networkRequestId: NetworkRequestId, event: LoadingFailedEvent): void;
|
|
18
|
+
getFailedLoadInfo(networkRequestId: NetworkRequestId): LoadingFailedEvent | undefined;
|
|
19
|
+
getResponseExtraInfo(networkRequestId: NetworkRequestId): ResponseReceivedExtraInfoEvent[];
|
|
18
20
|
private queuedRedirectInfo;
|
|
19
21
|
queueRedirectInfo(fetchRequestId: FetchRequestId, redirectInfo: RedirectInfo): void;
|
|
20
22
|
takeQueuedRedirectInfo(fetchRequestId: FetchRequestId): RedirectInfo | undefined;
|
|
21
|
-
numRequestsInProgress(): number;
|
|
22
23
|
storeRequestWillBeSent(networkRequestId: NetworkRequestId, event: RequestWillBeSentEvent): void;
|
|
23
24
|
getRequestWillBeSent(networkRequestId: NetworkRequestId): RequestWillBeSentEvent | undefined;
|
|
24
25
|
forgetRequestWillBeSent(networkRequestId: NetworkRequestId): void;
|
|
@@ -4,7 +4,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
5
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
6
|
};
|
|
7
|
-
var _NetworkEventManager_requestWillBeSentMap, _NetworkEventManager_requestPausedMap, _NetworkEventManager_httpRequestsMap, _NetworkEventManager_responseReceivedExtraInfoMap, _NetworkEventManager_queuedRedirectInfoMap, _NetworkEventManager_queuedEventGroupMap;
|
|
7
|
+
var _NetworkEventManager_requestWillBeSentMap, _NetworkEventManager_requestPausedMap, _NetworkEventManager_httpRequestsMap, _NetworkEventManager_responseReceivedExtraInfoMap, _NetworkEventManager_queuedRedirectInfoMap, _NetworkEventManager_queuedEventGroupMap, _NetworkEventManager_failedLoadInfoMap;
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.NetworkEventManager = void 0;
|
|
10
10
|
class NetworkEventManager {
|
|
@@ -15,6 +15,7 @@ class NetworkEventManager {
|
|
|
15
15
|
_NetworkEventManager_responseReceivedExtraInfoMap.set(this, new Map());
|
|
16
16
|
_NetworkEventManager_queuedRedirectInfoMap.set(this, new Map());
|
|
17
17
|
_NetworkEventManager_queuedEventGroupMap.set(this, new Map());
|
|
18
|
+
_NetworkEventManager_failedLoadInfoMap.set(this, new Map());
|
|
18
19
|
}
|
|
19
20
|
forget(networkRequestId) {
|
|
20
21
|
__classPrivateFieldGet(this, _NetworkEventManager_requestWillBeSentMap, "f").delete(networkRequestId);
|
|
@@ -22,8 +23,16 @@ class NetworkEventManager {
|
|
|
22
23
|
__classPrivateFieldGet(this, _NetworkEventManager_queuedEventGroupMap, "f").delete(networkRequestId);
|
|
23
24
|
__classPrivateFieldGet(this, _NetworkEventManager_queuedRedirectInfoMap, "f").delete(networkRequestId);
|
|
24
25
|
__classPrivateFieldGet(this, _NetworkEventManager_responseReceivedExtraInfoMap, "f").delete(networkRequestId);
|
|
26
|
+
__classPrivateFieldGet(this, _NetworkEventManager_failedLoadInfoMap, "f").delete(networkRequestId);
|
|
25
27
|
}
|
|
26
|
-
|
|
28
|
+
queueFailedLoadInfo(networkRequestId, event) {
|
|
29
|
+
__classPrivateFieldGet(this, _NetworkEventManager_failedLoadInfoMap, "f").set(networkRequestId, { event });
|
|
30
|
+
}
|
|
31
|
+
getFailedLoadInfo(networkRequestId) {
|
|
32
|
+
var _a;
|
|
33
|
+
return (_a = __classPrivateFieldGet(this, _NetworkEventManager_failedLoadInfoMap, "f").get(networkRequestId)) === null || _a === void 0 ? void 0 : _a.event;
|
|
34
|
+
}
|
|
35
|
+
getResponseExtraInfo(networkRequestId) {
|
|
27
36
|
if (!__classPrivateFieldGet(this, _NetworkEventManager_responseReceivedExtraInfoMap, "f").has(networkRequestId)) {
|
|
28
37
|
__classPrivateFieldGet(this, _NetworkEventManager_responseReceivedExtraInfoMap, "f").set(networkRequestId, []);
|
|
29
38
|
}
|
|
@@ -41,11 +50,6 @@ class NetworkEventManager {
|
|
|
41
50
|
takeQueuedRedirectInfo(fetchRequestId) {
|
|
42
51
|
return this.queuedRedirectInfo(fetchRequestId).shift();
|
|
43
52
|
}
|
|
44
|
-
numRequestsInProgress() {
|
|
45
|
-
return [...__classPrivateFieldGet(this, _NetworkEventManager_httpRequestsMap, "f")].filter(([, request]) => {
|
|
46
|
-
return !request.response();
|
|
47
|
-
}).length;
|
|
48
|
-
}
|
|
49
53
|
storeRequestWillBeSent(networkRequestId, event) {
|
|
50
54
|
__classPrivateFieldGet(this, _NetworkEventManager_requestWillBeSentMap, "f").set(networkRequestId, event);
|
|
51
55
|
}
|
|
@@ -78,4 +82,4 @@ class NetworkEventManager {
|
|
|
78
82
|
}
|
|
79
83
|
}
|
|
80
84
|
exports.NetworkEventManager = NetworkEventManager;
|
|
81
|
-
_NetworkEventManager_requestWillBeSentMap = new WeakMap(), _NetworkEventManager_requestPausedMap = new WeakMap(), _NetworkEventManager_httpRequestsMap = new WeakMap(), _NetworkEventManager_responseReceivedExtraInfoMap = new WeakMap(), _NetworkEventManager_queuedRedirectInfoMap = new WeakMap(), _NetworkEventManager_queuedEventGroupMap = new WeakMap();
|
|
85
|
+
_NetworkEventManager_requestWillBeSentMap = new WeakMap(), _NetworkEventManager_requestPausedMap = new WeakMap(), _NetworkEventManager_httpRequestsMap = new WeakMap(), _NetworkEventManager_responseReceivedExtraInfoMap = new WeakMap(), _NetworkEventManager_queuedRedirectInfoMap = new WeakMap(), _NetworkEventManager_queuedEventGroupMap = new WeakMap(), _NetworkEventManager_failedLoadInfoMap = new WeakMap();
|
|
@@ -28,8 +28,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
28
28
|
var _NetworkManager_instances, _NetworkManager_client, _NetworkManager_frameManager, _NetworkManager_networkEventManager, _NetworkManager_indent, _NetworkManager_logLevel, _NetworkManager_onRequestWillBeSent, _NetworkManager_onRequestPaused, _NetworkManager_patchRequestEventHeaders, _NetworkManager_onRequest, _NetworkManager_onRequestServedFromCache, _NetworkManager_handleRequestRedirect, _NetworkManager_emitResponseEvent, _NetworkManager_onResponseReceived, _NetworkManager_onResponseReceivedExtraInfo, _NetworkManager_forgetRequest, _NetworkManager_onLoadingFinished, _NetworkManager_emitLoadingFinished, _NetworkManager_onLoadingFailed, _NetworkManager_emitLoadingFailed;
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
30
|
exports.NetworkManager = exports.NetworkManagerEmittedEvents = void 0;
|
|
31
|
-
const logger_1 = require("../logger");
|
|
32
31
|
const EventEmitter_1 = require("./EventEmitter");
|
|
32
|
+
const handle_failed_resource_1 = require("./handle-failed-resource");
|
|
33
33
|
const HTTPRequest_1 = require("./HTTPRequest");
|
|
34
34
|
const HTTPResponse_1 = require("./HTTPResponse");
|
|
35
35
|
const NetworkEventManager_1 = require("./NetworkEventManager");
|
|
@@ -60,9 +60,6 @@ class NetworkManager extends EventEmitter_1.EventEmitter {
|
|
|
60
60
|
async initialize() {
|
|
61
61
|
await __classPrivateFieldGet(this, _NetworkManager_client, "f").send('Network.enable');
|
|
62
62
|
}
|
|
63
|
-
numRequestsInProgress() {
|
|
64
|
-
return __classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").numRequestsInProgress();
|
|
65
|
-
}
|
|
66
63
|
}
|
|
67
64
|
exports.NetworkManager = NetworkManager;
|
|
68
65
|
_NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakMap(), _NetworkManager_networkEventManager = new WeakMap(), _NetworkManager_indent = new WeakMap(), _NetworkManager_logLevel = new WeakMap(), _NetworkManager_instances = new WeakSet(), _NetworkManager_onRequestWillBeSent = function _NetworkManager_onRequestWillBeSent(event) {
|
|
@@ -108,7 +105,7 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
|
|
|
108
105
|
let redirectResponseExtraInfo = null;
|
|
109
106
|
if (event.redirectHasExtraInfo) {
|
|
110
107
|
redirectResponseExtraInfo = __classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f")
|
|
111
|
-
.
|
|
108
|
+
.getResponseExtraInfo(event.requestId)
|
|
112
109
|
.shift();
|
|
113
110
|
if (!redirectResponseExtraInfo) {
|
|
114
111
|
__classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").queueRedirectInfo(event.requestId, {
|
|
@@ -146,7 +143,6 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
|
|
|
146
143
|
if (!request) {
|
|
147
144
|
return;
|
|
148
145
|
}
|
|
149
|
-
__classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").responseExtraInfo(responseReceived.requestId);
|
|
150
146
|
const response = new HTTPResponse_1.HTTPResponse(responseReceived.response, extraInfo);
|
|
151
147
|
request._response = response;
|
|
152
148
|
}, _NetworkManager_onResponseReceived = function _NetworkManager_onResponseReceived(event) {
|
|
@@ -154,7 +150,7 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
|
|
|
154
150
|
let extraInfo = null;
|
|
155
151
|
if (request && !request._fromMemoryCache && event.hasExtraInfo) {
|
|
156
152
|
extraInfo = __classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f")
|
|
157
|
-
.
|
|
153
|
+
.getResponseExtraInfo(event.requestId)
|
|
158
154
|
.shift();
|
|
159
155
|
if (!extraInfo) {
|
|
160
156
|
// Wait until we get the corresponding ExtraInfo event.
|
|
@@ -171,7 +167,9 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
|
|
|
171
167
|
// request.
|
|
172
168
|
const redirectInfo = __classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").takeQueuedRedirectInfo(event.requestId);
|
|
173
169
|
if (redirectInfo) {
|
|
174
|
-
__classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f")
|
|
170
|
+
__classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f")
|
|
171
|
+
.getResponseExtraInfo(event.requestId)
|
|
172
|
+
.push(event);
|
|
175
173
|
__classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_onRequest).call(this, redirectInfo.event, redirectInfo.fetchRequestId);
|
|
176
174
|
return;
|
|
177
175
|
}
|
|
@@ -190,7 +188,7 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
|
|
|
190
188
|
return;
|
|
191
189
|
}
|
|
192
190
|
// Wait until we get another event that can use this ExtraInfo event.
|
|
193
|
-
__classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").
|
|
191
|
+
__classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").getResponseExtraInfo(event.requestId).push(event);
|
|
194
192
|
}, _NetworkManager_forgetRequest = function _NetworkManager_forgetRequest(request, events) {
|
|
195
193
|
const requestId = request._requestId;
|
|
196
194
|
__classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").forgetRequest(requestId);
|
|
@@ -226,22 +224,23 @@ _NetworkManager_client = new WeakMap(), _NetworkManager_frameManager = new WeakM
|
|
|
226
224
|
__classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_emitLoadingFailed).call(this, event);
|
|
227
225
|
}
|
|
228
226
|
}, _NetworkManager_emitLoadingFailed = function _NetworkManager_emitLoadingFailed(event) {
|
|
229
|
-
var _a;
|
|
230
227
|
const request = __classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").getRequest(event.requestId);
|
|
231
228
|
// For certain requestIds we never receive requestWillBeSent event.
|
|
232
229
|
// @see https://crbug.com/750469
|
|
233
230
|
if (!request) {
|
|
234
231
|
return;
|
|
235
232
|
}
|
|
236
|
-
if (
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
event.type === 'Fetch' &&
|
|
240
|
-
((_a = request._url) === null || _a === void 0 ? void 0 : _a.includes('/proxy'))) {
|
|
241
|
-
logger_1.Log.warn({ indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"), logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f") }, 'This could be caused by Chrome rejecting the request because the disk space is low.');
|
|
242
|
-
logger_1.Log.warn({ indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"), logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f") }, 'This could be caused by Chrome rejecting the request because the disk space is low.');
|
|
243
|
-
logger_1.Log.warn({ indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"), logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f") }, 'Consider increasing the disk size of your Lambda function.');
|
|
244
|
-
}
|
|
233
|
+
if (event.canceled) {
|
|
234
|
+
__classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_forgetRequest).call(this, request, true);
|
|
235
|
+
return;
|
|
245
236
|
}
|
|
237
|
+
const extraInfo = __classPrivateFieldGet(this, _NetworkManager_networkEventManager, "f").getResponseExtraInfo(event.requestId);
|
|
238
|
+
(0, handle_failed_resource_1.handleFailedResource)({
|
|
239
|
+
extraInfo,
|
|
240
|
+
event,
|
|
241
|
+
indent: __classPrivateFieldGet(this, _NetworkManager_indent, "f"),
|
|
242
|
+
logLevel: __classPrivateFieldGet(this, _NetworkManager_logLevel, "f"),
|
|
243
|
+
request,
|
|
244
|
+
});
|
|
246
245
|
__classPrivateFieldGet(this, _NetworkManager_instances, "m", _NetworkManager_forgetRequest).call(this, request, true);
|
|
247
246
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFlakyNetworkError = exports.isTargetClosedErr = void 0;
|
|
4
|
+
const isTargetClosedErr = (error) => {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
return (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('Target closed')) ||
|
|
7
|
+
((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('Session closed')));
|
|
8
|
+
};
|
|
9
|
+
exports.isTargetClosedErr = isTargetClosedErr;
|
|
10
|
+
const isFlakyNetworkError = (error) => {
|
|
11
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
12
|
+
return (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('ERR_CONNECTION_REFUSED')) ||
|
|
13
|
+
((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('ERR_CONNECTION_RESET')) ||
|
|
14
|
+
((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.includes('ERR_CONNECTION_TIMED_OUT')) ||
|
|
15
|
+
((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.includes('ERR_INTERNET_DISCONNECTED')) ||
|
|
16
|
+
((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.includes('ERR_NAME_RESOLUTION_FAILED')) ||
|
|
17
|
+
((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.includes('ERR_ADDRESS_UNREACHABLE')) ||
|
|
18
|
+
((_g = error === null || error === void 0 ? void 0 : error.message) === null || _g === void 0 ? void 0 : _g.includes('ERR_NETWORK_CHANGED')));
|
|
19
|
+
};
|
|
20
|
+
exports.isFlakyNetworkError = isFlakyNetworkError;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LogLevel } from '../log-level';
|
|
2
|
+
import type { HTTPRequest } from './HTTPRequest';
|
|
3
|
+
import type { LoadingFailedEvent, ResponseReceivedExtraInfoEvent } from './devtools-types';
|
|
4
|
+
export declare const handleFailedResource: ({ extraInfo, logLevel, indent, request, event, }: {
|
|
5
|
+
extraInfo: ResponseReceivedExtraInfoEvent[];
|
|
6
|
+
logLevel: LogLevel;
|
|
7
|
+
indent: boolean;
|
|
8
|
+
request: HTTPRequest;
|
|
9
|
+
event: LoadingFailedEvent;
|
|
10
|
+
}) => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleFailedResource = void 0;
|
|
4
|
+
const logger_1 = require("../logger");
|
|
5
|
+
const handleFailedResource = ({ extraInfo, logLevel, indent, request, event, }) => {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
const firstExtraInfo = (_a = extraInfo[0]) !== null && _a !== void 0 ? _a : null;
|
|
8
|
+
logger_1.Log.warn({ indent, logLevel }, `Browser failed to load ${request._url} (${event.type}): ${event.errorText}`);
|
|
9
|
+
if (firstExtraInfo) {
|
|
10
|
+
logger_1.Log.warn({ indent, logLevel }, `HTTP status code: ${firstExtraInfo.statusCode}, headers:`);
|
|
11
|
+
logger_1.Log.warn({ indent, logLevel }, JSON.stringify(firstExtraInfo.headers, null, 2));
|
|
12
|
+
}
|
|
13
|
+
if (event.errorText === 'net::ERR_FAILED' &&
|
|
14
|
+
event.type === 'Fetch' &&
|
|
15
|
+
((_b = request._url) === null || _b === void 0 ? void 0 : _b.includes('/proxy'))) {
|
|
16
|
+
logger_1.Log.warn({ indent, logLevel }, 'This could be caused by Chrome rejecting the request because the disk space is low.');
|
|
17
|
+
logger_1.Log.warn({ indent, logLevel }, 'This could be caused by Chrome rejecting the request because the disk space is low.');
|
|
18
|
+
logger_1.Log.warn({ indent, logLevel }, 'Consider increasing the disk size of your Lambda function.');
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.handleFailedResource = handleFailedResource;
|
package/dist/options/mute.js
CHANGED
|
@@ -13,7 +13,8 @@ exports.mutedOption = {
|
|
|
13
13
|
docLink: 'https://www.remotion.dev/docs/using-audio/#muted-property',
|
|
14
14
|
type: false,
|
|
15
15
|
getValue: ({ commandLine }) => {
|
|
16
|
-
|
|
16
|
+
// we set in minimist `muted` default as null
|
|
17
|
+
if (commandLine[cliFlag] !== null) {
|
|
17
18
|
return {
|
|
18
19
|
source: 'cli',
|
|
19
20
|
value: commandLine[cliFlag],
|
package/dist/render-frames.js
CHANGED
|
@@ -12,7 +12,7 @@ const download_and_map_assets_to_file_1 = require("./assets/download-and-map-ass
|
|
|
12
12
|
const browser_1 = require("./browser");
|
|
13
13
|
const TimeoutSettings_1 = require("./browser/TimeoutSettings");
|
|
14
14
|
const browser_download_progress_bar_1 = require("./browser/browser-download-progress-bar");
|
|
15
|
-
const
|
|
15
|
+
const flaky_errors_1 = require("./browser/flaky-errors");
|
|
16
16
|
const compress_assets_1 = require("./compress-assets");
|
|
17
17
|
const cycle_browser_tabs_1 = require("./cycle-browser-tabs");
|
|
18
18
|
const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
|
|
@@ -310,12 +310,13 @@ const innerRenderFrames = async ({ onFrameUpdate, outputDir, onStart, serialized
|
|
|
310
310
|
]);
|
|
311
311
|
}
|
|
312
312
|
catch (err) {
|
|
313
|
-
const isTargetClosedError = (0,
|
|
313
|
+
const isTargetClosedError = (0, flaky_errors_1.isTargetClosedErr)(err);
|
|
314
314
|
const shouldRetryError = (_a = err.stack) === null || _a === void 0 ? void 0 : _a.includes(no_react_1.NoReactInternals.DELAY_RENDER_RETRY_TOKEN);
|
|
315
|
+
const flakyNetworkError = (0, flaky_errors_1.isFlakyNetworkError)(err);
|
|
315
316
|
if ((0, make_cancel_signal_1.isUserCancelledRender)(err) && !shouldRetryError) {
|
|
316
317
|
throw err;
|
|
317
318
|
}
|
|
318
|
-
if (!isTargetClosedError && !shouldRetryError) {
|
|
319
|
+
if (!isTargetClosedError && !shouldRetryError && !flakyNetworkError) {
|
|
319
320
|
throw err;
|
|
320
321
|
}
|
|
321
322
|
if (stopped) {
|
|
@@ -527,7 +528,7 @@ const internalRenderFramesRaw = ({ browserExecutable, cancelSignal, chromiumOpti
|
|
|
527
528
|
// If new browser was opened, then closing the browser as a cleanup.
|
|
528
529
|
if (puppeteerInstance) {
|
|
529
530
|
Promise.all(openedPages.map((p) => p.close())).catch((err) => {
|
|
530
|
-
if ((0,
|
|
531
|
+
if ((0, flaky_errors_1.isTargetClosedErr)(err)) {
|
|
531
532
|
return;
|
|
532
533
|
}
|
|
533
534
|
logger_1.Log.error({ indent, logLevel }, 'Unable to close browser tab', err);
|
package/dist/screenshot-task.js
CHANGED
|
@@ -42,7 +42,9 @@ const screenshotTask = async ({ format, height, omitBackground, page, width, pat
|
|
|
42
42
|
// To be determined: Is this a problem with Lambda, or the Chrome version
|
|
43
43
|
// we are using on Lambda?
|
|
44
44
|
// We already found out that the problem is not a general Linux problem.
|
|
45
|
-
|
|
45
|
+
// However, if `fromSurface` is false, the screenshot is limited to 8192x8192 pixels.
|
|
46
|
+
// If the image is larger, always use `fromSurface: true`.
|
|
47
|
+
const fromSurface = !process.env.DISABLE_FROM_SURFACE || height > 8192 || width > 8192;
|
|
46
48
|
const scaleFactor = fromSurface ? 1 : scale;
|
|
47
49
|
const { value } = await client.send('Page.captureScreenshot', {
|
|
48
50
|
format,
|
|
@@ -201,6 +201,7 @@ const serveHandler = async (request, response, config) => {
|
|
|
201
201
|
`bytes ${streamOpts.start}-${streamOpts.end}/${stats.size}`;
|
|
202
202
|
headers['Content-Length'] = String(streamOpts.end - streamOpts.start + 1);
|
|
203
203
|
}
|
|
204
|
+
headers['Cache-Control'] = 'no-cache, no-store, must-revalidate';
|
|
204
205
|
response.writeHead(response.statusCode || 200, headers);
|
|
205
206
|
stream.pipe(response);
|
|
206
207
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const streamingKey = "remotion_buffer:";
|
|
2
|
+
export declare const makeStreamer: (onMessage: (statusType: 'success' | 'error', nonce: string, data: Uint8Array) => void) => {
|
|
3
|
+
onData: (data: Uint8Array) => void;
|
|
4
|
+
getOutputBuffer: () => Uint8Array;
|
|
5
|
+
clear: () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const makeStreamPayloadMessage: ({ status, body, nonce, }: {
|
|
8
|
+
nonce: string;
|
|
9
|
+
status: 0 | 1;
|
|
10
|
+
body: Uint8Array;
|
|
11
|
+
}) => Uint8Array;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeStreamPayloadMessage = exports.makeStreamer = exports.streamingKey = void 0;
|
|
4
|
+
exports.streamingKey = 'remotion_buffer:';
|
|
5
|
+
const magicWordStr = 'remotion_buffer:';
|
|
6
|
+
const makeStreamer = (onMessage) => {
|
|
7
|
+
const separator = new Uint8Array(magicWordStr.length);
|
|
8
|
+
for (let i = 0; i < magicWordStr.length; i++) {
|
|
9
|
+
separator[i] = magicWordStr.charCodeAt(i);
|
|
10
|
+
}
|
|
11
|
+
let unprocessedBuffers = [];
|
|
12
|
+
let outputBuffer = new Uint8Array(0);
|
|
13
|
+
let missingData = null;
|
|
14
|
+
const processInput = () => {
|
|
15
|
+
let separatorIndex = outputBuffer.indexOf(separator[0]); // Start checking for the first byte of the separator
|
|
16
|
+
if (separatorIndex === -1 ||
|
|
17
|
+
outputBuffer
|
|
18
|
+
.subarray(separatorIndex, separatorIndex + separator.length)
|
|
19
|
+
.toString() !== separator.toString()) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
separatorIndex += separator.length;
|
|
23
|
+
let nonceString = '';
|
|
24
|
+
let lengthString = '';
|
|
25
|
+
let statusString = '';
|
|
26
|
+
// eslint-disable-next-line no-constant-condition
|
|
27
|
+
while (true) {
|
|
28
|
+
if (separatorIndex > outputBuffer.length - 1) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const nextDigit = outputBuffer[separatorIndex];
|
|
32
|
+
separatorIndex++;
|
|
33
|
+
if (nextDigit === 0x3a) {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
nonceString += String.fromCharCode(nextDigit);
|
|
37
|
+
}
|
|
38
|
+
// eslint-disable-next-line no-constant-condition
|
|
39
|
+
while (true) {
|
|
40
|
+
if (separatorIndex > outputBuffer.length - 1) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const nextDigit = outputBuffer[separatorIndex];
|
|
44
|
+
separatorIndex++;
|
|
45
|
+
if (nextDigit === 0x3a) {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
lengthString += String.fromCharCode(nextDigit);
|
|
49
|
+
}
|
|
50
|
+
// eslint-disable-next-line no-constant-condition
|
|
51
|
+
while (true) {
|
|
52
|
+
if (separatorIndex > outputBuffer.length - 1) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const nextDigit = outputBuffer[separatorIndex];
|
|
56
|
+
if (nextDigit === 0x3a) {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
separatorIndex++;
|
|
60
|
+
statusString += String.fromCharCode(nextDigit);
|
|
61
|
+
}
|
|
62
|
+
const length = Number(lengthString);
|
|
63
|
+
const status = Number(statusString);
|
|
64
|
+
const dataLength = outputBuffer.length - separatorIndex - 1;
|
|
65
|
+
if (dataLength < length) {
|
|
66
|
+
missingData = {
|
|
67
|
+
dataMissing: length - dataLength,
|
|
68
|
+
};
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const data = outputBuffer.subarray(separatorIndex + 1, separatorIndex + 1 + Number(lengthString));
|
|
72
|
+
onMessage(status === 1 ? 'error' : 'success', nonceString, data);
|
|
73
|
+
missingData = null;
|
|
74
|
+
outputBuffer = outputBuffer.subarray(separatorIndex + Number(lengthString) + 1);
|
|
75
|
+
processInput();
|
|
76
|
+
};
|
|
77
|
+
const onData = (data) => {
|
|
78
|
+
unprocessedBuffers.push(data);
|
|
79
|
+
const separatorIndex = data.indexOf(separator[0]);
|
|
80
|
+
if (separatorIndex === -1) {
|
|
81
|
+
if (missingData) {
|
|
82
|
+
missingData.dataMissing -= data.length;
|
|
83
|
+
}
|
|
84
|
+
if (!missingData || missingData.dataMissing > 0) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
unprocessedBuffers.unshift(outputBuffer);
|
|
89
|
+
outputBuffer = new Uint8Array(unprocessedBuffers.reduce((acc, val) => acc + val.length, 0));
|
|
90
|
+
let offset = 0;
|
|
91
|
+
for (const buf of unprocessedBuffers) {
|
|
92
|
+
outputBuffer.set(buf, offset);
|
|
93
|
+
offset += buf.length;
|
|
94
|
+
}
|
|
95
|
+
unprocessedBuffers = [];
|
|
96
|
+
processInput();
|
|
97
|
+
};
|
|
98
|
+
return {
|
|
99
|
+
onData,
|
|
100
|
+
getOutputBuffer: () => outputBuffer,
|
|
101
|
+
clear: () => {
|
|
102
|
+
unprocessedBuffers = [];
|
|
103
|
+
outputBuffer = new Uint8Array(0);
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
exports.makeStreamer = makeStreamer;
|
|
108
|
+
const makeStreamPayloadMessage = ({ status, body, nonce, }) => {
|
|
109
|
+
const nonceArr = new TextEncoder().encode(nonce);
|
|
110
|
+
const magicWordArr = new TextEncoder().encode(magicWordStr);
|
|
111
|
+
const separatorArr = new TextEncoder().encode(':');
|
|
112
|
+
const bodyLengthArr = new TextEncoder().encode(body.length.toString());
|
|
113
|
+
const statusArr = new TextEncoder().encode(String(status));
|
|
114
|
+
// Calculate total length of new Uint8Array
|
|
115
|
+
const totalLength = nonceArr.length +
|
|
116
|
+
magicWordArr.length +
|
|
117
|
+
separatorArr.length * 3 +
|
|
118
|
+
bodyLengthArr.length +
|
|
119
|
+
statusArr.length +
|
|
120
|
+
body.length;
|
|
121
|
+
// Create a new Uint8Array to hold all combined parts
|
|
122
|
+
const concat = new Uint8Array(totalLength);
|
|
123
|
+
let offset = 0;
|
|
124
|
+
// Function to append data to concat
|
|
125
|
+
const appendToConcat = (data) => {
|
|
126
|
+
concat.set(data, offset);
|
|
127
|
+
offset += data.length;
|
|
128
|
+
};
|
|
129
|
+
// Building the final Uint8Array
|
|
130
|
+
appendToConcat(magicWordArr);
|
|
131
|
+
appendToConcat(nonceArr);
|
|
132
|
+
appendToConcat(separatorArr);
|
|
133
|
+
appendToConcat(bodyLengthArr);
|
|
134
|
+
appendToConcat(separatorArr);
|
|
135
|
+
appendToConcat(statusArr);
|
|
136
|
+
appendToConcat(separatorArr);
|
|
137
|
+
appendToConcat(body);
|
|
138
|
+
return concat;
|
|
139
|
+
};
|
|
140
|
+
exports.makeStreamPayloadMessage = makeStreamPayloadMessage;
|