npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

relysjs

v1.21.20

Published

Reactive Web app server focusing on MPAs with a simple server route & browser build api...uses Bunjs, Elysia, ESBuild, rmemo, & ctx-core

Downloads

2,600

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.