relysjs
v1.21.73
Published
Reactive Web app server focusing on MPAs with a simple server route & browser build api...uses Bunjs, Elysia, ESBuild, rmemo, & ctx-core
Downloads
237
Maintainers
Readme
relysjs
Reactive web app server. Focuses on MPAs with simple server middleware & browser build api. Uses a rebuildjs core with:
ctx-core/be & rmemo
Relysjs uses rmemo to coordinate the build steps & state.
How it works
relysjs is an app server that uses ElysiaJS middleware to create routes. Relysjs includes running the development production app server processes.
handles development & production builds. It uses esbuild under the hood. Providing helper functions to manage coordinate builds.
build.ts
The build config is in app-root/build.ts
. It can run the build if it's the entry file & export the build
function to be used when starting the dev server. Here is the build.ts file from my site briantakita.me
| function | description |
|------------------------|------------------------------------------------------------------------------------------------------------------------------------|
| relysjs_server__build
| Run esbuild for the server logic. Includes web page assets generated over SSR. |
| relysjs_browser__build
| Run esbuild for asset files served over http. Manages assets generated by relysjs_server__build
& browser-side javascript logic. |
start.ts
Used to start the production web app from the build output in the dist
directory. Here is start.ts from briantakita.me.
app directory
The entry files for the middleware server + browser builds. There is a separate esbuild target for each defined index.server.ts
& index.browser.ts
file.
app/index.ts
Starts the web server with site-wide middleware. Here is app/index.ts from briantakita.me.
app/**/index.server.ts
A relysjs_server__build
build target for a middleware. Here is app/index.server.ts from briantakita.me.
app/**/index.browser.ts
A relysjs_browser__build
build target for a middleware. Here is app/index.server.ts from briantakita.me.
ctx namespaces (ns)
ctx-core/be organizes server side & build state into namespaces. By default, the state is in the ''
namespace. rebuildjs & by extension relysjs stores the state in 4 namespaces:
ns: 'app'
ns: 'middleware'
ns: 'request'
ns: ''
Relevant be functions are in the relysjs/server
module.
ctx ns: app
ctx state that lives during the lifetime of the build & the app. It stores:
- application info
- configuration
- application build state
Some important functions include:
| function | description |
|------------------------|----------------------------------------------------------------------------|
| app_
| Elysia middleware object |
| relysjs__ready__wait
| Returns a promise that resolves when the relysjs part of the build is done |
| relysjs__ready_
| is true when the relysjs build step is complete |
ctx ns: request
ctx state that lives in the lifetime of a HTTP request. It stores request-specific info:
Some of the state includes:
| function | description |
|------------------|--------------------------------------|
| elysia_context_
| The ElysiaJS context for the request |
| request_
| The Request object |
| request_url_
| The Request url |
| store_
| The ElysiaJS store object |
Name Convention
Relysjs uses the tag vector name system. A terse name system to convey domain ontology as tag vectors.