🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

babel-plugin-define-variables

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-plugin-define-variables - npm Package Compare versions

Comparing version
0.0.1
to
0.0.2
+25
-3
esm/index.js

@@ -5,3 +5,5 @@ "use strict";

getConstCache = _require.getConstCache,
var2Expression = _require.var2Expression;
var2Expression = _require.var2Expression,
expr2str = _require.expr2str,
getPackage = _require.getPackage;

@@ -18,6 +20,26 @@ module.exports = function (_ref) {

if (parent.type === 'ObjectProperty' && parent.key === path.node) return;
if (parent.type === 'MemberExpression' && parent.object !== path.node) return;
if (parent.type === 'VariableDeclarator' && parent.id === path.node) return;
var identifier = expr2str(path.node);
if (parent.type === 'MemberExpression') {
var parentPath = path.parentPath;
while (parentPath && parentPath.node.type === 'MemberExpression') {
if (path.node === parentPath.node.property) identifier = "".concat(expr2str(parentPath.node.object), ".").concat(identifier);
path = parentPath;
parentPath = parentPath.parentPath;
}
} else if (parent.type === 'CallExpression' && expr2str(parent.callee) === identifier) {
if (identifier !== '__packageversion' || !parent.arguments.length || !t.isStringLiteral(parent.arguments[0])) return;
path = path.parentPath;
var packageName = expr2str(path.node.arguments[0]);
var packagePath = packageName && require.resolve(packageName);
var pkg = getPackage(packagePath);
path.replaceWith(t.stringLiteral(pkg ? pkg.version : ''));
return;
}
var defines = opts && opts.defines || {};
var identifier = path.node.name;

@@ -24,0 +46,0 @@ if (identifier === '__filename') {

"use strict";
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

@@ -34,4 +42,2 @@

;
function fileExists(path) {

@@ -85,2 +91,3 @@ try {

arr.forEach(function (v, i) {
// eslint-disable-next-line no-use-before-define
var expr = var2Expression(v, arr);

@@ -97,3 +104,4 @@ if (!expr) return;

var props = Object.keys(obj).map(function (k) {
var v = obj[k];
var v = obj[k]; // eslint-disable-next-line no-use-before-define
var expr = var2Expression(v, obj);

@@ -135,2 +143,147 @@ if (!expr) return;

function expr2str(expr) {
if (!expr) return '';
if (typeof expr === 'string') return expr; // if (expr.extra) return expr.extra.raw;
switch (expr.type) {
case 'JSXExpressionContainer':
return expr2str(expr.expression);
case 'MemberExpression':
case 'JSXMemberExpression':
// eslint-disable-next-line no-use-before-define
return memberExpr2Str(expr);
case 'Identifier':
case 'JSXIdentifier':
return expr.name;
case 'JSXNamespacedName':
return "".concat(expr.namespace.name, ":").concat(expr.name.name);
case 'ThisExpression':
return 'this';
case 'NumericLiteral':
case 'BooleanLiteral':
case 'StringLiteral':
return expr.value;
case 'NullLiteral':
return 'null';
case 'RegExpLiteral':
return "/".concat(expr.pattern, "/").concat(expr.flags);
case 'SpreadElement':
return "...".concat(expr2str(expr.argument));
case 'BinaryExpression':
return "".concat(expr2str(expr.left), " ").concat(expr.operator, " ").concat(expr2str(expr.right));
case 'UpdateExpression':
case 'UnaryExpression':
return "".concat(expr.prefix ? expr.operator : '').concat(expr2str(expr.argument)).concat(!expr.prefix ? expr.operator : '');
case 'ConditionalExpression':
return "".concat(expr2str(expr.test), " ? ").concat(expr2str(expr.consequent), " : ").concat(expr2str(expr.alternate));
case 'CallExpression':
return "".concat(expr2str(expr.callee), "(").concat(expr.arguments.map(function (a) {
return expr2str(a);
}).join(','), ")");
case 'NewExpression':
return "new ".concat(expr2str(expr.callee), "(").concat(expr.arguments.map(function (a) {
return expr2str(a);
}).join(','), ")");
case 'VariableDeclarator':
return "".concat(expr.id).concat(expr.init ? " = ".concat(expr2str(expr.init)) : '');
case 'VariableDeclaration':
return "".concat(expr.kind, " ").concat(expr.declarations.map(function (d) {
return expr2str(d);
}), ";");
case 'BlockStatement':
return "{".concat(expr2str(expr.body), "}");
case 'TemplateLiteral':
// eslint-disable-next-line no-use-before-define
return temp2var(expr);
case 'TaggedTemplateExpression':
return "".concat(expr2str(expr2str(expr.tag))).concat(expr2str(expr.quasi));
case 'FunctionExpression':
return "function ".concat(expr2str(expr.id), "(").concat(expr.params.map(function (a) {
return expr2str(a);
}).join(','), ")").concat(expr2str(expr.body));
case 'AssignmentPattern':
return "".concat(expr2str(expr.left), " = ").concat(expr2str(expr.right));
case 'ArrayExpression':
case 'ArrayPattern':
return "[".concat(expr.elements.map(function (v) {
return expr2str(v);
}).join(', '), "]");
case 'ObjectProperty':
return "".concat(expr.computed ? "[".concat(expr2str(expr.key), "]") : expr2str(expr.key), ": ").concat(expr2str(expr.value));
case 'ObjectMethod':
// eslint-disable-next-line
return "".concat(expr.kind !== 'method' ? "".concat(expr.kind, " ") : '').concat(expr2str(expr.key), "(").concat(expr.params.map(function (a) {
return expr2str(a);
}).join(', '), ")").concat(expr2str(expr.body));
case 'ObjectPattern':
case 'ObjectExpression':
return "{".concat(expr.properties.map(function (v) {
return expr2str(v);
}).join(', '), "}");
default:
return '';
}
}
function temp2var(expr) {
var arr = [].concat(_toConsumableArray(expr.expressions), _toConsumableArray(expr.quasis)).sort(function (a, b) {
return a.start - b.start;
});
var ret = '';
arr.forEach(function (v) {
if (v.type === 'TemplateElement') ret += v.value.raw;else ret += '${' + expr2str(v) + '}';
});
return '`' + ret + '`';
}
function memberExpr2Str(expr) {
var objStr;
var object = expr.object;
if (!object) return String(expr.value);
switch (expr.object.type) {
case 'MemberExpression':
case 'JSXMemberExpression':
objStr = memberExpr2Str(expr.object);
break;
default:
objStr = expr2str(expr.object);
}
var propIsMember = expr.property.type === 'MemberExpression';
var propStr = expr2str(expr.property);
return objStr + (objStr && !propIsMember ? '.' : '') + (propIsMember ? "[".concat(propStr, "]") : propStr);
}
function getPackage(filename) {
var configPath = filename && getConfigPath(filename);
if (configPath) return require(configPath);
}
module.exports = {

@@ -140,3 +293,6 @@ getConstCache: getConstCache,

arr2Expression: arr2Expression,
obj2Expression: obj2Expression
obj2Expression: obj2Expression,
expr2str: expr2str,
getConfigPath: getConfigPath,
getPackage: getPackage
};
+1
-1
{
"name": "babel-plugin-define-variables",
"version": "0.0.1",
"version": "0.0.2",
"description": "a babel define vars that like webpack.DefinePlugin",

@@ -5,0 +5,0 @@ "keywords": [

@@ -26,5 +26,4 @@ # babel-plugin-define-variables

defines: {
a: 1,
b: 'str',
c: new Date(),
'process.env.BUILD_ENV': process.env.BUILD_ENV,
'process.env.NODE_ENV': process.env.NODE_ENV,
}

@@ -40,12 +39,29 @@ }

- __filename
- __filename
the filename of code file than relative of `package.json` path that current project.
- __dirname
the dirname of code file than relative of `package.json` path that current project.
- __now
the time that build moment. format: 'yyyy-MM-dd hh:mm:ss'
- __timestamp
the timestamp that build moment.
- __packagename
- __packageversion
the package name of this project.
- __packageversion
the package version of this project. you can also use like this:
```js
__packageversion('react');
```
that you will get version of react;
const {
getConstCache,
var2Expression
var2Expression,
expr2str,
getPackage
} = require('./utils');

@@ -9,11 +11,29 @@

function IdentifierVisitor(path, { opts, cache }) {
const parent = path.parent;
let parent = path.parent;
if (!parent) return;
if (['FunctionDeclaration', 'ClassMethod', 'ObjectMethod'].includes(parent.type)) return;
if (parent.type === 'ObjectProperty' && parent.key === path.node) return;
if (parent.type === 'MemberExpression' && parent.object !== path.node) return;
if (parent.type === 'VariableDeclarator' && parent.id === path.node) return;
let identifier = expr2str(path.node);
if (parent.type === 'MemberExpression') {
let parentPath = path.parentPath;
while (parentPath && parentPath.node.type === 'MemberExpression') {
if (path.node === parentPath.node.property) identifier = `${expr2str(parentPath.node.object)}.${identifier}`;
path = parentPath;
parentPath = parentPath.parentPath;
}
} else if (parent.type === 'CallExpression' && expr2str(parent.callee) === identifier) {
if (identifier !== '__packageversion'
|| !parent.arguments.length
|| !t.isStringLiteral(parent.arguments[0])) return;
path = path.parentPath;
let packageName = expr2str(path.node.arguments[0]);
let packagePath = packageName && require.resolve(packageName);
let pkg = getPackage(packagePath);
path.replaceWith(t.stringLiteral(pkg ? pkg.version : ''));
return;
}
const defines = (opts && opts.defines) || {};
const identifier = path.node.name;
if (identifier === '__filename') {

@@ -60,2 +80,2 @@ path.replaceWith(t.stringLiteral(cache.filename));

};
};
};

@@ -24,3 +24,3 @@ const t = require('@babel/types');

return fmt;
};
}

@@ -75,2 +75,3 @@ function fileExists(path) {

arr.forEach((v, i) => {
// eslint-disable-next-line no-use-before-define
let expr = var2Expression(v, arr);

@@ -88,2 +89,3 @@ if (!expr) return;

let v = obj[k];
// eslint-disable-next-line no-use-before-define
let expr = var2Expression(v, obj);

@@ -114,2 +116,104 @@ if (!expr) return;

function expr2str(expr) {
if (!expr) return '';
if (typeof expr === 'string') return expr;
// if (expr.extra) return expr.extra.raw;
switch (expr.type) {
case 'JSXExpressionContainer':
return expr2str(expr.expression);
case 'MemberExpression':
case 'JSXMemberExpression':
// eslint-disable-next-line no-use-before-define
return memberExpr2Str(expr);
case 'Identifier':
case 'JSXIdentifier':
return expr.name;
case 'JSXNamespacedName':
return `${expr.namespace.name}:${expr.name.name}`;
case 'ThisExpression':
return 'this';
case 'NumericLiteral':
case 'BooleanLiteral':
case 'StringLiteral':
return expr.value;
case 'NullLiteral':
return 'null';
case 'RegExpLiteral':
return `/${expr.pattern}/${expr.flags}`;
case 'SpreadElement':
return `...${expr2str(expr.argument)}`;
case 'BinaryExpression':
return `${expr2str(expr.left)} ${expr.operator} ${expr2str(expr.right)}`;
case 'UpdateExpression':
case 'UnaryExpression':
return `${expr.prefix ? expr.operator : ''}${expr2str(expr.argument)}${!expr.prefix ? expr.operator : ''}`;
case 'ConditionalExpression':
return `${expr2str(expr.test)} ? ${expr2str(expr.consequent)} : ${expr2str(expr.alternate)}`;
case 'CallExpression':
return `${expr2str(expr.callee)}(${expr.arguments.map(a => expr2str(a)).join(',')})`;
case 'NewExpression':
return `new ${expr2str(expr.callee)}(${expr.arguments.map(a => expr2str(a)).join(',')})`;
case 'VariableDeclarator':
return `${expr.id}${expr.init ? ` = ${expr2str(expr.init)}` : ''}`;
case 'VariableDeclaration':
return `${expr.kind} ${expr.declarations.map(d => expr2str(d))};`;
case 'BlockStatement':
return `{${expr2str(expr.body)}}`;
case 'TemplateLiteral':
// eslint-disable-next-line no-use-before-define
return temp2var(expr);
case 'TaggedTemplateExpression':
return `${expr2str(expr2str(expr.tag))}${expr2str(expr.quasi)}`;
case 'FunctionExpression':
return `function ${expr2str(expr.id)}(${expr.params.map(a => expr2str(a)).join(',')})${expr2str(expr.body)}`;
case 'AssignmentPattern':
return `${expr2str(expr.left)} = ${expr2str(expr.right)}`;
case 'ArrayExpression':
case 'ArrayPattern':
return `[${expr.elements.map(v => expr2str(v)).join(', ')}]`;
case 'ObjectProperty':
return `${expr.computed ? `[${expr2str(expr.key)}]` : expr2str(expr.key)}: ${expr2str(expr.value)}`;
case 'ObjectMethod':
// eslint-disable-next-line
return `${expr.kind !== 'method' ? `${expr.kind} ` : ''}${expr2str(expr.key)}(${expr.params.map(a => expr2str(a)).join(', ')})${expr2str(expr.body)}`;
case 'ObjectPattern':
case 'ObjectExpression':
return `{${expr.properties.map(v => expr2str(v)).join(', ')}}`;
default: return '';
}
}
function temp2var(expr) {
let arr = [...expr.expressions, ...expr.quasis].sort((a, b) => a.start - b.start);
let ret = '';
arr.forEach(v => {
if (v.type === 'TemplateElement') ret += v.value.raw;
else ret += '${' + expr2str(v) + '}';
});
return '`' + ret + '`';
}
function memberExpr2Str(expr) {
let objStr;
const object = expr.object;
if (!object) return String(expr.value);
switch (expr.object.type) {
case 'MemberExpression':
case 'JSXMemberExpression':
objStr = memberExpr2Str(expr.object);
break;
default:
objStr = expr2str(expr.object);
}
let propIsMember = expr.property.type === 'MemberExpression';
let propStr = expr2str(expr.property);
return objStr + (objStr && !propIsMember ? '.' : '') + (propIsMember ? `[${propStr}]` : propStr);
}
function getPackage(filename) {
let configPath = filename && getConfigPath(filename);
if (configPath) return require(configPath);
}
module.exports = {

@@ -119,3 +223,6 @@ getConstCache,

arr2Expression,
obj2Expression
}
obj2Expression,
expr2str,
getConfigPath,
getPackage
};