Socket
Socket
Sign inDemoInstall

email-templates

Package Overview
Dependencies
Maintainers
3
Versions
137
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

email-templates - npm Package Compare versions

Comparing version 2.0.1 to 2.1.0

.babelrc

2

examples/postmark/index.js

@@ -33,3 +33,3 @@

// Send a single email
template(locals, function (err, results) {
template.render(locals, function (err, results) {
if (err) {

@@ -36,0 +36,0 @@ return console.error(err)

'use strict';
Object.defineProperty(exports, '__esModule', {
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var _bluebird = require('bluebird');

@@ -29,11 +25,17 @@

var _lodash = require('lodash');
var _isFunction = require('lodash/isFunction');
var _isFunction2 = _interopRequireDefault(_isFunction);
var _util = require('./util');
var debug = (0, _debug2['default'])('email-templates:email-template');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var EmailTemplate = (function () {
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var debug = (0, _debug2.default)('email-templates:email-template');
var EmailTemplate = function () {
function EmailTemplate(path) {
var options = arguments[1] === undefined ? {} : arguments[1];
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];

@@ -54,3 +56,3 @@ _classCallCheck(this, EmailTemplate);

if (this.isInited) return _bluebird2['default'].resolve();
if (this.isInited) return _bluebird2.default.resolve();

@@ -70,3 +72,3 @@ debug('Initializing templates');

return _bluebird2['default'].map(['html', 'text', 'style'], function (type) {
return _bluebird2.default.map(['html', 'text', 'style'], function (type) {
return (0, _util.readContents)(_this2.path, type);

@@ -124,3 +126,3 @@ }).then(function (files) {

return this._init().then(function () {
return _bluebird2['default'].all([(0, _util.renderFile)(_this4.files.html, locals), _this4._renderStyle(locals)]);
return _bluebird2.default.all([(0, _util.renderFile)(_this4.files.html, locals), _this4._renderStyle(locals)]);
}).then(function (results) {

@@ -136,3 +138,3 @@ var _results = _slicedToArray(results, 2);

}
return _juice2['default'].inlineContent(html, style, _this4.options.juiceOptions || {});
return _juice2.default.inlineContent(html, style, _this4.options.juiceOptions || {});
}).tap(function () {

@@ -145,3 +147,3 @@ return debug('Finished rendering HTML');

value: function render(locals, callback) {
if ((0, _lodash.isFunction)(locals)) {
if ((0, _isFunction2.default)(locals)) {
callback = locals;

@@ -152,3 +154,3 @@ locals = {};

return _bluebird2['default'].all([this.renderHtml(locals), this.renderText(locals)]).then(function (rendered) {
return _bluebird2.default.all([this.renderHtml(locals), this.renderText(locals)]).then(function (rendered) {
var _rendered = _slicedToArray(rendered, 2);

@@ -169,3 +171,3 @@

return new _bluebird2['default'](function (resolve) {
return new _bluebird2.default(function (resolve) {
// cached

@@ -188,5 +190,4 @@ if (_this5.style !== undefined) return resolve(_this5.style);

return EmailTemplate;
})();
}();
exports['default'] = EmailTemplate;
module.exports = exports['default'];
exports.default = EmailTemplate;
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var _require = require('./util');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var ensureDirectory = _require.ensureDirectory;
var _util = require('./util');
var isFunction = require('lodash/isFunction');
var EmailTemplate = require('./email-template').default;
var debug = require('debug')('email-templates:creator');
var _lodash = require('lodash');
var _require2 = require('path');
var _emailTemplate = require('./email-template');
var basename = _require2.basename;
var _emailTemplate2 = _interopRequireDefault(_emailTemplate);
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _path = require('path');
var _consolidate = require('consolidate');
var debug = (0, _debug2['default'])('email-templates:creator');
function exportable(templateDirectory, options, done) {
if ((0, _lodash.isFunction)(options)) {
if (isFunction(options)) {
done = options;

@@ -36,5 +24,5 @@ options = {};

return (0, _util.ensureDirectory)(templateDirectory, function (err) {
return ensureDirectory(templateDirectory, function (err) {
if (err) return done(err);
debug('Creating Email Templates in %s', (0, _path.basename)(templateDirectory));
debug('Creating Email Templates in %s', basename(templateDirectory));
return done(null, template(templateDirectory, options));

@@ -46,3 +34,3 @@ });

return function _template(directory, locals, callback) {
if ((0, _lodash.isFunction)(locals)) {
if (isFunction(locals)) {
callback = locals;

@@ -55,3 +43,3 @@ locals = {};

var et = new _emailTemplate2['default'](templateDirectory + '/' + directory, options);
var et = new EmailTemplate(templateDirectory + '/' + directory, options);
if (locals === true) {

@@ -73,6 +61,4 @@ return callback(null, function (locals, dir, next) {

exportable.EmailTemplate = _emailTemplate2['default'];
exportable.requires = _consolidate.requires;
exports['default'] = exportable;
module.exports = exports['default'];
exportable.EmailTemplate = EmailTemplate;
exportable.requires = require('consolidate').requires;
module.exports = exportable;

@@ -1,10 +0,4 @@

/**
* Small utility module for compling HTML templates or pre-processed CSS.
*
* @author: [@jasonsims]('https://github.com/jasonsims')
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
Object.defineProperty(exports, "__esModule", {
value: true

@@ -14,4 +8,2 @@ });

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _path = require('path');

@@ -27,5 +19,7 @@

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var engineMap = {
// HTML Template engines
'hbs': _consolidate2['default'].handlebars.render,
'hbs': _consolidate2.default.handlebars.render,
'emblem': renderEmblem,

@@ -41,10 +35,15 @@ // CSS pre-processors

'': renderDefault
};
}; /**
* Small utility module for compling HTML templates or pre-processed CSS.
*
* @author: [@jasonsims]('https://github.com/jasonsims')
*/
function render(file, locals, callback) {
if (locals === undefined) locals = {};
function render(file) {
var locals = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var callback = arguments[2];
var filename = file.filename;
var content = file.content;
return new _bluebird2['default'](function (resolve, reject) {
return new _bluebird2.default(function (resolve, reject) {
if (!content) return reject('No content in template');

@@ -58,5 +57,5 @@ if (!filename) return reject('Filename is null');

if (engine.length && _consolidate2['default'][engine] !== undefined) {
if (engine.length && _consolidate2.default[engine] !== undefined) {
// use consolidate.js if it supports this engine
return _consolidate2['default'][engine].render(content, locals, function (err, rendered) {
return _consolidate2.default[engine].render(content, locals, function (err, rendered) {
if (err) return reject(err);

@@ -81,3 +80,3 @@ resolve(rendered);

var template = emblem.compile(handlebars, source);
return _bluebird2['default'].resolve(template(locals));
return _bluebird2.default.resolve(template(locals));
}

@@ -91,3 +90,3 @@

return new _bluebird2['default'](function (done, reject) {
return new _bluebird2.default(function (done, reject) {
less.render(source, {

@@ -109,3 +108,3 @@ paths: [dir],

var css = stylus.render(source, locals);
return _bluebird2['default'].resolve(css);
return _bluebird2.default.resolve(css);
}

@@ -117,3 +116,3 @@

var css = styl(source, locals).toString();
return _bluebird2['default'].resolve(css);
return _bluebird2.default.resolve(css);
}

@@ -127,3 +126,3 @@

return new _bluebird2['default'](function (done, reject) {
return new _bluebird2.default(function (done, reject) {
sass.render(locals, function (err, data) {

@@ -137,3 +136,3 @@ if (err) return reject(err);

function renderDefault(source) {
return _bluebird2['default'].resolve(source);
return _bluebird2.default.resolve(source);
}
'use strict';
Object.defineProperty(exports, '__esModule', {
Object.defineProperty(exports, "__esModule", {
value: true

@@ -10,4 +10,2 @@ });

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _bluebird = require('bluebird');

@@ -25,7 +23,9 @@

var readFileP = _bluebird2['default'].promisify(_fs.readFile);
var globP = _bluebird2['default'].promisify(_glob2['default']);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var readFileP = _bluebird2.default.promisify(_fs.readFile);
var globP = _bluebird2.default.promisify(_glob2.default);
function ensureDirectory(path, callback) {
return new _bluebird2['default'](function (resolve, reject) {
return new _bluebird2.default(function (resolve, reject) {
(0, _fs.stat)(path, function (err, stat) {

@@ -54,4 +54,4 @@ if (err) return reject(err);

function renderFile(file, options) {
if (!file) return Promise.resolve(null);
if (!file) return _bluebird2.default.resolve(null);
return (0, _templateManager.render)(file, options);
}
{
"name": "email-templates",
"description": "Node.js module for rendering beautiful emails with ejs, jade, swig, hbs, or handlebars templates and email-friendly inline CSS using juice.",
"version": "2.0.1",
"version": "2.1.0",
"author": "Nick Baugh <niftylettuce@gmail.com>",

@@ -54,5 +54,5 @@ "contributors": [

"prepublish": "npm run compile && npm prune",
"compile": "node_modules/.bin/babel src --modules common --out-dir lib",
"watch": "node_modules/.bin/babel src --watch --modules common --out-dir lib --source-maps true",
"test": "node_modules/.bin/standard && node_modules/.bin/mocha",
"compile": "babel src --modules common --out-dir lib",
"watch": "babel src --watch --modules common --out-dir lib --source-maps true",
"test": "standard && mocha",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",

@@ -62,17 +62,19 @@ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly"

"dependencies": {
"bluebird": "^2.9.25",
"consolidate": "^0.13.0",
"bluebird": "^3.0.0",
"consolidate": "^0.14.0",
"debug": "^2.2.0",
"glob": "^5.0.0",
"glob": "^6.0.0",
"juice": "^1.0.0",
"lodash": "^3.5.0"
"lodash": "^4.0.1"
},
"devDependencies": {
"async": "^0.9.0",
"babel": "^5.4.3",
"async": "^1.5.0",
"babel-cli": "^6.4.5",
"babel-preset-es2015": "^6.3.13",
"babel-register": "^6.4.3",
"chai": "^3.0.0",
"dustjs-linkedin": "^2.4.0",
"ejs": "^2.3.0",
"handlebars": "^3.0.0",
"istanbul": "^0.3.2",
"handlebars": "^4.0.0",
"istanbul": "^0.4.2",
"jade": "^1.3.1",

@@ -89,5 +91,5 @@ "less": "^2.5.0",

"sinon-chai": "^2.7.0",
"standard": "^4.5.2",
"standard": "^5.4.1",
"styl": "^0.2.7",
"stylus": "^0.51.1",
"stylus": "^0.53.0",
"swig": "^1.3.2"

@@ -94,0 +96,0 @@ },

@@ -37,8 +37,3 @@

* [ejs][ejs]
* [jade][jade]
* [swig][swig]
* [handlebars][handlebars]
* [emblem][emblem]
* [dust-linkedin][dust-linkedin]
node-email-templates uses [consolidate.js][consolidate], and therefore supports a vast array of template modules. Please see [consolidate.js][consolidate] for the impressive full list.

@@ -69,3 +64,4 @@ #### Supported CSS Pre-processors

npm install --save email-templates
npm install -S [ejs|jade|swig|handlebars|emblem|dust-linkedin]
# See https://www.npmjs.com/package/consolidate for a full list of available template engines
npm install -S [ejs|jade|nunjucks|handlebars|emblem|dust-linkedin]
```

@@ -86,3 +82,3 @@

- `jade@^1.0.0`
- `swig@^1.0.0`
- `nunjucks@^1.0.0`
- `handlebars@^3.0.0`

@@ -94,2 +90,4 @@ - `dust-linkedin@^2.0.0`

- `node-sass@^3.0.0`
- See https://www.npmjs.com/package/consolidate for a full list

@@ -111,3 +109,3 @@ ```bash

> **See [supported template engines](#supported-template-engines) for possible template engine extensions (e.g. `.ejs`, `.jade`, `.swig`) to use for the value of `{{ext}}` above.**
> **See [supported template engines](#supported-template-engines) for possible template engine extensions (e.g. `.ejs`, `.jade`, `.nunjucks`) to use for the value of `{{ext}}` above.**

@@ -254,7 +252,3 @@ > You may prefix any file name with anything you like to help you identify the files more easily in your IDE. The only requirement is that the filename contains `html.`, `text.`, and `style.` respectively.

[postmark-msg-format]: http://developer.postmarkapp.com/developer-build.html#message-format
[jade]: https://github.com/visionmedia/jade
[swig]: https://github.com/paularmstrong/swig
[handlebars]: https://github.com/wycats/handlebars.js
[emblem]: https://github.com/machty/emblem.js
[dust-linkedin]: https://github.com/linkedin/dustjs
[consolidate]: https://www.npmjs.com/package/consolidate
[less]: http://lesscss.org/

@@ -261,0 +255,0 @@ [sass]: http://sass-lang.com/

@@ -5,3 +5,3 @@ import P from 'bluebird'

import juice from 'juice'
import {isFunction} from 'lodash'
import isFunction from 'lodash/isFunction'
import {ensureDirectory, readContents, renderFile} from './util'

@@ -8,0 +8,0 @@

@@ -1,10 +0,7 @@

import {ensureDirectory} from './util'
import {isFunction} from 'lodash'
import EmailTemplate from './email-template'
import Debug from 'debug'
import {basename} from 'path'
import {requires} from 'consolidate'
const {ensureDirectory} = require('./util')
const isFunction = require('lodash/isFunction')
const EmailTemplate = require('./email-template').default
const debug = require('debug')('email-templates:creator')
const {basename} = require('path')
const debug = Debug('email-templates:creator')
function exportable (templateDirectory, options, done) {

@@ -54,4 +51,3 @@ if (isFunction(options)) {

exportable.EmailTemplate = EmailTemplate
exportable.requires = requires
export default exportable
exportable.requires = require('consolidate').requires
module.exports = exportable

@@ -37,5 +37,5 @@ import P from 'bluebird'

export function renderFile (file, options) {
if (!file) return Promise.resolve(null)
if (!file) return P.resolve(null)
return render(file, options)
}
/* global describe it beforeEach afterEach */
var EmailTemplate = require('../src/email-template')
import EmailTemplate from '../src/email-template'
var expect = require('chai').expect

@@ -121,5 +121,3 @@ var fs = require('fs')

})
})
})

@@ -142,3 +142,3 @@ /* global describe it beforeEach afterEach */

expect(html).to.equal(
'<h4 style=\"color: #cccccc;\">test</h4>')
'<h4 style=\"color: #ccc;\">test</h4>')
done()

@@ -145,0 +145,0 @@ })

@@ -108,3 +108,5 @@ /* global describe it beforeEach afterEach */

helpers: {
uppercase: function (context) {return context.toUpperCase()}
uppercase: function (context) {
return context.toUpperCase()
}
}

@@ -165,3 +167,3 @@ }

expect(err).to.be.null
expect(res).to.equal('.body {\n color: #333333;\n}\n')
expect(res).to.equal('.body {\n color: #333;\n}\n')

@@ -168,0 +170,0 @@ done()

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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