Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@silvermine/undertemplate

Package Overview
Dependencies
Maintainers
3
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@silvermine/undertemplate

Replacement for _.template (underscore or lodash) without unsafe evals.

  • 1.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.5K
decreased by-21.1%
Maintainers
3
Weekly downloads
 
Created
Source

Silvermine UnderTemplate

Build Status Coverage Status Dependency Status Dev Dependency Status

What is it?

A simple replacement for _.template from either Underscore or Lodash that removes the features that make those libraries incompatible with Content Security Policy (CSP). Specifically, this implementation supports only interpolation (escaped and unescaped) and does not support JS evaluation.

How do I use it?

Just like you would have used _.template:

var makeTemplate = require('@silvermine/undertemplate'),
    template = makeTemplate('Hello <%= name %>');

console.log(template({ name: 'John Smith' }));

Of course, we only support:

  • <%= … %>: interpolate a value
  • <%- … %>: interpolate and HTML escape a value

The following are NOT supported:

  • <% … %>: JS evaluation
  • <% print('Hello ' + epithet); %>: JS evaluation with the print function

A Couple Notes

Templating in Underscore/Lodash was operating by building up a JS function as a string. This meant that if your template referred to a variable that did not exist, you would get a JS error thrown. In this library, however, undefined variables in the template will result in an empty string being placed in that location.

We rely on Lodash to provide a number of convenience functions that would require polyfills to support a wide array of browsers. To help reduce bloat, we do two things:

  1. Rely on a fairly loose version of Lodash: 4.x, meaning that if you already have it as a dependency, we'll use your version.
  2. Only require('lodash/foo') for each foo function we need. This helps if you're using UnderTemplate in a browserify-style environment since only the files from Lodash that are actually needed will be included in your bundle.

How do I contribute?

We genuinely appreciate external contributions. See our extensive documentation on how to contribute.

License

This software is released under the MIT license. See the license file for more details.

Keywords

FAQs

Package last updated on 10 May 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

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