146 lines
11 KiB
JavaScript
146 lines
11 KiB
JavaScript
"use strict";
|
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
}
|
|
Object.defineProperty(o, k2, desc);
|
|
}) : (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
o[k2] = m[k];
|
|
}));
|
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
}) : function(o, v) {
|
|
o["default"] = v;
|
|
});
|
|
var __importStar = (this && this.__importStar) || (function () {
|
|
var ownKeys = function(o) {
|
|
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
var ar = [];
|
|
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
return ar;
|
|
};
|
|
return ownKeys(o);
|
|
};
|
|
return function (mod) {
|
|
if (mod && mod.__esModule) return mod;
|
|
var result = {};
|
|
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
})();
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.glob = exports.images = exports.base64 = exports.isPathOutsideSafe = exports.default_filters = void 0;
|
|
exports.get = get;
|
|
const path = __importStar(require("path"));
|
|
const fs = __importStar(require("fs"));
|
|
const dir_1 = require("@plastichub/fs/dir");
|
|
const inspect_1 = require("@plastichub/fs/inspect");
|
|
const exists_1 = require("@plastichub/fs/exists");
|
|
const osr_commons_1 = require("@plastichub/osr-commons");
|
|
const index_1 = require("./index");
|
|
const mime_types_1 = require("mime-types");
|
|
const glob_1 = require("glob");
|
|
const constants_1 = require("./constants");
|
|
const mime_handlers_1 = require("./mime-handlers");
|
|
exports.default_filters = {
|
|
isFile: osr_commons_1.isFile,
|
|
exists: exists_1.sync,
|
|
size: (filePath) => (0, inspect_1.createItem)(filePath).size < constants_1.MAX_FILE_SIZE,
|
|
};
|
|
const isPathInside = (childPath, parentPath) => {
|
|
const relation = path.relative(parentPath, childPath);
|
|
return Boolean(relation &&
|
|
!relation.startsWith('..') &&
|
|
!relation.startsWith('..' + path.sep));
|
|
};
|
|
const isPathOutsideSafe = (pathA, pathB) => {
|
|
const realA = fs.realpathSync(pathA);
|
|
const realB = fs.realpathSync(pathB);
|
|
return !isPathInside(realA, realB);
|
|
};
|
|
exports.isPathOutsideSafe = isPathOutsideSafe;
|
|
const base64 = (filePath) => {
|
|
try {
|
|
const fileBuffer = fs.readFileSync(filePath);
|
|
const mimeType = (0, mime_types_1.lookup)(filePath);
|
|
if (!mimeType) {
|
|
throw new Error('Unable to determine MIME type.');
|
|
}
|
|
const base64Data = fileBuffer.toString('base64');
|
|
return `data:${mimeType};base64,${base64Data}`;
|
|
}
|
|
catch (error) {
|
|
index_1.logger.error('fileToBase64 : Error reading file:', error);
|
|
return null;
|
|
}
|
|
};
|
|
exports.base64 = base64;
|
|
const images = (files) => {
|
|
return files.map((f) => ({
|
|
type: "image_url",
|
|
image_url: { url: (0, exports.base64)(f) }
|
|
}));
|
|
};
|
|
exports.images = images;
|
|
const glob = (projectPath, include = []) => {
|
|
if (!(0, exists_1.sync)(projectPath)) {
|
|
(0, dir_1.sync)(projectPath);
|
|
return [];
|
|
}
|
|
const filters = new Set();
|
|
const absolutePaths = new Set();
|
|
constants_1.EXCLUDE_GLOB.forEach(pattern => filters.add(pattern));
|
|
include.forEach(pattern => {
|
|
if (path.isAbsolute(pattern)) {
|
|
if (isPathInside(pattern, projectPath)) {
|
|
filters.add(pattern);
|
|
}
|
|
else {
|
|
absolutePaths.add(pattern);
|
|
}
|
|
}
|
|
else {
|
|
filters.add(pattern);
|
|
}
|
|
});
|
|
const globFiles = (0, glob_1.globSync)([...filters], {
|
|
cwd: projectPath,
|
|
absolute: false,
|
|
ignore: constants_1.EXCLUDE_GLOB
|
|
});
|
|
const allFiles = Array.from(new Set([
|
|
...globFiles.map(file => path.join(projectPath, file)),
|
|
...Array.from(absolutePaths)
|
|
]));
|
|
let files = allFiles.filter((f) => Object.keys(exports.default_filters).every((key) => exports.default_filters[key](f)));
|
|
return files;
|
|
};
|
|
exports.glob = glob;
|
|
async function get(projectPath, include = []) {
|
|
let files = (0, exports.glob)(projectPath, include);
|
|
let ret = files.map((fullPath) => {
|
|
try {
|
|
const relativePath = (0, osr_commons_1.forward_slash)(path.relative(projectPath, fullPath));
|
|
if ((0, osr_commons_1.isFile)(fullPath) && (0, exists_1.sync)(fullPath)) {
|
|
const mimeType = (0, mime_types_1.lookup)(fullPath) || 'text/plain';
|
|
const handler = mime_handlers_1.defaultMimeRegistry.getHandler(mimeType);
|
|
if (handler) {
|
|
return handler.handle(fullPath, relativePath);
|
|
}
|
|
return mime_handlers_1.defaultMimeRegistry.getHandler('text/*')?.handle(fullPath, relativePath) || null;
|
|
}
|
|
return null;
|
|
}
|
|
catch (error) {
|
|
index_1.logger.error(`Error reading file ${fullPath}:`, error);
|
|
return null;
|
|
}
|
|
});
|
|
ret = await ret.filter((r) => r !== null);
|
|
return ret;
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzR0Esa0JBd0JDO0FBOUhELDJDQUE0QjtBQUM1Qix1Q0FBd0I7QUFFeEIsNENBQWdEO0FBQ2hELG9EQUE2RDtBQUU3RCxrREFBc0Q7QUFDdEQseURBQStEO0FBQy9ELG1DQUFnQztBQUNoQywyQ0FBbUM7QUFDbkMsK0JBQStCO0FBQy9CLDJDQUF5RDtBQUN6RCxtREFBcUU7QUFJeEQsUUFBQSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFOLG9CQUFNO0lBQ04sTUFBTSxFQUFOLGFBQU07SUFDTixJQUFJLEVBQUUsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFBLG9CQUFNLEVBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxHQUFHLHlCQUFhO0NBQ2xFLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLFNBQWlCLEVBQUUsVUFBa0IsRUFBVyxFQUFFO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELE9BQU8sT0FBTyxDQUNaLFFBQVE7UUFDUixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzFCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUN0QyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUssTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQVcsRUFBRTtJQUN6RSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBSlcsUUFBQSxpQkFBaUIscUJBSTVCO0FBRUssTUFBTSxNQUFNLEdBQUcsQ0FBQyxRQUFnQixFQUFpQixFQUFFO0lBQ3hELElBQUksQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBQSxtQkFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxPQUFPLFFBQVEsUUFBUSxXQUFXLFVBQVUsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsY0FBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDLENBQUM7QUFiVyxRQUFBLE1BQU0sVUFhakI7QUFFSyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWUsRUFBb0MsRUFBRTtJQUMxRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkIsSUFBSSxFQUFFLFdBQVc7UUFDakIsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUEsY0FBTSxFQUFDLENBQUMsQ0FBQyxFQUFFO0tBQzlCLENBQUMsQ0FBQyxDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBTFksUUFBQSxNQUFNLFVBS2xCO0FBRU0sTUFBTSxJQUFJLEdBQUcsQ0FDbEIsV0FBbUIsRUFDbkIsVUFBb0IsRUFBRSxFQUN0QixFQUFFO0lBQ0YsSUFBSSxDQUFDLElBQUEsYUFBTSxFQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDekIsSUFBQSxVQUFHLEVBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtJQUNqQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO0lBRXZDLHdCQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBRXJELE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDdEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDNUIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0QixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixNQUFNLFNBQVMsR0FBRyxJQUFBLGVBQVEsRUFBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDdkMsR0FBRyxFQUFFLFdBQVc7UUFDaEIsUUFBUSxFQUFFLEtBQUs7UUFDZixNQUFNLEVBQUUsd0JBQVk7S0FDckIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNsQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RCxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0tBQzdCLENBQUMsQ0FBQyxDQUFBO0lBRUgsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsdUJBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNyRSxDQUFBO0lBQ0QsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDLENBQUE7QUF6Q1ksUUFBQSxJQUFJLFFBeUNoQjtBQUVNLEtBQUssVUFBVSxHQUFHLENBQ3ZCLFdBQW1CLEVBQ25CLFVBQW9CLEVBQUU7SUFFdEIsSUFBSSxLQUFLLEdBQUcsSUFBQSxZQUFJLEVBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3RDLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUMvQixJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxJQUFBLDJCQUFhLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtZQUN4RSxJQUFJLElBQUEsb0JBQU0sRUFBQyxRQUFRLENBQUMsSUFBSSxJQUFBLGFBQU0sRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFBLG1CQUFNLEVBQUMsUUFBUSxDQUFDLElBQUksWUFBWSxDQUFBO2dCQUNqRCxNQUFNLE9BQU8sR0FBRyxtQ0FBbUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ3hELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQTtnQkFDL0MsQ0FBQztnQkFDRCxPQUFPLG1DQUFtQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQTtZQUN6RixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGNBQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLFFBQVEsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ3RELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsR0FBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFBO0lBQ3pDLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyJ9
|