@sencha/ext-webpack-plugin
Version:
A webpack plugin for ext-* applications
67 lines (66 loc) • 8.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports._extractFromSource = _extractFromSource;
exports._getDefaultVars = _getDefaultVars;
function _getDefaultVars() {
return {
touchFile: '/src/themer.js',
watchStarted: false,
buildstep: '1 of 1',
firstTime: true,
firstCompile: true,
browserCount: 0,
manifest: null,
extPath: 'ext',
pluginErrors: [],
deps: [],
usedExtComponents: [],
rebuild: true
};
}
function _extractFromSource(module, options, compilation, extComponents) {
const logv = require('./pluginUtil').logv;
logv(options.verbose, 'FUNCTION _extractFromSource');
try {
var js = module._source._value;
logv(options.verbose, 'FUNCTION extractFromSource');
var generate = require("@babel/generator").default;
var parse = require("babylon").parse;
var traverse = require("ast-traverse");
const statements = [];
const ast = parse(js, {
plugins: ['jsx', 'flow', 'doExpressions', 'objectRestSpread', 'classProperties', 'exportExtensions', 'asyncGenerators', 'functionBind', 'functionSent', 'dynamicImport'],
sourceType: 'module'
});
traverse(ast, {
pre: function (node) {
if (node.type === 'CallExpression' && node.callee && node.callee.object && node.callee.object.name === 'Ext') {
statements.push(generate(node).code);
}
if (node.type == 'ImportDeclaration') {
if (node.source.extra.rawValue == '@sencha/ext-react-classic' || node.source.extra.rawValue == '@sencha/ext-react-modern') {
node.specifiers.forEach(n => {
var name = n.imported.name;
var prefix = name.substring(0, 3);
if (prefix == 'Ext') {
name = name.substring(3);
}
name = name.toLowerCase();
statements.push(`Ext.create({xtype: '${name}'})`);
});
}
}
}
});
return statements;
} catch (e) {
//console.log(module.resource)
//console.log(js)
//console.log(e)
//compilation.errors.push('extractFromSource: ' + e)
return [];
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9leHRyYWN0RnJvbVNvdXJjZSIsIl9nZXREZWZhdWx0VmFycyIsInRvdWNoRmlsZSIsIndhdGNoU3RhcnRlZCIsImJ1aWxkc3RlcCIsImZpcnN0VGltZSIsImZpcnN0Q29tcGlsZSIsImJyb3dzZXJDb3VudCIsIm1hbmlmZXN0IiwiZXh0UGF0aCIsInBsdWdpbkVycm9ycyIsImRlcHMiLCJ1c2VkRXh0Q29tcG9uZW50cyIsInJlYnVpbGQiLCJtb2R1bGUiLCJvcHRpb25zIiwiY29tcGlsYXRpb24iLCJleHRDb21wb25lbnRzIiwibG9ndiIsInJlcXVpcmUiLCJ2ZXJib3NlIiwianMiLCJfc291cmNlIiwiX3ZhbHVlIiwiZ2VuZXJhdGUiLCJkZWZhdWx0IiwicGFyc2UiLCJ0cmF2ZXJzZSIsInN0YXRlbWVudHMiLCJhc3QiLCJwbHVnaW5zIiwic291cmNlVHlwZSIsInByZSIsIm5vZGUiLCJ0eXBlIiwiY2FsbGVlIiwib2JqZWN0IiwibmFtZSIsInB1c2giLCJjb2RlIiwic291cmNlIiwiZXh0cmEiLCJyYXdWYWx1ZSIsInNwZWNpZmllcnMiLCJmb3JFYWNoIiwibiIsImltcG9ydGVkIiwicHJlZml4Iiwic3Vic3RyaW5nIiwidG9Mb3dlckNhc2UiLCJlIl0sInNvdXJjZXMiOlsiLi4vc3JjL3JlYWN0VXRpbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIlxuXG5leHBvcnQgZnVuY3Rpb24gX2dldERlZmF1bHRWYXJzKCkge1xuICByZXR1cm4ge1xuICAgIHRvdWNoRmlsZTogJy9zcmMvdGhlbWVyLmpzJyxcbiAgICB3YXRjaFN0YXJ0ZWQgOiBmYWxzZSxcbiAgICBidWlsZHN0ZXA6ICcxIG9mIDEnLFxuICAgIGZpcnN0VGltZSA6IHRydWUsXG4gICAgZmlyc3RDb21waWxlOiB0cnVlLFxuICAgIGJyb3dzZXJDb3VudCA6IDAsXG4gICAgbWFuaWZlc3Q6IG51bGwsXG4gICAgZXh0UGF0aDogJ2V4dCcsXG4gICAgcGx1Z2luRXJyb3JzOiBbXSxcbiAgICBkZXBzOiBbXSxcbiAgICB1c2VkRXh0Q29tcG9uZW50czogW10sXG4gICAgcmVidWlsZDogdHJ1ZVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZXh0cmFjdEZyb21Tb3VyY2UobW9kdWxlLCBvcHRpb25zLCBjb21waWxhdGlvbiwgZXh0Q29tcG9uZW50cykge1xuICBjb25zdCBsb2d2ID0gcmVxdWlyZSgnLi9wbHVnaW5VdGlsJykubG9ndlxuICBsb2d2KG9wdGlvbnMudmVyYm9zZSwnRlVOQ1RJT04gX2V4dHJhY3RGcm9tU291cmNlJylcbnRyeSB7XG4gICAgdmFyIGpzID0gbW9kdWxlLl9zb3VyY2UuX3ZhbHVlXG4gICAgbG9ndihvcHRpb25zLnZlcmJvc2UsJ0ZVTkNUSU9OIGV4dHJhY3RGcm9tU291cmNlJylcblxuICAgIHZhciBnZW5lcmF0ZSA9IHJlcXVpcmUoXCJAYmFiZWwvZ2VuZXJhdG9yXCIpLmRlZmF1bHRcbiAgICB2YXIgcGFyc2UgPSByZXF1aXJlKFwiYmFieWxvblwiKS5wYXJzZVxuICAgIHZhciB0cmF2ZXJzZSA9IHJlcXVpcmUoXCJhc3QtdHJhdmVyc2VcIilcblxuICAgIGNvbnN0IHN0YXRlbWVudHMgPSBbXVxuXG4gICAgY29uc3QgYXN0ID0gcGFyc2UoanMsIHtcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgJ2pzeCcsXG4gICAgICAgICdmbG93JyxcbiAgICAgICAgJ2RvRXhwcmVzc2lvbnMnLFxuICAgICAgICAnb2JqZWN0UmVzdFNwcmVhZCcsXG4gICAgICAgICdjbGFzc1Byb3BlcnRpZXMnLFxuICAgICAgICAnZXhwb3J0RXh0ZW5zaW9ucycsXG4gICAgICAgICdhc3luY0dlbmVyYXRvcnMnLFxuICAgICAgICAnZnVuY3Rpb25CaW5kJyxcbiAgICAgICAgJ2Z1bmN0aW9uU2VudCcsXG4gICAgICAgICdkeW5hbWljSW1wb3J0J1xuICAgICAgXSxcbiAgICAgIHNvdXJjZVR5cGU6ICdtb2R1bGUnXG4gICAgfSlcblxuICAgIHRyYXZlcnNlKGFzdCwge1xuICAgICAgcHJlOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdDYWxsRXhwcmVzc2lvbidcbiAgICAgICAgICAgICYmIG5vZGUuY2FsbGVlXG4gICAgICAgICAgICAmJiBub2RlLmNhbGxlZS5vYmplY3RcbiAgICAgICAgICAgICYmIG5vZGUuY2FsbGVlLm9iamVjdC5uYW1lID09PSAnRXh0Jykge1xuICAgICAgICAgIHN0YXRlbWVudHMucHVzaChnZW5lcmF0ZShub2RlKS5jb2RlKVxuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT0gJ0ltcG9ydERlY2xhcmF0aW9uJykge1xuICAgICAgICAgIGlmICggbm9kZS5zb3VyY2UuZXh0cmEucmF3VmFsdWUgPT0gJ0BzZW5jaGEvZXh0LXJlYWN0LWNsYXNzaWMnIHx8XG4gICAgICAgICAgICAgICBub2RlLnNvdXJjZS5leHRyYS5yYXdWYWx1ZSA9PSAnQHNlbmNoYS9leHQtcmVhY3QtbW9kZXJuJykge1xuICAgICAgICAgICAgbm9kZS5zcGVjaWZpZXJzLmZvckVhY2gobiA9PiB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gbi5pbXBvcnRlZC5uYW1lXG4gICAgICAgICAgICAgIHZhciBwcmVmaXggPSBuYW1lLnN1YnN0cmluZygwLCAzKTtcbiAgICAgICAgICAgICAgaWYgKHByZWZpeCA9PSAnRXh0Jykge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgIHN0YXRlbWVudHMucHVzaChgRXh0LmNyZWF0ZSh7eHR5cGU6ICcke25hbWV9J30pYCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHN0YXRlbWVudHNcbn1cbmNhdGNoKGUpIHtcbiAgLy9jb25zb2xlLmxvZyhtb2R1bGUucmVzb3VyY2UpXG4gIC8vY29uc29sZS5sb2coanMpXG4gIC8vY29uc29sZS5sb2coZSlcbiAgLy9jb21waWxhdGlvbi5lcnJvcnMucHVzaCgnZXh0cmFjdEZyb21Tb3VyY2U6ICcgKyBlKVxuICByZXR1cm4gW11cbn1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFBQUEsTUFBQSxDQUFBQyxjQUFBLENBQUFDLE9BQUE7RUFBQUMsS0FBQTtBQUFBO0FBQUFELE9BQUEsQ0FBQUUsa0JBQUEsR0FBQUEsa0JBQUE7QUFBQUYsT0FBQSxDQUFBRyxlQUFBLEdBQUFBLGVBQUE7QUFFTCxTQUFTQSxlQUFlQSxDQUFBLEVBQUc7RUFDaEMsT0FBTztJQUNMQyxTQUFTLEVBQUUsZ0JBQWdCO0lBQzNCQyxZQUFZLEVBQUcsS0FBSztJQUNwQkMsU0FBUyxFQUFFLFFBQVE7SUFDbkJDLFNBQVMsRUFBRyxJQUFJO0lBQ2hCQyxZQUFZLEVBQUUsSUFBSTtJQUNsQkMsWUFBWSxFQUFHLENBQUM7SUFDaEJDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLE9BQU8sRUFBRSxLQUFLO0lBQ2RDLFlBQVksRUFBRSxFQUFFO0lBQ2hCQyxJQUFJLEVBQUUsRUFBRTtJQUNSQyxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCQyxPQUFPLEVBQUU7RUFDWCxDQUFDO0FBQ0g7QUFFTyxTQUFTYixrQkFBa0JBLENBQUNjLE1BQU0sRUFBRUMsT0FBTyxFQUFFQyxXQUFXLEVBQUVDLGFBQWEsRUFBRTtFQUM5RSxNQUFNQyxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQ0QsSUFBSTtFQUN6Q0EsSUFBSSxDQUFDSCxPQUFPLENBQUNLLE9BQU8sRUFBQyw2QkFBNkIsQ0FBQztFQUNyRCxJQUFJO0lBQ0EsSUFBSUMsRUFBRSxHQUFHUCxNQUFNLENBQUNRLE9BQU8sQ0FBQ0MsTUFBTTtJQUM5QkwsSUFBSSxDQUFDSCxPQUFPLENBQUNLLE9BQU8sRUFBQyw0QkFBNEIsQ0FBQztJQUVsRCxJQUFJSSxRQUFRLEdBQUdMLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDTSxPQUFPO0lBQ2xELElBQUlDLEtBQUssR0FBR1AsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDTyxLQUFLO0lBQ3BDLElBQUlDLFFBQVEsR0FBR1IsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUV0QyxNQUFNUyxVQUFVLEdBQUcsRUFBRTtJQUVyQixNQUFNQyxHQUFHLEdBQUdILEtBQUssQ0FBQ0wsRUFBRSxFQUFFO01BQ3BCUyxPQUFPLEVBQUUsQ0FDUCxLQUFLLEVBQ0wsTUFBTSxFQUNOLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLENBQ2hCO01BQ0RDLFVBQVUsRUFBRTtJQUNkLENBQUMsQ0FBQztJQUVGSixRQUFRLENBQUNFLEdBQUcsRUFBRTtNQUNaRyxHQUFHLEVBQUUsU0FBQUEsQ0FBU0MsSUFBSSxFQUFFO1FBQ2xCLElBQUlBLElBQUksQ0FBQ0MsSUFBSSxLQUFLLGdCQUFnQixJQUMzQkQsSUFBSSxDQUFDRSxNQUFNLElBQ1hGLElBQUksQ0FBQ0UsTUFBTSxDQUFDQyxNQUFNLElBQ2xCSCxJQUFJLENBQUNFLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssS0FBSyxFQUFFO1VBQ3hDVCxVQUFVLENBQUNVLElBQUksQ0FBQ2QsUUFBUSxDQUFDUyxJQUFJLENBQUMsQ0FBQ00sSUFBSSxDQUFDO1FBQ3RDO1FBQ0EsSUFBSU4sSUFBSSxDQUFDQyxJQUFJLElBQUksbUJBQW1CLEVBQUU7VUFDcEMsSUFBS0QsSUFBSSxDQUFDTyxNQUFNLENBQUNDLEtBQUssQ0FBQ0MsUUFBUSxJQUFJLDJCQUEyQixJQUN6RFQsSUFBSSxDQUFDTyxNQUFNLENBQUNDLEtBQUssQ0FBQ0MsUUFBUSxJQUFJLDBCQUEwQixFQUFFO1lBQzdEVCxJQUFJLENBQUNVLFVBQVUsQ0FBQ0MsT0FBTyxDQUFDQyxDQUFDLElBQUk7Y0FDM0IsSUFBSVIsSUFBSSxHQUFHUSxDQUFDLENBQUNDLFFBQVEsQ0FBQ1QsSUFBSTtjQUMxQixJQUFJVSxNQUFNLEdBQUdWLElBQUksQ0FBQ1csU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Y0FDakMsSUFBSUQsTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDbkJWLElBQUksR0FBR0EsSUFBSSxDQUFDVyxTQUFTLENBQUMsQ0FBQyxDQUFDO2NBQzFCO2NBQ0FYLElBQUksR0FBR0EsSUFBSSxDQUFDWSxXQUFXLENBQUMsQ0FBQztjQUN6QnJCLFVBQVUsQ0FBQ1UsSUFBSSxDQUFFLHVCQUFzQkQsSUFBSyxLQUFJLENBQUM7WUFDbkQsQ0FBQyxDQUFDO1VBQ0o7UUFDRjtNQUNGO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBT1QsVUFBVTtFQUNyQixDQUFDLENBQ0QsT0FBTXNCLENBQUMsRUFBRTtJQUNQO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsT0FBTyxFQUFFO0VBQ1g7QUFDQSJ9