Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V1.0.0 (was going to be v0.2.0, but refactor got bigger) #35

Merged
merged 82 commits into from
Sep 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
0d18cc1
refactor: 💡 Remove support for hooks in 'route.js' files
Sep 14, 2020
22b6b4c
feat: 🎸 Add 'data' validation to the route validation
Sep 14, 2020
50a0bb6
feat: 🎸 Useful error when request.route is not defined
Sep 14, 2020
a1315e9
refactor: 💡 remove link() from templates
Sep 14, 2020
9a1aab9
refactor: 💡 remove customProps from Elder.js
Sep 14, 2020
e77877b
feat: 🎸 compileHtml hook to give complete control over html
Sep 14, 2020
b10e38d
feat: 🎸 Make sure route `data` functions have readonly props
Sep 14, 2020
f85ddbb
feat: 🎸 initial shortcode support with async
Sep 15, 2020
eaade32
feat: 🎸 inlineSvelte component shortcode
Sep 15, 2020
88cdbd0
feat: 🎸 Validate shortcodes from Elder, Plugins, and Config
Sep 15, 2020
cbda100
chore: 🤖 remove duplicate console log
Sep 15, 2020
7a7f643
test: 💍 Get tests working
Sep 15, 2020
ce1b749
feat: 🎸 reverse stack and hook priority so 100 is highest
Sep 15, 2020
3957ad5
0.1.6-next.0
Sep 15, 2020
fb65ca8
fix: 🐛 fix hook interface missing
Sep 16, 2020
f571f03
fix: 🐛 begin depreciating routeHTML for routeHtml
Sep 16, 2020
dd8c601
feat: 🎸 internalize rollup config as an Elder.js export
Sep 16, 2020
7ef13bc
feat: 🎸 start refactoring elder.config.js
Sep 16, 2020
a35db24
feat: 🎸 further simplify the settings/config
Sep 16, 2020
b2dd3b2
feat: 🎸 update all tests
Sep 16, 2020
b87f818
0.1.6-next.1
Sep 16, 2020
de5090f
feat: 🎸 add support for plugin Svelte Files
Sep 16, 2020
b473960
0.1.6-next.2
Sep 16, 2020
52cf00b
fix: eslint
halafi Sep 17, 2020
56c8725
chore: package-lock
halafi Sep 17, 2020
39b9133
test(build): fix config mock, mock cosmiconfig
halafi Sep 17, 2020
e34b4ca
fix(externalhelpers.spec): broken tests
halafi Sep 17, 2020
5c667a4
test: internal shortcodes
halafi Sep 17, 2020
d44c62a
feat: 🎸 Add safe guard to manipuation within the data function
Sep 17, 2020
f6c57d3
Merge branch 'v0.2.0' of github.com:Elderjs/elderjs into v0.2.0
Sep 17, 2020
2e76df2
feat: 🎸 readonly proxies for request/settings in svelte
Sep 17, 2020
56684d8
test: prepareShortcodeParser
halafi Sep 17, 2020
3611a3e
Merge branch 'v0.2.0' of https://github.com/Elderjs/elderjs into v0.2.0
halafi Sep 17, 2020
2fd02ca
feat: 🎸 add helpers.shortcode to inline shortcodes
Sep 17, 2020
fb6b8d6
0.1.6-next.3
Sep 17, 2020
8665235
test: getRollupConfig sub functions
halafi Sep 17, 2020
a59bc7c
Merge branch 'v0.2.0' of https://github.com/Elderjs/elderjs into v0.2.0
halafi Sep 17, 2020
46afc95
test: getRollupConfig cases
halafi Sep 17, 2020
b30a397
test: getRollupConfig
halafi Sep 17, 2020
1b09ad0
chore: 🤖 remove stray console log
Sep 17, 2020
e447744
Merge branch 'v0.2.0' of github.com:Elderjs/elderjs into v0.2.0
Sep 17, 2020
52630ad
test: prepareInlineShortcode
halafi Sep 17, 2020
07c3085
Merge branch 'v0.2.0' of https://github.com/Elderjs/elderjs into v0.2.0
halafi Sep 17, 2020
4b2341b
fix: 🐛 use devalue instead of JSON.stringify for props
Sep 17, 2020
937c066
Merge branch 'v0.2.0' of github.com:Elderjs/elderjs into v0.2.0
Sep 17, 2020
aec0830
0.1.6-next.4
Sep 17, 2020
20233fa
feat: 🎸 Much better error handling and reporting for builds
Sep 18, 2020
6737fb2
test: 💍 get tests almost working
Sep 18, 2020
5c1cd9f
0.1.6-next.5
Sep 18, 2020
97fdaa7
fix: build test
halafi Sep 18, 2020
5747f1b
fix: 🐛 proper 'browser' and 'server' in rollup config
Sep 18, 2020
de0dca6
Merge branch 'v0.2.0' of github.com:Elderjs/elderjs into v0.2.0
Sep 18, 2020
f63d297
feat: 🎸 settle on templateHtml and make sure entities exist
Sep 18, 2020
ddfd78a
0.1.6-next.6
Sep 18, 2020
7b591cd
fix: 🐛 change siteUrl to origin
Sep 18, 2020
dda2f79
0.1.6-next.7
Sep 18, 2020
58b40ad
feat: 🎸 add allRequests to buildComplete
Sep 21, 2020
b8baaec
feat: 🎸 partialHydration error for non-self closing tags
Sep 21, 2020
832d967
test: 💍 update tests
Sep 21, 2020
bc602a2
feat: 🎸 improve error text on wrapping component
Sep 21, 2020
f1d6f9e
docs: ✏️ better error message on partial hydration
Sep 21, 2020
4260ae6
feat: 🎸 shortcode debugging, support for \\[ \\] brackets
Sep 21, 2020
f3c2e1c
0.1.6-next.8
Sep 21, 2020
b60012f
chore: 🤖 get linter happy
Sep 21, 2020
a55fc57
feat: 🎸 move server to hook so it can be disabled or replaced
Sep 21, 2020
14f8adb
0.1.6-next.9
Sep 21, 2020
138673f
feat: 🎸 add request to scope of middleware, update docs
Sep 21, 2020
bb8db09
fix: prepareServer.spec
halafi Sep 22, 2020
27a0f94
fix: elder.spec
halafi Sep 22, 2020
2e98756
test: hooks.spec.ts
halafi Sep 22, 2020
0372e1e
fix: 🐛 check for request object
Sep 22, 2020
168baf0
feat: 🎸 can use /compontents/name/Name.svelte or without folder
Sep 22, 2020
936a8f5
fix: 🐛 fix test
Sep 22, 2020
4673693
0.1.6-next.10
Sep 22, 2020
6f65dd1
feat: 🎸 warning for no origin in elder.config.js
Sep 22, 2020
5b24419
0.1.6-next.11
Sep 22, 2020
021848a
feat: 🎸 add shortcodeSchema to export
Sep 22, 2020
50fbb16
0.1.6-next.12
Sep 22, 2020
39ef2f2
fix: 🐛 fix validation so the documentation is accurate
Sep 22, 2020
8d2bd6c
0.1.6-next.13
Sep 22, 2020
a3c105e
docs: ✏️ better docs
Sep 22, 2020
c571d4a
test: 💍 update tests
Sep 22, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Jest Tests",
"type": "node",
"request": "launch",
"runtimeArgs": ["--inspect-brk", "${workspaceRoot}/node_modules/.bin/jest", "--runInBand"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"port": 9229
}
]
}
38 changes: 20 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,33 +21,35 @@

<br />

[Elder.js](https://github.com/elderjs/elderjs) is an opinionated static site generator and web framework built with SEO in mind. (Supports SSR and Static Site Generation.)

Elder.js is an opinionated static site generator and web framework built with SEO in mind. :rocket:
- [Full Docs](https://elderguide.com/tech/elderjs/)
- [Template](https://github.com/Elderjs/template)
- [Plugins](https://github.com/Elderjs/plugins)

Full documentation here: https://elderguide.com/tech/elderjs/
**Features:**

The quickest way to get started is here: https://github.com/Elderjs/template/
- [**Build hooks**](https://elderguide.com/tech/elderjs/#hooks-how-to-customize-elderjs) allow you to plug into any part of entire page generation process and customize as needed.
- **A Highly Optimized Build Process:** that will span as many CPU cores as you can throw at it to make building your site as fast as possible. For reference Elder.js easily generates a data intensive 18,000 page site in 8 minutes using a budget 4 core VM.
- **Svelte Everywhere:** Use Svelte for your SSR templates and with partial hydration on the client for tiny html/bundle sizes.
- **Straightforward Data Flow:** By simply associating a `data` function in your `route.js`, you have complete control over how you fetch, prepare, and manipulate data before sending it to your Svelte template. Anything you can do in Node.js, you can do to fetch your data. Multiple data sources, no problem.
- **Community Plugins:** Easily extend what your Elder.js site can do by adding [prebuilt plugins](https://github.com/Elderjs/plugins) to your site.
- **Shortcodes:** Future proof your content, whether it lives in a CMS or in static files using smart placeholders.
- **0KB JS**: Defaults to 0KB of JS if your page doesn't need JS.
- **Partial Hydration**: Unlike most frameworks, Elder.js lets you hydrate just the parts of the client that need to be interactive allowing you to dramatically reduce your payloads while still having full control over component lazy-loading, preloading, and eager-loading.

If you find bugs please open an issue.
**Context**

**We consider Elder.js to be in 'beta' in terms of API stability but are using it in production on https://elderguide.com.**
Elder.js is the result of our team's work to build this site ([ElderGuide.com](https://elderguide.com)) and was purpose built to solve the unique challenges of building flagship SEO sites with 10-100k+ pages.

## Features:
Elder Guide Co-Founder [Nick Reese](https://nicholasreese.com) has built or managed 5 major SEO properties over the past 14 years. After leading the transition of several complex sites to static site generators he loved the benefits of the JAM stack, but wished there was a better solution for complex, data intensive, projects. Elder.js is his vision for how static site generators can become viable for sites of all sizes regardless of the number of pages or how complex the data being presented is.

* [**Build hooks**](https://elderguide.com/tech/elderjs/#hooks-how-to-customize-elderjs) allow you to plug into any part of entire page generation process and build process and customize as needed.
* **A Highly Optimized Build Process:** that will span as many CPU cores as you can throw at it to make building your site as fast as possible. For reference Elder.js easily generates a data intensive 18,000 page site in 8 minutes using a budget 4 core VM.
* **Svelte Everywhere:** Use Svelte for your SSR templates and with partial hydration on the client for tiny html/bundle sizes.
* **Straightforward Data Flow:** Each route has a `data` function and you have complete control over how you fetch, prepare, and manipulate data before sending it to your Svelte template. Anything you can do in Node.js, you can do to fetch your data. Multiple data sources, no problem.
* **Community Plugins:** Easily extend what your Elder.js site can do by adding [prebuilt plugins](https://github.com/Elderjs/plugins) to your site.
We hope you find this project useful whether you're building a small personal blog or a flagship SEO site that impacts millions of users.

## Getting Started:

## Context

Elder.js is the result of our team's work to build ([ElderGuide.com](https://elderguide.com)) and was purpose built to solve the unique challenges of building flagship SEO sites with 10-100k+ pages.

Elder Guide co-Founder [Nick Reese](https://nicholasreese.com) has built or managed 5 major SEO properties over the past 14 years. After leading the transition of several complex sites to static site generators he loved the benefits of the JAM stack, but wished there was a better solution for complex, data intensive, projects. Elder.js is his vision for how static site generators can become viable for sites of all sizes regardless of the number of pages or how complex the data being presented is.

We hope you find this project useful whether you're building a small personal blog or a flagship SEO site that impacts millions of users.
The quickest way to get started is to get started with the [Elder.js template](https://github.com/Elderjs/template) using [degit](https://github.com/Rich-Harris/degit):

Here is a demo of the template: [https://elderjs.netlify.app/](https://elderjs.netlify.app/)

## Full documentation here: https://elderguide.com/tech/elderjs/
Loading