devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
51 lines (50 loc) • 2.53 kB
JavaScript
/**
* DevExtreme (cjs/renovation/test_utils/transformers/declaration.js)
* Version: 23.2.6
* Build date: Wed May 01 2024
*
* Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
const {
compileCode: compileCode
} = require("@devextreme-generator/core");
const {
getTsConfig: getTsConfig
} = require("@devextreme-generator/build-helpers");
const generator = require("@devextreme-generator/inferno").default;
const ts = require("typescript");
const path = require("path");
const fs = require("fs");
const tsJest = require("ts-jest");
const getCacheKey = require("./get_cache_key");
const {
BASE_GENERATOR_OPTIONS_WITH_JQUERY: BASE_GENERATOR_OPTIONS_WITH_JQUERY
} = require("../../../../build/gulp/generator/generator-options");
const THIS_FILE = fs.readFileSync(__filename);
const jestTransformer = tsJest.createTransformer();
const TS_CONFIG_PATH = "build/gulp/generator/ts-configs/jest.tsconfig.json";
const tsConfig = getTsConfig(TS_CONFIG_PATH);
generator.options = BASE_GENERATOR_OPTIONS_WITH_JQUERY;
module.exports = {
process(src, filename, config) {
if (-1 !== filename.indexOf("test_components") && ".tsx" === path.extname(filename)) {
const result = compileCode(generator, src, {
path: filename,
dirname: path.dirname(filename)
}, {
includeExtraComponents: true
});
if (result && result[1]) {
const componentName = (result[1].code.match(/export default class (\w+) extends/) || [])[1];
if (!componentName) {
return ""
}
return jestTransformer.process(ts.transpileModule('import { createElement as h } from "inferno-create-element";\n '.concat(result[0].code, "\n ").concat(result[1].code.replace("export default", "export ").replace(new RegExp("\\b".concat(componentName, "\\b"), "g"), "".concat(componentName, "Class")).replace(new RegExp("import ".concat(componentName, "Component from\\s+\\S+")), "const ".concat(componentName, "Component = ").concat(componentName))), tsConfig).outputText, filename, config)
}
}
return jestTransformer.process(src, filename, config)
},
getCacheKey: (fileData, filePath, configStr) => getCacheKey(fileData, filePath, configStr, THIS_FILE)
};