@tableau/taco-toolkit
Version:
Tableau Connector Toolkit
75 lines • 6.67 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateEntryFileNames = exports.postProcessHandlers = exports.preProcessHandlers = void 0;
var change_case_1 = require("change-case");
var fs_1 = __importDefault(require("fs"));
var fs_extra_1 = __importDefault(require("fs-extra"));
var path_1 = __importDefault(require("path"));
var error_codes_1 = require("../../../shared/errors/error-codes");
var error_source_1 = require("../../../shared/errors/error-source");
var status_code_1 = require("../../../shared/errors/status-code");
var connector_1 = require("../../taco-commands/utils/connector");
var parcel_error_1 = require("./parcel-error");
/*
This function will remove all import statements from a handler and make a copy in the tmp folder
*/
function preProcessHandlers(tacoRootPath) {
var tmpPath = getHandlersTmpPath(tacoRootPath);
if (!fs_1.default.existsSync(tmpPath)) {
fs_1.default.mkdirSync(tmpPath);
}
var handlersPath = (0, connector_1.getConnectorHandlersPath)(tacoRootPath);
var entryFiles = [];
fs_1.default.readdirSync(handlersPath, { withFileTypes: true }).forEach(function (dirent) {
if (dirent.isFile()) {
// TODO: this only handles the files on the root level. We should revamp this with a better solution.
var filename = dirent.name;
var content = fs_1.default.readFileSync(path_1.default.join(handlersPath, filename));
var className = (0, change_case_1.pascalCase)(path_1.default.parse(filename).name);
var processedContent = content.toString().replaceAll(/^\s*import[\s\S]*? from ['"]@tableau\/taco-toolkit\/handlers['"]\s*;*$/gm, '') +
// const mapping is required below since parcel tries to obfuscate the name of the class with a GUID
"globalRefs[\"".concat(className, "\"] = ").concat(className);
var distPath = path_1.default.join(tmpPath, filename);
fs_1.default.writeFileSync(distPath, processedContent);
entryFiles.push(distPath);
}
else {
// copy directories to tmp for compilation
var dirname = dirent.name;
var srcPath = path_1.default.join(handlersPath, dirname);
var distPath = path_1.default.join(tmpPath, dirname);
fs_extra_1.default.copySync(srcPath, distPath, { overwrite: true });
}
});
return entryFiles;
}
exports.preProcessHandlers = preProcessHandlers;
function postProcessHandlers(tacoRootPath) {
var tmpPath = getHandlersTmpPath(tacoRootPath);
fs_1.default.rmSync(tmpPath, {
recursive: true,
force: true,
});
}
exports.postProcessHandlers = postProcessHandlers;
function validateEntryFileNames(entries) {
var duplicates = (0, parcel_error_1.findBundleNameDuplicates)(entries);
if (duplicates.length > 0) {
return {
statusCode: status_code_1.StatusCode.Cancelled,
errorSource: error_source_1.ErrorSources.Client,
errorCode: error_codes_1.ErrorCodes.INEO9MTU,
message: "handlers entry file names must be unique regardless of extension: ".concat(duplicates
.map(function (names) { return "[".concat(names, "]"); })
.join(', ')),
};
}
}
exports.validateEntryFileNames = validateEntryFileNames;
function getHandlersTmpPath(tacoRootPath) {
return path_1.default.join(tacoRootPath, 'connector', 'tmp');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdG9yLWhhbmRsZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaS90YWNvLXNjcmlwdHMvYnVpbGQvY29ubmVjdG9yLWhhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJDQUF3QztBQUN4QywwQ0FBbUI7QUFDbkIsc0RBQTBCO0FBQzFCLDhDQUF1QjtBQUV2QixrRUFBK0Q7QUFDL0Qsb0VBQWtFO0FBQ2xFLGtFQUErRDtBQUMvRCxpRUFBOEU7QUFFOUUsK0NBQXlEO0FBRXpEOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsWUFBb0I7SUFDckQsSUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDaEQsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsWUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtLQUN0QjtJQUVELElBQU0sWUFBWSxHQUFHLElBQUEsb0NBQXdCLEVBQUMsWUFBWSxDQUFDLENBQUE7SUFDM0QsSUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFBO0lBRS9CLFlBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsTUFBTTtRQUNuRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuQixxR0FBcUc7WUFDckcsSUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQTtZQUM1QixJQUFNLE9BQU8sR0FBRyxZQUFFLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7WUFDbEUsSUFBTSxTQUFTLEdBQUcsSUFBQSx3QkFBVSxFQUFDLGNBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFdkQsSUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQywwRUFBMEUsRUFBRSxFQUFFLENBQUM7Z0JBQzdHLG9HQUFvRztnQkFDcEcsdUJBQWUsU0FBUyxtQkFBUSxTQUFTLENBQUUsQ0FBQTtZQUU3QyxJQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUM3QyxZQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO1lBQzVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7U0FDMUI7YUFBTTtZQUNMLDBDQUEwQztZQUMxQyxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFBO1lBQzNCLElBQU0sT0FBTyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ2hELElBQU0sUUFBUSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQzVDLGtCQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtTQUNyRDtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQztBQWxDRCxnREFrQ0M7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxZQUFvQjtJQUN0RCxJQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNoRCxZQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNqQixTQUFTLEVBQUUsSUFBSTtRQUNmLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQU5ELGtEQU1DO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsT0FBaUI7SUFDdEQsSUFBTSxVQUFVLEdBQUcsSUFBQSx1Q0FBd0IsRUFBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3pCLE9BQU87WUFDTCxVQUFVLEVBQUUsd0JBQVUsQ0FBQyxTQUFTO1lBQ2hDLFdBQVcsRUFBRSwyQkFBWSxDQUFDLE1BQU07WUFDaEMsU0FBUyxFQUFFLHdCQUFVLENBQUMsUUFBUTtZQUM5QixPQUFPLEVBQUUsNEVBQXFFLFVBQVU7aUJBQ3JGLEdBQUcsQ0FBQyxVQUFDLEtBQUssSUFBSyxPQUFBLFdBQUksS0FBSyxNQUFHLEVBQVosQ0FBWSxDQUFDO2lCQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUU7U0FDaEIsQ0FBQTtLQUNGO0FBQ0gsQ0FBQztBQVpELHdEQVlDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxZQUFvQjtJQUM5QyxPQUFPLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUNwRCxDQUFDIn0=