email-templates
Advanced tools
Comparing version 2.0.1 to 2.1.0
@@ -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
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
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
236311
24
1826
273
+ Addedbluebird@3.7.2(transitive)
+ Addedconsolidate@0.14.5(transitive)
+ Addedglob@6.0.4(transitive)
+ Addedlodash@4.17.21(transitive)
- Removedbluebird@2.11.0(transitive)
- Removedconsolidate@0.13.1(transitive)
- Removedglob@5.0.15(transitive)
Updatedbluebird@^3.0.0
Updatedconsolidate@^0.14.0
Updatedglob@^6.0.0
Updatedlodash@^4.0.1