UNPKG

@opendesign/octopus-worker-utilities

Version:

62 lines 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertOctopusV2 = exports.convertOctopus = exports.uploadFolderOutput = exports.getRandomString = void 0; const fs = require("fs"); const path = require("path"); require("source-map-support/register"); const getFiles = async (dir) => { const dirents = await fs.promises.readdir(dir, { withFileTypes: true }); const files = await Promise.all(dirents.map((dirent) => { const res = path.resolve(dir, dirent.name); return dirent.isDirectory() ? getFiles(res) : res; })); return Array.prototype.concat(...files); }; const getRandomString = () => (Math.random() + 1).toString(36).substring(2); exports.getRandomString = getRandomString; const uploadFolderOutput = async (s3, semaphore, parserOutputDir, s3OutputPrefix, s3Bucket) => { if (parserOutputDir.slice(-1) != '/') parserOutputDir += '/'; const promises = []; const files = (await getFiles(parserOutputDir)); promises.push(...files.map((filePath) => semaphore.use(() => { const key = `${s3OutputPrefix}${filePath.slice(parserOutputDir.length)}`; console.debug(`Uploading ${key}`); return s3 .upload({ Body: fs.createReadStream(filePath), Key: key, Bucket: s3Bucket || process.env.AWS_S3_BUCKET_NAME, }) .promise(); }))); await Promise.all(promises); }; exports.uploadFolderOutput = uploadFolderOutput; const convertOctopus = async (fileReaderClass, octopusConverterClass, localExporterClass, inputFile, outputDir) => { const reader = new fileReaderClass({ path: inputFile, storeAssetsOnFs: true }); const sourceDesign = await reader.sourceDesign; if (sourceDesign === null) { throw Error('Creating SourceDesign Failed'); } const converter = new octopusConverterClass({ sourceDesign }); const exporter = new localExporterClass({ path: outputDir }); await converter.convertDesign({ exporter }); await exporter.completed(); await reader.cleanup(); }; exports.convertOctopus = convertOctopus; const convertOctopusV2 = async (fileReaderClass, octopusConverterClass, localExporterClass, inputFile, outputDir) => { const reader = new fileReaderClass({ path: inputFile, storeAssetsOnFs: true }); const sourceDesign = await reader.sourceDesign; if (sourceDesign === null) { throw Error('Creating SourceDesign Failed'); } const converter = new octopusConverterClass({}); const exporter = new localExporterClass({ path: outputDir }); await converter.convertDesign({ sourceDesign, exporter }); await exporter.completed(); await reader.cleanup(); }; exports.convertOctopusV2 = convertOctopusV2; //# sourceMappingURL=index.js.map