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

@ishikawa-masashi/shenscript

v0.2.5

Published

Shen for JavaScript

Downloads

12

Readme

Shen Version Build Status Docs Status npm

Shen for JavaScript

An implementation of the Shen Language by Mark Tarver for JavaScript. Full documentation can be viewed at shenscript.readthedocs.io.

Features

  • Allows integration with arbitrary I/O.
  • Async operations are transparent to written Shen code.
  • Easy interop: JS can be called from Shen, Shen can be called from JS.
  • Fairly small production webpack bundle (~370KB uncompressed, ~60KB gzip compressed).
  • Decent web startup time (~50ms in Chromium, ~100ms in Firefox).

Prerequisites

Requires recent version (10+) of Node.js and npm.

Works in most modern browers (Chromium, Firefox, Safari and Edge).

Building and Testing

First, run npm install as you would with any other Node project. Then run the following scripts build and test the project. Steps need to be run in order - steps after fetch-kernel won't work if the kernel hasn't been fetched.

| Script | Description | |:----------------|:------------------------------------------------------------------------------------------------------------------| | test-backend | Runs mocha tests for the basic environment and compiler. | | fetch-kernel | Downloads the kernel sources from shen-sources to kernel/. | | render-kernel | Translates the kernel sources to JavaScript and stores under kernel/js/. | | test-kernel | Runs the test suite that comes with the Shen kernel. | | test-frontend | Runs mocha tests for helper and interop functions. | | bundle-dev | Applies babel transforms and webpack's into web-deployable bundle. | | bundle | Builds bundle in production mode. | | bundle-min | Builds minified production bundle. | | bundles | Generates all bundles. | | lint | If you make changes, run lint to check adherence to style and code quality. |

Running

Demo Page

Run npm start to start webpack watch or npm run bundle-dev to do a one-time build.

If you open index.html in your browser a basic webpage will load, and when ready, it will display the load time. (The production webpack bundle does not automatically create a Shen environment and does not log anything.) index.html should be viewable without hosting in a web server, but you will not be able to use the load function to load additional Shen code if opened from a relative file:// path. http-server is adequate for hosting in a web server.

If you open the JavaScript console in the developer tools, it is possible to access to the $ global object and execute commands:

$.exec("(+ 1 1)").then(console.log);

Chaining the then call is necessary because exec will return a Promise. For more information refer to the documentation.

REPL

Run npm run repl to run a command-line REPL. It should have the same behavior as the shen-cl REPL. node. functions will be available. Run (node.exit) to exit the REPL.

Neither command-line options nor the launcher kernel extension are implemented. ShenScript is not intended to take the form of a standalone executable.