23 lines
1.1 KiB
JavaScript
23 lines
1.1 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.getFileSource = void 0;
|
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
const node_path_1 = __importDefault(require("node:path"));
|
|
const allowedFileExtensions = ['js', 'ts', 'tsx', 'jsx', 'map', 'mjs'];
|
|
// Must be async function for proper error handling
|
|
const getFileSource = (remotionRoot, p) => {
|
|
if (!allowedFileExtensions.find((extension) => p.endsWith(extension))) {
|
|
return Promise.reject(new Error(`Not allowed to open ${p}`));
|
|
}
|
|
const resolved = node_path_1.default.resolve(remotionRoot, p);
|
|
const relativeToProcessCwd = node_path_1.default.relative(remotionRoot, resolved);
|
|
if (relativeToProcessCwd.startsWith('..')) {
|
|
return Promise.reject(new Error(`Not allowed to open ${relativeToProcessCwd}`));
|
|
}
|
|
return node_fs_1.default.promises.readFile(p, 'utf-8');
|
|
};
|
|
exports.getFileSource = getFileSource;
|