Socket
Socket
Sign inDemoInstall

mjml-parser-xml

Package Overview
Dependencies
Maintainers
6
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mjml-parser-xml - npm Package Compare versions

Comparing version 4.6.2 to 4.6.3-alpha.0

31

lib/helpers/cleanNode.js

@@ -1,34 +0,27 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = cleanNode;
var _keys = require('babel-runtime/core-js/object/keys');
var _lodash = _interopRequireDefault(require("lodash"));
var _keys2 = _interopRequireDefault(_keys);
exports.default = cleanNode;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function cleanNode(node) {
delete node.parent;
delete node.parent; // Delete children if needed
// Delete children if needed
if (node.children && node.children.length) {
_lodash2.default.forEach(node.children, cleanNode);
_lodash["default"].forEach(node.children, cleanNode);
} else {
delete node.children;
}
} // Delete attributes if needed
// Delete attributes if needed
if (node.attributes && (0, _keys2.default)(node.attributes).length === 0) {
if (node.attributes && Object.keys(node.attributes).length === 0) {
delete node.attributes;
}
}
module.exports = exports['default'];
module.exports = exports.default;

@@ -1,14 +0,12 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = convertBooleansOnAttrs;
exports["default"] = convertBooleansOnAttrs;
var _mapValues = require('lodash/mapValues');
var _mapValues = _interopRequireDefault(require("lodash/mapValues"));
var _mapValues2 = _interopRequireDefault(_mapValues);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**

@@ -18,8 +16,8 @@ * Convert "true" and "false" string attributes values

*/
function convertBooleansOnAttrs(attrs) {
return (0, _mapValues2.default)(attrs, function (val) {
return (0, _mapValues["default"])(attrs, function (val) {
if (val === 'true') {
return true;
}
if (val === 'false') {

@@ -32,2 +30,3 @@ return false;

}
module.exports = exports['default'];
module.exports = exports.default;

@@ -1,14 +0,12 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = setEmptyAttributes;
exports["default"] = setEmptyAttributes;
var _forEach = require('lodash/forEach');
var _forEach = _interopRequireDefault(require("lodash/forEach"));
var _forEach2 = _interopRequireDefault(_forEach);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function setEmptyAttributes(node) {

@@ -18,6 +16,8 @@ if (!node.attributes) {

}
if (node.children) {
(0, _forEach2.default)(node.children, setEmptyAttributes);
(0, _forEach["default"])(node.children, setEmptyAttributes);
}
}
module.exports = exports['default'];
module.exports = exports.default;

@@ -1,67 +0,38 @@

'use strict';
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = MJMLParser;
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _extends2 = require('babel-runtime/helpers/extends');
var _htmlparser = _interopRequireDefault(require("htmlparser2"));
var _extends3 = _interopRequireDefault(_extends2);
var _isObject = _interopRequireDefault(require("lodash/isObject"));
exports.default = MJMLParser;
var _findLastIndex = _interopRequireDefault(require("lodash/findLastIndex"));
var _htmlparser = require('htmlparser2');
var _find = _interopRequireDefault(require("lodash/find"));
var _htmlparser2 = _interopRequireDefault(_htmlparser);
var _path = _interopRequireDefault(require("path"));
var _isObject = require('lodash/isObject');
var _fs = _interopRequireDefault(require("fs"));
var _isObject2 = _interopRequireDefault(_isObject);
var _filter = _interopRequireDefault(require("lodash/fp/filter"));
var _findLastIndex = require('lodash/findLastIndex');
var _map = _interopRequireDefault(require("lodash/fp/map"));
var _findLastIndex2 = _interopRequireDefault(_findLastIndex);
var _flow = _interopRequireDefault(require("lodash/fp/flow"));
var _find = require('lodash/find');
var _cleanNode = _interopRequireDefault(require("./helpers/cleanNode"));
var _find2 = _interopRequireDefault(_find);
var _convertBooleansOnAttrs = _interopRequireDefault(require("./helpers/convertBooleansOnAttrs"));
var _path = require('path');
var _setEmptyAttributes = _interopRequireDefault(require("./helpers/setEmptyAttributes"));
var _path2 = _interopRequireDefault(_path);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _filter = require('lodash/fp/filter');
var _filter2 = _interopRequireDefault(_filter);
var _map = require('lodash/fp/map');
var _map2 = _interopRequireDefault(_map);
var _flow = require('lodash/fp/flow');
var _flow2 = _interopRequireDefault(_flow);
var _cleanNode = require('./helpers/cleanNode');
var _cleanNode2 = _interopRequireDefault(_cleanNode);
var _convertBooleansOnAttrs = require('./helpers/convertBooleansOnAttrs');
var _convertBooleansOnAttrs2 = _interopRequireDefault(_convertBooleansOnAttrs);
var _setEmptyAttributes = require('./helpers/setEmptyAttributes');
var _setEmptyAttributes2 = _interopRequireDefault(_setEmptyAttributes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var indexesForNewLine = function indexesForNewLine(xml) {

@@ -86,25 +57,22 @@ var regex = /\n/gi;

var _options$addEmptyAttr = options.addEmptyAttributes,
addEmptyAttributes = _options$addEmptyAttr === undefined ? true : _options$addEmptyAttr,
addEmptyAttributes = _options$addEmptyAttr === void 0 ? true : _options$addEmptyAttr,
_options$components = options.components,
components = _options$components === undefined ? {} : _options$components,
components = _options$components === void 0 ? {} : _options$components,
_options$convertBoole = options.convertBooleans,
convertBooleans = _options$convertBoole === undefined ? true : _options$convertBoole,
convertBooleans = _options$convertBoole === void 0 ? true : _options$convertBoole,
_options$keepComments = options.keepComments,
keepComments = _options$keepComments === undefined ? true : _options$keepComments,
keepComments = _options$keepComments === void 0 ? true : _options$keepComments,
_options$filePath = options.filePath,
filePath = _options$filePath === undefined ? '.' : _options$filePath,
filePath = _options$filePath === void 0 ? '.' : _options$filePath,
_options$actualPath = options.actualPath,
actualPath = _options$actualPath === undefined ? '.' : _options$actualPath,
actualPath = _options$actualPath === void 0 ? '.' : _options$actualPath,
_options$ignoreInclud = options.ignoreIncludes,
ignoreIncludes = _options$ignoreInclud === undefined ? false : _options$ignoreInclud,
ignoreIncludes = _options$ignoreInclud === void 0 ? false : _options$ignoreInclud,
_options$preprocessor = options.preprocessors,
preprocessors = _options$preprocessor === undefined ? [] : _options$preprocessor;
var endingTags = (0, _flow2.default)((0, _filter2.default)(function (component) {
preprocessors = _options$preprocessor === void 0 ? [] : _options$preprocessor;
var endingTags = (0, _flow["default"])((0, _filter["default"])(function (component) {
return component.endingTag;
}), (0, _map2.default)(function (component) {
}), (0, _map["default"])(function (component) {
return component.getTagName();
}))((0, _extends3.default)({}, components));
}))((0, _objectSpread2["default"])({}, components));
var cwd = process.cwd();

@@ -114,4 +82,5 @@

try {
var isDir = _fs2.default.lstatSync(filePath).isDirectory();
cwd = isDir ? filePath : _path2.default.dirname(filePath);
var isDir = _fs["default"].lstatSync(filePath).isDirectory();
cwd = isDir ? filePath : _path["default"].dirname(filePath);
} catch (e) {

@@ -126,19 +95,26 @@ throw new Error('Specified filePath does not exist');

var inEndingTag = 0;
var currentEndingTagIndexes = { startIndex: 0, endIndex: 0 };
var currentEndingTagIndexes = {
startIndex: 0,
endIndex: 0
};
var findTag = function findTag(tagName, tree) {
return (0, _find2.default)(tree.children, { tagName: tagName });
return (0, _find["default"])(tree.children, {
tagName: tagName
});
};
var lineIndexes = indexesForNewLine(xml);
var handleInclude = function handleInclude(file, line) {
var partialPath = _path2.default.resolve(cwd, file);
var partialPath = _path["default"].resolve(cwd, file);
var curBeforeInclude = cur;
if ((0, _find["default"])(cur.includedIn, {
file: partialPath
})) throw new Error("Circular inclusion detected on file : ".concat(partialPath));
var content;
if ((0, _find2.default)(cur.includedIn, { file: partialPath })) throw new Error('Circular inclusion detected on file : ' + partialPath);
var content = void 0;
try {
content = _fs2.default.readFileSync(partialPath, 'utf8');
content = _fs["default"].readFileSync(partialPath, 'utf8');
} catch (e) {

@@ -148,23 +124,24 @@ var newNode = {

file: file,
absoluteFilePath: _path2.default.resolve(cwd, actualPath),
absoluteFilePath: _path["default"].resolve(cwd, actualPath),
parent: cur,
tagName: 'mj-raw',
content: '<!-- mj-include fails to read file : ' + file + ' at ' + partialPath + ' -->',
content: "<!-- mj-include fails to read file : ".concat(file, " at ").concat(partialPath, " -->"),
children: [],
errors: [{
type: 'include',
params: { file: file, partialPath: partialPath }
params: {
file: file,
partialPath: partialPath
}
}]
};
cur.children.push(newNode);
return;
}
content = content.indexOf('<mjml>') === -1 ? '<mjml><mj-body>' + content + '</mj-body></mjml>' : content;
var partialMjml = MJMLParser(content, (0, _extends3.default)({}, options, {
content = content.indexOf('<mjml>') === -1 ? "<mjml><mj-body>".concat(content, "</mj-body></mjml>") : content;
var partialMjml = MJMLParser(content, (0, _objectSpread2["default"])({}, options, {
filePath: partialPath,
actualPath: partialPath
}), [].concat((0, _toConsumableArray3.default)(cur.includedIn), [{
}), [].concat((0, _toConsumableArray2["default"])(cur.includedIn), [{
file: cur.absoluteFilePath,

@@ -177,3 +154,5 @@ line: line

return children.map(function (c) {
return (0, _extends3.default)({}, c, { parent: tree });
return (0, _objectSpread2["default"])({}, c, {
parent: tree
});
});

@@ -191,3 +170,3 @@ };

var boundChildren = bindToTree(body.children);
cur.children = [].concat((0, _toConsumableArray3.default)(cur.children), (0, _toConsumableArray3.default)(boundChildren));
cur.children = [].concat((0, _toConsumableArray2["default"])(cur.children), (0, _toConsumableArray2["default"])(boundChildren));
}

@@ -201,3 +180,3 @@

file: actualPath,
absoluteFilePath: _path2.default.resolve(cwd, actualPath),
absoluteFilePath: _path["default"].resolve(cwd, actualPath),
parent: mjml,

@@ -208,3 +187,2 @@ tagName: 'mj-head',

});
curHead = findTag('mj-head', mjml);

@@ -214,10 +192,11 @@ }

var _boundChildren = bindToTree(head.children, curHead);
curHead.children = [].concat((0, _toConsumableArray3.default)(curHead.children), (0, _toConsumableArray3.default)(_boundChildren));
}
// must restore cur to the cur before include started
curHead.children = [].concat((0, _toConsumableArray2["default"])(curHead.children), (0, _toConsumableArray2["default"])(_boundChildren));
} // must restore cur to the cur before include started
cur = curBeforeInclude;
};
var parser = new _htmlparser2.default.Parser({
var parser = new _htmlparser["default"].Parser({
onopentag: function onopentag(name, attrs) {

@@ -241,3 +220,3 @@ var isAnEndingTag = endingTags.indexOf(name) !== -1;

var line = (0, _findLastIndex2.default)(lineIndexes, function (i) {
var line = (0, _findLastIndex["default"])(lineIndexes, function (i) {
return i <= parser.startIndex;

@@ -254,3 +233,3 @@ }) + 1;

// "true" and "false" will be converted to bools
attrs = (0, _convertBooleansOnAttrs2.default)(attrs);
attrs = (0, _convertBooleansOnAttrs["default"])(attrs);
}

@@ -260,3 +239,3 @@

file: actualPath,
absoluteFilePath: _path2.default.resolve(cwd, actualPath),
absoluteFilePath: _path["default"].resolve(cwd, actualPath),
line: line,

@@ -287,4 +266,3 @@ includedIn: includedIn,

var partialVal = xml.substring(currentEndingTagIndexes.endIndex + 1, parser.endIndex).trim();
var val = partialVal.substring(0, partialVal.lastIndexOf('</' + name));
var val = partialVal.substring(0, partialVal.lastIndexOf("</".concat(name)));
if (val) cur.content = val.trim();

@@ -299,6 +277,6 @@ }

inInclude = false;
}
} // for includes, setting cur is handled in handleInclude because when there is
// only mj-head in include it doesn't create any elements, so setting back to parent is wrong
// for includes, setting cur is handled in handleInclude because when there is
// only mj-head in include it doesn't create any elements, so setting back to parent is wrong
if (name !== 'mj-include') cur = cur && cur.parent || null;

@@ -310,3 +288,3 @@ },

if (text && text.trim() && cur) {
cur.content = ('' + (cur && cur.content || '') + text.trim()).trim();
cur.content = "".concat(cur && cur.content || '').concat(text.trim()).trim();
}

@@ -319,7 +297,7 @@ },

cur.children.push({
line: (0, _findLastIndex2.default)(lineIndexes, function (i) {
line: (0, _findLastIndex["default"])(lineIndexes, function (i) {
return i <= parser.startIndex;
}) + 1,
tagName: 'mj-raw',
content: '<!-- ' + data.trim() + ' -->',
content: "<!-- ".concat(data.trim(), " -->"),
includedIn: includedIn

@@ -334,19 +312,16 @@ });

lowerCaseAttributeNames: false
});
}); // Apply preprocessors to raw xml
// Apply preprocessors to raw xml
xml = (0, _flow2.default)(preprocessors)(xml);
xml = (0, _flow["default"])(preprocessors)(xml);
parser.write(xml);
parser.end();
if (!(0, _isObject2.default)(mjml)) {
if (!(0, _isObject["default"])(mjml)) {
throw new Error('Parsing failed. Check your mjml.');
}
(0, _cleanNode2.default)(mjml);
(0, _cleanNode["default"])(mjml); // Assign "attributes" property if not set
// Assign "attributes" property if not set
if (addEmptyAttributes) {
(0, _setEmptyAttributes2.default)(mjml);
(0, _setEmptyAttributes["default"])(mjml);
}

@@ -356,2 +331,3 @@

}
module.exports = exports['default'];
module.exports = exports.default;
{
"name": "mjml-parser-xml",
"description": "mjml-parser-xml",
"version": "4.6.2",
"version": "4.6.3-alpha.0",
"main": "lib/index.js",

@@ -16,8 +16,8 @@ "repository": {

"scripts": {
"clean": "cross-env ../../node_modules/.bin/rimraf lib",
"build": "cross-env ../../node_modules/.bin/babel src --out-dir lib",
"clean": "rimraf lib",
"build": "babel src --out-dir lib --root-mode upward",
"test": "node ./test/test.js"
},
"dependencies": {
"babel-runtime": "^6.26.0",
"@babel/runtime": "^7.8.7",
"htmlparser2": "^3.9.2",

@@ -27,8 +27,9 @@ "lodash": "^4.17.15"

"devDependencies": {
"@babel/cli": "^7.8.4",
"chai": "^4.1.1",
"cross-env": "^5.2.0",
"mjml": "4.6.2",
"mjml-core": "4.6.2"
"mjml": "4.6.3-alpha.0",
"mjml-core": "4.6.3-alpha.0",
"rimraf": "^3.0.2"
},
"gitHead": "ea5abe2a7c92a034df8596db1a73fdd9684257a6"
"gitHead": "d98f4c7ddb6e362ba50e5e6aadc66c32bb02a3ba"
}
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