Releases: eta-dev/eta
Version 3.0.0
TL;DR
After months of work, I'm super excited to release Eta version 3! 🎉 🎉
The philosophy and end goal of Eta remain the same: to be a lightweight, developer-friendly, and very fast template engine. The syntax also remains almost exactly the same. Eta's API, however, has changed in some important ways. Head over to https://eta.js.org/ to learn more about the changes and begin migrating your code!
Commits
- docs: update README.md 376deaf
- fix: remove nonexistent dir from lint 8a9424d
- fix: istanbul ignore empty function coverage 08b5b6c
- test: add better error tests 4332989
- fix: unclosed tag error message 2e51f43
- feat: remove unnecessary promise code aeec694
- feat: begin updating readme for eta v3 4620af9
- chore: add attrib 41f0688
- feat: add pretty runtime errors and functionHeader option df82f2c
- chore: remove unnecessary line a3d4fbf
- test: add and refine tests 33f8bd7
- delete unnecessary templates cfb7aab
- fix: merge body:__eta.res after ...it 83d56ef
- feat: fix filepath caching e715f07
- feat: add ESM browser build 5269d79
- chore: remove examples directory a522489
- chore: update benchmark page, remove non-embedded template engines 8e252a7
- chore: update tests for v3 4fff2b5
- chore: make conditional more clear ea37ebb
- feat: changes to autoEscape and autoFilter e30a863
- chore: update for eta v3 6eeffe9
- chore: update for eta v3 6268397
- chore: update test files for v3 code e7904ec
- chore: remove deno build using denoify e16dca3
- chore: remove denoify and unused eslint plugins d434792
- chore: finish removing typedoc generation dca2680
- build: remove typedoc generation cd31400
- chore: rebuild 53beb48
- feat: initial rewrite for version 3 f722c32
Version 2.2.0
Version 2.1.2
Version 2.1.1
Version 2.1.0
Version 2.0.1
Version 2.0.0
TL;DR
This commit includes fixes for several security vulnerabilities. Specifically, in version 1, Eta merged the data
parameter of renderFile()
into config
-- meaning that malicious untrusted user data, passed through in a very specific way, could potentially modify the values of varName
, include
, includeFile
, and useWith
, and thus insert arbitrary code into user template functions.
With this release, such behavior is removed. Configuration cannot be passed through the data
parameter to eta.renderFile()
.
Most users will be able to update from version 1 to version 2 without changing any code. All users are encouraged to update as soon as possible.
Practical Implications
- Configuration must be passed to
renderFile
explicitly, rather than merged with thedata
parameter - Using Express.js
app.set()
to modifyviews
andview cache
will no longer change Eta's configuration ofviews
andcache
.- However, since Express still uses its own
views
andview cache
options under the hood, users should configure both Eta and Express with desired values (example below)
- However, since Express still uses its own
- Eta no longer recognizes the legacy Express.js
settings["view options"]
property
Example Code Changes
// Change THIS:
renderFile(filePath, { cache: true }) // This worked in v1 but does not work in v2
// To THIS:
renderFile(filePath, {}, { cache: true }) // This works in v1 and v2
// Change THIS:
var eta = require("eta")
app.set("view engine", "eta")
app.set("views", "./views")
app.set("view cache", true)
// To THIS:
var eta = require("eta")
app.engine("eta", eta.renderFile)
eta.configure({ views: "./views", cache: true }) // configure eta
app.set("views", "./views") // configure Express
app.set("view cache", true) // configure Express
app.set("view engine", "eta")
Commits
Version 1.14.2
TL;DR
- Fixed "types" field in package.json
Commits
Version 1.14.1
Version 1.14.0
TL;DR
- Refactored Eta's build process to make it more maintainable
- Improved NodeNext support