Repository: harttle/liquidjs
Pull request #708 (2024-06-16 19:22:37)

docs: fix some spelling
Fixes misspellings identified by the [check-spelling action](https://github.com/marketplace/actions/check-spelling).

The misspellings have been reported at https://github.com/jsoref/liquidjs/actions/runs/9538354838#summary-26287456265

The action will report that the changes in this PR would make it mostly happy: https://github.com/jsoref/liquidjs/actions/runs/9538354866#summary-26287456395

coveralls: ## Pull Request Test Coverage Report for [Build 9538361733](https://coveralls.io/builds/68111885)


### Details

* **0** of **0**   changed or added relevant lines in **0** files are covered.
* No unchanged relevant lines lost coverage.
* Overall coverage remained the same at **99.159%**

---



|  Totals | [![Coverage Status](https://coveralls.io/builds/68111885/badge)](https://coveralls.io/builds/68111885) |
| :-- | --: |
| Change from base [Build 9376137572](https://coveralls.io/builds/67893023): |  0.0% |
| Covered Lines: | 2373 |
| Relevant Lines: | 2384 |

---
##### 💛  - [Coveralls](https://coveralls.io)

coveralls: ## Pull Request Test Coverage Report for [Build 9545116671](https://coveralls.io/builds/68119546)


### Details

* **0** of **0**   changed or added relevant lines in **0** files are covered.
* No unchanged relevant lines lost coverage.
* Overall coverage remained the same at **99.159%**

---



|  Totals | [![Coverage Status](https://coveralls.io/builds/68119546/badge)](https://coveralls.io/builds/68119546) |
| :-- | --: |
| Change from base [Build 9376137572](https://coveralls.io/builds/67893023): |  0.0% |
| Covered Lines: | 2373 |
| Relevant Lines: | 2384 |

---
##### 💛  - [Coveralls](https://coveralls.io)


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 584fb08b4..9fd77a9c3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1068,7 +1068,7 @@
 
 * Tag#render now returns void, use emitter argument
 to write rendered html.
-* ship to Node.js 8, the dist/liquid.cjs.js (main) nolonger
+* ship to Node.js 8, the dist/liquid.cjs.js (main) no longer
 supports Node.js 6, other bundles are also provided via dist/liquid.esm.js, dist/liquid.js (ES5 umd) and liquid.min.js (minified ES5 umd)
 * remove default export, now should be used like import
 {Liquid} from 'liquidjs'
@@ -1113,7 +1113,7 @@ supports Node.js 6, other bundles are also provided via dist/liquid.esm.js, dist
 
 ### Features
 
-* at_least, at_most, sort_naturual for [#132](https://github.com/harttle/liquidjs/issues/132) ([e6f5f1c](https://github.com/harttle/liquidjs/commit/e6f5f1c))
+* at_least, at_most, sort_natural for [#132](https://github.com/harttle/liquidjs/issues/132) ([e6f5f1c](https://github.com/harttle/liquidjs/commit/e6f5f1c))
 
 # [8.3.0](https://github.com/harttle/liquidjs/compare/v8.2.4...v8.3.0) (2019-06-27)
 
@@ -1177,7 +1177,7 @@ supports Node.js 6, other bundles are also provided via dist/liquid.esm.js, dist
 
 ### Performance Improvements
 
-* use polymophism instead duck test ([82d7673](https://github.com/harttle/liquidjs/commit/82d7673))
+* use polymorphism instead duck test ([82d7673](https://github.com/harttle/liquidjs/commit/82d7673))
 
 ## [8.0.1](https://github.com/harttle/liquidjs/compare/v8.0.0...v8.0.1) (2019-03-22)
 
@@ -1201,7 +1201,7 @@ supports Node.js 6, other bundles are also provided via dist/liquid.esm.js, dist
 
 ### BREAKING CHANGES
 
-* Options and method names in JavaScript API are now renamed to cammelCase, for a complete list see #109
+* Options and method names in JavaScript API are now renamed to camelCase, for a complete list see #109
 
 ## [7.5.1](https://github.com/harttle/liquidjs/compare/v7.5.0...v7.5.1) (2019-03-05)
 
diff --git a/README.md b/README.md
index c332d89f0..46d1daab9 100644
--- a/README.md
+++ b/README.md
@@ -6,12 +6,12 @@
 [![DUB license](https://img.shields.io/dub/l/vibe-d.svg?style=flat-square)](https://github.com/harttle/liquidjs/blob/master/LICENSE)
 [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=flat-square)](https://github.com/harttle/liquidjs)
 
-A simple, expressive and safe [Shopify][shopify/liquid] / Github Pages compatible template engine in pure JavaScript.
-**The purpose of this repo** is to provide a standard Liquid implementation for the JavaScript community so that [Jekyll sites](https://jekyllrb.com), [Github Pages](https://pages.github.com/) and [Shopify templates](https://themes.shopify.com/) can be ported to Node.js without pain.
+A simple, expressive and safe [Shopify][shopify/liquid] / GitHub Pages compatible template engine in pure JavaScript.
+**The purpose of this repo** is to provide a standard Liquid implementation for the JavaScript community so that [Jekyll sites](https://jekyllrb.com), [GitHub Pages](https://pages.github.com/) and [Shopify templates](https://themes.shopify.com/) can be ported to Node.js without pain.
 
 * [Documentation][doc]
 * Please star [LiquidJS on GitHub][github]!
-* Financial support via [Github Sponsors](https://github.com/sponsors/harttle), or [LiquidJS on Open Collective][oc]
+* Financial support via [GitHub Sponsors](https://github.com/sponsors/harttle), or [LiquidJS on Open Collective][oc]
 
 <p align="center"><a href="https://liquidjs.com"><img height="155px" width="155px" src="https://liquidjs.com/icon/mstile-310x310.png" alt="logo"></a></p>
 
@@ -69,7 +69,7 @@ Feel free to create a PR or contact me to add your use case into this list!
 
 If you personally love LiquidJS or it's benefiting your business, please consider financially support us:
 
-- via [Github Sponsors](https://github.com/sponsors/harttle), or
+- via [GitHub Sponsors](https://github.com/sponsors/harttle), or
 - via [LiquidJS on Open Collective][oc]
 
 Special thanks to the following sponsors!
@@ -80,7 +80,7 @@ Special thanks to the following sponsors!
     <tr>
       <td align="center" valign="top" width="14.28%"><a href="https://www.opensense.com/"><img src="https://images.opencollective.com/opensense-inc/bf840ae/logo/256.png?height=100" width="100px;" alt="Opensense Inc."/><br /><sub><b>Opensense</b></sub></a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://www.11ty.dev/"><img src="https://avatars.githubusercontent.com/u/35147177?v=4?s=100" width="100px;" alt="Eleventy"/><br /><sub><b>Eleventy</b></sub></a></td>
-      <td align="center" valign="top" width="14.28%"><a href="http://about.me/peterdehaan"><img src="https://avatars2.githubusercontent.com/u/557895?v=4?s=100" width="100px;" alt="Peter deHaan"/><br /><sub><b>Peter deHaan</b></sub></a></td>
+      <td align="center" valign="top" width="14.28%"><a href="https://about.me/peterdehaan"><img src="https://avatars2.githubusercontent.com/u/557895?v=4?s=100" width="100px;" alt="Peter deHaan"/><br /><sub><b>Peter deHaan</b></sub></a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://opencollective.com/touchless"><img src="https://images.opencollective.com/touchless/273bc74/logo/256.png?height=100" width="100px;" alt="Touchless"/><br /><sub><b>Touchless</b></sub></a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://www.dropkiq.com/"><img src="https://images.opencollective.com/1bertlol/43a8ea8/logo/256.png?height=100" width="100px;" alt="Adam Darrah"/><br /><sub><b>Dropkiq</b></sub></a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://dailycontributors.com/"><img src="https://images.opencollective.com/dailycontributors/3c2e057/logo/256.png?height=100&width=100" width="100px;" alt="Dailycontributors"/><br /><sub><b>Dailycontributors</b></sub></a></td>
@@ -129,7 +129,7 @@ Want to contribute? see [Contribution Guidelines][contribution]. Thanks goes to
       <td align="center" valign="top" width="14.28%"><a href="https://www.rmkennedy.com"><img src="https://avatars3.githubusercontent.com/u/8356669?v=4?s=100" width="100px;" alt="Ryan Kennedy"/><br /><sub><b>Ryan Kennedy</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=ryaninvents" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/strax"><img src="https://avatars2.githubusercontent.com/u/587213?v=4?s=100" width="100px;" alt="Sami Kukkonen"/><br /><sub><b>Sami Kukkonen</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=strax" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://ScottFreeCode.github.io/"><img src="https://avatars3.githubusercontent.com/u/16506071?v=4?s=100" width="100px;" alt="Scott Santucci"/><br /><sub><b>Scott Santucci</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=ScottFreeCode" title="Code">💻</a></td>
-      <td align="center" valign="top" width="14.28%"><a href="http://stevenrescigno.com"><img src="https://avatars3.githubusercontent.com/u/8505293?v=4?s=100" width="100px;" alt="Steven "/><br /><sub><b>Steven </b></sub></a><br /><a href="#example-stevenanthonyrevo" title="Examples">💡</a> <a href="https://github.com/harttle/liquidjs/commits?author=stevenanthonyrevo" title="Code">💻</a></td>
+      <td align="center" valign="top" width="14.28%"><a href="https://stevenrescigno.com"><img src="https://avatars3.githubusercontent.com/u/8505293?v=4?s=100" width="100px;" alt="Steven "/><br /><sub><b>Steven </b></sub></a><br /><a href="#example-stevenanthonyrevo" title="Examples">💡</a> <a href="https://github.com/harttle/liquidjs/commits?author=stevenanthonyrevo" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://efcl.info/"><img src="https://avatars1.githubusercontent.com/u/19714?v=4?s=100" width="100px;" alt="azu"/><br /><sub><b>azu</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=azu" title="Documentation">📖</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/wyozi"><img src="https://avatars3.githubusercontent.com/u/4894573?v=4?s=100" width="100px;" alt="Joonas"/><br /><sub><b>Joonas</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=wyozi" title="Code">💻</a></td>
     </tr>
@@ -138,7 +138,7 @@ Want to contribute? see [Contribution Guidelines][contribution]. Thanks goes to
       <td align="center" valign="top" width="14.28%"><a href="https://brandonpittman.net"><img src="https://avatars0.githubusercontent.com/u/967145?v=4?s=100" width="100px;" alt="Brandon Pittman"/><br /><sub><b>Brandon Pittman</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=brandonpittman" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/tgrandgent"><img src="https://avatars3.githubusercontent.com/u/17069042?v=4?s=100" width="100px;" alt="tgrandgent"/><br /><sub><b>tgrandgent</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=tgrandgent" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/mastodon0"><img src="https://avatars1.githubusercontent.com/u/7924332?v=4?s=100" width="100px;" alt="Martin Schuster"/><br /><sub><b>Martin Schuster</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=mastodon0" title="Code">💻</a></td>
-      <td align="center" valign="top" width="14.28%"><a href="http://js.chenlei.me"><img src="https://avatars0.githubusercontent.com/u/6339390?v=4?s=100" width="100px;" alt="Ray"/><br /><sub><b>Ray</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=richardo2016" title="Tests">⚠️</a> <a href="https://github.com/harttle/liquidjs/commits?author=richardo2016" title="Code">💻</a></td>
+      <td align="center" valign="top" width="14.28%"><a href="https://js.chenlei.me"><img src="https://avatars0.githubusercontent.com/u/6339390?v=4?s=100" width="100px;" alt="Ray"/><br /><sub><b>Ray</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=richardo2016" title="Tests">⚠️</a> <a href="https://github.com/harttle/liquidjs/commits?author=richardo2016" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/CriGoT"><img src="https://avatars0.githubusercontent.com/u/1936786?v=4?s=100" width="100px;" alt="Cristofer Gonzales"/><br /><sub><b>Cristofer Gonzales</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=CriGoT" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://www.raymondcamden.com"><img src="https://avatars3.githubusercontent.com/u/393660?v=4?s=100" width="100px;" alt="Raymond Camden"/><br /><sub><b>Raymond Camden</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=cfjedimaster" title="Documentation">📖</a></td>
     </tr>
@@ -147,9 +147,9 @@ Want to contribute? see [Contribution Guidelines][contribution]. Thanks goes to
       <td align="center" valign="top" width="14.28%"><a href="https://ciccarello.me"><img src="https://avatars0.githubusercontent.com/u/11273838?v=4?s=100" width="100px;" alt="Anthony Ciccarello"/><br /><sub><b>Anthony Ciccarello</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=aciccarello" title="Documentation">📖</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://twitter.com/IAmTrySound"><img src="https://avatars0.githubusercontent.com/u/5635476?v=4?s=100" width="100px;" alt="Bogdan Chadkin"/><br /><sub><b>Bogdan Chadkin</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=TrySound" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://hightouch.io"><img src="https://avatars0.githubusercontent.com/u/5959235?v=4?s=100" width="100px;" alt="Tejas Manohar"/><br /><sub><b>Tejas Manohar</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=tejasmanohar" title="Code">💻</a></td>
-      <td align="center" valign="top" width="14.28%"><a href="http://about.me/peterdehaan"><img src="https://avatars2.githubusercontent.com/u/557895?v=4?s=100" width="100px;" alt="Peter deHaan"/><br /><sub><b>Peter deHaan</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=pdehaan" title="Documentation">📖</a></td>
+      <td align="center" valign="top" width="14.28%"><a href="https://about.me/peterdehaan"><img src="https://avatars2.githubusercontent.com/u/557895?v=4?s=100" width="100px;" alt="Peter deHaan"/><br /><sub><b>Peter deHaan</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=pdehaan" title="Documentation">📖</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/amit777"><img src="https://avatars0.githubusercontent.com/u/2703309?v=4?s=100" width="100px;" alt="amit777"/><br /><sub><b>amit777</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=amit777" title="Code">💻</a></td>
-      <td align="center" valign="top" width="14.28%"><a href="http://www.ifi.uzh.ch/en/ce/people/schuldenzucker.html"><img src="https://avatars3.githubusercontent.com/u/1100776?v=4?s=100" width="100px;" alt="Steffen Schuldenzucker"/><br /><sub><b>Steffen Schuldenzucker</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=sschuldenzucker" title="Code">💻</a></td>
+      <td align="center" valign="top" width="14.28%"><a href="https://www.ifi.uzh.ch/en/ce/people/schuldenzucker.html"><img src="https://avatars3.githubusercontent.com/u/1100776?v=4?s=100" width="100px;" alt="Steffen Schuldenzucker"/><br /><sub><b>Steffen Schuldenzucker</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=sschuldenzucker" title="Code">💻</a></td>
     </tr>
     <tr>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/Pixcell"><img src="https://avatars0.githubusercontent.com/u/4005291?v=4?s=100" width="100px;" alt="Pixcell"/><br /><sub><b>Pixcell</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=Pixcell" title="Code">💻</a></td>
@@ -179,8 +179,8 @@ Want to contribute? see [Contribution Guidelines][contribution]. Thanks goes to
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/prassie"><img src="https://avatars.githubusercontent.com/u/1357831?v=4?s=100" width="100px;" alt="prassie"/><br /><sub><b>prassie</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=prassie" title="Documentation">📖</a></td>
     </tr>
     <tr>
-      <td align="center" valign="top" width="14.28%"><a href="http://slavv.com/"><img src="https://avatars.githubusercontent.com/u/713329?v=4?s=100" width="100px;" alt="Slav Ivanov"/><br /><sub><b>Slav Ivanov</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=slavivanov" title="Code">💻</a></td>
-      <td align="center" valign="top" width="14.28%"><a href="http://www.orgflow.io/"><img src="https://avatars.githubusercontent.com/u/3889090?v=4?s=100" width="100px;" alt="Daniel Rosenberg"/><br /><sub><b>Daniel Rosenberg</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=DaRosenberg" title="Code">💻</a></td>
+      <td align="center" valign="top" width="14.28%"><a href="https://slavv.com/"><img src="https://avatars.githubusercontent.com/u/713329?v=4?s=100" width="100px;" alt="Slav Ivanov"/><br /><sub><b>Slav Ivanov</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=slavivanov" title="Code">💻</a></td>
+      <td align="center" valign="top" width="14.28%"><a href="https://www.orgflow.io/"><img src="https://avatars.githubusercontent.com/u/3889090?v=4?s=100" width="100px;" alt="Daniel Rosenberg"/><br /><sub><b>Daniel Rosenberg</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=DaRosenberg" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/bobgubko"><img src="https://avatars.githubusercontent.com/u/733312?v=4?s=100" width="100px;" alt="bobgubko"/><br /><sub><b>bobgubko</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=bobgubko" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/bangank36"><img src="https://avatars.githubusercontent.com/u/10071857?v=4?s=100" width="100px;" alt="BaNgan"/><br /><sub><b>BaNgan</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=bangank36" title="Documentation">📖</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/mahyar-pasarzangene"><img src="https://avatars.githubusercontent.com/u/16485039?v=4?s=100" width="100px;" alt="Mahyar Pasarzangene"/><br /><sub><b>Mahyar Pasarzangene</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=mahyar-pasarzangene" title="Documentation">📖</a></td>
@@ -189,7 +189,7 @@ Want to contribute? see [Contribution Guidelines][contribution]. Thanks goes to
     </tr>
     <tr>
       <td align="center" valign="top" width="14.28%"><a href="http://nickreilingh.com/"><img src="https://avatars.githubusercontent.com/u/2458645?v=4?s=100" width="100px;" alt="Nick Reilingh"/><br /><sub><b>Nick Reilingh</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=NReilingh" title="Documentation">📖</a></td>
-      <td align="center" valign="top" width="14.28%"><a href="http://ebobby.org"><img src="https://avatars.githubusercontent.com/u/170356?v=4?s=100" width="100px;" alt="Francisco Soto"/><br /><sub><b>Francisco Soto</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=ebobby" title="Code">💻</a></td>
+      <td align="center" valign="top" width="14.28%"><a href="https://ebobby.org"><img src="https://avatars.githubusercontent.com/u/170356?v=4?s=100" width="100px;" alt="Francisco Soto"/><br /><sub><b>Francisco Soto</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=ebobby" title="Code">💻</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://www.davidlj95.com"><img src="https://avatars.githubusercontent.com/u/8050648?v=4?s=100" width="100px;" alt="David LJ"/><br /><sub><b>David LJ</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=davidlj95" title="Documentation">📖</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/RasmusWL"><img src="https://avatars.githubusercontent.com/u/1054041?v=4?s=100" width="100px;" alt="Rasmus Wriedt Larsen"/><br /><sub><b>Rasmus Wriedt Larsen</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=RasmusWL" title="Documentation">📖</a></td>
       <td align="center" valign="top" width="14.28%"><a href="https://github.com/brunodccarvalho"><img src="https://avatars.githubusercontent.com/u/24962950?v=4?s=100" width="100px;" alt="Bruno Carvalho"/><br /><sub><b>Bruno Carvalho</b></sub></a><br /><a href="https://github.com/harttle/liquidjs/commits?author=brunodccarvalho" title="Code">💻</a></td>
diff --git a/benchmark/engines/create-liquid.js b/benchmark/engines/create-liquid.js
index 59b01f384..cd911188a 100644
--- a/benchmark/engines/create-liquid.js
+++ b/benchmark/engines/create-liquid.js
@@ -7,7 +7,7 @@ function createEngine (pkg) {
     cache: true,
     extname: '.liquid'
   })
-  liquid.registerFilter('url', path => `http://example.com${path}`)
+  liquid.registerFilter('url', path => `https://example.com${path}`)
   return {
     load: path => liquid.parse(readFileSync(path + '.liquid', 'utf8')),
     render: (tpl, data) => liquid.renderSync(tpl, data)
diff --git a/benchmark/engines/handlebars.js b/benchmark/engines/handlebars.js
index 5857b600f..87314401c 100644
--- a/benchmark/engines/handlebars.js
+++ b/benchmark/engines/handlebars.js
@@ -12,7 +12,7 @@ handlebars.registerHelper('concat', function (...args) {
 })
 
 handlebars.registerHelper('url', function (path) {
-  return `http://example.com${path}`
+  return `https://example.com${path}`
 })
 
 handlebars.registerHelper('inc', function (num) {
diff --git a/benchmark/engines/swig.js b/benchmark/engines/swig.js
index d43432b21..83c34d573 100644
--- a/benchmark/engines/swig.js
+++ b/benchmark/engines/swig.js
@@ -1,7 +1,7 @@
 const swig = require('swig')
 
 swig.setFilter('url', function (path) {
-  return `http://example.com${path}`
+  return `https://example.com${path}`
 })
 
 swig.setFilter('prepend', function (input, arg) {
diff --git a/benchmark/tag.js b/benchmark/tag.js
index 0c17dc751..1c8b44555 100755
--- a/benchmark/tag.js
+++ b/benchmark/tag.js
@@ -10,7 +10,7 @@ function tag () {
     new Benchmark.Suite('tag')
       .add('if', test('{% if "foobar" %}foo{% endif %}'))
       .add('unless', test('{%unless "foo"%}true{%else%}false{%endunless%}'))
-      .add('for', test('{% for i in (1..3) %}{{fooloop.index}}{% endfor %}'))
+      .add('for', test('{% for i in (1..3) %}{{forloop.index}}{% endfor %}'))
       .add('switch', test('{%case 3%}{% when 1 %}1{% when 2 %}2{% when 3 %}3{%endcase%}'))
       .add('assign', test('{%assign a="foo bar"%}'))
       .add('capture', test('{%capture foo%}what is this{%endcapture%}'))
diff --git a/benchmark/templates/todolist.jsx b/benchmark/templates/todolist.jsx
index b6633a233..64e2444ee 100644
--- a/benchmark/templates/todolist.jsx
+++ b/benchmark/templates/todolist.jsx
@@ -5,7 +5,7 @@ function capitalize (str) {
   return str[0].toUpperCase() + str.slice(1).toLowerCase()
 }
 function url (path) {
-  return `http://example.com${path}`
+  return `https://example.com${path}`
 }
 function renderTodoIcon (id) {
   return <img title="risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices" src="http://images.example.com/{id}.png"/>
diff --git a/bin/character-gen.js b/bin/character-gen.js
index 183db3e87..90ea4d108 100755
--- a/bin/character-gen.js
+++ b/bin/character-gen.js
@@ -10,7 +10,7 @@ const isInlineBlank = c => c === '\t' || c === ' ' || c === '\r'
 const isSign = c => c === '-' || c === '+'
 // See https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp
 const unicodeBlanks = '\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000'
-const unicodePunctuations = '“”'
+const unicodePunctuation = '“”'
 
 const types = []
 for (let i = 0; i < 128; i++) {
@@ -48,4 +48,4 @@ export function isWord (char: string): boolean {
 `.trim())
 
 console.log([...unicodeBlanks].map(char => `TYPES[${char.charCodeAt(0)}]`).join(' = ') + ' = BLANK')
-console.log([...unicodePunctuations].map(char => `TYPES[${char.charCodeAt(0)}]`).join(' = ') + ' = PUNCTUATION')
+console.log([...unicodePunctuation].map(char => `TYPES[${char.charCodeAt(0)}]`).join(' = ') + ' = PUNCTUATION')
diff --git a/demo/reactjs/README.md b/demo/reactjs/README.md
index 2dab1ec2e..41412c84d 100644
--- a/demo/reactjs/README.md
+++ b/demo/reactjs/README.md
@@ -381,7 +381,7 @@ This works for any library, not just `react-router-dom`.
 ## Importing a Component
 
 This project setup supports ES6 modules thanks to Webpack.<br>
-While you can still use `require()` and `module.exports`, we encourage you to use [`import` and `export`](http://exploringjs.com/es6/ch_modules.html) instead.
+While you can still use `require()` and `module.exports`, we encourage you to use [`import` and `export`](https://exploringjs.com/es6/ch_modules.html) instead.
 
 For example:
 
@@ -414,7 +414,7 @@ class DangerButton extends Component {
 export default DangerButton;
 ```
 
-Be aware of the [difference between default and named exports](http://stackoverflow.com/questions/36795819/react-native-es-6-when-should-i-use-curly-braces-for-import/36796281#36796281). It is a common source of mistakes.
+Be aware of the [difference between default and named exports](https://stackoverflow.com/questions/36795819/react-native-es-6-when-should-i-use-curly-braces-for-import/36796281#36796281). It is a common source of mistakes.
 
 We suggest that you stick to using default imports and exports when a module only exports a single thing (for example, a component). That’s what you get when you use `export default Button` and `import Button from './Button'`.
 
@@ -422,15 +422,15 @@ Named exports are useful for utility modules that export several functions. A mo
 
 Learn more about ES6 modules:
 
-- [When to use the curly braces?](http://stackoverflow.com/questions/36795819/react-native-es-6-when-should-i-use-curly-braces-for-import/36796281#36796281)
-- [Exploring ES6: Modules](http://exploringjs.com/es6/ch_modules.html)
+- [When to use the curly braces?](https://stackoverflow.com/questions/36795819/react-native-es-6-when-should-i-use-curly-braces-for-import/36796281#36796281)
+- [Exploring ES6: Modules](https://exploringjs.com/es6/ch_modules.html)
 - [Understanding ES6: Modules](https://leanpub.com/understandinges6/read#leanpub-auto-encapsulating-code-with-modules)
 
 ## Code Splitting
 
 Instead of downloading the entire app before users can use it, code splitting allows you to split your code into small chunks which you can then load on demand.
 
-This project setup supports code splitting via [dynamic `import()`](http://2ality.com/2017/01/import-operator.html#loading-code-on-demand). Its [proposal](https://github.com/tc39/proposal-dynamic-import) is in stage 3. The `import()` function-like form takes the module name as an argument and returns a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) which always resolves to the namespace object of the module.
+This project setup supports code splitting via [dynamic `import()`](https://2ality.com/2017/01/import-operator.html#loading-code-on-demand). Its [proposal](https://github.com/tc39/proposal-dynamic-import) is in stage 3. The `import()` function-like form takes the module name as an argument and returns a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) which always resolves to the namespace object of the module.
 
 Here is an example:
 
@@ -476,7 +476,7 @@ You can also use it with `async` / `await` syntax if you prefer it.
 
 ### With React Router
 
-If you are using React Router check out [this tutorial](http://serverless-stack.com/chapters/code-splitting-in-create-react-app.html) on how to use code splitting with it. You can find the companion GitHub repository [here](https://github.com/AnomalyInnovations/serverless-stack-demo-client/tree/code-splitting-in-create-react-app).
+If you are using React Router check out [this tutorial](https://serverless-stack.com/chapters/code-splitting-in-create-react-app.html) on how to use code splitting with it. You can find the companion GitHub repository [here](https://github.com/AnomalyInnovations/serverless-stack-demo-client/tree/code-splitting-in-create-react-app).
 
 Also check out the [Code Splitting](https://reactjs.org/docs/code-splitting.html) section in React documentation.
 
@@ -602,7 +602,7 @@ This project setup minifies your CSS and adds vendor prefixes to it automaticall
 
 Support for new CSS features like the [`all` property](https://developer.mozilla.org/en-US/docs/Web/CSS/all), [`break` properties](https://www.w3.org/TR/css-break-3/#breaking-controls), [custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables), and [media query ranges](https://www.w3.org/TR/mediaqueries-4/#range-context) are automatically polyfilled to add support for older browsers.
 
-You can customize your target support browsers by adjusting the `browserslist` key in `package.json` accoring to the [Browserslist specification](https://github.com/browserslist/browserslist#readme).
+You can customize your target support browsers by adjusting the `browserslist` key in `package.json` according to the [Browserslist specification](https://github.com/browserslist/browserslist#readme).
 
 For example, this:
 
@@ -671,7 +671,7 @@ This works in CSS too:
 }
 ```
 
-Webpack finds all relative module references in CSS (they start with `./`) and replaces them with the final paths from the compiled bundle. If you make a typo or accidentally delete an important file, you will see a compilation error, just like when you import a non-existent JavaScript module. The final filenames in the compiled bundle are generated by Webpack from content hashes. If the file content changes in the future, Webpack will give it a different name in production so you don’t need to worry about long-term caching of assets.
+Webpack finds all relative module references in CSS (they start with `./`) and replaces them with the final paths from the compiled bundle. If you make a typo or accidentally delete an important file, you will see a compilation error, just like when you import a nonexistent JavaScript module. The final filenames in the compiled bundle are generated by Webpack from content hashes. If the file content changes in the future, Webpack will give it a different name in production so you don’t need to worry about long-term caching of assets.
 
 Please be advised that this is also a custom feature of Webpack.
 
@@ -755,7 +755,7 @@ The `public` folder is useful as a workaround for a number of less common cases:
 
 - You need a file with a specific name in the build output, such as [`manifest.webmanifest`](https://developer.mozilla.org/en-US/docs/Web/Manifest).
 - You have thousands of images and need to dynamically reference their paths.
-- You want to include a small script like [`pace.js`](http://github.hubspot.com/pace/docs/welcome/) outside of the bundled code.
+- You want to include a small script like [`pace.js`](https://github.hubspot.com/pace/docs/welcome/) outside of the bundled code.
 - Some library may be incompatible with Webpack and you have no other option but to include it as a `<script>` tag.
 
 Note that if you add a `<script>` that declares global variables, you also need to read the next section on using them.
@@ -813,7 +813,7 @@ Now you are ready to use the imported reactstrap components within your componen
 Sometimes you might need to tweak the visual styles of Bootstrap (or equivalent package).<br>
 As of `react-scripts@2.0.0` you can import `.scss` files. This makes it possible to use a package's built-in Sass variables for global style preferences.
 
-To customize Bootstrap, create a file called `src/custom.scss` (or similar) and import the Bootstrap source stylesheet. Add any overrides _before_ the imported file(s). You can reference [Bootstrap's documentation](http://getbootstrap.com/docs/4.1/getting-started/theming/#css-variables) for the names of the available variables.
+To customize Bootstrap, create a file called `src/custom.scss` (or similar) and import the Bootstrap source stylesheet. Add any overrides _before_ the imported file(s). You can reference [Bootstrap's documentation](https://getbootstrap.com/docs/4.1/getting-started/theming/#css-variables) for the names of the available variables.
 
 ```scss
 // Override default variables before the import
@@ -1138,7 +1138,7 @@ To tell the development server to proxy any unknown requests to your API server
 
 This way, when you `fetch('/api/todos')` in development, the development server will recognize that it’s not a static asset, and will proxy your request to `http://localhost:4000/api/todos` as a fallback. The development server will **only** attempt to send requests without `text/html` in its `Accept` header to the proxy.
 
-Conveniently, this avoids [CORS issues](http://stackoverflow.com/questions/21854516/understanding-ajax-cors-and-security-considerations) and error messages like this in development:
+Conveniently, this avoids [CORS issues](https://stackoverflow.com/questions/21854516/understanding-ajax-cors-and-security-considerations) and error messages like this in development:
 
 ```
 Fetch API cannot load http://localhost:4000/api/todos. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
@@ -1150,7 +1150,7 @@ The `proxy` option supports HTTP, HTTPS and WebSocket connections.<br>
 If the `proxy` option is **not** flexible enough for you, alternatively you can:
 
 - [Configure the proxy yourself](#configuring-the-proxy-manually)
-- Enable CORS on your server ([here’s how to do it for Express](http://enable-cors.org/server_expressjs.html)).
+- Enable CORS on your server ([here’s how to do it for Express](https://enable-cors.org/server_expressjs.html)).
 - Use [environment variables](#adding-custom-environment-variables) to inject the right server host and port into your app.
 
 ### "Invalid Host Header" Errors After Configuring Proxy
@@ -1324,7 +1324,7 @@ When you run `npm test`, Jest will launch in the watch mode. Every time you save
 
 The watcher includes an interactive command-line interface with the ability to run all tests, or focus on a search pattern. It is designed this way so that you can keep it open and enjoy fast re-runs. You can learn the commands from the “Watch Usage” note that the watcher prints after every run:
 
-![Jest watch mode](http://facebook.github.io/jest/img/blog/15-watch.gif)
+![Jest watch mode](https://facebook.github.io/jest/img/blog/15-watch.gif)
 
 ### Version Control Integration
 
@@ -1373,7 +1373,7 @@ This test mounts a component and makes sure that it didn’t throw during render
 
 When you encounter bugs caused by changing components, you will gain a deeper insight into which parts of them are worth testing in your application. This might be a good time to introduce more specific tests asserting specific expected output or behavior.
 
-If you’d like to test components in isolation from the child components they render, we recommend using [`shallow()` rendering API](http://airbnb.io/enzyme/docs/api/shallow.html) from [Enzyme](http://airbnb.io/enzyme/). To install it, run:
+If you’d like to test components in isolation from the child components they render, we recommend using [`shallow()` rendering API](https://airbnb.io/enzyme/docs/api/shallow.html) from [Enzyme](https://airbnb.io/enzyme/). To install it, run:
 
 ```sh
 npm install --save enzyme enzyme-adapter-react-16 react-test-renderer
@@ -1412,9 +1412,9 @@ it('renders without crashing', () => {
 });
 ```
 
-Unlike the previous smoke test using `ReactDOM.render()`, this test only renders `<App>` and doesn’t go deeper. For example, even if `<App>` itself renders a `<Button>` that throws, this test will pass. Shallow rendering is great for isolated unit tests, but you may still want to create some full rendering tests to ensure the components integrate correctly. Enzyme supports [full rendering with `mount()`](http://airbnb.io/enzyme/docs/api/mount.html), and you can also use it for testing state changes and component lifecycle.
+Unlike the previous smoke test using `ReactDOM.render()`, this test only renders `<App>` and doesn’t go deeper. For example, even if `<App>` itself renders a `<Button>` that throws, this test will pass. Shallow rendering is great for isolated unit tests, but you may still want to create some full rendering tests to ensure the components integrate correctly. Enzyme supports [full rendering with `mount()`](https://airbnb.io/enzyme/docs/api/mount.html), and you can also use it for testing state changes and component lifecycle.
 
-You can read the [Enzyme documentation](http://airbnb.io/enzyme/) for more testing techniques. Enzyme documentation uses Chai and Sinon for assertions but you don’t have to use them because Jest provides built-in `expect()` and `jest.fn()` for spies.
+You can read the [Enzyme documentation](https://airbnb.io/enzyme/) for more testing techniques. Enzyme documentation uses Chai and Sinon for assertions but you don’t have to use them because Jest provides built-in `expect()` and `jest.fn()` for spies.
 
 Here is an example from Enzyme documentation that asserts specific output, rewritten to use Jest matchers:
 
@@ -1431,8 +1431,8 @@ it('renders welcome message', () => {
 });
 ```
 
-All Jest matchers are [extensively documented here](http://facebook.github.io/jest/docs/en/expect.html).<br>
-Nevertheless you can use a third-party assertion library like [Chai](http://chaijs.com/) if you want to, as described below.
+All Jest matchers are [extensively documented here](https://facebook.github.io/jest/docs/en/expect.html).<br>
+Nevertheless you can use a third-party assertion library like [Chai](https://chaijs.com/) if you want to, as described below.
 
 Additionally, you might find [jest-enzyme](https://github.com/blainekasten/enzyme-matchers) helpful to simplify your tests with readable matchers. The above `contains` code can be written more simply with jest-enzyme.
 
@@ -1462,7 +1462,7 @@ import 'jest-enzyme';
 
 We recommend that you use `expect()` for assertions and `jest.fn()` for spies. If you are having issues with them please [file those against Jest](https://github.com/facebook/jest/issues/new), and we’ll fix them. We intend to keep making them better for React, supporting, for example, [pretty-printing React elements as JSX](https://github.com/facebook/jest/pull/1566).
 
-However, if you are used to other libraries, such as [Chai](http://chaijs.com/) and [Sinon](http://sinonjs.org/), or if you have existing code using them that you’d like to port over, you can import them normally like this:
+However, if you are used to other libraries, such as [Chai](https://chaijs.com/) and [Sinon](https://sinonjs.org/), or if you have existing code using them that you’d like to port over, you can import them normally like this:
 
 ```js
 import sinon from 'sinon';
@@ -1509,7 +1509,7 @@ Similarly, `fit()` lets you focus on a specific test without running any other t
 Jest has an integrated coverage reporter that works well with ES6 and requires no configuration.<br>
 Run `npm test -- --coverage` (note extra `--` in the middle) to include a coverage report like this:
 
-![coverage report](http://i.imgur.com/5bFhnTS.png)
+![coverage report](https://i.imgur.com/5bFhnTS.png)
 
 Note that tests run much slower with coverage so it is recommended to run it separately from your normal workflow.
 
@@ -1640,18 +1640,18 @@ To help you make up your mind, here is a list of APIs that **need jsdom**:
 - Any browser globals like `window` and `document`
 - [`ReactDOM.render()`](https://facebook.github.io/react/docs/top-level-api.html#reactdom.render)
 - [`TestUtils.renderIntoDocument()`](https://facebook.github.io/react/docs/test-utils.html#renderintodocument) ([a shortcut](https://github.com/facebook/react/blob/34761cf9a252964abfaab6faf74d473ad95d1f21/src/test/ReactTestUtils.js#L83-L91) for the above)
-- [`mount()`](http://airbnb.io/enzyme/docs/api/mount.html) in [Enzyme](http://airbnb.io/enzyme/index.html)
+- [`mount()`](https://airbnb.io/enzyme/docs/api/mount.html) in [Enzyme](https://airbnb.io/enzyme/index.html)
 
 In contrast, **jsdom is not needed** for the following APIs:
 
 - [`TestUtils.createRenderer()`](https://facebook.github.io/react/docs/test-utils.html#shallow-rendering) (shallow rendering)
-- [`shallow()`](http://airbnb.io/enzyme/docs/api/shallow.html) in [Enzyme](http://airbnb.io/enzyme/index.html)
+- [`shallow()`](https://airbnb.io/enzyme/docs/api/shallow.html) in [Enzyme](https://airbnb.io/enzyme/index.html)
 
-Finally, jsdom is also not needed for [snapshot testing](http://facebook.github.io/jest/blog/2016/07/27/jest-14.html).
+Finally, jsdom is also not needed for [snapshot testing](https://facebook.github.io/jest/blog/2016/07/27/jest-14.html).
 
 ### Snapshot Testing
 
-Snapshot testing is a feature of Jest that automatically generates text snapshots of your components and saves them on the disk so if the UI output changes, you get notified without manually writing any assertions on the component output. [Read more about snapshot testing.](http://facebook.github.io/jest/blog/2016/07/27/jest-14.html)
+Snapshot testing is a feature of Jest that automatically generates text snapshots of your components and saves them on the disk so if the UI output changes, you get notified without manually writing any assertions on the component output. [Read more about snapshot testing.](https://facebook.github.io/jest/blog/2016/07/27/jest-14.html)
 
 ### Editor Integration
 
@@ -1735,7 +1735,7 @@ Usually, it’s hard to see these states without running a sample app or some ex
 
 Create React App doesn’t include any tools for this by default, but you can easily add [Storybook for React](https://storybook.js.org) ([source](https://github.com/storybooks/storybook)) or [React Styleguidist](https://react-styleguidist.js.org/) ([source](https://github.com/styleguidist/react-styleguidist)) to your project. **These are third-party tools that let you develop components and see all their states in isolation from your app**.
 
-![Storybook for React Demo](http://i.imgur.com/7CIAWpB.gif)
+![Storybook for React Demo](https://i.imgur.com/7CIAWpB.gif)
 
 You can also deploy your Storybook or style guide as a static app. This way, everyone in your team can view and review different states of UI components without starting a backend server or creating an account in your app.
 
@@ -1820,7 +1820,7 @@ following in their [`src/index.js`](src/index.js) file:
 ```js
 // If you want your app to work offline and load faster, you can change
 // unregister() to register() below. Note this comes with some pitfalls.
-// Learn more about service workers: http://bit.ly/CRA-PWA
+// Learn more about service workers: https://bit.ly/CRA-PWA
 serviceWorker.unregister();
 ```
 
@@ -1854,7 +1854,7 @@ following into account:
 
 1. Service workers [require HTTPS](https://developers.google.com/web/fundamentals/getting-started/primers/service-workers#you_need_https),
    although to facilitate local testing, that policy
-   [does not apply to `localhost`](http://stackoverflow.com/questions/34160509/options-for-testing-service-workers-via-http/34161385#34161385).
+   [does not apply to `localhost`](https://stackoverflow.com/questions/34160509/options-for-testing-service-workers-via-http/34161385#34161385).
    If your production web server does not support HTTPS, then the service worker
    registration will fail, but the rest of your web app will remain functional.
 
@@ -1970,7 +1970,7 @@ serve -h
 
 You don’t necessarily need a static server in order to run a Create React App project in production. It works just as fine integrated into an existing dynamic one.
 
-Here’s a programmatic example using [Node](https://nodejs.org/) and [Express](http://expressjs.com/):
+Here’s a programmatic example using [Node](https://nodejs.org/) and [Express](https://expressjs.com/):
 
 ```javascript
 const express = require('express');
@@ -2018,7 +2018,7 @@ If you’re using [Apache HTTP Server](https://httpd.apache.org/), you need to c
 
 It will get copied to the `build` folder when you run `npm run build`.
 
-If you’re using [Apache Tomcat](http://tomcat.apache.org/), you need to follow [this Stack Overflow answer](https://stackoverflow.com/a/41249464/4878474).
+If you’re using [Apache Tomcat](https://tomcat.apache.org/), you need to follow [this Stack Overflow answer](https://stackoverflow.com/a/41249464/4878474).
 
 Now requests to `/todos/42` will be handled correctly both in development and in production.
 
@@ -2029,7 +2029,7 @@ service worker navigation routing can be configured or disabled by
 [`eject`ing](#npm-run-eject) and then modifying the
 [`navigateFallback`](https://github.com/GoogleChrome/sw-precache#navigatefallback-string)
 and [`navigateFallbackWhitelist`](https://github.com/GoogleChrome/sw-precache#navigatefallbackwhitelist-arrayregexp)
-options of the `SWPreachePlugin` [configuration](../config/webpack.config.prod.js).
+options of the `SWPrecachePlugin` [configuration](../config/webpack.config.prod.js).
 
 When users install your app to the homescreen of their device the default configuration will make a shortcut to `/index.html`. This may not work for client-side routers which expect the app to be served from `/`. Edit the web app manifest at [`public/manifest.json`](public/manifest.json) and change `start_url` to match the required URL scheme, for example:
 
@@ -2043,7 +2043,7 @@ By default, Create React App produces a build assuming your app is hosted at the
 To override this, specify the `homepage` in your `package.json`, for example:
 
 ```js
-  "homepage": "http://mywebsite.com/relativepath",
+  "homepage": "https://example.com/relativepath",
 ```
 
 This will let Create React App correctly infer the root path to use in the generated HTML file.
@@ -2068,7 +2068,7 @@ If you are not using the HTML5 `pushState` history API or not using client-side
   "homepage": ".",
 ```
 
-This will make sure that all the asset paths are relative to `index.html`. You will then be able to move your app from `http://mywebsite.com` to `http://mywebsite.com/relativepath` or even `http://mywebsite.com/relative/path` without having to rebuild it.
+This will make sure that all the asset paths are relative to `index.html`. You will then be able to move your app from `https://example.com` to `https://example.com/relativepath` or even `https://example.com/relative/path` without having to rebuild it.
 
 ### Customizing Environment Variables for Arbitrary Build Environments
 
@@ -2077,7 +2077,7 @@ You can create an arbitrary build environment by creating a custom `.env` file a
 For example, to create a build environment for a staging environment:
 
 1. Create a file called `.env.staging`
-1. Set environment variables as you would any other `.env` file (e.g. `REACT_APP_API_URL=http://api-staging.example.com`)
+1. Set environment variables as you would any other `.env` file (e.g. `REACT_APP_API_URL=https://api-staging.example.com`)
 1. Install [env-cmd](https://www.npmjs.com/package/env-cmd)
    ```sh
    $ npm install env-cmd --save
@@ -2201,7 +2201,7 @@ or for a GitHub user page:
 or for a custom domain page:
 
 ```json
-  "homepage": "https://mywebsite.com",
+  "homepage": "https://example.com",
 ```
 
 Create React App uses the `homepage` field to determine the root URL in the built HTML file.
@@ -2259,7 +2259,7 @@ npm run deploy
 
 Finally, make sure **GitHub Pages** option in your GitHub project settings is set to use the `gh-pages` branch:
 
-<img src="http://i.imgur.com/HUjEr9l.png" width="500" alt="gh-pages branch setting">
+<img src="https://i.imgur.com/HUjEr9l.png" width="500" alt="gh-pages branch setting">
 
 #### Step 5: Optionally, configure the domain
 
@@ -2268,14 +2268,14 @@ You can configure a custom domain with GitHub Pages by adding a `CNAME` file to
 Your CNAME file should look like this:
 
 ```
-mywebsite.com
+example.com
 ```
 
 #### Notes on client-side routing
 
-GitHub Pages doesn’t support routers that use the HTML5 `pushState` history API under the hood (for example, React Router using `browserHistory`). This is because when there is a fresh page load for a url like `http://user.github.io/todomvc/todos/42`, where `/todos/42` is a frontend route, the GitHub Pages server returns 404 because it knows nothing of `/todos/42`. If you want to add a router to a project hosted on GitHub Pages, here are a couple of solutions:
+GitHub Pages doesn’t support routers that use the HTML5 `pushState` history API under the hood (for example, React Router using `browserHistory`). This is because when there is a fresh page load for a url like `https://user.github.io/todomvc/todos/42`, where `/todos/42` is a frontend route, the GitHub Pages server returns 404 because it knows nothing of `/todos/42`. If you want to add a router to a project hosted on GitHub Pages, here are a couple of solutions:
 
-- You could switch from using HTML5 history API to routing with hashes. If you use React Router, you can switch to `hashHistory` for this effect, but the URL will be longer and more verbose (for example, `http://user.github.io/todomvc/#/todos/42?_k=yknaj`). [Read more](https://reacttraining.com/react-router/web/api/Router) about different history implementations in React Router.
+- You could switch from using HTML5 history API to routing with hashes. If you use React Router, you can switch to `hashHistory` for this effect, but the URL will be longer and more verbose (for example, `https://user.github.io/todomvc/#/todos/42?_k=yknaj`). [Read more](https://reacttraining.com/react-router/web/api/Router) about different history implementations in React Router.
 - Alternatively, you can use a trick to teach GitHub Pages to handle 404 by redirecting to your `index.html` page with a special redirect parameter. You would need to add a `404.html` file with the redirection code to the `build` folder before deploying your project, and you’ll need to add code handling the redirect parameter to `index.html`. You can find a detailed explanation of this technique [in this guide](https://github.com/rafrex/spa-github-pages).
 
 #### Troubleshooting
@@ -2317,7 +2317,7 @@ MyDirectory in /tmp/build_1234/src
 
 It means you need to ensure that the lettercase of the file or directory you `import` matches the one you see on your filesystem or on GitHub.
 
-This is important because Linux (the operating system used by Heroku) is case sensitive. So `MyDirectory` and `mydirectory` are two distinct directories and thus, even though the project builds locally, the difference in case breaks the `import` statements on Heroku remotes.
+This is important because Linux (the operating system used by Heroku) is case-sensitive. So `MyDirectory` and `mydirectory` are two distinct directories and thus, even though the project builds locally, the difference in case breaks the `import` statements on Heroku remotes.
 
 ##### "Could not find a required file."
 
@@ -2442,7 +2442,7 @@ We recommend deleting `node_modules` in your project and running `npm install` (
 - [facebook/watchman#358](https://github.com/facebook/watchman/issues/358)
 - [ember-cli/ember-cli#6259](https://github.com/ember-cli/ember-cli/issues/6259)
 
-It is reported that installing Watchman 4.7.0 or newer fixes the issue. If you use [Homebrew](http://brew.sh/), you can run these commands to update it:
+It is reported that installing Watchman 4.7.0 or newer fixes the issue. If you use [Homebrew](https://brew.sh/), you can run these commands to update it:
 
 ```
 watchman shutdown-server
@@ -2466,7 +2466,7 @@ If you are completely sure that you didn't terminate the process, consider [addi
 
 ### `npm run build` fails on Heroku
 
-This may be a problem with case sensitive filenames.
+This may be a problem with case-sensitive filenames.
 Please refer to [this section](#resolving-heroku-deployment-errors).
 
 ### Moment.js locales are missing
diff --git a/demo/reactjs/src/index.js b/demo/reactjs/src/index.js
index 1f5d14958..bd201f007 100644
--- a/demo/reactjs/src/index.js
+++ b/demo/reactjs/src/index.js
@@ -9,5 +9,5 @@ ReactDOM.render(<App />, document.getElementById('root'));
 
 // If you want your app to work offline and load faster, you can change
 // unregister() to register() below. Note this comes with some pitfalls.
-// Learn more about service workers: http://bit.ly/CRA-PWA
+// Learn more about service workers: https://bit.ly/CRA-PWA
 serviceWorker.unregister();
diff --git a/docs/_config.yml b/docs/_config.yml
index ef5b4ff2f..0b9899271 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -1,6 +1,6 @@
 title: LiquidJS
 subtitle: "A simple, expressive and safe template engine."
-description: "LiquidJS is a simple, expressive and safe Shopify / Github Pages compatible template engine in pure JavaScript."
+description: "LiquidJS is a simple, expressive and safe Shopify / GitHub Pages compatible template engine in pure JavaScript."
 author: Harttle
 language:
   - en
diff --git a/docs/source/_data/sidebar.yml b/docs/source/_data/sidebar.yml
index 5dfb9a1f9..4063e44b3 100644
--- a/docs/source/_data/sidebar.yml
+++ b/docs/source/_data/sidebar.yml
@@ -9,7 +9,7 @@ tutorials:
   advanced:
     caching: caching.html
     escaping: escaping.html
-    registeration: register-filters-tags.html
+    registration: register-filters-tags.html
     access_scope_in_filters: access-scope-in-filters.html
     parse_parameters: parse-parameters.html
     render_tag_content: render-tag-content.html
diff --git a/docs/source/filters/date.md b/docs/source/filters/date.md
index 6e1a0516f..24e66e17a 100644
--- a/docs/source/filters/date.md
+++ b/docs/source/filters/date.md
@@ -5,7 +5,7 @@ title: date
 
 Date filter is used to convert a timestamp into the specified format.
 
-* LiquidJS tries to conform to Shopify/Liquid, which uses Ruby's core [Time#strftime(string)](http://www.ruby-doc.org/core/Time.html#method-i-strftime). There're differences with [Ruby's format flags](https://ruby-doc.org/core/strftime_formatting_rdoc.html):
+* LiquidJS tries to conform to Shopify/Liquid, which uses Ruby's core [Time#strftime(string)](https://www.ruby-doc.org/core/Time.html#method-i-strftime). There're differences with [Ruby's format flags](https://ruby-doc.org/core/strftime_formatting_rdoc.html):
   * `%Z` (since v10.11.1) works when there's a passed-in timezone name from `LiquidOption` or in-place value (see TimeZone below). If passed-in timezone is an offset number instead of string, it'll behave like `%z`. If there's none passed-in timezone, it returns [the runtime's default time zone](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions#timezone).
   * LiquidJS provides an additional `%q` flag for date ordinals. e.g. `{{ '2023/02/02' | date: '%d%q of %b'}}` => `02nd of Feb`
 * Date literals are firstly converted to `Date` object via [new Date()][jsDate], that means literal values are considered in runtime's time zone by default.
diff --git a/docs/source/filters/overview.md b/docs/source/filters/overview.md
index b32b4c802..f7aee5af7 100644
--- a/docs/source/filters/overview.md
+++ b/docs/source/filters/overview.md
@@ -3,7 +3,7 @@ title: Filters
 description: Description and demo for each Liquid filter
 ---
 
-LiquidJS implements business-logic independent filters that are typically implemented in [shopify/liquid][shopify/liquid]. This section contains the specification and demoes for all the filters implemented by LiquidJS.
+LiquidJS implements business-logic independent filters that are typically implemented in [shopify/liquid][shopify/liquid]. This section contains the specification and demos for all the filters implemented by LiquidJS.
 
 There's 40+ filters supported by LiquidJS. These filters can be categorized into these groups:
 
diff --git a/docs/source/filters/uri_escape.md b/docs/source/filters/uri_escape.md
index dbfd79a21..6e96c8f85 100644
--- a/docs/source/filters/uri_escape.md
+++ b/docs/source/filters/uri_escape.md
@@ -8,12 +8,12 @@ Percent encodes any special characters in a URI. URI escape normally replaces a
 
 Input
 ```liquid
-{{ "http://foo.com/?q=foo, \bar?" | uri_escape }}
+{{ "https://example.com/?q=foo, \bar?" | uri_escape }}
 ```
 
 Output
 ```text
-http://foo.com/?q=foo,%20%5Cbar?
+https://example.com/?q=foo,%20%5Cbar?
 ```
 
 [reserved]: https://en.wikipedia.org/wiki/Percent-encoding#Types_of_URI_characters
diff --git a/docs/source/filters/where.md b/docs/source/filters/where.md
index 2054fac19..dbf75134c 100644
--- a/docs/source/filters/where.md
+++ b/docs/source/filters/where.md
@@ -97,7 +97,7 @@ Input
 {% endfor %}
 ```
 
-Ouput
+Output
 ```text
 - 2
 - 3
diff --git a/docs/source/index.pug b/docs/source/index.pug
index 776669900..f05ee1d7e 100644
--- a/docs/source/index.pug
+++ b/docs/source/index.pug
@@ -1,5 +1,5 @@
 layout: index
-description: LiquidJS is a simple, expressive and safe Shopify / Github Pages compatible template engine in pure JavaScript.
+description: LiquidJS is a simple, expressive and safe Shopify / GitHub Pages compatible template engine in pure JavaScript.
 subtitle: A simple, expressive and safe template engine.
 ---
 ul#intro-feature-list
@@ -20,7 +20,7 @@ ul#intro-feature-list
       .intro-feature-icon
         i.icon-shopify
       h3.intro-feature-title Shopify Compatible
-      p.intro-feature-desc All filters and tags from Ruby #[a(href="https://github.com/shopify/liquid") shopify/liquid] are supported by LiquidJS. #[a(href="https://jekyllrb.com/") Jekyll sites], #[a(href="https://pages.github.com/") Github Pages] and #[a(href="https://themes.shopify.com/") Shopify templates] can be ported to Node.js without pain.
+      p.intro-feature-desc All filters and tags from Ruby #[a(href="https://github.com/shopify/liquid") shopify/liquid] are supported by LiquidJS. #[a(href="https://jekyllrb.com/") Jekyll sites], #[a(href="https://pages.github.com/") GitHub Pages] and #[a(href="https://themes.shopify.com/") Shopify templates] can be ported to Node.js without pain.
   li.intro-feature-wrap
     .intro-feature
       .intro-feature-icon
diff --git a/docs/source/manifest.json b/docs/source/manifest.json
index 1e0cf27bc..7bc095124 100644
--- a/docs/source/manifest.json
+++ b/docs/source/manifest.json
@@ -1,7 +1,7 @@
 {
   "short_name": "LiquidJS",
   "name": "LiquidJS",
-  "description": "A simple, expressive and safe Shopify / Github Pages compatible template engine in pure JavaScript.",
+  "description": "A simple, expressive and safe Shopify / GitHub Pages compatible template engine in pure JavaScript.",
   "icons": [
     {
       "src": "/icon/apple-touch-icon-57x57.png",
diff --git a/docs/source/tags/case.md b/docs/source/tags/case.md
index e4d6b33c5..e5e662222 100644
--- a/docs/source/tags/case.md
+++ b/docs/source/tags/case.md
@@ -15,7 +15,7 @@ Input
   {% when "cookie", "biscuit" %}
      This is a cookie
   {% else %}
-     This is not a cake nor a cookie
+     This is neither a cake nor a cookie
 {% endcase %}
 ```
 
diff --git a/docs/source/tags/overview.md b/docs/source/tags/overview.md
index fea60f491..e57c2d52f 100644
--- a/docs/source/tags/overview.md
+++ b/docs/source/tags/overview.md
@@ -3,7 +3,7 @@ title: Tags
 description: Description and demo for each Liquid tag
 ---
 
-LiquidJS implements business-logic independent tags that are typically implemented in [shopify/liquid][shopify/liquid]. This section contains the specification and demoes for all the tags implemented by LiquidJS.
+LiquidJS implements business-logic independent tags that are typically implemented in [shopify/liquid][shopify/liquid]. This section contains the specification and demos for all the tags implemented by LiquidJS.
 
 There're a dozen of tags supported by LiquidJS, with all tags in [shopify/liquid][shopify/liquid]. These tags can be categorized into these groups:
 
diff --git a/docs/source/tutorials/access-scope-in-filters.md b/docs/source/tutorials/access-scope-in-filters.md
index fa95c5491..b38f2db50 100644
--- a/docs/source/tutorials/access-scope-in-filters.md
+++ b/docs/source/tutorials/access-scope-in-filters.md
@@ -23,7 +23,7 @@ engine.registerFilter('fullURL', function (path) {
 })
 ```
 
-See this JSFiddle: <http://jsfiddle.net/ctj364up/1/>
+See this JSFiddle: <https://jsfiddle.net/ctj364up/1/>
 
 {% note warn Arrow Functions %}
 <code>this</code> in arrow functions is bound to current JavaScript context, you'll need to use <code>function(){}</code> instead of <code>()=>{}</code> syntax to access <code>this.context</code> correctly.
diff --git a/docs/source/tutorials/caching.md b/docs/source/tutorials/caching.md
index 4f5870695..810103381 100644
--- a/docs/source/tutorials/caching.md
+++ b/docs/source/tutorials/caching.md
@@ -6,7 +6,7 @@ In a typical website project, we'll have a directory of view templates and they'
 
 LiquidJS provides multiple ways to cache the parsed templates to improve performance.
 
-## Programmaticly
+## Programmatically
 
 The [.parse()][parse], [.parseFile()][parseFile], [.parseFileSync()][parseFileSync] APIs are used to parse templates from string or files. The result template can be then rendered multiple times with different context.
 
@@ -28,7 +28,7 @@ engine.renderSync(tpl, {name: 'alice'}) // 'Alice'
 engine.renderSync(tpl, {name: 'bob'}) // 'Bob'
 ```
 
-The template string/file is parsed only once and renderd multiple times using different context. Templates for different files can be stored into a `Map` and can be retrieved directly for subsequent renders.
+The template string/file is parsed only once and rendered multiple times using different context. Templates for different files can be stored into a `Map` and can be retrieved directly for subsequent renders.
 
 ## The `cache` Option
 
diff --git a/docs/source/tutorials/contribution-guidelines.md b/docs/source/tutorials/contribution-guidelines.md
index 4d8e5a035..a03c14376 100644
--- a/docs/source/tutorials/contribution-guidelines.md
+++ b/docs/source/tutorials/contribution-guidelines.md
@@ -20,11 +20,11 @@ Getting started and building is described in [CONTRIBUTING.md](https://github.co
 
 ## Financial Support
 
-LiquidJS is Open Source and Free. To help it live and thrive, especially when LiquidJS is benefiting your business, please consider contribute on [Github Sponsors](https://github.com/sponsors/harttle) or [Open Collective][oc]. If I'm missing anything, find me via Twitter (harttleharttle) or email (harttleharttle at gmail), to add you into [the contributors table](https://github.com/harttle/liquidjs#contributors-).
+LiquidJS is Open Source and Free. To help it live and thrive, especially when LiquidJS is benefiting your business, please consider contribute on [GitHub Sponsors](https://github.com/sponsors/harttle) or [Open Collective][oc]. If I'm missing anything, find me via Twitter (harttleharttle) or email (harttleharttle at gmail), to add you into [the contributors table](https://github.com/harttle/liquidjs#contributors-).
 
 [oc]: https://opencollective.com/liquidjs/contribute/backer-10665/checkout
 [shopify/liquid]: https://shopify.github.io/liquid/
-[caniuse-promises]: http://caniuse.com/#feat=promises
+[caniuse-promises]: https://caniuse.com/#feat=promises
 [pp]: https://github.com/taylorhakes/promise-polyfill
 [tutorial]: https://shopify.github.io/liquid/basics/introduction/
 [liquidjs]: https://github.com/harttle/liquidjs
diff --git a/docs/source/tutorials/differences.md b/docs/source/tutorials/differences.md
index e6bb6cfcb..fef364d2a 100644
--- a/docs/source/tutorials/differences.md
+++ b/docs/source/tutorials/differences.md
@@ -4,7 +4,7 @@ title: Differences with Shopify/liquid
 
 ## Compatibility
 
-Being compatible with the Ruby version is one of our priorities. Liquid language is originally [implemented in Ruby][ruby-liquid] and used by Shopify and Jekyll (and thus Github Pages). As you can see it's one of the most popular template engines in Ruby. There're lots of people using LiquidJS to serve their templates originally written for Shopify themes and Jekyll sites.
+Being compatible with the Ruby version is one of our priorities. Liquid language is originally [implemented in Ruby][ruby-liquid] and used by Shopify and Jekyll (and thus GitHub Pages). As you can see it's one of the most popular template engines in Ruby. There're lots of people using LiquidJS to serve their templates originally written for Shopify themes and Jekyll sites.
 
 So "being compatible" means serving developers from Shopify and Jekyll well:
 
diff --git a/docs/source/tutorials/drops.md b/docs/source/tutorials/drops.md
index 5915525ce..f2ee46da3 100644
--- a/docs/source/tutorials/drops.md
+++ b/docs/source/tutorials/drops.md
@@ -189,7 +189,7 @@ For arrays and strings, LiquidJS checks their `.length` property. For objects, L
 `nil` Drop is used to check whether a variable is not defined or defined as `null` or `undefined`, essentially equivalent to JavaScript `== null` check.
 
 ```liquid
-{% if notexist == nil %}
+{% if nonexistent == nil %}
     null variable
 {% endif %}
 ```
diff --git a/docs/source/tutorials/intro-to-liquid.md b/docs/source/tutorials/intro-to-liquid.md
index fe65508f6..d5baee03c 100644
--- a/docs/source/tutorials/intro-to-liquid.md
+++ b/docs/source/tutorials/intro-to-liquid.md
@@ -3,7 +3,7 @@ title: The Liquid Template Language
 describe: A short introduction to the Liquid template language and some simple demos.
 ---
 
-LiquidJS is a simple, expressive and safe [Shopify][shopify/liquid] / Github Pages compatible template engine in pure JavaScript. The purpose of this repo is to provide a standard Liquid implementation for the JavaScript community. Liquid is originally implemented in Ruby and used by Github Pages, Jekyll and Shopify, see [Differences with Shopify/liquid][diff].
+LiquidJS is a simple, expressive and safe [Shopify][shopify/liquid] / GitHub Pages compatible template engine in pure JavaScript. The purpose of this repo is to provide a standard Liquid implementation for the JavaScript community. Liquid is originally implemented in Ruby and used by GitHub Pages, Jekyll and Shopify, see [Differences with Shopify/liquid][diff].
 
 LiquidJS syntax is relatively simple. There're 2 types of markups in LiquidJS:
 
diff --git a/docs/source/tutorials/migrate-to-9.md b/docs/source/tutorials/migrate-to-9.md
index e4e55f1fc..720f345a5 100644
--- a/docs/source/tutorials/migrate-to-9.md
+++ b/docs/source/tutorials/migrate-to-9.md
@@ -26,4 +26,4 @@ LiquidJS 9 has some fundamental improvements, including bugfixes, new features a
 
 * LiquidJS no longer has a default export, use `import {Liquid} from 'liquidjs'` instead. The `window.Liquid` for the UMD bundle is also changed to `window.liquidjs.Liquid`;
 * The duplicate static method `Liquid.evalValue` is removed, use the instance method `liquid.evalValue` instead;
-* Shipped to Node.js 8, the CJS bundle (main entry in Node.js) nolonger supports Node.js &leq; 6. ESM (dist/liquid.node.esm.js) and UMD (dist/liquid.browser.umd.js, dist/liquid.browser.min.js) bundles are not affected.
\ No newline at end of file
+* Shipped to Node.js 8, the CJS bundle (main entry in Node.js) no longer supports Node.js &leq; 6. ESM (dist/liquid.node.esm.js) and UMD (dist/liquid.browser.umd.js, dist/liquid.browser.min.js) bundles are not affected.
\ No newline at end of file
diff --git a/docs/source/tutorials/options.md b/docs/source/tutorials/options.md
index db4124c93..598ae66d8 100644
--- a/docs/source/tutorials/options.md
+++ b/docs/source/tutorials/options.md
@@ -98,7 +98,7 @@ Before 2.0.1, <code>extname</code> is set to `.liquid` by default. To change tha
 
 ## jsTruthy
 
-**jsTruthy** is used to use standard Javascript truthiness rather than the Shopify.
+**jsTruthy** is used to use standard JavaScript truthiness rather than the Shopify.
 
 it defaults to false.  For example, when set to true, a blank string would evaluate to false with jsTruthy. With Shopify's truthiness, a blank string is true.
 
@@ -140,8 +140,8 @@ it defaults to false.  For example, when set to true, a blank string would evalu
 
 **ownPropertyOnly** hides scope variables from prototypes, useful when you're passing a not sanitized object into LiquidJS or need to hide prototypes from templates. Defaults to `true`.
 
-{% note info Non-existent Tags %}
-Non-existent tags always throw errors during parsing and this behavior can not be customized.
+{% note info Nonexistent Tags %}
+Nonexistent tags always throw errors during parsing and this behavior cannot be customized.
 {% endnote %}
 
 ## Parameter Order
diff --git a/docs/source/tutorials/parse-parameters.md b/docs/source/tutorials/parse-parameters.md
index f6278ae4e..1d3e3e069 100644
--- a/docs/source/tutorials/parse-parameters.md
+++ b/docs/source/tutorials/parse-parameters.md
@@ -23,7 +23,7 @@ engine.registerTag('random', {
 })
 ```
 
-Here's a JSFiddle version: <http://jsfiddle.net/ctj364up/2/>
+Here's a JSFiddle version: <https://jsfiddle.net/ctj364up/2/>
 
 ## Parse Parameters as Values
 
@@ -58,7 +58,7 @@ engine.registerTag('random', {
 })
 ```
 
-Calling this tag in scope `{ bar: "bar", obj: { coo: "coo" } }` yields exactly the same result as the first example. See this JSFiddle: <http://jsfiddle.net/ctj364up/3/>
+Calling this tag in scope `{ bar: "bar", obj: { coo: "coo" } }` yields exactly the same result as the first example. See this JSFiddle: <https://jsfiddle.net/ctj364up/3/>
 
 {% note info Async and Promises %}
 Async calls in LiquidJS are implemented by generators directly, for we can call generators in synchronous manner so this tag implementation is also valid for `renderSync()`, `parseAndRenderSync()`, `renderFileSync()`. If you need to await a promise in tag implementation, simply replace `await somePromise` with `yield somePromise` and keep `* render()` instead of `async render()` will do the trick. See <a href="/tutorials/sync-and-async.html">Sync and Async</a> for more details.
@@ -92,7 +92,7 @@ engine.registerTag('random', {
 })
 ```
 
-Rendering `{% random from:2, to:max %}` in scope `{ max: 10 }` will generate a random number in the range [2, 10]. See this JSFiddle: <http://jsfiddle.net/ctj364up/4/>
+Rendering `{% random from:2, to:max %}` in scope `{ max: 10 }` will generate a random number in the range [2, 10]. See this JSFiddle: <https://jsfiddle.net/ctj364up/4/>
 
 
 [register-tags]: /tutorials/register-filters-tags.html
diff --git a/docs/source/tutorials/render-file.md b/docs/source/tutorials/render-file.md
index ca52ec0b0..f7885607b 100644
--- a/docs/source/tutorials/render-file.md
+++ b/docs/source/tutorials/render-file.md
@@ -52,18 +52,18 @@ var engine = new Liquid({
 
 {% note tip Relative Paths %}Relative paths in <code>root</code> will be resolved against <code>cwd()</code>.{% endnote %}
 
-When `{% raw %}{% render "foo" %}{% endraw %}` is renderd or `liquid.renderFile('foo')` is called, the following files will be looked up and the first existing file will be used:
+When `{% raw %}{% render "foo" %}{% endraw %}` is rendered or `liquid.renderFile('foo')` is called, the following files will be looked up and the first existing file will be used:
 
 - `cwd()`/views/foo.liquid
 - `cwd()`/views/partials/foo.liquid
 
-If none of the above files exists, an `ENOENT` error will be throwed. Here's a demo for Node.js: [demo/nodejs](https://github.com/harttle/liquidjs/tree/master/demo/nodejs).
+If none of the above files exists, an `ENOENT` error will be thrown. Here's a demo for Node.js: [demo/nodejs](https://github.com/harttle/liquidjs/tree/master/demo/nodejs).
 
 When LiquidJS is used in browser, say current location is <https://example.com/bar/index.html>, only the first `root` will be used and the file to be fetched is:
 
 - <https://example.com/bar/foo.liquid>
 
-If fetch fails, a 404/500 error or network failures for example, an `ENOENT` error will be throwed.
+If fetch fails, a 404/500 error or network failures for example, an `ENOENT` error will be thrown.
 Here's a demo for browsers: [demo/browser](https://github.com/harttle/liquidjs/tree/master/demo/browser).
 
 ## Abstract File System
diff --git a/docs/source/tutorials/render-tag-content.md b/docs/source/tutorials/render-tag-content.md
index 3c8eb0ec9..cae51a73f 100644
--- a/docs/source/tutorials/render-tag-content.md
+++ b/docs/source/tutorials/render-tag-content.md
@@ -57,7 +57,7 @@ engine.registerTag('wrap', {
 })
 ```
 
-`.renderTemplates()` can be async, we need `yield` to wait it complete. More details on async in LiquidJS, please refer to [Sync and Async][async]. Other parts of `render()` method is quite straightforward. Here's a JSFiddle version: <http://jsfiddle.net/por0zcn1/3/>
+`.renderTemplates()` can be async, we need `yield` to wait it complete. More details on async in LiquidJS, please refer to [Sync and Async][async]. Other parts of `render()` method is quite straightforward. Here's a JSFiddle version: <https://jsfiddle.net/por0zcn1/3/>
 
 ## Using ParseStream
 
@@ -75,7 +75,7 @@ parse(tagToken, remainTokens) {
 }
 ```
 
-Here's a JSFiddle version: <http://jsfiddle.net/por0zcn1/4/>. For simplicity, the following examples are implemented using `ParseStream`.
+Here's a JSFiddle version: <https://jsfiddle.net/por0zcn1/4/>. For simplicity, the following examples are implemented using `ParseStream`.
 
 ## Manipulate the Context
 
@@ -123,7 +123,7 @@ engine.registerTag('repeat', {
 })
 ```
 
-The `parse()` is exactly the same as `wrap` tag, we repeat the content simply by calling `.renderTemplates(this.tpls)` twice during `render()`. Here's the JSFiddle: <http://jsfiddle.net/por0zcn1/2/>
+The `parse()` is exactly the same as `wrap` tag, we repeat the content simply by calling `.renderTemplates(this.tpls)` twice during `render()`. Here's the JSFiddle: <https://jsfiddle.net/por0zcn1/2/>
 
 {% note warn Use Push & Pop in Pairs %}
 `context.push()` and `context.pop()` have to be used in pairs. Failing to `pop()` the *Scope* you pushed will leak the *Scope* to latter templates and may corrupt the *Context* stack.
diff --git a/docs/source/tutorials/setup.md b/docs/source/tutorials/setup.md
index d92a9b3cc..8a740c495 100644
--- a/docs/source/tutorials/setup.md
+++ b/docs/source/tutorials/setup.md
@@ -49,7 +49,7 @@ Pre-built UMD bundles are also available:
 
 {% note info Working Demo %} Here's a living demo on jsFiddle: <a href="https://jsfiddle.net/pd4jhzLs/1/" target="_blank">jsfiddle.net/pd4jhzLs/1/</a>, and the source code is also available in <a href="https://github.com/harttle/liquidjs/blob/master/demo/browser/" target="_blank">liquidjs/demo/browser/</a>.{% endnote %}
 
-{% note warn Compatibility %} You may need a <a href="https://github.com/taylorhakes/promise-polyfill" target="_blank">Promise polyfill</a> for legacy browsers like IE and Android UC, see <a href="http://caniuse.com/#feat=promises" target="_blank">caniuse statistics</a>. {% endnote %}
+{% note warn Compatibility %} You may need a <a href="https://github.com/taylorhakes/promise-polyfill" target="_blank">Promise polyfill</a> for legacy browsers like IE and Android UC, see <a href="https://caniuse.com/#feat=promises" target="_blank">caniuse statistics</a>. {% endnote %}
 
 ## LiquidJS in CLI
 
diff --git a/docs/source/tutorials/use-in-expressjs.md b/docs/source/tutorials/use-in-expressjs.md
index f7d1741ca..31934db12 100644
--- a/docs/source/tutorials/use-in-expressjs.md
+++ b/docs/source/tutorials/use-in-expressjs.md
@@ -60,7 +60,7 @@ var engine = new Liquid({
 ```
 
 [cache]: /api/interfaces/LiquidOptions.html#cache
-[express-views]: http://expressjs.com/en/guide/using-template-engines.html
+[express-views]: https://expressjs.com/en/guide/using-template-engines.html
 [parseFile]: /api/classes/Liquid.html#parseFile
 [parseFileSync]: /api/classes/Liquid.html#parseFileSync
 [layout]: https://help.shopify.com/en/themes/liquid/tags/theme-tags#layout
diff --git a/docs/source/zh-cn/filters/uri_escape.md b/docs/source/zh-cn/filters/uri_escape.md
index 0caec0c70..31c2c1fb5 100644
--- a/docs/source/zh-cn/filters/uri_escape.md
+++ b/docs/source/zh-cn/filters/uri_escape.md
@@ -8,12 +8,12 @@ title: uri_escape
 
 输入
 ```liquid
-{{ "http://foo.com/?q=foo, \bar?" | uri_escape }}
+{{ "https://example.com/?q=foo, \bar?" | uri_escape }}
 ```
 
 输出
 ```text
-http://foo.com/?q=foo,%20%5Cbar?
+https://example.com/?q=foo,%20%5Cbar?
 ```
 
 [reserved]: https://en.wikipedia.org/wiki/Percent-encoding#Types_of_URI_characters
diff --git a/docs/source/zh-cn/tags/case.md b/docs/source/zh-cn/tags/case.md
index 1f4e0c08b..dba539c13 100644
--- a/docs/source/zh-cn/tags/case.md
+++ b/docs/source/zh-cn/tags/case.md
@@ -15,7 +15,7 @@ title: case
   {% when "cookie", "biscuit" %}
      This is a cookie
   {% else %}
-     This is not a cake nor a cookie
+     This is neither a cake nor a cookie
 {% endcase %}
 ```
 
diff --git a/docs/themes/navy/languages/en.yml b/docs/themes/navy/languages/en.yml
index 1718428eb..d47b787f5 100644
--- a/docs/themes/navy/languages/en.yml
+++ b/docs/themes/navy/languages/en.yml
@@ -10,7 +10,7 @@ index:
   get_started: Get Started
   contributors:
     title: Contributors
-    description: 'LiquidJS follows the <a href="https://github.com/all-contributors/all-contributors">all-contributors</a> specification, see <a href="tutorials/contribution-guidelines.html">guildelines here</a>! Thanks goes to these wonderful people:'
+    description: 'LiquidJS follows the <a href="https://github.com/all-contributors/all-contributors">all-contributors</a> specification, see <a href="tutorials/contribution-guidelines.html">guidelines here</a>! Thanks goes to these wonderful people:'
   sponsors:
     title: Sponsors
     description: 'If you personally love LiquidJS or it&#39;s benefiting your business, please <a href="https://github.com/sponsors/harttle">sponsor us</a>!'
@@ -41,7 +41,7 @@ sidebar:
     advanced: Advanced
     caching: Caching
     escaping: Escaping
-    registeration: Register Filters/Tags
+    registration: Register Filters/Tags
     access_scope_in_filters: Access Scope in Filters
     parse_parameters: Parse Parameters
     render_tag_content: Render Tag Content
@@ -67,4 +67,4 @@ sidebar:
     enums: Enums
     interfaces: Interfaces
 footer:
-  license: 'Documentation licensed under <a href="http://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a>.'
\ No newline at end of file
+  license: 'Documentation licensed under <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a>.'
\ No newline at end of file
diff --git a/docs/themes/navy/languages/zh-cn.yml b/docs/themes/navy/languages/zh-cn.yml
index 82dfc0a59..c8281e00c 100644
--- a/docs/themes/navy/languages/zh-cn.yml
+++ b/docs/themes/navy/languages/zh-cn.yml
@@ -41,7 +41,7 @@ sidebar:
     advanced: 高级主题
     caching: 缓存
     escaping: 转义
-    registeration: 注册标签/过滤器
+    registration: 注册标签/过滤器
     access_scope_in_filters: 过滤器里访问上下文
     parse_parameters: 参数解析
     render_tag_content: 渲染标签内容
diff --git a/docs/themes/navy/layout/page.swig b/docs/themes/navy/layout/page.swig
index 669a740bc..874dfb8a4 100644
--- a/docs/themes/navy/layout/page.swig
+++ b/docs/themes/navy/layout/page.swig
@@ -2,7 +2,7 @@
   <div id="content" class="wrapper">
     <div id="content-inner">
       {{ partial('partial/sidebar') }}
-      <article class="article-container" itemscope itemtype="http://schema.org/Article">
+      <article class="article-container" itemscope itemtype="https://schema.org/Article">
         <div class="article-inner">
           <div class="article">
             <div class="inner">
diff --git a/docs/themes/navy/layout/partial/demo.liquid b/docs/themes/navy/layout/partial/demo.liquid
index d4d0da9d4..21739b90f 100644
--- a/docs/themes/navy/layout/partial/demo.liquid
+++ b/docs/themes/navy/layout/partial/demo.liquid
@@ -3,7 +3,7 @@
 <ul>
 {%- for person in people %}
   <li>
-    <a href="{{person | prepend: "http://example.com/"}}">
+    <a href="{{person | prepend: "https://example.com/"}}">
       {{ person | capitalize }}
     </a>
   </li>
diff --git a/docs/themes/navy/layout/partial/head.swig b/docs/themes/navy/layout/partial/head.swig
index d060d7d29..106eafb8a 100644
--- a/docs/themes/navy/layout/partial/head.swig
+++ b/docs/themes/navy/layout/partial/head.swig
@@ -1,4 +1,4 @@
-<head prefix="og: http://ogp.me/ns#">
+<head prefix="og: https://ogp.me/ns#">
   <meta charset="utf-8">
   <title>{% if page.title %}{{ page.title }} | {% endif %}{{ config.title }}</title>
   <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
diff --git a/docs/themes/navy/layout/partial/header.swig b/docs/themes/navy/layout/partial/header.swig
index 9eacc455c..0dfcdda71 100644
--- a/docs/themes/navy/layout/partial/header.swig
+++ b/docs/themes/navy/layout/partial/header.swig
@@ -18,7 +18,7 @@
         {% endfor %}
       </select>
     </div>
-    <a href="https://github.com/{{ config.github }}" class="main-nav-link icon-nav-link"><i class="icon-github"></i> <span class="icon-nav-title">Github</span></a>
+    <a href="https://github.com/{{ config.github }}" class="main-nav-link icon-nav-link"><i class="icon-github"></i> <span class="icon-nav-title">GitHub</span></a>
     <a id="mobile-nav-toggle">
       <span class="mobile-nav-toggle-bar"></span>
       <span class="mobile-nav-toggle-bar"></span>
diff --git a/docs/themes/navy/layout/partial/share.swig b/docs/themes/navy/layout/partial/share.swig
index 2b3c902ef..bdc730bb3 100644
--- a/docs/themes/navy/layout/partial/share.swig
+++ b/docs/themes/navy/layout/partial/share.swig
@@ -3,7 +3,7 @@
 <!-- NPM Download -->
 <a href="https://www.npmjs.com/package/liquidjs" target="_blank"><img src ="https://img.shields.io/npm/dm/liquidjs?logo=npm&style=flat-square" alt="NPM Downloads"></a>
 <!-- Contributors button -->
-<a href="https://github.com/harttle/liquidjs/graphs/contributors" target="_blank"><img src="https://img.shields.io/github/contributors/harttle/liquidjs.svg?style=flat-square" alt="Contributors of LiquidJS on Github"></a>
+<a href="https://github.com/harttle/liquidjs/graphs/contributors" target="_blank"><img src="https://img.shields.io/github/contributors/harttle/liquidjs.svg?style=flat-square" alt="Contributors of LiquidJS on GitHub"></a>
 <!-- Open Collective button -->
 <a href="https://opencollective.com/liquidjs/" target="_blank"><img src="https://img.shields.io/opencollective/all/liquidjs?style=flat-square" alt="Donate to LiquidJS on Open Collective"></a>
 <!-- License button -->
diff --git a/docs/themes/navy/source/css/_variables.styl b/docs/themes/navy/source/css/_variables.styl
index 65fa9728d..1cf1e1e94 100644
--- a/docs/themes/navy/source/css/_variables.styl
+++ b/docs/themes/navy/source/css/_variables.styl
@@ -22,7 +22,7 @@ vendor-prefixes = webkit moz ms official
         --color-default-invert: #444
         --color-gray: invert(#999)
         --color-border: #6a6a6a
-        --color-backgrond: #fff
+        --color-background: #fff
         --color-navy: hsl(210, 25%, 12%)
         --color-news-bg: darken(hsl(210, 25%, 12%), 5%)
         --color-navy-lighter: lighten(hsl(210, 25%, 12%), 7%)
diff --git a/src/liquid-options.ts b/src/liquid-options.ts
index 89223bbf9..e7841254c 100644
--- a/src/liquid-options.ts
+++ b/src/liquid-options.ts
@@ -24,7 +24,7 @@ export interface LiquidOptions {
   extname?: string;
   /** Whether or not to cache resolved templates. Defaults to `false`. */
   cache?: boolean | number | LiquidCache;
-  /** Use Javascript Truthiness. Defaults to `false`. */
+  /** Use JavaScript Truthiness. Defaults to `false`. */
   jsTruthy?: boolean;
   /** If set, treat the `filepath` parameter in `{%include filepath %}` and `{%layout filepath%}` as a variable, otherwise as a literal value. Defaults to `true`. */
   dynamicPartials?: boolean;
@@ -58,7 +58,7 @@ export interface LiquidOptions {
   outputDelimiterRight?: string;
   /** Whether input strings to date filter preserve the given timezone **/
   preserveTimezones?: boolean;
-  /** Whether `trim*Left`/`trim*Right` is greedy. When set to `true`, all consecutive blank characters including `\n` will be trimed regardless of line breaks. Defaults to `true`. */
+  /** Whether `trim*Left`/`trim*Right` is greedy. When set to `true`, all consecutive blank characters including `\n` will be trimmed regardless of line breaks. Defaults to `true`. */
   greedy?: boolean;
   /** `fs` is used to override the default file-system module with a custom implementation. */
   fs?: FS;
diff --git a/src/parser/tokenizer.spec.ts b/src/parser/tokenizer.spec.ts
index c1dc11828..c8d4f6311 100644
--- a/src/parser/tokenizer.spec.ts
+++ b/src/parser/tokenizer.spec.ts
@@ -69,7 +69,7 @@ describe('Tokenizer', function () {
     expect(hash2!.name.content).toBe('foo')
     expect(hash2!.value!.getText()).toBe('a[ "bar"]')
   })
-  it('should read multiple hashs', () => {
+  it('should read multiple hashes', () => {
     const hashes = new Tokenizer(', limit: 3 reverse offset:off').readHashes()
     expect(hashes).toHaveLength(3)
     const [limit, reverse, offset] = hashes
@@ -503,7 +503,7 @@ describe('Tokenizer', function () {
     it('should match contains', () => {
       expect(new Tokenizer('contains').matchTrie(opTrie)).toBe(8)
     })
-    it('should match comparision', () => {
+    it('should match comparison', () => {
       expect(new Tokenizer('>').matchTrie(opTrie)).toBe(1)
       expect(new Tokenizer('>=').matchTrie(opTrie)).toBe(2)
       expect(new Tokenizer('<').matchTrie(opTrie)).toBe(1)
diff --git a/src/render/render.spec.ts b/src/render/render.spec.ts
index 429a3d7c1..bde327945 100644
--- a/src/render/render.spec.ts
+++ b/src/render/render.spec.ts
@@ -37,7 +37,7 @@ describe('render', function () {
         done()
       })
     })
-    it('should render to html stream asyncly', function (done) {
+    it('should render to html stream asynchronously', function (done) {
       const scope = new Context()
       class CustomTag extends Tag {
         render () {
diff --git a/src/util/async.spec.ts b/src/util/async.spec.ts
index 82e814ab9..98946fd69 100644
--- a/src/util/async.spec.ts
+++ b/src/util/async.spec.ts
@@ -40,7 +40,7 @@ describe('utils/async', () => {
       const result = await toPromise(foo())
       expect(result).toBe('foo')
     })
-    it('should reject Promise if dependency throws syncly', done => {
+    it('should reject Promise if dependency throws synchronously', done => {
       function * foo (): Generator<Generator<never>> {
         return yield bar()
       }
@@ -72,7 +72,7 @@ describe('utils/async', () => {
     })
   })
   describe('#toValueSync()', function () {
-    it('should throw Error if dependency throws syncly', () => {
+    it('should throw Error if dependency throws synchronously', () => {
       function * foo (): Generator<Generator<never>> {
         return yield bar()
       }
diff --git a/src/util/error.ts b/src/util/error.ts
index 697635929..139faaa48 100644
--- a/src/util/error.ts
+++ b/src/util/error.ts
@@ -3,7 +3,7 @@ import { Token } from '../tokens/token'
 import { Template } from '../template/template'
 
 /**
- * targeting ES5, extends Error won't create a proper prototype chain, need a trait to kee track of classes
+ * targeting ES5, extends Error won't create a proper prototype chain, need a trait to keep track of classes
  */
 const TRAIT = '__liquidClass__'
 
diff --git a/src/util/strftime.spec.ts b/src/util/strftime.spec.ts
index 4d6042933..8edf30b1a 100644
--- a/src/util/strftime.spec.ts
+++ b/src/util/strftime.spec.ts
@@ -172,7 +172,7 @@ describe('util/strftime', function () {
     it('should escape %t as \\t', function () {
       expect(t(now, '%t')).toBe('\t')
     })
-    it('should retain un-recognized formaters', function () {
+    it('should retain un-recognized formatters', function () {
       expect(t(now, '%o')).toBe('%o')
     })
   })


Test patch:
diff --git a/test/e2e/eval-value-sync.spec.ts b/test/e2e/eval-value-sync.spec.ts
index eef818fdf..7b8234dd7 100644
--- a/test/e2e/eval-value-sync.spec.ts
+++ b/test/e2e/eval-value-sync.spec.ts
@@ -4,7 +4,7 @@ describe('#evalValueSync()', function () {
   var engine: Liquid
   beforeEach(() => { engine = new Liquid() })
 
-  it('should eval value syncly', async function () {
+  it('should eval value synchronously', async function () {
     return expect(engine.evalValueSync('true', { opts: {} } as any)).toBe(true)
   })
 })
diff --git a/test/e2e/parse-and-render.spec.ts b/test/e2e/parse-and-render.spec.ts
index 67b7a292b..43bf3c162 100644
--- a/test/e2e/parse-and-render.spec.ts
+++ b/test/e2e/parse-and-render.spec.ts
@@ -53,7 +53,7 @@ describe('.parseAndRender()', function () {
     return expect(html).toBe('apples')
   })
   it('should support nil(null, undefined) literal', async function () {
-    const src = '{% if notexist == nil %}true{% endif %}'
+    const src = '{% if nonexistent == nil %}true{% endif %}'
     const html = await engine.parseAndRender(src)
     expect(html).toBe('true')
   })
diff --git a/test/e2e/xhr.spec.ts b/test/e2e/xhr.spec.ts
index d612de147..869db7974 100644
--- a/test/e2e/xhr.spec.ts
+++ b/test/e2e/xhr.spec.ts
@@ -113,10 +113,10 @@ describe('xhr', () => {
     })
     it('should support with url', async () => {
       engine = new LiquidUMD({
-        root: 'https://foo.com/bar/',
+        root: 'https://example.com/bar/',
         extname: '.html'
       })
-      server.respondWith('GET', 'https://foo.com/bar/hello.html',
+      server.respondWith('GET', 'https://example.com/bar/hello.html',
         [200, { 'Content-Type': 'text/plain' }, 'hello {{name}}'])
       const html = await engine.renderFile('hello.html', { name: 'alice5' })
       return expect(html).toBe('hello alice5')
diff --git a/test/integration/filters/url.spec.ts b/test/integration/filters/url.spec.ts
index 3dbd67e4f..b18649a49 100644
--- a/test/integration/filters/url.spec.ts
+++ b/test/integration/filters/url.spec.ts
@@ -33,8 +33,8 @@ describe('filters/url', () => {
 
   describe('uri_escape', () => {
     it('should escape unsupported chars for uri', () => {
-      const html = liquid.parseAndRenderSync('{{ "http://foo.com/?q=foo, \\\\bar?" | uri_escape }}')
-      expect(html).toEqual('http://foo.com/?q=foo,%20%5Cbar?')
+      const html = liquid.parseAndRenderSync('{{ "https://example.com/?q=foo, \\\\bar?" | uri_escape }}')
+      expect(html).toEqual('https://example.com/?q=foo,%20%5Cbar?')
     })
     it('should not escape reserved characters', () => {
       const reserved = "!#$&'()*+,/:;=?@[]"
diff --git a/test/integration/tags/comment.spec.ts b/test/integration/tags/comment.spec.ts
index 355f9b101..bc3a2f661 100644
--- a/test/integration/tags/comment.spec.ts
+++ b/test/integration/tags/comment.spec.ts
@@ -22,7 +22,7 @@ describe('tags/comment', function () {
     const html = await liquid.parseAndRender(src)
     return expect(html).toBe('')
   })
-  it('should ignore un-balenced tag tokens', async function () {
+  it('should ignore unbalanced tag tokens', async function () {
     const src = '{% comment %}{%if true%}true{%else%}false{% endcomment %}'
     const html = await liquid.parseAndRender(src)
     return expect(html).toBe('')
diff --git a/test/integration/util/error.spec.ts b/test/integration/util/error.spec.ts
index c30d6ab93..9f4c14e67 100644
--- a/test/integration/util/error.spec.ts
+++ b/test/integration/util/error.spec.ts
@@ -83,7 +83,7 @@ describe('error', function () {
         }
       })
       engine.registerFilter('throwingFilter', () => {
-        throw new Error('throwed by filter')
+        throw new Error('thrown by filter')
       })
     })
     it('should throw RenderError when tag throws', async function () {
@@ -104,7 +104,7 @@ describe('error', function () {
       const src = '{{1|throwingFilter}}'
       await expect(engine.parseAndRender(src)).rejects.toMatchObject({
         name: 'RenderError',
-        message: expect.stringContaining('throwed by filter')
+        message: expect.stringContaining('thrown by filter')
       })
     })
     it('should not throw when variable undefined by default', async function () {