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

resty.jsx

v1.1.5

Published

Use JSX to generate HTML in Openresty with TypescriptToLua

Downloads

10

Readme

JSX in Openresty

Thanks to TypescriptToLua project, we can write web applications for Openresty in Typescript, which is pretty cool!

Now, if we want to return HTML from the server, even though there are some really good HTML templating libraries available, but coming from Typescript background, I find it really convenient to generate HTML with JSX, because unlike HTML templates, it is 100% covered by intellisense, which drastically reduces amount of errors you make.

This library enables using JSX in TypescriptToLua projects.

How to use

Install from NPM:

npm i resty.jsx

Add jsx and jsxFactory parameters to tsconfig.json:

{
    "compilerOptions": {
        "jsx": "react",
        "jsxFactory": "createElement",
    }
}

Add the following import to the ts file where you want to use JSX:

import {createElement} from "resty.jsx"

Don't forget to change the file extension to .tsx!

Now you can write JSX!

return <div>Hello world!</div>

Installing globally

By default, TypescriptToLua will put this library to lua-modules/resty.jsx under the output directory and change the Lua require correspondingly.

Alternatively, you may want to install it in a more traditional way, same as LuaRocks or OPM do.

In this case, you can simply copy jsx.lua to /usr/local/openresty/site/lualib/resty/ folder, and then you need to disable TypescriptToLua's module resolution by adding the following line to the tsconfig.json:

{
    "tstl": {
        "noResolvePaths": ["resty.jsx"]
    }
}

Now the import path will not be changed and Lua will pick the library from the global path.

Performance

This module is optimized for performance and uses ngx_escape_html function via FFI. It is quite hard to estimate the overhead and it will vary a lot depending on your markup, in my tests, for a real-world ~2Kb HTML, the JSX version was about 0.5ms slower per request than raw string concatenation (with server under load).