@remotion/renderer 4.0.417 → 4.0.419
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.
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import type { DownloadBrowserProgressFn } from '../options/on-browser-download';
|
|
17
|
-
|
|
17
|
+
import { TESTED_VERSION } from './get-chrome-download-url';
|
|
18
|
+
export { TESTED_VERSION };
|
|
18
19
|
interface BrowserFetcherRevisionInfo {
|
|
19
20
|
folderPath: string;
|
|
20
21
|
executablePath: string;
|
|
@@ -30,4 +31,3 @@ export declare const downloadBrowser: ({ logLevel, indent, onProgress, version,
|
|
|
30
31
|
chromeMode: "chrome-for-testing" | "headless-shell";
|
|
31
32
|
}) => Promise<BrowserFetcherRevisionInfo | undefined>;
|
|
32
33
|
export declare const getRevisionInfo: (chromeMode: "chrome-for-testing" | "headless-shell") => BrowserFetcherRevisionInfo;
|
|
33
|
-
export {};
|
|
@@ -59,23 +59,9 @@ const extract_zip_1 = __importDefault(require("extract-zip"));
|
|
|
59
59
|
const node_util_1 = require("node:util");
|
|
60
60
|
const download_file_1 = require("../assets/download-file");
|
|
61
61
|
const make_file_executable_1 = require("../compositor/make-file-executable");
|
|
62
|
+
const get_chrome_download_url_1 = require("./get-chrome-download-url");
|
|
63
|
+
Object.defineProperty(exports, "TESTED_VERSION", { enumerable: true, get: function () { return get_chrome_download_url_1.TESTED_VERSION; } });
|
|
62
64
|
const get_download_destination_1 = require("./get-download-destination");
|
|
63
|
-
exports.TESTED_VERSION = '144.0.7559.20';
|
|
64
|
-
// https://github.com/microsoft/playwright/blame/e76ca6cba40c26bf22c19cf37398d2b9da9ed465/packages/playwright-core/browsers.json
|
|
65
|
-
// packages/playwright-core/browsers.json
|
|
66
|
-
const PLAYWRIGHT_VERSION = '1207'; // 144.0.7559.20
|
|
67
|
-
function getChromeDownloadUrl({ platform, version, chromeMode, }) {
|
|
68
|
-
if (platform === 'linux-arm64') {
|
|
69
|
-
if (chromeMode === 'chrome-for-testing') {
|
|
70
|
-
return `https://playwright.azureedge.net/builds/chromium/${version !== null && version !== void 0 ? version : PLAYWRIGHT_VERSION}/chromium-linux-arm64.zip`;
|
|
71
|
-
}
|
|
72
|
-
return `https://playwright.azureedge.net/builds/chromium/${version !== null && version !== void 0 ? version : PLAYWRIGHT_VERSION}/chromium-headless-shell-linux-arm64.zip`;
|
|
73
|
-
}
|
|
74
|
-
if (chromeMode === 'headless-shell') {
|
|
75
|
-
return `https://storage.googleapis.com/chrome-for-testing-public/${version !== null && version !== void 0 ? version : exports.TESTED_VERSION}/${platform}/chrome-headless-shell-${platform}.zip`;
|
|
76
|
-
}
|
|
77
|
-
return `https://storage.googleapis.com/chrome-for-testing-public/${version !== null && version !== void 0 ? version : exports.TESTED_VERSION}/${platform}/chrome-${platform}.zip`;
|
|
78
|
-
}
|
|
79
65
|
const mkdirAsync = fs.promises.mkdir;
|
|
80
66
|
const unlinkAsync = (0, node_util_1.promisify)(fs.unlink.bind(fs));
|
|
81
67
|
function existsAsync(filePath) {
|
|
@@ -112,7 +98,7 @@ const getExpectedVersion = (version, _chromeMode) => {
|
|
|
112
98
|
if (version) {
|
|
113
99
|
return version;
|
|
114
100
|
}
|
|
115
|
-
return
|
|
101
|
+
return get_chrome_download_url_1.TESTED_VERSION;
|
|
116
102
|
};
|
|
117
103
|
const readVersionFile = (chromeMode) => {
|
|
118
104
|
const versionFilePath = getVersionFilePath(chromeMode);
|
|
@@ -130,7 +116,7 @@ const writeVersionFile = (chromeMode, version) => {
|
|
|
130
116
|
};
|
|
131
117
|
const downloadBrowser = async ({ logLevel, indent, onProgress, version, chromeMode, }) => {
|
|
132
118
|
const platform = getPlatform();
|
|
133
|
-
const downloadURL = getChromeDownloadUrl({ platform, version, chromeMode });
|
|
119
|
+
const downloadURL = (0, get_chrome_download_url_1.getChromeDownloadUrl)({ platform, version, chromeMode });
|
|
134
120
|
const fileName = downloadURL.split('/').pop();
|
|
135
121
|
if (!fileName) {
|
|
136
122
|
throw new Error(`A malformed download URL was found: ${downloadURL}.`);
|
|
@@ -159,6 +145,7 @@ const downloadBrowser = async ({ logLevel, indent, onProgress, version, chromeMo
|
|
|
159
145
|
'Chrome Headless Shell is not available for Windows for arm64 architecture.',
|
|
160
146
|
].join('\n'));
|
|
161
147
|
}
|
|
148
|
+
(0, get_chrome_download_url_1.logDownloadUrl)({ url: downloadURL, logLevel, indent });
|
|
162
149
|
try {
|
|
163
150
|
await (0, download_file_1.downloadFile)({
|
|
164
151
|
url: downloadURL,
|
|
@@ -236,7 +223,7 @@ const getRevisionInfo = (chromeMode) => {
|
|
|
236
223
|
const downloadsFolder = getDownloadsFolder(chromeMode);
|
|
237
224
|
const platform = getPlatform();
|
|
238
225
|
const folderPath = getFolderPath(downloadsFolder, platform);
|
|
239
|
-
const url = getChromeDownloadUrl({ platform, version: null, chromeMode });
|
|
226
|
+
const url = (0, get_chrome_download_url_1.getChromeDownloadUrl)({ platform, version: null, chromeMode });
|
|
240
227
|
const local = fs.existsSync(folderPath);
|
|
241
228
|
return {
|
|
242
229
|
executablePath,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ChromeMode } from '../options/chrome-mode';
|
|
2
|
+
export declare const TESTED_VERSION = "144.0.7559.20";
|
|
3
|
+
export type Platform = 'linux64' | 'linux-arm64' | 'mac-x64' | 'mac-arm64' | 'win64';
|
|
4
|
+
export declare const canUseRemotionMediaBinaries: () => boolean;
|
|
5
|
+
export declare function getChromeDownloadUrl({ platform, version, chromeMode }: {
|
|
6
|
+
platform: Platform;
|
|
7
|
+
version: string | null;
|
|
8
|
+
chromeMode: ChromeMode;
|
|
9
|
+
}): string;
|
|
10
|
+
export declare const logDownloadUrl: ({ url, logLevel, indent, }: {
|
|
11
|
+
url: string;
|
|
12
|
+
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
13
|
+
indent: boolean;
|
|
14
|
+
}) => void;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.logDownloadUrl = exports.canUseRemotionMediaBinaries = exports.TESTED_VERSION = void 0;
|
|
37
|
+
exports.getChromeDownloadUrl = getChromeDownloadUrl;
|
|
38
|
+
const fs = __importStar(require("node:fs"));
|
|
39
|
+
const os = __importStar(require("node:os"));
|
|
40
|
+
const logger_1 = require("../logger");
|
|
41
|
+
exports.TESTED_VERSION = '144.0.7559.20';
|
|
42
|
+
// https://github.com/microsoft/playwright/blame/e76ca6cba40c26bf22c19cf37398d2b9da9ed465/packages/playwright-core/browsers.json
|
|
43
|
+
// packages/playwright-core/browsers.json
|
|
44
|
+
const PLAYWRIGHT_VERSION = '1207'; // 144.0.7559.20
|
|
45
|
+
const isAmazonLinux2023 = () => {
|
|
46
|
+
if (os.platform() !== 'linux') {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const osRelease = fs.readFileSync('/etc/os-release', 'utf-8');
|
|
51
|
+
return (osRelease.includes('Amazon Linux') && osRelease.includes('VERSION="2023"'));
|
|
52
|
+
}
|
|
53
|
+
catch (_a) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
// remotion.media binaries are built on Ubuntu 24.04 which requires glibc 2.35+
|
|
58
|
+
const MINIMUM_GLIBC_FOR_REMOTION_MEDIA = [2, 35];
|
|
59
|
+
const getGlibcVersion = () => {
|
|
60
|
+
if (process.platform !== 'linux') {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const { report } = process;
|
|
64
|
+
if (!report) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const rep = report.getReport();
|
|
68
|
+
if (typeof rep === 'string') {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
// @ts-expect-error no types
|
|
72
|
+
const { glibcVersionRuntime } = rep.header;
|
|
73
|
+
if (!glibcVersionRuntime) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const split = glibcVersionRuntime.split('.');
|
|
77
|
+
if (split.length !== 2) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return [Number(split[0]), Number(split[1])];
|
|
81
|
+
};
|
|
82
|
+
const isGlibcVersionAtLeast = (required) => {
|
|
83
|
+
const version = getGlibcVersion();
|
|
84
|
+
if (version === null) {
|
|
85
|
+
// If we can't detect, assume it's not compatible to be safe
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
const [major, minor] = version;
|
|
89
|
+
const [reqMajor, reqMinor] = required;
|
|
90
|
+
if (major > reqMajor) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
if (major === reqMajor && minor >= reqMinor) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
};
|
|
98
|
+
const canUseRemotionMediaBinaries = () => {
|
|
99
|
+
if (process.platform !== 'linux') {
|
|
100
|
+
// remotion.media binaries are only for Linux
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
return isGlibcVersionAtLeast(MINIMUM_GLIBC_FOR_REMOTION_MEDIA);
|
|
104
|
+
};
|
|
105
|
+
exports.canUseRemotionMediaBinaries = canUseRemotionMediaBinaries;
|
|
106
|
+
function getChromeDownloadUrl({ platform, version, chromeMode, }) {
|
|
107
|
+
if (platform === 'linux-arm64') {
|
|
108
|
+
// Amazon Linux 2023 on arm64 needs a special build.
|
|
109
|
+
// This binary is compatible with older glibc (no 2.35 requirement).
|
|
110
|
+
if (isAmazonLinux2023() && chromeMode === 'headless-shell' && !version) {
|
|
111
|
+
return 'https://remotion.media/chromium-headless-shell-amazon-linux-arm64-144.0.7559.20.zip';
|
|
112
|
+
}
|
|
113
|
+
if (chromeMode === 'chrome-for-testing') {
|
|
114
|
+
return `https://playwright.azureedge.net/builds/chromium/${version !== null && version !== void 0 ? version : PLAYWRIGHT_VERSION}/chromium-linux-arm64.zip`;
|
|
115
|
+
}
|
|
116
|
+
if (version) {
|
|
117
|
+
return `https://playwright.azureedge.net/builds/chromium/${version}/chromium-headless-shell-linux-arm64.zip`;
|
|
118
|
+
}
|
|
119
|
+
// Regular arm64 binary requires glibc 2.35+
|
|
120
|
+
if ((0, exports.canUseRemotionMediaBinaries)()) {
|
|
121
|
+
return `https://remotion.media/chromium-headless-shell-linux-arm64-${exports.TESTED_VERSION}.zip?clearcache`;
|
|
122
|
+
}
|
|
123
|
+
// Fall back to Playwright for older glibc (non-Amazon Linux systems)
|
|
124
|
+
return `https://playwright.azureedge.net/builds/chromium/${PLAYWRIGHT_VERSION}/chromium-headless-shell-linux-arm64.zip`;
|
|
125
|
+
}
|
|
126
|
+
if (chromeMode === 'headless-shell') {
|
|
127
|
+
if (platform === 'linux64' && version === null) {
|
|
128
|
+
if ((0, exports.canUseRemotionMediaBinaries)()) {
|
|
129
|
+
return `https://remotion.media/chromium-headless-shell-linux-x64-${exports.TESTED_VERSION}.zip?clearcache`;
|
|
130
|
+
}
|
|
131
|
+
// Fall back to Google's CDN for older glibc
|
|
132
|
+
return `https://storage.googleapis.com/chrome-for-testing-public/${exports.TESTED_VERSION}/${platform}/chrome-headless-shell-${platform}.zip`;
|
|
133
|
+
}
|
|
134
|
+
return `https://storage.googleapis.com/chrome-for-testing-public/${version !== null && version !== void 0 ? version : exports.TESTED_VERSION}/${platform}/chrome-headless-shell-${platform}.zip`;
|
|
135
|
+
}
|
|
136
|
+
return `https://storage.googleapis.com/chrome-for-testing-public/${version !== null && version !== void 0 ? version : exports.TESTED_VERSION}/${platform}/chrome-${platform}.zip`;
|
|
137
|
+
}
|
|
138
|
+
const logDownloadUrl = ({ url, logLevel, indent, }) => {
|
|
139
|
+
logger_1.Log.info({ indent, logLevel }, `Downloading from: ${url}`);
|
|
140
|
+
};
|
|
141
|
+
exports.logDownloadUrl = logDownloadUrl;
|
package/dist/esm/index.mjs
CHANGED
|
@@ -4711,8 +4711,8 @@ var defaultOnLog = ({ logLevel, tag, previewString }) => {
|
|
|
4711
4711
|
};
|
|
4712
4712
|
|
|
4713
4713
|
// src/open-browser.ts
|
|
4714
|
-
import
|
|
4715
|
-
import
|
|
4714
|
+
import fs10 from "node:fs";
|
|
4715
|
+
import os4 from "node:os";
|
|
4716
4716
|
import path9 from "node:path";
|
|
4717
4717
|
|
|
4718
4718
|
// src/browser/Launcher.ts
|
|
@@ -4746,24 +4746,123 @@ var launchChrome = async ({
|
|
|
4746
4746
|
};
|
|
4747
4747
|
|
|
4748
4748
|
// src/ensure-browser.ts
|
|
4749
|
-
import
|
|
4749
|
+
import fs8 from "fs";
|
|
4750
4750
|
|
|
4751
4751
|
// src/browser/BrowserFetcher.ts
|
|
4752
|
-
import * as
|
|
4753
|
-
import * as
|
|
4752
|
+
import * as fs7 from "node:fs";
|
|
4753
|
+
import * as os3 from "node:os";
|
|
4754
4754
|
import * as path8 from "node:path";
|
|
4755
4755
|
import extractZip from "extract-zip";
|
|
4756
4756
|
import { promisify } from "node:util";
|
|
4757
4757
|
|
|
4758
|
+
// src/browser/get-chrome-download-url.ts
|
|
4759
|
+
import * as fs5 from "node:fs";
|
|
4760
|
+
import * as os2 from "node:os";
|
|
4761
|
+
var TESTED_VERSION = "144.0.7559.20";
|
|
4762
|
+
var PLAYWRIGHT_VERSION = "1207";
|
|
4763
|
+
var isAmazonLinux2023 = () => {
|
|
4764
|
+
if (os2.platform() !== "linux") {
|
|
4765
|
+
return false;
|
|
4766
|
+
}
|
|
4767
|
+
try {
|
|
4768
|
+
const osRelease = fs5.readFileSync("/etc/os-release", "utf-8");
|
|
4769
|
+
return osRelease.includes("Amazon Linux") && osRelease.includes('VERSION="2023"');
|
|
4770
|
+
} catch {
|
|
4771
|
+
return false;
|
|
4772
|
+
}
|
|
4773
|
+
};
|
|
4774
|
+
var MINIMUM_GLIBC_FOR_REMOTION_MEDIA = [2, 35];
|
|
4775
|
+
var getGlibcVersion = () => {
|
|
4776
|
+
if (process.platform !== "linux") {
|
|
4777
|
+
return null;
|
|
4778
|
+
}
|
|
4779
|
+
const { report } = process;
|
|
4780
|
+
if (!report) {
|
|
4781
|
+
return null;
|
|
4782
|
+
}
|
|
4783
|
+
const rep = report.getReport();
|
|
4784
|
+
if (typeof rep === "string") {
|
|
4785
|
+
return null;
|
|
4786
|
+
}
|
|
4787
|
+
const { glibcVersionRuntime } = rep.header;
|
|
4788
|
+
if (!glibcVersionRuntime) {
|
|
4789
|
+
return null;
|
|
4790
|
+
}
|
|
4791
|
+
const split = glibcVersionRuntime.split(".");
|
|
4792
|
+
if (split.length !== 2) {
|
|
4793
|
+
return null;
|
|
4794
|
+
}
|
|
4795
|
+
return [Number(split[0]), Number(split[1])];
|
|
4796
|
+
};
|
|
4797
|
+
var isGlibcVersionAtLeast = (required2) => {
|
|
4798
|
+
const version = getGlibcVersion();
|
|
4799
|
+
if (version === null) {
|
|
4800
|
+
return false;
|
|
4801
|
+
}
|
|
4802
|
+
const [major, minor] = version;
|
|
4803
|
+
const [reqMajor, reqMinor] = required2;
|
|
4804
|
+
if (major > reqMajor) {
|
|
4805
|
+
return true;
|
|
4806
|
+
}
|
|
4807
|
+
if (major === reqMajor && minor >= reqMinor) {
|
|
4808
|
+
return true;
|
|
4809
|
+
}
|
|
4810
|
+
return false;
|
|
4811
|
+
};
|
|
4812
|
+
var canUseRemotionMediaBinaries = () => {
|
|
4813
|
+
if (process.platform !== "linux") {
|
|
4814
|
+
return false;
|
|
4815
|
+
}
|
|
4816
|
+
return isGlibcVersionAtLeast(MINIMUM_GLIBC_FOR_REMOTION_MEDIA);
|
|
4817
|
+
};
|
|
4818
|
+
function getChromeDownloadUrl({
|
|
4819
|
+
platform: platform2,
|
|
4820
|
+
version,
|
|
4821
|
+
chromeMode
|
|
4822
|
+
}) {
|
|
4823
|
+
if (platform2 === "linux-arm64") {
|
|
4824
|
+
if (isAmazonLinux2023() && chromeMode === "headless-shell" && !version) {
|
|
4825
|
+
return "https://remotion.media/chromium-headless-shell-amazon-linux-arm64-144.0.7559.20.zip";
|
|
4826
|
+
}
|
|
4827
|
+
if (chromeMode === "chrome-for-testing") {
|
|
4828
|
+
return `https://playwright.azureedge.net/builds/chromium/${version ?? PLAYWRIGHT_VERSION}/chromium-linux-arm64.zip`;
|
|
4829
|
+
}
|
|
4830
|
+
if (version) {
|
|
4831
|
+
return `https://playwright.azureedge.net/builds/chromium/${version}/chromium-headless-shell-linux-arm64.zip`;
|
|
4832
|
+
}
|
|
4833
|
+
if (canUseRemotionMediaBinaries()) {
|
|
4834
|
+
return `https://remotion.media/chromium-headless-shell-linux-arm64-${TESTED_VERSION}.zip?clearcache`;
|
|
4835
|
+
}
|
|
4836
|
+
return `https://playwright.azureedge.net/builds/chromium/${PLAYWRIGHT_VERSION}/chromium-headless-shell-linux-arm64.zip`;
|
|
4837
|
+
}
|
|
4838
|
+
if (chromeMode === "headless-shell") {
|
|
4839
|
+
if (platform2 === "linux64" && version === null) {
|
|
4840
|
+
if (canUseRemotionMediaBinaries()) {
|
|
4841
|
+
return `https://remotion.media/chromium-headless-shell-linux-x64-${TESTED_VERSION}.zip?clearcache`;
|
|
4842
|
+
}
|
|
4843
|
+
return `https://storage.googleapis.com/chrome-for-testing-public/${TESTED_VERSION}/${platform2}/chrome-headless-shell-${platform2}.zip`;
|
|
4844
|
+
}
|
|
4845
|
+
return `https://storage.googleapis.com/chrome-for-testing-public/${version ?? TESTED_VERSION}/${platform2}/chrome-headless-shell-${platform2}.zip`;
|
|
4846
|
+
}
|
|
4847
|
+
return `https://storage.googleapis.com/chrome-for-testing-public/${version ?? TESTED_VERSION}/${platform2}/chrome-${platform2}.zip`;
|
|
4848
|
+
}
|
|
4849
|
+
var logDownloadUrl = ({
|
|
4850
|
+
url,
|
|
4851
|
+
logLevel,
|
|
4852
|
+
indent
|
|
4853
|
+
}) => {
|
|
4854
|
+
Log.info({ indent, logLevel }, `Downloading from: ${url}`);
|
|
4855
|
+
};
|
|
4856
|
+
|
|
4758
4857
|
// src/browser/get-download-destination.ts
|
|
4759
|
-
import
|
|
4858
|
+
import fs6 from "node:fs";
|
|
4760
4859
|
import path7 from "node:path";
|
|
4761
4860
|
var getDownloadsCacheDir = () => {
|
|
4762
4861
|
const cwd = process.cwd();
|
|
4763
4862
|
let dir = cwd;
|
|
4764
4863
|
for (;; ) {
|
|
4765
4864
|
try {
|
|
4766
|
-
if (
|
|
4865
|
+
if (fs6.statSync(path7.join(dir, "package.json")).isFile()) {
|
|
4767
4866
|
break;
|
|
4768
4867
|
}
|
|
4769
4868
|
} catch (e) {}
|
|
@@ -4787,44 +4886,26 @@ var getDownloadsCacheDir = () => {
|
|
|
4787
4886
|
};
|
|
4788
4887
|
|
|
4789
4888
|
// src/browser/BrowserFetcher.ts
|
|
4790
|
-
var
|
|
4791
|
-
var
|
|
4792
|
-
function getChromeDownloadUrl({
|
|
4793
|
-
platform: platform2,
|
|
4794
|
-
version,
|
|
4795
|
-
chromeMode
|
|
4796
|
-
}) {
|
|
4797
|
-
if (platform2 === "linux-arm64") {
|
|
4798
|
-
if (chromeMode === "chrome-for-testing") {
|
|
4799
|
-
return `https://playwright.azureedge.net/builds/chromium/${version ?? PLAYWRIGHT_VERSION}/chromium-linux-arm64.zip`;
|
|
4800
|
-
}
|
|
4801
|
-
return `https://playwright.azureedge.net/builds/chromium/${version ?? PLAYWRIGHT_VERSION}/chromium-headless-shell-linux-arm64.zip`;
|
|
4802
|
-
}
|
|
4803
|
-
if (chromeMode === "headless-shell") {
|
|
4804
|
-
return `https://storage.googleapis.com/chrome-for-testing-public/${version ?? TESTED_VERSION}/${platform2}/chrome-headless-shell-${platform2}.zip`;
|
|
4805
|
-
}
|
|
4806
|
-
return `https://storage.googleapis.com/chrome-for-testing-public/${version ?? TESTED_VERSION}/${platform2}/chrome-${platform2}.zip`;
|
|
4807
|
-
}
|
|
4808
|
-
var mkdirAsync = fs6.promises.mkdir;
|
|
4809
|
-
var unlinkAsync = promisify(fs6.unlink.bind(fs6));
|
|
4889
|
+
var mkdirAsync = fs7.promises.mkdir;
|
|
4890
|
+
var unlinkAsync = promisify(fs7.unlink.bind(fs7));
|
|
4810
4891
|
function existsAsync(filePath) {
|
|
4811
4892
|
return new Promise((resolve2) => {
|
|
4812
|
-
|
|
4893
|
+
fs7.access(filePath, (err) => {
|
|
4813
4894
|
return resolve2(!err);
|
|
4814
4895
|
});
|
|
4815
4896
|
});
|
|
4816
4897
|
}
|
|
4817
4898
|
var getPlatform = () => {
|
|
4818
|
-
const
|
|
4819
|
-
switch (
|
|
4899
|
+
const platform3 = os3.platform();
|
|
4900
|
+
switch (platform3) {
|
|
4820
4901
|
case "darwin":
|
|
4821
|
-
return
|
|
4902
|
+
return os3.arch() === "arm64" ? "mac-arm64" : "mac-x64";
|
|
4822
4903
|
case "linux":
|
|
4823
|
-
return
|
|
4904
|
+
return os3.arch() === "arm64" ? "linux-arm64" : "linux64";
|
|
4824
4905
|
case "win32":
|
|
4825
4906
|
return "win64";
|
|
4826
4907
|
default:
|
|
4827
|
-
throw new Error("Unsupported platform: " +
|
|
4908
|
+
throw new Error("Unsupported platform: " + platform3);
|
|
4828
4909
|
}
|
|
4829
4910
|
};
|
|
4830
4911
|
var getDownloadsFolder = (chromeMode) => {
|
|
@@ -4844,14 +4925,14 @@ var getExpectedVersion = (version, _chromeMode) => {
|
|
|
4844
4925
|
var readVersionFile = (chromeMode) => {
|
|
4845
4926
|
const versionFilePath = getVersionFilePath(chromeMode);
|
|
4846
4927
|
try {
|
|
4847
|
-
return
|
|
4928
|
+
return fs7.readFileSync(versionFilePath, "utf-8").trim();
|
|
4848
4929
|
} catch {
|
|
4849
4930
|
return null;
|
|
4850
4931
|
}
|
|
4851
4932
|
};
|
|
4852
4933
|
var writeVersionFile = (chromeMode, version) => {
|
|
4853
4934
|
const versionFilePath = getVersionFilePath(chromeMode);
|
|
4854
|
-
|
|
4935
|
+
fs7.writeFileSync(versionFilePath, version);
|
|
4855
4936
|
};
|
|
4856
4937
|
var downloadBrowser = async ({
|
|
4857
4938
|
logLevel,
|
|
@@ -4860,34 +4941,35 @@ var downloadBrowser = async ({
|
|
|
4860
4941
|
version,
|
|
4861
4942
|
chromeMode
|
|
4862
4943
|
}) => {
|
|
4863
|
-
const
|
|
4864
|
-
const downloadURL = getChromeDownloadUrl({ platform:
|
|
4944
|
+
const platform3 = getPlatform();
|
|
4945
|
+
const downloadURL = getChromeDownloadUrl({ platform: platform3, version, chromeMode });
|
|
4865
4946
|
const fileName = downloadURL.split("/").pop();
|
|
4866
4947
|
if (!fileName) {
|
|
4867
4948
|
throw new Error(`A malformed download URL was found: ${downloadURL}.`);
|
|
4868
4949
|
}
|
|
4869
4950
|
const downloadsFolder = getDownloadsFolder(chromeMode);
|
|
4870
4951
|
const archivePath = path8.join(downloadsFolder, fileName);
|
|
4871
|
-
const outputPath = getFolderPath(downloadsFolder,
|
|
4952
|
+
const outputPath = getFolderPath(downloadsFolder, platform3);
|
|
4872
4953
|
const expectedVersion = getExpectedVersion(version, chromeMode);
|
|
4873
4954
|
if (await existsAsync(outputPath)) {
|
|
4874
4955
|
const installedVersion = readVersionFile(chromeMode);
|
|
4875
4956
|
if (installedVersion === expectedVersion) {
|
|
4876
4957
|
return getRevisionInfo(chromeMode);
|
|
4877
4958
|
}
|
|
4878
|
-
|
|
4959
|
+
fs7.rmSync(outputPath, { recursive: true, force: true });
|
|
4879
4960
|
}
|
|
4880
4961
|
if (!await existsAsync(downloadsFolder)) {
|
|
4881
4962
|
await mkdirAsync(downloadsFolder, {
|
|
4882
4963
|
recursive: true
|
|
4883
4964
|
});
|
|
4884
4965
|
}
|
|
4885
|
-
if (
|
|
4966
|
+
if (os3.platform() !== "darwin" && os3.platform() !== "linux" && os3.arch() === "arm64") {
|
|
4886
4967
|
throw new Error([
|
|
4887
4968
|
"Chrome Headless Shell is not available for Windows for arm64 architecture."
|
|
4888
4969
|
].join(`
|
|
4889
4970
|
`));
|
|
4890
4971
|
}
|
|
4972
|
+
logDownloadUrl({ url: downloadURL, logLevel, indent });
|
|
4891
4973
|
try {
|
|
4892
4974
|
await downloadFile({
|
|
4893
4975
|
url: downloadURL,
|
|
@@ -4910,12 +4992,12 @@ var downloadBrowser = async ({
|
|
|
4910
4992
|
await extractZip(archivePath, { dir: outputPath });
|
|
4911
4993
|
const chromePath = path8.join(outputPath, "chrome-linux", "chrome");
|
|
4912
4994
|
const chromeHeadlessShellPath = path8.join(outputPath, "chrome-linux", "chrome-headless-shell");
|
|
4913
|
-
if (
|
|
4914
|
-
|
|
4995
|
+
if (fs7.existsSync(chromePath)) {
|
|
4996
|
+
fs7.renameSync(chromePath, chromeHeadlessShellPath);
|
|
4915
4997
|
}
|
|
4916
4998
|
const chromeLinuxFolder = path8.join(outputPath, "chrome-linux");
|
|
4917
|
-
if (
|
|
4918
|
-
|
|
4999
|
+
if (fs7.existsSync(chromeLinuxFolder)) {
|
|
5000
|
+
fs7.renameSync(chromeLinuxFolder, path8.join(outputPath, "chrome-headless-shell-linux-arm64"));
|
|
4919
5001
|
}
|
|
4920
5002
|
} catch (err) {
|
|
4921
5003
|
return Promise.reject(err);
|
|
@@ -4929,37 +5011,37 @@ var downloadBrowser = async ({
|
|
|
4929
5011
|
makeFileExecutableIfItIsNot(revisionInfo.executablePath);
|
|
4930
5012
|
return revisionInfo;
|
|
4931
5013
|
};
|
|
4932
|
-
var getFolderPath = (downloadsFolder,
|
|
4933
|
-
return path8.resolve(downloadsFolder,
|
|
5014
|
+
var getFolderPath = (downloadsFolder, platform3) => {
|
|
5015
|
+
return path8.resolve(downloadsFolder, platform3);
|
|
4934
5016
|
};
|
|
4935
5017
|
var getExecutablePath2 = (chromeMode) => {
|
|
4936
5018
|
const downloadsFolder = getDownloadsFolder(chromeMode);
|
|
4937
|
-
const
|
|
4938
|
-
const folderPath = getFolderPath(downloadsFolder,
|
|
5019
|
+
const platform3 = getPlatform();
|
|
5020
|
+
const folderPath = getFolderPath(downloadsFolder, platform3);
|
|
4939
5021
|
if (chromeMode === "chrome-for-testing") {
|
|
4940
|
-
if (
|
|
4941
|
-
return path8.join(folderPath, `chrome-${
|
|
5022
|
+
if (platform3 === "mac-arm64" || platform3 === "mac-x64") {
|
|
5023
|
+
return path8.join(folderPath, `chrome-${platform3}`, "Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing");
|
|
4942
5024
|
}
|
|
4943
|
-
if (
|
|
5025
|
+
if (platform3 === "win64") {
|
|
4944
5026
|
return path8.join(folderPath, "chrome-win64", "chrome.exe");
|
|
4945
5027
|
}
|
|
4946
|
-
if (
|
|
5028
|
+
if (platform3 === "linux64" || platform3 === "linux-arm64") {
|
|
4947
5029
|
return path8.join(folderPath, "chrome-linux64", "chrome");
|
|
4948
5030
|
}
|
|
4949
|
-
throw new Error("unsupported platform" +
|
|
5031
|
+
throw new Error("unsupported platform" + platform3);
|
|
4950
5032
|
}
|
|
4951
5033
|
if (chromeMode === "headless-shell") {
|
|
4952
|
-
return path8.join(folderPath, `chrome-headless-shell-${
|
|
5034
|
+
return path8.join(folderPath, `chrome-headless-shell-${platform3}`, platform3 === "win64" ? "chrome-headless-shell.exe" : platform3 === "linux-arm64" ? "headless_shell" : "chrome-headless-shell");
|
|
4953
5035
|
}
|
|
4954
5036
|
throw new Error("unsupported chrome mode" + chromeMode);
|
|
4955
5037
|
};
|
|
4956
5038
|
var getRevisionInfo = (chromeMode) => {
|
|
4957
5039
|
const executablePath = getExecutablePath2(chromeMode);
|
|
4958
5040
|
const downloadsFolder = getDownloadsFolder(chromeMode);
|
|
4959
|
-
const
|
|
4960
|
-
const folderPath = getFolderPath(downloadsFolder,
|
|
4961
|
-
const url = getChromeDownloadUrl({ platform:
|
|
4962
|
-
const local =
|
|
5041
|
+
const platform3 = getPlatform();
|
|
5042
|
+
const folderPath = getFolderPath(downloadsFolder, platform3);
|
|
5043
|
+
const url = getChromeDownloadUrl({ platform: platform3, version: null, chromeMode });
|
|
5044
|
+
const local = fs7.existsSync(folderPath);
|
|
4963
5045
|
return {
|
|
4964
5046
|
executablePath,
|
|
4965
5047
|
folderPath,
|
|
@@ -4998,13 +5080,13 @@ var getBrowserStatus = ({
|
|
|
4998
5080
|
chromeMode
|
|
4999
5081
|
}) => {
|
|
5000
5082
|
if (browserExecutable) {
|
|
5001
|
-
if (!
|
|
5083
|
+
if (!fs8.existsSync(browserExecutable)) {
|
|
5002
5084
|
throw new Error(`"browserExecutable" was specified as '${browserExecutable}' but the path doesn't exist. Pass "null" for "browserExecutable" to download a browser automatically.`);
|
|
5003
5085
|
}
|
|
5004
5086
|
return { path: browserExecutable, type: "user-defined-path" };
|
|
5005
5087
|
}
|
|
5006
5088
|
const revision = getRevisionInfo(chromeMode);
|
|
5007
|
-
if (revision.local &&
|
|
5089
|
+
if (revision.local && fs8.existsSync(revision.executablePath)) {
|
|
5008
5090
|
const actualVersion = readVersionFile(chromeMode);
|
|
5009
5091
|
if (actualVersion === TESTED_VERSION) {
|
|
5010
5092
|
return { path: revision.executablePath, type: "local-puppeteer-browser" };
|
|
@@ -5030,7 +5112,7 @@ var ensureBrowser = (options) => {
|
|
|
5030
5112
|
};
|
|
5031
5113
|
|
|
5032
5114
|
// src/get-local-browser-executable.ts
|
|
5033
|
-
import
|
|
5115
|
+
import fs9 from "node:fs";
|
|
5034
5116
|
var getBrowserStatus2 = ({
|
|
5035
5117
|
browserExecutablePath,
|
|
5036
5118
|
indent,
|
|
@@ -5038,13 +5120,13 @@ var getBrowserStatus2 = ({
|
|
|
5038
5120
|
chromeMode
|
|
5039
5121
|
}) => {
|
|
5040
5122
|
if (browserExecutablePath) {
|
|
5041
|
-
if (!
|
|
5123
|
+
if (!fs9.existsSync(browserExecutablePath)) {
|
|
5042
5124
|
Log.warn({ indent, logLevel }, `Browser executable was specified as '${browserExecutablePath}' but the path doesn't exist.`);
|
|
5043
5125
|
}
|
|
5044
5126
|
return { path: browserExecutablePath, type: "user-defined-path" };
|
|
5045
5127
|
}
|
|
5046
5128
|
const revision = getRevisionInfo(chromeMode);
|
|
5047
|
-
if (revision.local &&
|
|
5129
|
+
if (revision.local && fs9.existsSync(revision.executablePath)) {
|
|
5048
5130
|
return { path: revision.executablePath, type: "local-puppeteer-browser" };
|
|
5049
5131
|
}
|
|
5050
5132
|
return { type: "no-browser" };
|
|
@@ -5096,10 +5178,10 @@ var getCpuCount = () => {
|
|
|
5096
5178
|
import { freemem } from "node:os";
|
|
5097
5179
|
|
|
5098
5180
|
// src/memory/from-docker-cgroup.ts
|
|
5099
|
-
import { readFileSync as
|
|
5181
|
+
import { readFileSync as readFileSync4 } from "node:fs";
|
|
5100
5182
|
var getMaxMemoryFromCgroupV2 = () => {
|
|
5101
5183
|
try {
|
|
5102
|
-
const data =
|
|
5184
|
+
const data = readFileSync4("/sys/fs/cgroup/memory.max", "utf-8");
|
|
5103
5185
|
if (data.trim() === "max") {
|
|
5104
5186
|
return Infinity;
|
|
5105
5187
|
}
|
|
@@ -5110,7 +5192,7 @@ var getMaxMemoryFromCgroupV2 = () => {
|
|
|
5110
5192
|
};
|
|
5111
5193
|
var getAvailableMemoryFromCgroupV2 = () => {
|
|
5112
5194
|
try {
|
|
5113
|
-
const data =
|
|
5195
|
+
const data = readFileSync4("/sys/fs/cgroup/memory.current", "utf-8");
|
|
5114
5196
|
return parseInt(data, 10);
|
|
5115
5197
|
} catch {
|
|
5116
5198
|
return null;
|
|
@@ -5118,7 +5200,7 @@ var getAvailableMemoryFromCgroupV2 = () => {
|
|
|
5118
5200
|
};
|
|
5119
5201
|
var getMaxMemoryFromCgroupV1 = () => {
|
|
5120
5202
|
try {
|
|
5121
|
-
const data =
|
|
5203
|
+
const data = readFileSync4("/sys/fs/cgroup/memory/memory.limit_in_bytes", "utf-8");
|
|
5122
5204
|
if (data.trim() === "max") {
|
|
5123
5205
|
return Infinity;
|
|
5124
5206
|
}
|
|
@@ -5129,7 +5211,7 @@ var getMaxMemoryFromCgroupV1 = () => {
|
|
|
5129
5211
|
};
|
|
5130
5212
|
var getAvailableMemoryFromCgroupV1 = () => {
|
|
5131
5213
|
try {
|
|
5132
|
-
const data =
|
|
5214
|
+
const data = readFileSync4("/sys/fs/cgroup/memory/memory.usage_in_bytes", "utf-8");
|
|
5133
5215
|
return parseInt(data, 10);
|
|
5134
5216
|
} catch {
|
|
5135
5217
|
return null;
|
|
@@ -5162,13 +5244,13 @@ var getMaxLambdaMemory = () => {
|
|
|
5162
5244
|
};
|
|
5163
5245
|
|
|
5164
5246
|
// src/memory/from-proc-meminfo.ts
|
|
5165
|
-
import { existsSync as existsSync3, readFileSync as
|
|
5247
|
+
import { existsSync as existsSync3, readFileSync as readFileSync5 } from "node:fs";
|
|
5166
5248
|
var getFreeMemoryFromProcMeminfo = (logLevel) => {
|
|
5167
5249
|
if (!existsSync3("/proc/meminfo")) {
|
|
5168
5250
|
return null;
|
|
5169
5251
|
}
|
|
5170
5252
|
try {
|
|
5171
|
-
const data =
|
|
5253
|
+
const data = readFileSync5("/proc/meminfo", "utf-8");
|
|
5172
5254
|
const lines = data.split(`
|
|
5173
5255
|
`);
|
|
5174
5256
|
const memAvailableLine = lines.find((line) => line.startsWith("MemAvailable"));
|
|
@@ -5332,7 +5414,7 @@ var internalOpenBrowser = async ({
|
|
|
5332
5414
|
if (chromiumOptions.userAgent) {
|
|
5333
5415
|
Log.verbose({ indent, logLevel, tag: "openBrowser()" }, `Using custom user agent: ${chromiumOptions.userAgent}`);
|
|
5334
5416
|
}
|
|
5335
|
-
const userDataDir = await
|
|
5417
|
+
const userDataDir = await fs10.promises.mkdtemp(path9.join(os4.tmpdir(), "puppeteer_dev_chrome_profile-"));
|
|
5336
5418
|
const browserInstance = await launchChrome({
|
|
5337
5419
|
executablePath,
|
|
5338
5420
|
logLevel,
|
|
@@ -5509,7 +5591,7 @@ import path19 from "node:path";
|
|
|
5509
5591
|
import { NoReactInternals as NoReactInternals7 } from "remotion/no-react";
|
|
5510
5592
|
|
|
5511
5593
|
// src/assets/download-and-map-assets-to-file.ts
|
|
5512
|
-
import
|
|
5594
|
+
import fs11 from "node:fs";
|
|
5513
5595
|
import path11, { extname as extname2 } from "node:path";
|
|
5514
5596
|
import { random } from "remotion/no-react";
|
|
5515
5597
|
|
|
@@ -14545,7 +14627,7 @@ var downloadAsset = async ({
|
|
|
14545
14627
|
const { downloadDir } = downloadMap;
|
|
14546
14628
|
if (downloadMap.hasBeenDownloadedMap[src]?.[downloadDir]) {
|
|
14547
14629
|
const claimedDownloadLocation = downloadMap.hasBeenDownloadedMap[src]?.[downloadDir];
|
|
14548
|
-
if (
|
|
14630
|
+
if (fs11.existsSync(claimedDownloadLocation)) {
|
|
14549
14631
|
return claimedDownloadLocation;
|
|
14550
14632
|
}
|
|
14551
14633
|
downloadMap.hasBeenDownloadedMap[src][downloadDir] = null;
|
|
@@ -14584,7 +14666,7 @@ var downloadAsset = async ({
|
|
|
14584
14666
|
});
|
|
14585
14667
|
ensureOutputDirectory(output);
|
|
14586
14668
|
const buff = Buffer.from(assetData, encoding);
|
|
14587
|
-
await
|
|
14669
|
+
await fs11.promises.writeFile(output, buff);
|
|
14588
14670
|
notifyAssetIsDownloaded({ src, downloadMap, downloadDir, to: output });
|
|
14589
14671
|
return output;
|
|
14590
14672
|
}
|
|
@@ -15165,8 +15247,8 @@ class OffthreadVideoServerEmitter {
|
|
|
15165
15247
|
}
|
|
15166
15248
|
|
|
15167
15249
|
// src/tmp-dir.ts
|
|
15168
|
-
import
|
|
15169
|
-
import
|
|
15250
|
+
import fs12, { mkdirSync } from "node:fs";
|
|
15251
|
+
import os5 from "node:os";
|
|
15170
15252
|
import path13 from "node:path";
|
|
15171
15253
|
var alphabet = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
15172
15254
|
var randomHash = () => {
|
|
@@ -15175,9 +15257,9 @@ var randomHash = () => {
|
|
|
15175
15257
|
}).join("");
|
|
15176
15258
|
};
|
|
15177
15259
|
var tmpDir = (str) => {
|
|
15178
|
-
const newDir = path13.join(
|
|
15179
|
-
if (
|
|
15180
|
-
|
|
15260
|
+
const newDir = path13.join(os5.tmpdir(), str + randomHash());
|
|
15261
|
+
if (fs12.existsSync(newDir)) {
|
|
15262
|
+
fs12.rmSync(newDir, {
|
|
15181
15263
|
recursive: true,
|
|
15182
15264
|
force: true
|
|
15183
15265
|
});
|
|
@@ -15187,7 +15269,7 @@ var tmpDir = (str) => {
|
|
|
15187
15269
|
};
|
|
15188
15270
|
|
|
15189
15271
|
// src/assets/inline-audio-mixing.ts
|
|
15190
|
-
import
|
|
15272
|
+
import fs13, { writeSync } from "node:fs";
|
|
15191
15273
|
import path14 from "node:path";
|
|
15192
15274
|
|
|
15193
15275
|
// src/sample-rate.ts
|
|
@@ -15253,7 +15335,7 @@ var makeInlineAudioMixing = (dir) => {
|
|
|
15253
15335
|
const cleanup = () => {
|
|
15254
15336
|
for (const fd of Object.values(openFiles)) {
|
|
15255
15337
|
try {
|
|
15256
|
-
|
|
15338
|
+
fs13.closeSync(fd);
|
|
15257
15339
|
} catch {}
|
|
15258
15340
|
}
|
|
15259
15341
|
deleteDirectory(folderToAdd);
|
|
@@ -15273,7 +15355,7 @@ var makeInlineAudioMixing = (dir) => {
|
|
|
15273
15355
|
}) => {
|
|
15274
15356
|
const filePath = getFilePath(asset);
|
|
15275
15357
|
if (!openFiles[filePath]) {
|
|
15276
|
-
openFiles[filePath] =
|
|
15358
|
+
openFiles[filePath] = fs13.openSync(filePath, "w");
|
|
15277
15359
|
}
|
|
15278
15360
|
if (writtenHeaders[filePath]) {
|
|
15279
15361
|
return;
|
|
@@ -15315,7 +15397,7 @@ var makeInlineAudioMixing = (dir) => {
|
|
|
15315
15397
|
binariesDirectory,
|
|
15316
15398
|
cancelSignal
|
|
15317
15399
|
});
|
|
15318
|
-
|
|
15400
|
+
fs13.renameSync(tmpFile, fd);
|
|
15319
15401
|
}
|
|
15320
15402
|
}
|
|
15321
15403
|
};
|
|
@@ -15592,13 +15674,13 @@ var makeRange = (from, to) => {
|
|
|
15592
15674
|
};
|
|
15593
15675
|
|
|
15594
15676
|
// src/port-config.ts
|
|
15595
|
-
import
|
|
15677
|
+
import os6 from "os";
|
|
15596
15678
|
var cached = null;
|
|
15597
15679
|
var getPortConfig = (preferIpv4) => {
|
|
15598
15680
|
if (cached) {
|
|
15599
15681
|
return cached;
|
|
15600
15682
|
}
|
|
15601
|
-
const networkInterfaces =
|
|
15683
|
+
const networkInterfaces = os6.networkInterfaces();
|
|
15602
15684
|
const flattened = flattenNetworkInterfaces(networkInterfaces);
|
|
15603
15685
|
const host = getHostToBind(flattened, preferIpv4);
|
|
15604
15686
|
const hostsToTry = getHostsToTry(flattened);
|
|
@@ -17378,7 +17460,7 @@ var validateSelectedPixelFormatAndCodecCombination = (pixelFormat, codec) => {
|
|
|
17378
17460
|
};
|
|
17379
17461
|
|
|
17380
17462
|
// src/render-frames.ts
|
|
17381
|
-
import
|
|
17463
|
+
import fs15 from "node:fs";
|
|
17382
17464
|
import path21 from "node:path";
|
|
17383
17465
|
import { NoReactInternals as NoReactInternals12 } from "remotion/no-react";
|
|
17384
17466
|
|
|
@@ -18295,7 +18377,7 @@ var onlyInlineAudio = (assets) => {
|
|
|
18295
18377
|
import * as assert2 from "node:assert";
|
|
18296
18378
|
|
|
18297
18379
|
// src/screenshot-task.ts
|
|
18298
|
-
import
|
|
18380
|
+
import fs14 from "node:fs";
|
|
18299
18381
|
var screenshotTask = async ({
|
|
18300
18382
|
format: format2,
|
|
18301
18383
|
height,
|
|
@@ -18356,7 +18438,7 @@ var screenshotTask = async ({
|
|
|
18356
18438
|
}
|
|
18357
18439
|
const buffer = Buffer.from(result.data, "base64");
|
|
18358
18440
|
if (path20) {
|
|
18359
|
-
await
|
|
18441
|
+
await fs14.promises.writeFile(path20, buffer);
|
|
18360
18442
|
}
|
|
18361
18443
|
return buffer;
|
|
18362
18444
|
} catch (err) {
|
|
@@ -18994,8 +19076,8 @@ var innerRenderFrames = async ({
|
|
|
18994
19076
|
darkMode
|
|
18995
19077
|
}) => {
|
|
18996
19078
|
if (outputDir) {
|
|
18997
|
-
if (!
|
|
18998
|
-
|
|
19079
|
+
if (!fs15.existsSync(outputDir)) {
|
|
19080
|
+
fs15.mkdirSync(outputDir, {
|
|
18999
19081
|
recursive: true
|
|
19000
19082
|
});
|
|
19001
19083
|
}
|
|
@@ -19426,8 +19508,8 @@ var renderFrames = (options) => {
|
|
|
19426
19508
|
|
|
19427
19509
|
// src/render-media.ts
|
|
19428
19510
|
import { LicensingInternals } from "@remotion/licensing";
|
|
19429
|
-
import
|
|
19430
|
-
import
|
|
19511
|
+
import fs17 from "node:fs";
|
|
19512
|
+
import os7 from "node:os";
|
|
19431
19513
|
import path26 from "node:path";
|
|
19432
19514
|
import { NoReactInternals as NoReactInternals15 } from "remotion/no-react";
|
|
19433
19515
|
|
|
@@ -20296,7 +20378,7 @@ var createFfmpegMergeFilter = ({
|
|
|
20296
20378
|
};
|
|
20297
20379
|
|
|
20298
20380
|
// src/ffmpeg-filter-file.ts
|
|
20299
|
-
import
|
|
20381
|
+
import fs16, { existsSync as existsSync5 } from "node:fs";
|
|
20300
20382
|
import path22 from "node:path";
|
|
20301
20383
|
var makeFfmpegFilterFile = (complexFilter, downloadMap) => {
|
|
20302
20384
|
if (complexFilter.filter === null) {
|
|
@@ -20313,13 +20395,13 @@ var makeFfmpegFilterFileStr = async (complexFilter, downloadMap) => {
|
|
|
20313
20395
|
const random2 = Math.random().toString().replace(".", "");
|
|
20314
20396
|
const filterFile = path22.join(downloadMap.complexFilter, "complex-filter-" + random2 + ".txt");
|
|
20315
20397
|
if (!existsSync5(downloadMap.complexFilter)) {
|
|
20316
|
-
|
|
20398
|
+
fs16.mkdirSync(downloadMap.complexFilter, { recursive: true });
|
|
20317
20399
|
}
|
|
20318
|
-
await
|
|
20400
|
+
await fs16.promises.writeFile(filterFile, complexFilter);
|
|
20319
20401
|
return {
|
|
20320
20402
|
file: filterFile,
|
|
20321
20403
|
cleanup: () => {
|
|
20322
|
-
|
|
20404
|
+
fs16.unlinkSync(filterFile);
|
|
20323
20405
|
}
|
|
20324
20406
|
};
|
|
20325
20407
|
};
|
|
@@ -21649,7 +21731,7 @@ var internalRenderMediaRaw = ({
|
|
|
21649
21731
|
}
|
|
21650
21732
|
const imageFormat = isAudioCodec(codec) ? "none" : provisionalImageFormat ?? compositionWithPossibleUnevenDimensions.defaultVideoImageFormat ?? DEFAULT_VIDEO_IMAGE_FORMAT;
|
|
21651
21733
|
validateSelectedPixelFormatAndImageFormatCombination(pixelFormat, imageFormat);
|
|
21652
|
-
const workingDir =
|
|
21734
|
+
const workingDir = fs17.mkdtempSync(path26.join(os7.tmpdir(), "react-motion-render"));
|
|
21653
21735
|
const preEncodedFileLocation = parallelEncoding ? path26.join(workingDir, "pre-encode." + getFileExtensionFromCodec(codec, audioCodec)) : null;
|
|
21654
21736
|
if (onCtrlCExit && workingDir) {
|
|
21655
21737
|
onCtrlCExit(`Delete ${workingDir}`, () => deleteDirectory(workingDir));
|
|
@@ -21974,10 +22056,10 @@ var internalRenderMediaRaw = ({
|
|
|
21974
22056
|
}
|
|
21975
22057
|
reject(err);
|
|
21976
22058
|
}).finally(() => {
|
|
21977
|
-
if (preEncodedFileLocation !== null &&
|
|
22059
|
+
if (preEncodedFileLocation !== null && fs17.existsSync(preEncodedFileLocation)) {
|
|
21978
22060
|
deleteDirectory(path26.dirname(preEncodedFileLocation));
|
|
21979
22061
|
}
|
|
21980
|
-
if (workingDir &&
|
|
22062
|
+
if (workingDir && fs17.existsSync(workingDir)) {
|
|
21981
22063
|
deleteDirectory(workingDir);
|
|
21982
22064
|
}
|
|
21983
22065
|
cleanupServerFn?.(false).catch((err) => {
|
|
@@ -22145,7 +22227,7 @@ var renderMedia = ({
|
|
|
22145
22227
|
|
|
22146
22228
|
// src/render-still.ts
|
|
22147
22229
|
import { LicensingInternals as LicensingInternals2 } from "@remotion/licensing";
|
|
22148
|
-
import
|
|
22230
|
+
import fs18, { statSync as statSync2 } from "node:fs";
|
|
22149
22231
|
import path27 from "node:path";
|
|
22150
22232
|
import { NoReactInternals as NoReactInternals16 } from "remotion/no-react";
|
|
22151
22233
|
var innerRenderStill = async ({
|
|
@@ -22199,7 +22281,7 @@ var innerRenderStill = async ({
|
|
|
22199
22281
|
output = typeof output === "string" ? path27.resolve(process.cwd(), output) : null;
|
|
22200
22282
|
validateJpegQuality(jpegQuality);
|
|
22201
22283
|
if (output) {
|
|
22202
|
-
if (
|
|
22284
|
+
if (fs18.existsSync(output)) {
|
|
22203
22285
|
if (!overwrite) {
|
|
22204
22286
|
throw new Error(`Cannot render still - "overwrite" option was set to false, but the output destination ${output} already exists.`);
|
|
22205
22287
|
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/renderer"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/renderer",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.419",
|
|
7
7
|
"description": "Render Remotion videos using Node.js or Bun",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"execa": "5.1.1",
|
|
25
25
|
"extract-zip": "2.0.1",
|
|
26
|
-
"remotion": "4.0.
|
|
27
|
-
"@remotion/streaming": "4.0.
|
|
26
|
+
"remotion": "4.0.419",
|
|
27
|
+
"@remotion/streaming": "4.0.419",
|
|
28
28
|
"source-map": "^0.8.0-beta.0",
|
|
29
29
|
"ws": "8.17.1",
|
|
30
|
-
"@remotion/licensing": "4.0.
|
|
30
|
+
"@remotion/licensing": "4.0.419"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"react": ">=16.8.0",
|
|
@@ -41,19 +41,19 @@
|
|
|
41
41
|
"react-dom": "19.2.3",
|
|
42
42
|
"@typescript/native-preview": "7.0.0-dev.20260105.1",
|
|
43
43
|
"@types/ws": "8.5.10",
|
|
44
|
-
"@remotion/example-videos": "4.0.
|
|
45
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
44
|
+
"@remotion/example-videos": "4.0.419",
|
|
45
|
+
"@remotion/eslint-config-internal": "4.0.419",
|
|
46
46
|
"eslint": "9.19.0",
|
|
47
47
|
"@types/node": "20.12.14"
|
|
48
48
|
},
|
|
49
49
|
"optionalDependencies": {
|
|
50
|
-
"@remotion/compositor-darwin-arm64": "4.0.
|
|
51
|
-
"@remotion/compositor-darwin-x64": "4.0.
|
|
52
|
-
"@remotion/compositor-linux-arm64-gnu": "4.0.
|
|
53
|
-
"@remotion/compositor-linux-arm64-musl": "4.0.
|
|
54
|
-
"@remotion/compositor-linux-x64-gnu": "4.0.
|
|
55
|
-
"@remotion/compositor-linux-x64-musl": "4.0.
|
|
56
|
-
"@remotion/compositor-win32-x64-msvc": "4.0.
|
|
50
|
+
"@remotion/compositor-darwin-arm64": "4.0.419",
|
|
51
|
+
"@remotion/compositor-darwin-x64": "4.0.419",
|
|
52
|
+
"@remotion/compositor-linux-arm64-gnu": "4.0.419",
|
|
53
|
+
"@remotion/compositor-linux-arm64-musl": "4.0.419",
|
|
54
|
+
"@remotion/compositor-linux-x64-gnu": "4.0.419",
|
|
55
|
+
"@remotion/compositor-linux-x64-musl": "4.0.419",
|
|
56
|
+
"@remotion/compositor-win32-x64-msvc": "4.0.419"
|
|
57
57
|
},
|
|
58
58
|
"keywords": [
|
|
59
59
|
"remotion",
|