expand-template-literal
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

expand-template-literal

Expands template literals supplied as strings.

The purpose is to provide the most powerful and comfy templating experience in places where templates can be trusted. DO NOT use where malicious templates could cause harm.

Templates work exactly as JavaScript template literals, because they are. Passed strings are just wrapped in a context configuring expression, and passed to eval().

Pros:

  • The power of JavaScript template literals with variables and embedded expressions in your templates.
  • Apart of serializable data, templates can also use utility functions and constructors.
  • Tiny, less than 300 bytes.

Cons:

  • Absolutely insecure.
  • Templates can do anything the context they run in can.
  • Can't be used in places where templates can't be trusted.

Install

npm install expand-template-literal

Usage

import {expandTemplateLiteral as expand} from 'expand-template-literal';
import * as dayjs from 'dayjs';

const result = expand("${name} arrived at ${dayjs(arrival).format('dddd')}.", {
	// Provide templates with variables
	name: 'John',
	arrival: 1636377526618,

	// And even utilities they can use
	dayjs,
});

console.log(result); // "John arrived at Monday."

API

Exported interfaces:


expandTemplateLiteral

function expandTemplateLiteral(template: string, variables?: Record<string, any>): string;

Expands passed template with variables supplied by 2nd argument.

template

Type: string required

JavaScript template literal string.

variables

Type: Record<string, any> optional

Values can be literally anything. Serializable data, functions, constructors, instances, symbols, ...

Return

Returns expanded template as a string, or throws TemplateError if anything inside the template went wrong.


TemplateError

Thrown when template errors out. Nothing special, just a custom constructor to identify the error with.

Readme

Keywords

Package Sidebar

Install

npm i expand-template-literal

Weekly Downloads

3

Version

1.0.3

License

MIT

Unpacked Size

4.97 kB

Total Files

5

Last publish

Collaborators

  • tomasklaen