Socket
Socket
Sign inDemoInstall

mjml-core

Package Overview
Dependencies
Maintainers
1
Versions
131
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mjml-core - npm Package Compare versions

Comparing version 3.1.1 to 3.2.0-beta.1

73

lib/includeExternal.js

@@ -6,2 +6,3 @@ 'use strict';

});
exports.includes = undefined;

@@ -12,30 +13,74 @@ var _fs = require('fs');

var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var includes = /<mj-include\s+path=['"](.*[\.mjml]?)['"]\s*(\/>|>\s*<\/mj-include>)/g;
var includes = exports.includes = /<mj-include\s+path=['"](.*[\.mjml]?)['"]\s*(\/>|>\s*<\/mj-include>)/g;
var getContent = function getContent(input) {
return input.replace(/<mjml>[\n\s\t]+<mj-body>[\n\s\t]+<mj-container>/, '').replace(/<\/mj-container>[\n\s\t]+<\/mj-body>[\n\s\t]+<\/mjml>/, '');
var getBodyContent = function getBodyContent(input) {
return (/<mj-container[^>]*>([\s\S]*?)<\/mj-container>/.exec(input) || [])[1];
};
var getHeadContent = function getHeadContent(input) {
return (/<mj-head[^>]*>([\s\S]*?)<\/mj-head>/.exec(input) || [])[1];
};
var ensureMJMLFile = function ensureMJMLFile(file) {
return file.trim().match(/.mjml/) && file || file + '.mjml';
};
var parseDocument = function parseDocument(input) {
var internals = { content: getBodyContent(input), head: getHeadContent(input) };
var replaceContent = function replaceContent(_, path) {
var mjmlExtension = function mjmlExtension(file) {
return file.trim().match(/.mjml$/) && file || file + '.mjml';
};
// Neither mj-container or mj-head inside the document
// So we assume that entire file is a just plain MJML content
if (!internals.content && !internals.head) {
internals.content = input;
}
var template = _fs2.default.readFileSync(mjmlExtension(path), 'utf8');
var content = getContent(template);
return internals;
};
if (!content) {
throw new Error('Error while parsing file: ' + path);
var replaceContent = function replaceContent(currentDir, headStack, _, fileName) {
var filePath = _path2.default.normalize(_path2.default.join(currentDir, ensureMJMLFile(fileName)));
var partial = void 0;
try {
partial = _fs2.default.readFileSync(filePath, 'utf8');
} catch (e) {
return '<mj-raw><!-- mj-include: file not found ' + filePath + ' --></mj-raw>';
}
var _parseDocument = parseDocument(partial),
content = _parseDocument.content,
head = _parseDocument.head; // eslint-disable-line prefer-const
if (!content && !head) {
throw new Error('Error while reading file: ' + filePath + ', file has no content ?');
}
if (head) {
headStack.push(head);
}
if (content) {
content = content.replace(includes, replaceContent.bind(undefined, _path2.default.resolve(_path2.default.dirname(filePath)), headStack));
}
return content;
};
exports.default = function (baseMjml) {
exports.default = function (baseMjml, _ref) {
var filePath = _ref.filePath;
var headStack = [];
var mjml = baseMjml;
while (mjml.match(includes)) {
mjml = mjml.replace(includes, replaceContent);
mjml = mjml.replace(includes, replaceContent.bind(undefined, _path2.default.resolve(_path2.default.dirname(filePath || process.cwd())), headStack));
if (headStack.length > 0) {
if (mjml.indexOf('<mj-head>') == -1) {
mjml = mjml.replace('<mjml>', '<mjml>\n <mj-head>\n </mj-head>\n');
}
mjml = mjml.replace('</mj-head>', headStack.join('\n') + '\n</mj-head>');
}

@@ -42,0 +87,0 @@

14

lib/index.js

@@ -6,4 +6,13 @@ 'use strict';

});
exports.mjml2html = exports.MJMLValidator = exports.version = exports.documentParser = exports.rulesCollection = exports.registerMJRule = exports.formatValidationError = exports.MJMLHeadElements = exports.registerMJHeadElement = exports.helpers = exports.elements = exports.registerMJElement = exports.MJMLRenderer = exports.MJMLElement = undefined;
exports.mjml2html = exports.MJMLValidator = exports.version = exports.mjIncludeRegexp = exports.documentParser = exports.rulesCollection = exports.registerMJRule = exports.formatValidationError = exports.MJMLHeadElements = exports.registerMJHeadElement = exports.helpers = exports.elements = exports.registerMJElement = exports.MJMLRenderer = exports.MJMLElement = undefined;
var _includeExternal = require('./includeExternal');
Object.defineProperty(exports, 'mjIncludeRegexp', {
enumerable: true,
get: function get() {
return _includeExternal.includes;
}
});
var _MJMLRenderer = require('./MJMLRenderer');

@@ -52,5 +61,4 @@

};
var version = exports.version = function version() {
return '3.1.1';
return '3.2.0-beta.1';
};

@@ -57,0 +65,0 @@ var MJMLValidator = exports.MJMLValidator = _mjmlValidator2.default;

@@ -133,3 +133,3 @@ 'use strict';

if (!this.options.disableMjInclude) {
this.content = (0, _includeExternal2.default)(this.content);
this.content = (0, _includeExternal2.default)(this.content, this.options);
}

@@ -136,0 +136,0 @@

{
"name": "mjml-core",
"description": "mjml-core",
"version": "3.1.1",
"version": "3.2.0-beta.1",
"main": "lib/index.js",

@@ -31,3 +31,3 @@ "scripts": {

"immutable": "^3.8.1",
"jquery": "^3.1.1",
"jquery": "^3.2.0-beta.1",
"js-beautify": "^1.6.4",

@@ -34,0 +34,0 @@ "juice": "^4.0.2",

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