@opendesign/octopus-worker-utilities
Version:
62 lines • 2.8 kB
JavaScript
;
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