Semi-embedded JS template engine that supports helpers, filters, partials, and template inheritance. 4KB minzipped, written in TypeScript โ›บ

Overview

Squirrel

squirrelly

Documentation - Chat - RunKit Demo - Playground

GitHub package.json version (master) Travis All Contributors Coveralls Code Shelter Donate

Summary

Squirrelly is a modern, configurable, and blazing fast template engine implemented in JavaScript. It works out of the box with ExpressJS and the full version weighs only ~4KB gzipped.

This is version 8 - a new, more powerful rewrite of Squirrelly. It adds multiple features (like filter parameters, whitespace control, partials, and template inheritance) to bring you a template engine with the power of Nunjucks, the simplicity of EJS, and the small bundle size of its earlier versions.

Squirrelly v7 will continue to be maintained, and can be found at https://github.com/squirrellyjs/squirrelly/tree/v7.

Read about the changes

Looking for a lightweight, faster, and more reliable alternative to EJS? Check out Squirrelly's cousin, Eta.

Why Squirrelly?

Simply put, Squirrelly is super lightweight, super fast, super powerful, and super simple.

๐ŸŒŸ Features

  • ๐Ÿ”ง Helpers, filters
  • ๐Ÿ”ง Great error reporting
  • ๐Ÿ“ฆ 0 dependencies
  • ๐Ÿ”จ Conditionals
  • ๐Ÿ”ง Better quotes/comments support
    • ex. {{someval + "name }}" }} compiles correctly, while it fails with DoT or EJS
  • โšก๏ธ Exports ES Modules as well as UMD
  • ๐Ÿ”จ Loops
  • ๐Ÿ”ง Custom delimeters
  • ๐Ÿ“ Easy template syntax
  • ๐Ÿ”ง Precompilation
  • ๐Ÿ”จ Partials
  • ๐Ÿ”ง Inline JavaScript
  • ๐Ÿ”จ Comments
  • ๐Ÿ”ง Caching
  • ๐Ÿš€ Super Fast
    • Squirrelly has been benchmarked against Marko, Pug, doT, Swig, Handlebars, Mustache, and Nunjucks. In each test, Squirrelly was fastest.
  • โšก๏ธ Async support: async filters, helpers, partials
  • ๐Ÿ”ง Template inheritance

๐Ÿ“œ Docs

We know nobody reads through the long and boring documentation in the ReadMe anyway, so head over to the documentation website:

๐Ÿ“ https://squirrelly.js.org

๐Ÿ““ Examples

Simple Template

var myTemplate = "<p>My favorite kind of cake is: {{it.favoriteCake}}</p>"

Sqrl.render(myTemplate, {favoriteCake: 'Chocolate!'})
// Returns: '<p>My favorite kind of cake is: Chocolate!</p>

Conditionals

{{@if(it.somevalue === 1)}}
Display this
{{#else}}
Display this
{{/if}}

Loops

{{@each(it.somearray) => val, index}}
Display this
The current array element is {{val}}
The current index is {{index}}
{{/each}}

โœ”๏ธ Tests

Tests can be run with npm test. Multiple tests check that parsing, rendering, and compiling return expected results, formatting follows guidelines, and code coverage is at the expected level.

Resources

To be added

Projects using squirrelly

[Waiting for permissions]

  • Cypress: Fast, easy and reliable testing for anything that runs in a browser
  • txAdmin: A full featured web panel to manage & monitor your FiveM Server remotely, used by over two thousand servers worldwide
  • Add yours!

Contributors

Made with โค by @nebrelbug and all these wonderful contributors (emoji key):


Ben Gubler

๐Ÿ’ป ๐Ÿ’ฌ ๐Ÿ“– โš ๏ธ

Clite Tailor

๐Ÿค” ๐Ÿ’ป

Ioan CHIRIAC

๐Ÿ’ป ๐Ÿค”

Lucas Wilson

๐Ÿ› ๐Ÿ’ป

Jon McLean

๐Ÿ’ป โš ๏ธ

Note: because we completely rewrote Version 8 and it has a separate Git history, this chart excludes the dozens of contributors to Version 7. Their contributions are deeply appreciated and many of their ideas and code contributions are being used in Squirrelly v8. Many of their contributions can be found in the v7 branch commit history.

This project follows the all-contributors specification. Contributions of any kind are welcome!

Credits

  • Async support and file handling were added based on code from EJS, which is licensed under the Apache-2.0 license. Code was modified to throw informative errors and work with Squirrelly's API
Comments
  • Make an example project, using Squirrelly, for beginners

    Make an example project, using Squirrelly, for beginners

    A good project would be fairly simple, and well commented. Steps:

    1. Create new project using Squirrelly
      • It could use Express, or run as a web page, or something else
    2. Upload project to Github
    3. Comment here with the link--we'll probably put it in cheatsheet.md or the online docs or wiki
    help wanted good first issue up-for-grabs Hacktoberfest beginner friendly 
    opened by nebrelbug 22
  • Edit example default filter

    Edit example default filter

    ๐Ÿ†•๐Ÿฅโ˜ First Timers Only.

    This issue is reserved for people who never contributed to Open Source before. We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you ๐Ÿ’

    About First Timers Only.

    ๐Ÿค” What you will need to know.

    Nothing. This issue is meant to welcome you to Open Source :) We are happy to walk you through the process.

    ๐Ÿ“‹ Step by Step

    • [x] ๐Ÿ™‹ Claim this issue: Comment below.

      Once claimed we add you as contributor to this repository.

    • [x] ๐Ÿ‘Œ Accept our invitation to this repository. Once accepted, assign yourself to this issue

    • [ ] ๐Ÿ“ Update the file src/filters.js in the squirrelly repository (press the little pen Icon) and edit the line as shown below.

    @@ -27,7 +27,7 @@ export var defaultFilters = {
     each of the default filters the user
     Has set to true. This opens up a realm of possibilities like autoEscape, etc.
     */
    -  // e: false, // Escape is turned off by default for performance
    +  // somefilter: false,
     }
     
     export var defaultFilterCache = {
    
    • [ ] ๐Ÿ’พ Commit your changes

    • [ ] ๐Ÿ”€ Start a Pull Request. There are two ways how you can start a pull request:

    1. If you are familiar with the terminal or would like to learn it, here is a great tutorial on how to send a pull request using the terminal.

    2. You can edit files directly in your browser

    • [ ] ๐Ÿ Done Ask in comments for a review :)

    ๐Ÿค”โ“ Questions

    Leave a comment below!

    This issue was created by First-Timers-Bot.

    help wanted good first issue up-for-grabs Hacktoberfest beginner friendly first-timers-only assigned 
    opened by first-timers[bot] 21
  • Squirrelly version 8: layouts, plugins, new parser, and new language features

    Squirrelly version 8: layouts, plugins, new parser, and new language features

    Squirrelly version 8 is underway!

    Feel free to comment with suggestions or requests!

    Syntax and Code Changes

    • Bundling with Rollup instead of Webpack
      • I've been experimenting with this, and right now squirrelly.runtime.js is down to 995 Bytes, without being gzipped!
      • In addition, I'll add a Babel transpiler to make sure everything is compatible.
    • runtime.js will have a separate entry point (with Rollup) so it will be compiled better
    • All files that deal with file-handling will be in a separate file not imported by runtime.js, so it will be even smaller.
    • Helpers will be prefixed with ~, so {{~if(options.stuff}}
    • 'Interpolate syntax': {{=4+3}}
    • Native Code: what was previously {{js(var x = 0)/}} will become: {{!var x = 0}}

    New Features

    • Support for layouts!
    • Caching for partials and layouts
    • Options for developers like cache refreshing
    • Brand new parser that works without RegExp to create a more performant, reliable, and maintainable experience
    • Saving the cache and loading it later
    • Saving all Helpers, nativeHelpers, Filters, Partials, and Layouts and loading them later
      • The two features above mean that developers will be able to create libraries of helpers, partials, nativeHelpers, and layouts that can be loaded!
    • Support for middleware.
      • This means that you'll be able to use middleware that, for example, minifies HTML before compiling it, or minifies the template function before saving it.
      • Middleware could also be used to write custom language features.
    • 'Template Tree' exposure, allowing middleware to transform syntax before a template is compiled into a function

    File Stuff

    • You will be able to register an entire directory of partials/layouts with one command, loadPartialsDir or loadLayoutsDir
    opened by nebrelbug 14
  • Add explanation of lastIndex

    Add explanation of lastIndex

    ๐Ÿ†•๐Ÿฅโ˜ First Timers Only.

    This issue is reserved for people who never contributed to Open Source before. We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you ๐Ÿ’

    About First Timers Only.

    ๐Ÿค” What you will need to know.

    Nothing. This issue is meant to welcome you to Open Source :) We are happy to walk you through the process.

    ๐Ÿ“‹ Step by Step

    • [x] ๐Ÿ™‹ Claim this issue: Comment below.

      Once claimed we add you as contributor to this repository.

    • [x] ๐Ÿ‘Œ Accept our invitation to this repository. Once accepted, assign yourself to this issue

    • [ ] ๐Ÿ“ Update the file src/compile.js in the squirrelly repository (press the little pen Icon) and edit the line as shown below.

    @@ -11,7 +11,7 @@ import {
     import P from './partials'
     
     function Compile (str) {
    -  var lastIndex = 0
    +  var lastIndex = 0 // Because lastIndex can be complicated, and this way the minifier can minify more
       var funcStr = ''
       var helperArray = []
       var helperNumber = -1
    
    • [ ] ๐Ÿ’พ Commit your changes

    • [ ] ๐Ÿ”€ Start a Pull Request. There are two ways how you can start a pull request:

    1. If you are familiar with the terminal or would like to learn it, here is a great tutorial on how to send a pull request using the terminal.

    2. You can edit files directly in your browser

    • [ ] ๐Ÿ Done Ask in comments for a review :)

    ๐Ÿค”โ“ Questions

    Leave a comment below!

    This issue was created by First-Timers-Bot.

    help wanted good first issue up-for-grabs Hacktoberfest beginner friendly first-timers-only assigned 
    opened by first-timers[bot] 14
  • Explicit Helper References

    Explicit Helper References

    Currently, helper references are referred implicitly in template:

    {{each(a)}}
      This is a helper ref from helper1: {{@this}}
    {{/each}}
    

    This is quite bad practice when people always have to remember the names of refs. Dealing with nesting refs is ~~quite~~ really odd, also:

    {{each(a)}}
      {{each(b)}}
        {{each(c)}}
          {{@../../this}}
        {{/each}}
      {{/each}}
    {{/each}}
    

    So the idea of this proposal is to explicitly assign ids to refs and reference them by ids:

    {{each(items) item, index}}
      The #{{@index}} item is: {{@item}}
    {{/each}}
    

    Later in defineHelper, we can define our helper like this:

    Sqrl.defineHelper("each", function(args, content, blocks) {
      let items = args[0]
      let templates = []  
    
      for (let i = 0; i < items.length; ++i, item = item[i]) {
        templates.push(content(item, i))
      }
    
      return templates.join('')
    })
    

    This way we can also remove the @ if we want. Reference a nested field is also much more easier and standard:

    {{each(items) item, id}}
      The #{{id + 1}} item is: {{item.name}}
    {{/each}}
    
    opened by clitetailor 12
  • Add comment to example Sqrl file

    Add comment to example Sqrl file

    ๐Ÿ†•๐Ÿฅโ˜ First Timers Only.

    This issue is reserved for people who never contributed to Open Source before. We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you ๐Ÿ’

    About First Timers Only.

    ๐Ÿค” What you will need to know.

    Nothing. This issue is meant to welcome you to Open Source :) We are happy to walk you through the process.

    ๐Ÿ“‹ Step by Step

    • [ ] ๐Ÿ™‹ Claim this issue: Comment below.

      Once claimed we add you as contributor to this repository.

    • [ ] ๐Ÿ‘Œ Accept our invitation to this repository. Once accepted, assign yourself to this issue

    • [ ] ๐Ÿ“ Update the file examples/views/index.sqrl in the squirrelly repository (press the little pen Icon) and edit the line as shown below.

    @@ -4,7 +4,8 @@
         <title>{{title}}</title>
       </head>
       <body>
    +    {{!--comment--}}
         <p>It works!</p>
     
       </body>
    -</html>
    \ No newline at end of file
    +</html>
    
    • [ ] ๐Ÿ’พ Commit your changes

    • [ ] ๐Ÿ”€ Start a Pull Request. There are two ways how you can start a pull request:

    1. If you are familiar with the terminal or would like to learn it, here is a great tutorial on how to send a pull request using the terminal.

    2. You can edit files directly in your browser

    • [ ] ๐Ÿ Done Ask in comments for a review :)

    ๐Ÿค”โ“ Questions

    Leave a comment below!

    This issue was created by First-Timers-Bot.

    help wanted good first issue up-for-grabs Hacktoberfest beginner friendly first-timers-only assigned 
    opened by first-timers[bot] 12
  • Refactor and fix load()

    Refactor and fix load()

    • [x] This is to fix an issue (caching on, name given, but no file and no str)
    • [x] I ran npm run build and npm run test

    Summary

    This fixes a minor issue (error is not returned from load when caching is enabled, name is given, but no template). It also refactors and simplifies the function a bit.

    opened by ghost 11
  • Add clarifications to broken-down regEx

    Add clarifications to broken-down regEx

    ๐Ÿ†•๐Ÿฅโ˜ First Timers Only.

    This issue is reserved for people who never contributed to Open Source before. We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you ๐Ÿ’

    About First Timers Only.

    ๐Ÿค” What you will need to know.

    Nothing. This issue is meant to welcome you to Open Source :) We are happy to walk you through the process.

    ๐Ÿ“‹ Step by Step

    • [ ] ๐Ÿ™‹ Claim this issue: Comment below.

      Once claimed we add you as contributor to this repository.

    • [ ] ๐Ÿ‘Œ Accept our invitation to this repository. Once accepted, assign yourself to this issue

    • [ ] ๐Ÿ“ Update the file src/regexps.js in the squirrelly repository (press the little pen Icon) and edit the line as shown below.

    @@ -45,9 +45,10 @@ export function replaceParamHelpers (params) {
       })
       return params
     }
    -// The initial RegExp broken down:
    +// The whole regular expression can be hard to comprehend, so here it's broken down.
    +// You can pass the string between "START REGEXP" and "END REGEXP" into a regular expression
    +// That removes whitespace and comments, and outputs a working regular expression.
     
    -// Total RegEx:
     /* START REGEXP
     {{ *? //the beginning
     (?: //or for each possible tag
    
    • [ ] ๐Ÿ’พ Commit your changes

    • [ ] ๐Ÿ”€ Start a Pull Request. There are two ways how you can start a pull request:

    1. If you are familiar with the terminal or would like to learn it, here is a great tutorial on how to send a pull request using the terminal.

    2. You can edit files directly in your browser

    • [ ] ๐Ÿ Done Ask in comments for a review :)

    ๐Ÿค”โ“ Questions

    Leave a comment below!

    This issue was created by First-Timers-Bot.

    help wanted good first issue up-for-grabs Hacktoberfest beginner friendly first-timers-only assigned 
    opened by first-timers[bot] 11
  • Add example of a conditional

    Add example of a conditional

    ๐Ÿ†•๐Ÿฅโ˜ First Timers Only.

    This issue is reserved for people who never contributed to Open Source before. We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you ๐Ÿ’

    About First Timers Only.

    ๐Ÿค” What you will need to know.

    Nothing. This issue is meant to welcome you to Open Source :) We are happy to walk you through the process.

    ๐Ÿ“‹ Step by Step

    • [x] ๐Ÿ™‹ Claim this issue: Comment below.

      Once claimed we add you as contributor to this repository.

    • [ ] ๐Ÿ‘Œ Accept our invitation to this repository. Once accepted, assign yourself to this issue

    • [ ] ๐Ÿ“ Update the file cheatsheet.md in the squirrelly repository (press the little pen Icon) and edit the line as shown below.

    @@ -0,0 +1,8 @@
    +## Conditionals
    +```
    +{{if(options.someval === "someothervalue")}}
    +Display this!
    +{{#else}}
    +They don't equal
    +{{/if}}
    +```
    
    • [ ] ๐Ÿ’พ Commit your changes

    • [ ] ๐Ÿ”€ Start a Pull Request. There are two ways how you can start a pull request:

    1. If you are familiar with the terminal or would like to learn it, here is a great tutorial on how to send a pull request using the terminal.

    2. You can edit files directly in your browser

    • [ ] ๐Ÿ Done Ask in comments for a review :)

    ๐Ÿค”โ“ Questions

    Leave a comment below!

    This issue was created by First-Timers-Bot.

    help wanted good first issue up-for-grabs Hacktoberfest beginner friendly first-timers-only 
    opened by first-timers[bot] 11
  • VM661:3 Uncaught ReferenceError: hvals is not defined

    VM661:3 Uncaught ReferenceError: hvals is not defined

    UPD: https://codepen.io/7iomka/pen/rNBbygN?editors=1010

    I'm new with your plugin, and I don't know how to do my code working.. Help me please...

    I temporary use handlebars to do same to work https://codepen.io/7iomka/pen/pozBerx?editors=1010

    opened by 7iomka 10
  • An in-range update of rollup is breaking the build ๐Ÿšจ

    An in-range update of rollup is breaking the build ๐Ÿšจ


    โ˜๏ธ Important announcement: Greenkeeper will be saying goodbye ๐Ÿ‘‹ and passing the torch to Snyk on June 3rd, 2020! Find out how to migrate to Snyk and more at greenkeeper.io


    The devDependency rollup was updated from 2.4.0 to 2.5.0.

    ๐Ÿšจ View failing branch.

    This version is covered by your current version range and after updating it in your project the build failed.

    rollup is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

    Status Details

    FAQ and help

    There is a collection of frequently asked questions. If those donโ€™t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 7
  • Bump json5 from 1.0.1 to 1.0.2

    Bump json5 from 1.0.1 to 1.0.2

    Bumps json5 from 1.0.1 to 1.0.2.

    Release notes

    Sourced from json5's releases.

    v1.0.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295). This has been backported to v1. (#298)
    Changelog

    Sourced from json5's changelog.

    Unreleased [code, diff]

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • [ Feature ] - Preventing null and undefined exception on template variables

    [ Feature ] - Preventing null and undefined exception on template variables

    Hi All! First of all, thanks for this amazing project, I was looking for something like this to use in my web component library, called Jails, you can find more info here: https://github.com/jails-org/Jails

    The Problem

    This PR tries to solve a problem that was making it impossible to use in my project, which is the fact that you might not have a variable already set used on iteration and conditions, so on those cases it breaks the entire application instead of returning null or false. I believe that Mustache already have this behavior by default, if you try to use some variable that doesn't exist it just skip it and treat as a falsy / empty value.

    The Solution

    try/catch is the only solution I've could think to solve that problem, so I wrap all variables with a function that tries to return that variable if it is set and return an empty string otherwise.


    I didn't have time to look for all edge cases and I still not familiar with the entire code, and I'm not sure how much it's going to impact on performance, so maybe there's a better way, but I'll be glad if my PR could be usefull somehow even if it can't be merged.

    Thanks in advance! Have a good one.

    opened by Javiani 0
  • Uncaught ReferenceError: require is not defined in ViteJS

    Uncaught ReferenceError: require is not defined in ViteJS

    Describe the bug The package includes require that causes an exception in a browser bundle built by ViteJS. It happens because of these lines:

    https://github.com/squirrellyjs/squirrelly/blob/master/src/file-utils.ts#L1-L2

    That file should be imported only in nodejs build, not a browser. At least, it should not be included in ESM format

    opened by Kukunin 0
  • high severity vulnerrability

    high severity vulnerrability

    Describe the bug there is high severity vulnerability in latest npm package, see https://github.com/advisories/GHSA-q8j6-pwqx-pm96 To Reproduce Steps to reproduce the behavior: npm audit

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Package & Environment Details

    • Environment: ex. Node, Chrome, Firefox, etc. and what version
    • Version: ex. 8.1.0

    Additional context Add any other context about the problem here.

    opened by jianyexi 4
  • [docs] Gitbook Docs are out of date

    [docs] Gitbook Docs are out of date

    Gitbook website comes up when searching for debugging info. Examples seem to use incorrect (outdated?) syntax

    eg https://github.com/nebrelbug/squirrelly.js.org/pull/7

    opened by kumavis 0
Releases(v8.0.8)
  • v8.0.8(Sep 11, 2020)

    TL;DR

    • Merged a PR by @jmclean-cnexus that fixed the types of FilterFunction
    • @jmclean-cnexus also abstracted some utility functions in containers.ts into container-utils.ts, and wrote accompanying tests :tada:

    Commits

    • Rebuild 0383045
    • Format, add specific examples of blocks & filters ad6fe3d
    • Format d158e64
    • Merge pull request #205 from jmclean-cnexus/master 81c09e9
    • update README to include tests tag in contributers as well as reference name 93d2997
    • add test contribution since there are some unit tests in this latest push 56e8685
    • add name to .allcontributors d200f89
    • remove package lock from previous commit and add to .gitignore c1c71d5
    • break out container to be more testable 4ba4f2b
    • Merge pull request #204 from squirrellyjs/all-contributors/add-jmclean-cnexus 4fd4a57
    • docs: update .all-contributorsrc [skip ci] 08c72d2
    • docs: update README.md [skip ci] bf3e9bd
    • Rebuild after FilterFunction type fix 009073d
    • Merge pull request #203 from jmclean-cnexus/bugfix/update-filter-function-type-def db7ef0f
    • remove package-lock b97041c
    • change string type to any type 82fa1bf
    • Allow any number of arguments that are strings 6211864

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.7...v8.0.8

    Source code(tar.gz)
    Source code(zip)
  • v8.0.7(Sep 6, 2020)

    TL;DR

    Mainly minor updates. One important fix by @futurelucas4502 preventing renderFile from erroring if the data argument was undefined or null; see #201.

    Commits

    • Merge pull request #202 from squirrellyjs/all-contributors/add-futurelucas4502 a5b40f6
    • docs: update .all-contributorsrc [skip ci] b310830
    • docs: update README.md [skip ci] 9744133
    • Fix link to contributor d15e60a
    • Rebuild to remove carriage returns from map a62f36f
    • Merge pull request #201 from futurelucas4502/master 31d0268
    • Update file handler renderFile function to allow for an undefined data parameter without erroring 4b9e964
    • Update FUNDING.yml e9a023d
    • Fix Travis Node version, eslint-plugin doesn't support v11 386c3aa

    Contributors

    • @futurelucas4502
    • @nebrelbug

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.6...v8.0.7

    Source code(tar.gz)
    Source code(zip)
  • v8.0.6(Sep 1, 2020)

    TL;DR

    Nothing exciting here, just a little package cleanup! All our dev dependencies are now up-to-date.

    Commits

    • Lint with eslint instead of prettier-standard 4c66bdc
    • chore: remove quickbuild script f15847b
    • Rebuild 8a65881
    • chore: update dev-deps. Modify eslintrc with new version 20f9a3e

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.5...v8.0.6

    Source code(tar.gz)
    Source code(zip)
  • v8.0.5(Aug 29, 2020)

    TL;DR

    This release just contains a few quick README updates.

    Commits

    • Update README for easier access to quick resources 9a0ee15
    • Add txAdmin to list of projects using Squirrelly 519e4ef

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.4...v8.0.5

    Source code(tar.gz)
    Source code(zip)
  • v8.0.4(Aug 15, 2020)

    TL;DR

    Changes in this release:

    • Updated development dependencies
    • Squirrelly's XML-escape filter (e) is now applied after all other filters by default. See #189 and #198
      • This is potentially a slightly breaking change, but the chance of it affecting anyone is quite low

    Commits

    • Rebuild after dev-dependency update b61f2b0
    • Update dependencies 623dc42
    • Fix tests so XML-escape filter is on the outside 264c230
    • Fix changes in making XML-escape the last filter 1e5d747
    • Apply XML-escape filter after all other filters 0e511f0
    • Merge pull request #197 from squirrellyjs/dependabot/npm_and_yarn/elliptic-6.5.3 f6a4920
    • Bump elliptic from 6.5.2 to 6.5.3 5bb49a7
    • Add Cypress to list of projects using Squirrelly 0d647a1

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.3...v8.0.4

    Source code(tar.gz)
    Source code(zip)
  • v8.0.3(Jul 4, 2020)

    TL;DR

    Just updated the README to add a note about the contributors to Version 7 (who unfortunately aren't listed in the README) and removed the badge for David-DM (which has had downtime problems).

    Commits

    • Update README - add note about v7 contributors, remove David-DM badge e2f97a7

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.2...v8.0.3

    Source code(tar.gz)
    Source code(zip)
  • v8.0.2(Jun 21, 2020)

    TL;DR

    This commit merged #195 (which fixes a compilation error thrown in newer versions of TypeScript), updated dev dependencies, and updated some unit tests to import functions from index.ts (to improve test coverage)

    Commits

    • Rebuilt 4ae327b
    • Update some tests to import from index, to increase coverage 2092ec8
    • Upgrade dev dependencies 57a9a9d
    • Merge pull request #195 from vinothbabu/master ffd9c9e
    • Added // eslint-disable-next-line no-extra-boolean-cast to bypass the warnings. 0c534bc
    • Revert "check if the function exists in the native object." e36ad3a
    • check if the function exists in the native object. 4b9944d
    • check if the native prototype method exists by evaluating it. 139a9d0

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.1...v8.0.2

    Source code(tar.gz)
    Source code(zip)
  • v8.0.1(May 16, 2020)

  • v8.0.0(May 16, 2020)

    Version 8 is now stable!

    Thank you to all those who helped with development or gave feedback!

    Documentation is at https://squirrelly.js.org

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.12(May 16, 2020)

    TL;DR

    This is the last prerelease before a stable release! I fixed a parsing issue (where {{! /* stuff */}}, with the */ directly in front of the }}, would fail. I also added a default RunKit template and "try on runkit" badge, and rearranged the benchmarks to move Squirrelly higher up.

    Commits

    • chore: rebuild 44ac75c
    • Update benchmarks page c8335a5
    • Fix issue where */ directly before }} led to parse error 7a3e842
    • Updated examples, added default RunKit page and try on RunKit badge 9bb21dd

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.11...v8.0.0-beta.12

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.11(May 15, 2020)

    TL;DR

    The biggest change in this release was changing the helper prefix from ~ to @. Your helpers will break with this beta release, until you either update your templates or the configuration (as of this version, you can customize prefixes).

    Additional changes:

    • Special RegExp characters in delimiters are now escaped
    • Additional tests
    • Support for rmWhitespace in the config
    • Removal of the custom prefix tag ? (it was redundant and unnecessary)

    Check out the new release of Squirrelly's docs at https://squirrelly.js.org!

    Commits

    • Update credit 1e4e168
    • Fix README.md badges d26c3ad
    • Rebuilt 058c6d5
    • Add RegExp test for performance f8398ea
    • Fix support for multi-char prefixes 7884839
    • RegEx-escape tags, prefixes, fix multi-char prefixes 95bb46f
    • XML-escape '>' 17675b0
    • todo note 375cd48
    • Add parse tests for comments, template literals 44bf184
    • autoTrim tests a897a5d
    • Add additional tests for blockless helpers, rmWhitespace, and default filters baed1bd
    • Removed unnecessary custom prefix ('?') functionality d306df4
    • Rebuilt 0f5626d
    • Custom prefix support c1e7477
    • Merge branch 'rmWhitespace' into helper-prefix-@ e1b0b85
    • Add rmWhitespace config option 6e4f9f6
    • BREAKING: change helper prefix to @ from ~ ca0cd95
    • Merge pull request #187 from squirrellyjs/goodbye-greenkeeper 079974a
    • chore(readme): remove Greenkeeper badge d04b45a
    • Clarify that Eta is an alternative to EJS d556202
    • Add Eta links to README feea583
    • Update dev deps e4ed55b
    • Merge pull request #175 from squirrellyjs/greenkeeper/rollup-2.3.5 dd27b27
    • Merge pull request #177 from squirrellyjs/greenkeeper/lint-staged-10.1.3 6658eb4
    • Merge pull request #176 from squirrellyjs/greenkeeper/typedoc-0.17.4 8f87a18
    • Merge pull request #172 from squirrellyjs/greenkeeper/rollup-plugin-prettier-1.0.0 2a2e404
    • chore(package): update rollup to version 2.4.0 be7256d
    • chore(package): update lint-staged to version 10.1.3 da56272
    • chore(package): update lockfile yarn.lock 26b233f
    • chore(package): update rollup-plugin-prettier to version 2.0.0 7fd410a
    • Merge pull request #170 from squirrellyjs/greenkeeper/rollup-plugin-prettier-0.7.0 8418b1c
    • chore(package): update lockfile yarn.lock 53eb49f
    • chore(package): update rollup-plugin-prettier to version 0.7.0 06f3cdc
    • chore(package): update typedoc to version 0.17.4 182937d

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.10...v8.0.0-beta.11

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.10(Apr 2, 2020)

    TL;DR

    • Updated dependencies
    • Fixed bug where whitespace for the first and last strings was incorrectly trimmed
    • Refactor parsing: throw errors with unclosed strings or comments, more accurate parsing of the same
    • Only replace newlines and carriage returns of strings, not everything (so we can have a \n after exec tag
    • Update benchmarks page

    Commits

    • Update dependencies 61af67f
    • Merge pull request #168 from squirrellyjs/greenkeeper/eslint-config-prettier-6.10.1 ce7f526
    • Merge pull request #167 from squirrellyjs/greenkeeper/@typescript-eslint/parser-2.26.0 0cced39
    • Merge pull request #165 from squirrellyjs/greenkeeper/@types/node-13.11.0 210109c
    • Merge pull request #166 from squirrellyjs/greenkeeper/lint-staged-10.1.1 057229e
    • Merge pull request #159 from squirrellyjs/greenkeeper/ts-node-8.7.0 15747a4
    • Merge pull request #162 from squirrellyjs/greenkeeper/rollup-plugin-typescript2-0.27.0 c687808
    • Update tests (add errors), benchmark 8619fb0
    • Update benchmarks page 4c51b99
    • Refactor parsing 33b93cb
    • chore(package): update lockfile yarn.lock 9b7cd41
    • chore(package): update @types/node to version 13.11.0 2bc3ea1
    • chore(package): update lint-staged to version 10.1.1 b230cd5
    • chore(package): update @typescript-eslint/parser to version 2.26.0 d802613
    • chore(package): update lockfile yarn.lock ef0611c
    • chore(package): update rollup-plugin-typescript2 to version 0.27.0 7fbe43b
    • Update npm packages dba23eb
    • Fix bug where leading whitespace was incorrectly trimmed 03459a5
    • chore(package): update eslint-config-prettier to version 6.10.1 709418d
    • chore(package): update ts-node to version 8.7.0 643134b

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.9...v8.0.0-beta.10

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.9(Mar 17, 2020)

    TL;DR

    This release contains:

    • A complete rewrite of how async works
    • Updated dev dependencies
    • Code cleanup
    • Plugins support

    Commits

    • Reinstalled dependencies dc897a2
    • Update TODO items 49acc37
    • Merge pull request #157 from squirrellyjs/greenkeeper/eslint-config-standard-with-typescript-15.0.0 60ffd9b
    • chore(package): update lockfile yarn.lock d319d5c
    • chore(package): update eslint-config-standard-with-typescript to version 15.0.0 540dc37
    • Update dev dependencies c9b95a7
    • Merge pull request #156 from squirrellyjs/greenkeeper/@typescript-eslint/parser-2.24.0 fbddaac
    • Merge pull request #155 from squirrellyjs/greenkeeper/rollup-2.0.6 8bec9c2
    • Merge pull request #152 from squirrellyjs/dependabot/npm_and_yarn/acorn-6.4.1 74ac815
    • Merge pull request #153 from squirrellyjs/greenkeeper/typedoc-0.17.0 bbdcf56
    • Rebuilt 611c1d7
    • Format with Prettier 51d1698
    • Extract async support check to separate function f20d493
    • chore(package): update lockfile yarn.lock 7f28c63
    • chore(package): update @typescript-eslint/parser to version 2.24.0 777b53e
    • chore(package): update lockfile yarn.lock e0f74fc
    • chore(package): update typedoc to version 0.17.0 0af726b
    • Bump acorn from 6.4.0 to 6.4.1 329d3d0
    • chore(package): update lockfile yarn.lock 83c997a
    • chore(package): update rollup to version 2.0.6 8e547ce
    • Explicit async, plugins work. 8b2432b
    • Update benchmarks page, README a93cd9b

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.8...v8.0.0-beta.9

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.8(Feb 27, 2020)

    TL;DR

    • More tests
    • Configuration object stores templates, filters, etc.
    • Repo cleanup

    Commits

    • Change TypeDoc theme to default from minimal 5ccf7e9
    • Add additional test for includeFile error 0b1f790
    • Add tests for render err w/ unknown filters, helpers efc5668
    • Update env to include storage, fix copyProps, update browser-tests 49ad8d1
    • Merge branch 'master' of https://github.com/squirrellyjs/squirrelly Pulled from master 36cef76
    • Removed unecessary comments fd1d55c
    • Merge pull request #147 from squirrellyjs/all-contributors/add-ichiriac e1c9aa5
    • docs: update .all-contributorsrc [skip ci] 6df69b6
    • docs: update README.md [skip ci] 33ab446
    • Add 'funding' field to package.json 4441960
    • Create FUNDING.yml c726961

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.7...v8.0.0-beta.8

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.7(Feb 24, 2020)

    TL;DR

    Non-vital changes like updating README and adding "sideEffects": false to package.json

    Commits

    • Add 'sideEffects': false to package.json 95db6d9
    • Updated link to 'read more' on README de9fe63

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.6...v8.0.0-beta.7

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.6(Feb 22, 2020)

    TL;DR

    • Switched from TSLint to ESLINT
    • Add option to be in global scope, useScope helper
    • Code organization

    Commits

    • Update README cd9f22b
    • Add to TODO.md 048f82e
    • Extract object merge into copyProps func in utils 3329c6d
    • Switch from TSLint to ESLint, function reorganization, rename types, hasOwnProp function 5bbeb06
    • Add useWith config opt, bad syntax error, env.l errors, updated getConfig, extract filter & block errs into function 1ad0731
    • Fix script link to Squirrelly dist 2fbff69

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.5...v8.0.0-beta.6

    Source code(tar.gz)
    Source code(zip)
  • v7.9.2(Feb 22, 2020)

    Commits

    • Update link to read more about v8 906433f
    • Update .gitignore to include build, docs so switching between v7 and master doesn't err 1b87ba3

    https://github.com/squirrellyjs/squirrelly/compare/v7.9.1...v7.9.2

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.5(Feb 21, 2020)

    TL;DR

    • Fix 'typings field in package.json'
    • Add @clitetailor as a contributor
    • Add browser-benchmarks page for testing during development

    Commits

    • Merge branch 'master' of https://github.com/squirrellyjs/squirrelly 3203e53
    • Fix incorrect link to types e6da19a
    • Update URL-encoding on benchmarks page c975665
    • Merge pull request #145 from squirrellyjs/all-contributors/add-clitetailor 87664ce
    • docs: update .all-contributorsrc [skip ci] 2957c28
    • docs: update README.md [skip ci] 0da2004
    • Add browser benchmarks page 43d354f

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.4...v8.0.0-beta.5

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.4(Feb 17, 2020)

    Tl;DR

    This version adds template inheritance support and fixes all of the linting problems.

    Note: unfortunately, due to some problems with np, there was an error in publishing beta 3 and we had to skip to beta 4.

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.2...v8.0.0-beta.4

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.2(Feb 16, 2020)

    TL;DR

    • Sqrl.render() now supports async
    • Updated naming conventions so everything is camelCase
    • Async support for helpers and filters (still depends on await though)
    • Add include to browser distribution
    • Fix so renderFile and render take callbacks

    Commits

    • Update tests to get coverage across threshold a930fb9
    • Updated README.md e5f3ce1
    • Fixed compile so that the returned fn accepts a callback e8bf591
    • Merge pull request #141 from squirrellyjs/greenkeeper/rollup-plugin-typescript2-0.26.0 0fc4766
    • fix: fix getConfig baseConfig, add include to browser distribution 38d187d
    • fix: fix includeFile to use parent file options 8ad2dd6
    • refactor: fix naming styles, extract types for readability 619418f
    • Added file tests 8913455
    • chore(package): update lockfile yarn.lock df53e87
    • chore(package): update rollup-plugin-typescript2 to version 0.26.0 9ef5e3c

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.1...v8.0.0-beta.2

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.1(Feb 14, 2020)

    TL;DR

    • I fixed a major error where the parser would go into an infinite loop with an unclosed helper
    • I added support for partials, rendering files, and loading files
    • Added Express support
    • Async support (theoretically, though not supported with Render yet)

    Commits

    • Remove console.log statement 253cff6
    • FIX CRITICAL PARSING ERROR WITH UNCLOSED HELPERS 700b73a
    • Fixed self-closing helpers db31f32
    • Update renderFile to only accept 'data', not 'data' and 'options' cadd718
    • Fixed config override, removed unnecessary types c69efd4
    • Work on configuration, include file 116da2c
    • Add async test fc1966d
    • Add async support f568e3d
    • Update SqrlErr type to return error, add async option to config.ts b178f36
    • Rename cache.clear to cache.reset, cause cache.load to merge 0c656a8
    • Update all-contributors badge link d30499e
    • Fix merge conflict 34005a1
    • Hopefully fixed all-contributors badge problem 7714f14
    • Merge pull request #139 from squirrellyjs/all-contributors/add-nebrelbug ed4b5b3
    • Update README.md fdb2aac
    • docs: update .all-contributorsrc [skip ci] 2c231ef
    • docs: update README.md [skip ci] 843e99f
    • Update README, badges for all-contributors 2d4e7ae
    • Update dependencies to enable Greenkeeper ๐ŸŒด (#137) ed0e058
    • chore(package): update lockfile yarn.lock 6975bcd
    • docs(readme): add Greenkeeper badge 84a2645
    • chore(package): update dependencies cbebe0d

    Next Steps

    • Better async support and support for async helpers and filters
    • Layouts support

    https://github.com/squirrellyjs/squirrelly/compare/v8.0.0-beta.0...v8.0.0-beta.1

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-beta.0(Jan 31, 2020)

    Version 8 is finally out!

    This is a beta, but has been pretty thoroughly tested. Some functionality, like Express support, layouts, and partials, will come soon.

    Commits

    • Add v8 disclaimer d7a837b
    • Added explanation of v8, link to v7 4ff87fa
    • Add Gitter badge to README 6efe25a
    • Update names from 'squirrelly-next' to 'squirrelly' 932c3db
    • Correctly configured trimming and fixed all tests 6566f7d
    • Add demo.html 2f4d2f2
    • Add 'typescript types' to keywords bce16ea
    • Updated dev-deps, regenerated yarn.lock f52729b
    • Merge pull request #9 from squirrellyjs/greenkeeper/husky-4.2.1 c63b36a
    • Merge branch 'master' into greenkeeper/husky-4.2.1 bfd89ac
    • Merge pull request #12 from squirrellyjs/greenkeeper/@types/jest-25.1.0 b1ed80b
    • Removed 'git add' from lint-staged 764c08f
    • Ran husky upgrade 286e5bd
    • Merge branch 'master' of https://github.com/squirrellyjs/squirrelly-next 0bcaf2a
    • Update Emojis to Unicode emojis d96b0b9
    • Merge pull request #10 from squirrellyjs/greenkeeper/cross-env-7.0.0 66e166c
    • Merge branch 'master' into greenkeeper/@types/jest-25.1.0 69c39db
    • Merge pull request #11 from squirrellyjs/greenkeeper/lint-staged-10.0.3 b77fbda
    • Merge pull request #13 from squirrellyjs/greenkeeper/@types/node-13.5.1 05ef19f
    • chore(package): update lockfile yarn.lock 17d102a
    • chore(package): update @types/node to version 13.5.1 6ffe0bf
    • chore(package): update @types/jest to version 25.1.0 84ca436
    • chore(package): update lockfile yarn.lock bcaceb1
    • chore(package): update lint-staged to version 10.0.3 cf30225
    • chore(package): update lockfile yarn.lock 604e719
    • chore(package): update cross-env to version 7.0.0 83bcd4a
    • Added GitHub community files 48ed7d6
    • Update tests to add check for errors with invalid try-catch, if templates 5f8748b
    • Update logo to new version c8fc0a4
    • chore(package): update lockfile yarn.lock ec6d9f4
    • chore(package): update husky to version 4.2.1 6058ec4
    • Fix unnecessary type assertions for TSLint and add prettier-standard 2ee0712
    • Fix link to Travis b3d5fbf
    • chore: upgrade dependencies 83fadf7
    • Update README 1afb184
    • Get coverage above threshold ede96fb
    • Fixed issue with reference to Env.default instead of deep clone 0719602
    • Updated types to allow Render to receive a SqrlConfig object 9ea6974
    • Fix tests to use newer version of Env 0b78475
    • Reconfigure configuration lol 1da3b64
    • Zap zero-width strings on parse 6f2deb4
    • Add test of passing envName as string to Compile 8e4e316
    • Update tests to use toEqual() instead of toBeTruthy() 42b0c17
    • Refactor everything to use loading helper, put tags, plugins in env, etc. 186030f
    • We don't need separate ES builds for browser since we already have UMD 3c05cc8
    • Remove unnecessary check if currentAttribute exists (it always does) b4a997f
    • Fix lastIndex of tagOpenReg, remove unecessary strng parameter in addAttrValue ff703f7
    • Fix types, unnecessary 'or's, make filters non-optional again 069cc58
    • Remove automatic creation of currentObj.d, .f, etc. 36092e6
    • Add ideas to Thoughts.md 3425be8
    • COMPARES TO SQUIRRELLY-PREVIOUS IN TERMS OF SPEED AND WAY MORE POWERFUL! I'VE DONE IT! 899bea8
    • XML Escape now working 855e3e3
    • Set powerchars.lastIndex to startInd bbac145
    • Add support for disabling HTML escaping via * or | safe ff2695b
    • Updated tests with envs. Made envName optional on Compile f0ca636
    • Add try-catch, Escape, other stuff f53fc95
    • Updated README.md, build de24124
    • Fix build process. Add terser 44cc779
    • Add filters, working on adding autoEscape, fix bugs, add config b611c58
    • Upgrade dev deps d3a6ad5
    • Updated deps d26801f
    • Trying to get storage.ts to work a073173
    • Update dependencies to enable Greenkeeper ๐ŸŒด (#1) 0d5b385
    • Merge branch 'master' into greenkeeper/initial ca07f4a
    • feat: Create storage container for helpers, layouts, partials, etc. 80eb86c
    • chore: Add 'repository', 'bugs' fields to package.json 53fbed1
    • chore: Add '--pro' flag to travis-deploy-once. Update .travis.yml to use Yarn b2194fe
    • chore: Remove versions of Node that are incompatible with Yarn from .travis.yml 619022c
    • chore(package): update lockfile yarn.lock 7abbf25
    • chore(package): update dependencies 4b578fb
    • chore: Configure Greenkeeper, Coveralls 15c170d
    • chore: Fix formatting. Switch to prettier-standard 754e97c
    • chore: Work on configuring Prettier, linting 992cee5
    • chore: Fix all tests, add Render method 9fe5ab1
    • chore: Finish converting to TypeScript. Working build b9e78e0
    • chore: Convert current progress to TypeScript 899b406
    • chore: Edit Rollup plugins, fix code formatting 22f95bf
    • chore: Update default config of typescript-library-starter d6dc22d
    • Built 97588e5

    https://github.com/squirrellyjs/squirrelly/compare/5a6a9c348d660f9f35815ca17dfefc2d6e298413...v8.0.0-beta.0

    Source code(tar.gz)
    Source code(zip)
  • v7.9.1(Jan 31, 2020)

    Updated README to include details on the new branches.

    • Updated README e805907

    https://github.com/squirrellyjs/squirrelly/compare/v7.9.0...v7.9.1

    Source code(tar.gz)
    Source code(zip)
  • v7.9.0(Nov 18, 2019)

    TL;DR

    I added the sideEffects field to package.json, and updated the README with emojis and much nicer badges

    Commits

    • Update README.md 4a9eee9
    • Merge branch 'master' of https://github.com/squirrellyjs/squirrelly e13e4b9
    • Merge pull request #133 from squirrellyjs/emojify 02219d2
    • Update feature_request.md 8bc7e4d
    • Update bug_report.md 664af6f
    • Fix template emoji 32d4b3f
    • Update bug_report.md 28c86bf
    • Add Emoji to README 2c03b9f
    • Updated README badges to shields.io 1fae055
    • Added sideEffects:false 043ab49

    https://github.com/squirrellyjs/squirrelly/compare/v7.8.0...v7.9.0

    Source code(tar.gz)
    Source code(zip)
  • v7.8.0(Nov 14, 2019)

    Changes

    • Properly escaped - in RegExp for really old browsers
    • Added ES6 Module support
    • Removed unneeded files from NPM build

    https://github.com/squirrellyjs/squirrelly/compare/v7.7.0...v7.8.0

    Source code(tar.gz)
    Source code(zip)
  • v7.7.0(Oct 10, 2019)

    Commits

    • Removed accidental const statement from utils 72a5bfc
    • Removed accidental const statement from utils 9900999

    https://github.com/squirrellyjs/squirrelly/compare/v7.6.0...v7.7.0

    Source code(tar.gz)
    Source code(zip)
  • v7.6.0(Sep 25, 2019)

    Changes

    • Fixed bug where passing an empty string to Sqrl.Render would error 8377818

    https://github.com/squirrellyjs/squirrelly/compare/v7.5.1...v7.6.0

    Source code(tar.gz)
    Source code(zip)
  • v7.5.1(Sep 25, 2019)

    Main Changes

    • I updated Squirrelly to use the All-Contributors bot to display contributors in the README!
    • Line endings have now been standardized to use LF, which means that source maps will be generated correctly
    • Updated the .editorconfig

    Commits

    • Rebuilt Squirrelly (should only affect source maps) 2aa87e8
    • This should force all line endings to be LF 7f62e11
    • Saving files before refreshing line endings 5fdfd53
    • Add .editorconfig (#122) 6d508c1
    • Fixed All-Contributors table in the README fcc1d9b
    • docs: add nebrelbug as a contributor (#125) 63a1516
    • docs: create .all-contributorsrc bbe1173
    • docs: update README.md bc136cb
    • Bump eslint-utils from 1.3.1 to 1.4.2 (#123) b712f55
    • Bump eslint-utils from 1.3.1 to 1.4.2 b70a7ed
    • Add .editorconfig f2d0e5a

    https://github.com/squirrellyjs/squirrelly/compare/v7.5.0...v7.5.1

    Source code(tar.gz)
    Source code(zip)
  • v7.5.0(Aug 21, 2019)

    Announcements

    • FILTER CHAINING NOW WORKS!
    • Bundle size decreased to 4.7kb minified, 2.1kb minzipped! https://bundlephobia.com/[email protected]
    • We rebuilt, tested, and tweaked the master RegExp, and fixed the RegExp that handles helper references. The master RegExp is 83 characters shorter than before.

    Fixed (overview)

    • Filter chaining!
    • Helper references by ID inside parameters

    Changes

    • Updated demo to include example with multiple filters 0d9f50d
    • Working initial version 8fd4718
    • Removed globalRef, helperRef to outside while loop 09f72bc
    • changed replaceParamHelpers to replaceHelperRefs, updated RegExp 2552c35
    • Squirrelly no longer checks whether a helper reference is inside a string - it replaces all perceived helper references, no matter where. Checking whether it's inside a string is unnecessarily time-consuming and complex. If you need to have the literal character "@" somewhere in a string, use string concatenation: 'somestr' + '@' + 'otherstring'.

    Compare

    https://github.com/squirrellyjs/squirrelly/compare/v7.4.0...v7.5.0

    Source code(tar.gz)
    Source code(zip)
  • v7.4.0(Jul 23, 2019)

    The main change in this version is a refactored load function by @joergleis, which has the same API but is cleaner and smaller.

    Contributors

    • @joergleis

    All Commits

    • Rebuilt dist to double-check tests a1e0c01
    • Merge pull request #119 from joergleis/master 275ebf9
    • Add option to use cached name without template 00ff872
    • Remove swap file from git 5ffde94
    • Fix commit f1aacc0
    • Refactor and fix load() 9c59527

    https://github.com/squirrellyjs/squirrelly/compare/v7.3.0...v7.4.0

    Source code(tar.gz)
    Source code(zip)
Owner
Squirrelly
The Squirrelly template engine
Squirrelly
Embedded JS template engine for Node, Deno, and the browser. Lighweight, fast, and pluggable. Written in TypeScript

eta (ฮท) Documentation - Chat - RunKit Demo - Playground Summary Eta is a lightweight and blazing fast embedded JS templating engine that works inside

Eta 682 Dec 29, 2022
A powerful templating engine with inheritance, asynchronous control, and more (jinja2 inspired)

Nunjucks Nunjucks is a full featured templating engine for javascript. It is heavily inspired by jinja2. View the docs here. Installation npm install

Mozilla 8k Dec 30, 2022
Embedded CoffeeScript templates

Eco: Embedded CoffeeScript templates Eco lets you embed CoffeeScript logic in your markup. It's like EJS and ERB, but with CoffeeScript inside the <%

Sam Stephenson 1.7k Dec 17, 2022
Embedded JavaScript templates -- http://ejs.co

Embedded JavaScript templates Installation $ npm install ejs Features Control flow with <% %> Escaped output with <%= %> (escape function configurable

Matthew Eernisse 6.8k Dec 30, 2022
Embedded CoffeeScript templates

Eco: Embedded CoffeeScript templates Eco lets you embed CoffeeScript logic in your markup. It's like EJS and ERB, but with CoffeeScript inside the <%

Sam Stephenson 1.7k Jan 2, 2023
eXtensible Template Engine lib for node and the browser

xtemplate High Speed, eXtensible Template Engine lib on browser and nodejs. support async control, inheritance, include, logic expression, custom func

xtemplate 553 Nov 21, 2022
Pug โ€“ robust, elegant, feature rich template engine for Node.js

Pug Full documentation is at pugjs.org Pug is a high-performance template engine heavily influenced by Haml and implemented with JavaScript for Node.j

Pug 21.1k Dec 30, 2022
Take a swig of the best template engine for JavaScript.

NOT MAINTAINED Fork and use at your own risk. Swig Swig is an awesome, Django/Jinja-like template engine for node.js. Features Available for node.js a

Paul Armstrong 3.1k Jan 4, 2023
Variation-template - Variation is a PSD template that is covered into a web template using HTML5, CSS3, Bootstrapv4.6, JavaScript.

Variation Template Design Variation is a PSD website template. In this project this template is designed with HTML. Deployment This site is deployed a

Bipronath Saha 1 Jan 1, 2022
1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies. Compatible with server-side environments like node.js, module loaders like RequireJS and all web browsers.

JavaScript Templates Contents Demo Description Usage Client-side Server-side Requirements API tmpl() function Templates cache Output encoding Local he

Sebastian Tschan 1.7k Jan 3, 2023
Highly opinionated project template for Serverless Framework that follows and applies hexagonal architecture principle to serverless world. Prepared with easy testing in mind.

serverless-hexagonal-template Highly opinionated project template for Serverless Framework that applies hexagonal architecture principles to the serve

Paweล‚ Zubkiewicz 126 Dec 26, 2022
Examples of how to re-create the WordPress Template Hierarchy using headless clients and WPGraphQL

WPGraphQL Template Hierarchy Debugger This is a project to demonstrate how to re-create the WordPress template hierarchy with Headless WordPress using

Jason Bahl 17 Oct 29, 2022
A template to be used for creating js/scss projects and deploy them to github pages

A template to be used for creating js/scss projects and deploy them to github pages

Cariera รฎn IT 15 Oct 30, 2022
Script Template Fivem in Type Script

fivem-ts ?? A Typescript Template for FiveM ?? This is a basic template for creating a FiveM resource using Typescript. It includes webpack config fil

Vinรญcius Pereira 3 Jun 11, 2021
A K6 Multi Scenario template applying some best practices along some examples

K6-Multi-Scenario-Template It is a performance testing template that shows how to use K6 to implement a Multi Scenario template applying some best pra

Swiss Life OSS 33 Nov 27, 2022
Tailwind & Next Mentorship Template

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Nauval 21 May 22, 2022
Template to create reactjs component library which will help you to create your dream library.

reactjs-library-template Template to create reactjs component library which will help you to create your dream library. How to use Commands to setup e

Nishant Tomar 1 Dec 25, 2021
Low tech template for a reduced carbon impact :seedling:

Enverse minimalist front-end template ?? ?? For all else, use Astro.build ?? Recomended package manager: pnpm Preact + Typescript + Vite How to use: F

null 2 Jan 10, 2022
Obsidian To HTML, A template for building obsidian style notes to a static site

oth (Obsidian To HTML) This is a template for publishing obsidian notes as a static site. The goal of the project is to stay minimal, since this is a

Ulisse mini 11 Nov 4, 2022