"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_ASSISTANT, }; 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(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxR0Esa0JBd0JDO0FBN0hELDJDQUE0QjtBQUM1Qix1Q0FBd0I7QUFFeEIsNENBQWdEO0FBQ2hELG9EQUE2RDtBQUU3RCxrREFBc0Q7QUFDdEQseURBQStEO0FBQy9ELG1DQUFnQztBQUNoQywyQ0FBbUM7QUFDbkMsK0JBQStCO0FBQy9CLDJDQUFrRjtBQUNsRixtREFBcUU7QUFHeEQsUUFBQSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFOLG9CQUFNO0lBQ04sTUFBTSxFQUFOLGFBQU07SUFDTixJQUFJLEVBQUUsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFBLG9CQUFNLEVBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxHQUFHLG1DQUF1QjtDQUM1RSxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxTQUFpQixFQUFFLFVBQWtCLEVBQVcsRUFBRTtJQUN0RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0RCxPQUFPLE9BQU8sQ0FDWixRQUFRO1FBQ1IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMxQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDdEMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVLLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFXLEVBQUU7SUFDekUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLE9BQU8s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