|
1 | 1 | /**
|
2 | 2 | * @fileoverview Restrict file extensions that may be required
|
3 | 3 | * @author Scott Andrews
|
| 4 | + * @deprecated |
4 | 5 | */
|
5 | 6 | 'use strict';
|
6 | 7 |
|
7 |
| -var path = require('path'); |
8 |
| - |
9 |
| -// ------------------------------------------------------------------------------ |
10 |
| -// Constants |
11 |
| -// ------------------------------------------------------------------------------ |
12 |
| - |
13 |
| -var DEFAULTS = { |
14 |
| - extensions: ['.jsx'] |
15 |
| -}; |
16 |
| - |
17 |
| -var PKG_REGEX = /^[^\.]((?!\/).)*$/; |
18 |
| - |
19 | 8 | // ------------------------------------------------------------------------------
|
20 | 9 | // Rule Definition
|
21 | 10 | // ------------------------------------------------------------------------------
|
22 | 11 |
|
23 |
| -module.exports = function(context) { |
24 |
| - |
25 |
| - function isPackage(id) { |
26 |
| - return PKG_REGEX.test(id); |
27 |
| - } |
28 |
| - |
29 |
| - function isRequire(expression) { |
30 |
| - return expression.callee.name === 'require'; |
31 |
| - } |
32 |
| - |
33 |
| - function getId(expression) { |
34 |
| - return expression.arguments[0] && expression.arguments[0].value; |
35 |
| - } |
| 12 | +var util = require('util'); |
| 13 | +var jsxRequireExtension = require('./jsx-require-extension'); |
| 14 | +var isWarnedForDeprecation = false; |
36 | 15 |
|
37 |
| - function getExtension(id) { |
38 |
| - return path.extname(id || ''); |
39 |
| - } |
40 |
| - |
41 |
| - function getExtensionsConfig() { |
42 |
| - return context.options[0] && context.options[0].extensions || DEFAULTS.extensions; |
43 |
| - } |
44 |
| - |
45 |
| - var forbiddenExtensions = getExtensionsConfig().reduce(function (extensions, extension) { |
46 |
| - extensions[extension] = true; |
47 |
| - return extensions; |
48 |
| - }, Object.create(null)); |
49 |
| - |
50 |
| - function isForbiddenExtension(ext) { |
51 |
| - return ext in forbiddenExtensions; |
52 |
| - } |
53 |
| - |
54 |
| - // -------------------------------------------------------------------------- |
55 |
| - // Public |
56 |
| - // -------------------------------------------------------------------------- |
57 |
| - |
58 |
| - return { |
59 |
| - |
60 |
| - CallExpression: function(node) { |
61 |
| - if (isRequire(node)) { |
62 |
| - var id = getId(node); |
63 |
| - var ext = getExtension(id); |
64 |
| - if (!isPackage(id) && isForbiddenExtension(ext)) { |
65 |
| - context.report({ |
66 |
| - node: node, |
67 |
| - message: 'Unable to require module with extension \'' + ext + '\'' |
68 |
| - }); |
69 |
| - } |
| 16 | +module.exports = function(context) { |
| 17 | + return util._extend(jsxRequireExtension(context), { |
| 18 | + Program: function() { |
| 19 | + if (isWarnedForDeprecation || /\=-(f|-format)=/.test(process.argv.join('='))) { |
| 20 | + return; |
70 | 21 | }
|
71 |
| - } |
72 |
| - |
73 |
| - }; |
74 | 22 |
|
| 23 | + /* eslint-disable no-console */ |
| 24 | + console.log('The react/require-extension rule is deprecated. Please ' + |
| 25 | + 'use the react/jsx-require-extension rule instead.'); |
| 26 | + /* eslint-enable no-console */ |
| 27 | + isWarnedForDeprecation = true; |
| 28 | + } |
| 29 | + }); |
75 | 30 | };
|
76 | 31 |
|
77 | 32 | module.exports.schema = [{
|
|
0 commit comments