1 | ;
|
2 |
|
3 | var _docsUrl = require('../docsUrl');
|
4 |
|
5 | var _docsUrl2 = _interopRequireDefault(_docsUrl);
|
6 |
|
7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
8 |
|
9 | module.exports = {
|
10 | meta: {
|
11 | docs: {
|
12 | url: (0, _docsUrl2.default)('dynamic-import-chunkname')
|
13 | },
|
14 | schema: [{
|
15 | type: 'object',
|
16 | properties: {
|
17 | importFunctions: {
|
18 | type: 'array',
|
19 | uniqueItems: true,
|
20 | items: {
|
21 | type: 'string'
|
22 | }
|
23 | },
|
24 | webpackChunknameFormat: {
|
25 | type: 'string'
|
26 | }
|
27 | }
|
28 | }]
|
29 | },
|
30 |
|
31 | create: function (context) {
|
32 | const config = context.options[0];
|
33 |
|
34 | var _ref = config || {},
|
35 | _ref$importFunctions = _ref.importFunctions;
|
36 |
|
37 | const importFunctions = _ref$importFunctions === undefined ? [] : _ref$importFunctions;
|
38 |
|
39 | var _ref2 = config || {},
|
40 | _ref2$webpackChunknam = _ref2.webpackChunknameFormat;
|
41 |
|
42 | const webpackChunknameFormat = _ref2$webpackChunknam === undefined ? '[0-9a-zA-Z-_/.]+' : _ref2$webpackChunknam;
|
43 |
|
44 |
|
45 | const commentFormat = ` webpackChunkName: "${webpackChunknameFormat}" `;
|
46 | const commentRegex = new RegExp(commentFormat);
|
47 |
|
48 | return {
|
49 | CallExpression(node) {
|
50 | if (node.callee.type !== 'Import' && importFunctions.indexOf(node.callee.name) < 0) {
|
51 | return;
|
52 | }
|
53 |
|
54 | const sourceCode = context.getSourceCode();
|
55 | const arg = node.arguments[0];
|
56 | const leadingComments = sourceCode.getComments(arg).leading;
|
57 |
|
58 | if (!leadingComments || leadingComments.length !== 1) {
|
59 | context.report({
|
60 | node,
|
61 | message: 'dynamic imports require a leading comment with the webpack chunkname'
|
62 | });
|
63 | return;
|
64 | }
|
65 |
|
66 | const comment = leadingComments[0];
|
67 | if (comment.type !== 'Block') {
|
68 | context.report({
|
69 | node,
|
70 | message: 'dynamic imports require a /* foo */ style comment, not a // foo comment'
|
71 | });
|
72 | return;
|
73 | }
|
74 |
|
75 | const webpackChunkDefinition = comment.value;
|
76 | if (!webpackChunkDefinition.match(commentRegex)) {
|
77 | context.report({
|
78 | node,
|
79 | message: `dynamic imports require a leading comment in the form /*${commentFormat}*/`
|
80 | });
|
81 | }
|
82 | }
|
83 | };
|
84 | }
|
85 | };
|
86 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL2R5bmFtaWMtaW1wb3J0LWNodW5rbmFtZS5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJ0eXBlIiwicHJvcGVydGllcyIsImltcG9ydEZ1bmN0aW9ucyIsInVuaXF1ZUl0ZW1zIiwiaXRlbXMiLCJ3ZWJwYWNrQ2h1bmtuYW1lRm9ybWF0IiwiY3JlYXRlIiwiY29udGV4dCIsImNvbmZpZyIsIm9wdGlvbnMiLCJjb21tZW50Rm9ybWF0IiwiY29tbWVudFJlZ2V4IiwiUmVnRXhwIiwiQ2FsbEV4cHJlc3Npb24iLCJub2RlIiwiY2FsbGVlIiwiaW5kZXhPZiIsIm5hbWUiLCJzb3VyY2VDb2RlIiwiZ2V0U291cmNlQ29kZSIsImFyZyIsImFyZ3VtZW50cyIsImxlYWRpbmdDb21tZW50cyIsImdldENvbW1lbnRzIiwibGVhZGluZyIsImxlbmd0aCIsInJlcG9ydCIsIm1lc3NhZ2UiLCJjb21tZW50Iiwid2VicGFja0NodW5rRGVmaW5pdGlvbiIsInZhbHVlIiwibWF0Y2giXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7OztBQUVBQSxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLDBCQUFSO0FBREQsS0FERjtBQUlKQyxZQUFRLENBQUM7QUFDUEMsWUFBTSxRQURDO0FBRVBDLGtCQUFZO0FBQ1ZDLHlCQUFpQjtBQUNmRixnQkFBTSxPQURTO0FBRWZHLHVCQUFhLElBRkU7QUFHZkMsaUJBQU87QUFDTEosa0JBQU07QUFERDtBQUhRLFNBRFA7QUFRVkssZ0NBQXdCO0FBQ3RCTCxnQkFBTTtBQURnQjtBQVJkO0FBRkwsS0FBRDtBQUpKLEdBRFM7O0FBc0JmTSxVQUFRLFVBQVVDLE9BQVYsRUFBbUI7QUFDekIsVUFBTUMsU0FBU0QsUUFBUUUsT0FBUixDQUFnQixDQUFoQixDQUFmOztBQUR5QixlQUVRRCxVQUFVLEVBRmxCO0FBQUEsb0NBRWpCTixlQUZpQjs7QUFBQSxVQUVqQkEsZUFGaUIsd0NBRUMsRUFGRDs7QUFBQSxnQkFHK0JNLFVBQVUsRUFIekM7QUFBQSxzQ0FHakJILHNCQUhpQjs7QUFBQSxVQUdqQkEsc0JBSGlCLHlDQUdRLGtCQUhSOzs7QUFLekIsVUFBTUssZ0JBQWlCLHVCQUFzQkwsc0JBQXVCLElBQXBFO0FBQ0EsVUFBTU0sZUFBZSxJQUFJQyxNQUFKLENBQVdGLGFBQVgsQ0FBckI7O0FBRUEsV0FBTztBQUNMRyxxQkFBZUMsSUFBZixFQUFxQjtBQUNuQixZQUFJQSxLQUFLQyxNQUFMLENBQVlmLElBQVosS0FBcUIsUUFBckIsSUFBaUNFLGdCQUFnQmMsT0FBaEIsQ0FBd0JGLEtBQUtDLE1BQUwsQ0FBWUUsSUFBcEMsSUFBNEMsQ0FBakYsRUFBb0Y7QUFDbEY7QUFDRDs7QUFFRCxjQUFNQyxhQUFhWCxRQUFRWSxhQUFSLEVBQW5CO0FBQ0EsY0FBTUMsTUFBTU4sS0FBS08sU0FBTCxDQUFlLENBQWYsQ0FBWjtBQUNBLGNBQU1DLGtCQUFrQkosV0FBV0ssV0FBWCxDQUF1QkgsR0FBdkIsRUFBNEJJLE9BQXBEOztBQUVBLFlBQUksQ0FBQ0YsZUFBRCxJQUFvQkEsZ0JBQWdCRyxNQUFoQixLQUEyQixDQUFuRCxFQUFzRDtBQUNwRGxCLGtCQUFRbUIsTUFBUixDQUFlO0FBQ2JaLGdCQURhO0FBRWJhLHFCQUFTO0FBRkksV0FBZjtBQUlBO0FBQ0Q7O0FBRUQsY0FBTUMsVUFBVU4sZ0JBQWdCLENBQWhCLENBQWhCO0FBQ0EsWUFBSU0sUUFBUTVCLElBQVIsS0FBaUIsT0FBckIsRUFBOEI7QUFDNUJPLGtCQUFRbUIsTUFBUixDQUFlO0FBQ2JaLGdCQURhO0FBRWJhLHFCQUFTO0FBRkksV0FBZjtBQUlBO0FBQ0Q7O0FBRUQsY0FBTUUseUJBQXlCRCxRQUFRRSxLQUF2QztBQUNBLFlBQUksQ0FBQ0QsdUJBQXVCRSxLQUF2QixDQUE2QnBCLFlBQTdCLENBQUwsRUFBaUQ7QUFDL0NKLGtCQUFRbUIsTUFBUixDQUFlO0FBQ2JaLGdCQURhO0FBRWJhLHFCQUFVLDJEQUEwRGpCLGFBQWM7QUFGckUsV0FBZjtBQUlEO0FBQ0Y7QUFsQ0ksS0FBUDtBQW9DRDtBQWxFYyxDQUFqQiIsImZpbGUiOiJydWxlcy9keW5hbWljLWltcG9ydC1jaHVua25hbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnZHluYW1pYy1pbXBvcnQtY2h1bmtuYW1lJyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFt7XG4gICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgaW1wb3J0RnVuY3Rpb25zOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgd2VicGFja0NodW5rbmFtZUZvcm1hdDoge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgY29uc3QgY29uZmlnID0gY29udGV4dC5vcHRpb25zWzBdXG4gICAgY29uc3QgeyBpbXBvcnRGdW5jdGlvbnMgPSBbXSB9ID0gY29uZmlnIHx8IHt9XG4gICAgY29uc3QgeyB3ZWJwYWNrQ2h1bmtuYW1lRm9ybWF0ID0gJ1swLTlhLXpBLVotXy8uXSsnIH0gPSBjb25maWcgfHwge31cblxuICAgIGNvbnN0IGNvbW1lbnRGb3JtYXQgPSBgIHdlYnBhY2tDaHVua05hbWU6IFwiJHt3ZWJwYWNrQ2h1bmtuYW1lRm9ybWF0fVwiIGBcbiAgICBjb25zdCBjb21tZW50UmVnZXggPSBuZXcgUmVnRXhwKGNvbW1lbnRGb3JtYXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSkge1xuICAgICAgICBpZiAobm9kZS5jYWxsZWUudHlwZSAhPT0gJ0ltcG9ydCcgJiYgaW1wb3J0RnVuY3Rpb25zLmluZGV4T2Yobm9kZS5jYWxsZWUubmFtZSkgPCAwKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5nZXRTb3VyY2VDb2RlKClcbiAgICAgICAgY29uc3QgYXJnID0gbm9kZS5hcmd1bWVudHNbMF1cbiAgICAgICAgY29uc3QgbGVhZGluZ0NvbW1lbnRzID0gc291cmNlQ29kZS5nZXRDb21tZW50cyhhcmcpLmxlYWRpbmdcblxuICAgICAgICBpZiAoIWxlYWRpbmdDb21tZW50cyB8fCBsZWFkaW5nQ29tbWVudHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdkeW5hbWljIGltcG9ydHMgcmVxdWlyZSBhIGxlYWRpbmcgY29tbWVudCB3aXRoIHRoZSB3ZWJwYWNrIGNodW5rbmFtZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbW1lbnQgPSBsZWFkaW5nQ29tbWVudHNbMF1cbiAgICAgICAgaWYgKGNvbW1lbnQudHlwZSAhPT0gJ0Jsb2NrJykge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiAnZHluYW1pYyBpbXBvcnRzIHJlcXVpcmUgYSAvKiBmb28gKi8gc3R5bGUgY29tbWVudCwgbm90IGEgLy8gZm9vIGNvbW1lbnQnLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3ZWJwYWNrQ2h1bmtEZWZpbml0aW9uID0gY29tbWVudC52YWx1ZVxuICAgICAgICBpZiAoIXdlYnBhY2tDaHVua0RlZmluaXRpb24ubWF0Y2goY29tbWVudFJlZ2V4KSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBgZHluYW1pYyBpbXBvcnRzIHJlcXVpcmUgYSBsZWFkaW5nIGNvbW1lbnQgaW4gdGhlIGZvcm0gLyoke2NvbW1lbnRGb3JtYXR9Ki9gLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 |
\ | No newline at end of file |