mjml-parser-xml
Advanced tools
Comparing version 4.6.2 to 4.6.3-alpha.0
@@ -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; |
190
lib/index.js
@@ -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" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
25925
5
394
1
+ Added@babel/runtime@^7.8.7
+ Added@babel/runtime@7.25.7(transitive)
+ Addedregenerator-runtime@0.14.1(transitive)
- Removedbabel-runtime@^6.26.0
- Removedbabel-runtime@6.26.0(transitive)
- Removedcore-js@2.6.12(transitive)
- Removedregenerator-runtime@0.11.1(transitive)