Socket
Socket
Sign inDemoInstall

babel-plugin-transform-require-ignore

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-plugin-transform-require-ignore - npm Package Compare versions

Comparing version 0.0.2 to 0.1.0

yarn.lock

110

lib/__tests__/index.spec.js
'use strict';
var _chai = require('chai');
var _ava = require('ava');
var _babelEql = require('./helpers/babelEql');
var _babelCore = require('babel-core');
var _babelEql2 = _interopRequireDefault(_babelEql);
var babel = _interopRequireWildcard(_babelCore);

@@ -15,55 +15,61 @@ var _ = require('../.');

describe(__filename, function () {
context('single use', function () {
it('should remove require call expression by extensions', function () {
(0, _babelEql2.default)('\n require(\'./index.less\');\n require(\'./index.sass\');\n require(\'babel\');\n ', {
plugins: [[_2.default, {
extensions: ['.less', 'sass']
}]]
}).eql('\n require(\'babel\');\n ');
});
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
it('should not process when remove require call expression in assignment expression', function () {
(0, _chai.expect)(function () {
var source = '\n var { a } = require(\'./index.less\');\n require(\'babel\');\n ';
(0, _babelEql2.default)(source, {
plugins: [[_2.default, {
extensions: ['.less']
}]]
});
}).to.throw('./index.less should not be assign to variable.');
});
function trimLines(str) {
return str.replace(/^\n+|\n+$/, '').replace(/\n+/g, '\n');
}
it('should remove require call expression in other block', function () {
(0, _babelEql2.default)('\n (function (){\n require(\'./index.sass\');\n require(\'./index.less\');\n require(\'babel\');\n })();\n ', {
plugins: [[_2.default, {
extensions: ['.less', '.sass']
}]]
}).eql('\n (function (){\n require(\'babel\');\n })();\n ');
});
});
var babelAssign = function babelAssign() {
var babelOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return function (t, expected, input) {
var code = babel.transform(input, babelOptions).code;
t.is(trimLines(code), trimLines(babel.transform(expected, babelOptions).code));
};
};
context('with babel-preset-es2015', function () {
it('should remove require call expression', function () {
(0, _babelEql2.default)('\n require(\'./index.sass\');\n require(\'babel\');\n ', {
presets: ['es2015'],
plugins: [[_2.default, {
extensions: ['.less', '.sass']
}]]
}).eql('\n require(\'babel\');\n ', {
presets: ['es2015']
});
var babelThrow = function babelThrow() {
var babelOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return function (t, input, msg) {
var error = t.throws(function () {
babel.transform(input, babelOptions);
});
t.true(error.toString().includes(msg));
};
};
it('should remove require call expression after import transformed', function () {
(0, _babelEql2.default)('\n import \'./index.less\';\n import * as babel from \'babel\';\n ', {
presets: ['es2015'],
plugins: [[_2.default, {
extensions: ['.less', '.sass']
}]]
}).eql('\n import * as babel from \'babel\';\n ', {
presets: ['es2015']
});
});
});
});
var simpleBabelAssign = babelAssign({
plugins: [[_2.default, {
extensions: ['.less', 'sass']
}]]
});
var withES2015BabelAssign = babelAssign({
presets: ['es2015'],
plugins: [[_2.default, {
extensions: ['.less', 'sass']
}]]
});
var simpleBabelThrow = babelThrow({
plugins: [[_2.default, {
extensions: ['.less', 'sass']
}]]
});
(0, _ava.test)('should remove require call expression by extensions', simpleBabelAssign, '\nrequire(\'babel\');\n', '\nrequire(\'./index.less\');\nrequire(\'./index.sass\');\nrequire(\'babel\');\n');
(0, _ava.test)('should remove import call expression by extensions', simpleBabelAssign, '\nimport \'./index.less\';\nimport * as babel from \'babel\';', '\nimport * as babel from \'babel\';\n');
(0, _ava.test)('should not process when remove require call expression in assignment expression', simpleBabelThrow, '\nvar { a } = require(\'./index.less\');\nrequire(\'babel\');\n', './index.less should not be assign to variable.');
(0, _ava.test)('should not process when remove import expression in default imports', simpleBabelThrow, '\nimport myCss from \'./index.less\';\nimport * as babel from \'babel\';\n', './index.less should not be imported using default imports.');
(0, _ava.test)('should not process when remove import expression in named imports', simpleBabelThrow, '\nimport { myCss } from \'./index.less\';\nimport * as babel from \'babel\';\n', './index.less should not be imported using named imports.');
(0, _ava.test)('should not process when remove import expression in namespace imports', simpleBabelThrow, '\nimport * as myCss from \'./index.less\';\nimport * as babel from \'babel\';\n', './index.less should not be imported using namespace imports.');
(0, _ava.test)('should remove require call expression in other block', simpleBabelAssign, '\n(function (){\n require(\'./index.sass\');\n require(\'./index.less\');\n require(\'babel\');\n})();\n', '\n(function (){\n require(\'babel\');\n})();\n');
(0, _ava.test)('should remove require call expression', withES2015BabelAssign, '\n require(\'./index.sass\');\n require(\'babel\');\n', '\n require(\'babel\');\n');
(0, _ava.test)('should remove require call expression after import transformed', withES2015BabelAssign, '\n import \'./index.less\';\n import * as babel from \'babel\';\n', '\n import * as babel from \'babel\';\n');

@@ -36,2 +36,35 @@ 'use strict';

}
},
ImportDeclaration: {
enter: function enter(nodePath, _ref2) {
var opts = _ref2.opts;
var extensionsInput = [].concat(opts.extensions || []);
if (extensionsInput.length === 0) {
return;
}
var extensions = extensionsInput.map(extFix);
if (extensions.indexOf(_path2.default.extname(nodePath.node.source.value)) > -1) {
var specifiers = nodePath.get('specifiers');
if (specifiers.length) {
var specifier = specifiers[specifiers.length - 1];
if (specifier.isImportDefaultSpecifier()) {
throw new Error(nodePath.node.source.value + ' should not be imported using default imports.');
}
if (specifier.isImportSpecifier()) {
throw new Error(nodePath.node.source.value + ' should not be imported using named imports.');
}
if (specifier.isImportNamespaceSpecifier()) {
throw new Error(nodePath.node.source.value + ' should not be imported using namespace imports.');
}
}
nodePath.remove();
}
}
}

@@ -38,0 +71,0 @@ }

{
"name": "babel-plugin-transform-require-ignore",
"version": "0.0.2",
"version": "0.1.0",
"description": "ignore the required file by extension type",
"main": "lib/index.js",
"config": {
"MOCHA_OPTS": "-R dot --compilers js:babel-core/register src/__tests__/*.spec.js"
"ava": {
"files": [
"src/__tests__/*.spec.js"
],
"require": [
"babel-core/register"
],
"babelrc": "inherit"
},
"scripts": {
"coverage": "babel-node ./node_modules/.bin/istanbul cover _mocha -- $npm_package_config_MOCHA_OPTS",
"ut": "mocha $npm_package_config_MOCHA_OPTS",
"test": "npm run lint && npm run coverage",
"test": "npm run lint && ava -v",
"build": "babel src/ --out-dir lib/",

@@ -22,13 +26,12 @@ "pre-publish": "babel src --out-dir lib",

"devDependencies": {
"babel-cli": "^6.3.17",
"babel-core": "^6.3.17",
"babel-eslint": "^5.0.0-beta6",
"babel-plugin-transform-class-properties": "^6.3.13",
"babel-plugin-transform-object-rest-spread": "^6.3.13",
"babel-preset-es2015": "^6.3.13",
"chai": "^3.4.1",
"eslint": "^1.10.3",
"eslint-config-airbnb": "^2.1.0",
"istanbul": "^1.0.0-alpha.2",
"mocha": "^2.3.4"
"ava": "0.18.2",
"babel-cli": "6.23.0",
"babel-core": "6.23.1",
"babel-eslint": "7.1.1",
"babel-plugin-transform-class-properties": "6.23.0",
"babel-plugin-transform-object-rest-spread": "6.23.0",
"babel-preset-es2015": "6.22.0",
"eslint": "3.17.1",
"eslint-config-airbnb-base": "11.1.1",
"eslint-plugin-import": "2.2.0"
},

@@ -35,0 +38,0 @@ "dependencies": {},

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc