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

yelm

v0.0.20

Published

Experimental programming environment for micro:bit

Downloads

33

Readme

yelm - Experimental Programming Environment for micro:bit

Build Status

Yelm is a platform for creating special-purpose programming experiences for beginners, especially focused on computer science education. Yelm underlaying programming language is a subset of TypeScript (leaving out JavaScript dynamic features).

The main features of Yelm are:

  • a Blockly-based code editor along with converter to the text format
  • an ACE-based text editor with enhanced, robust auto-completion and auto-correction
  • a TypeScript library defining APIs available on microbit devices
  • an ARM Thumb machine code emitter
  • a command-line package manager

Name

Yelm is a city near Mt Rainier in Washington State with a name short enough for command line tool. It also stands for Your Experimental programming Language environment for microbit-compatible devices.

Build

Building yelm command line tools:

tsd reinstall
npm install
jake

Then install the yelm command line tool (only need to do it once):

npm install -g yelm-cli

After this you can run yelm from anywhere within the build tree.

To start the local web app server do yelm serve within the root directory of build tree (where this file sits) and then browse to http://localhost:3232

TODOs

package mgr + compiler

  • [x] image literals
  • [x] code in top-level scope
  • [x] only compile what's needed
  • [x] don't emit unused global vars
  • [x] testFiles: [ ... ] in yelm.json
  • [x] class methods
  • [ ] class field initializers (?)
  • [x] constructors
  • [ ] disallow direct references to class members (cannot copy JS semantics)
  • [x] optional arguments
  • [x] default arguments
  • [ ] +=, -= etc
  • [ ] proper caching for x.f++, x.f += ... etc
  • [ ] lambdas returning values (maybe just works?)
  • [ ] clear variables when they get out of scope to limit memory usage
  • [x] function f() {...}; control.inBackground(f) in local scope
  • [x] function f() {...}; control.inBackground(f) in global scope
  • [x] //% shim=... weight=... help=... etc insteaf of {shim:...}
  • [ ] bit operators (&, |, etc)
  • [ ] inline assembly
  • [ ] use "(x + y) | 0" etc instead of "x + y" in simulator
  • [x] do not generate empty action bodies for shim
  • [x] check on compiler performance (1000ms on lang-test0)
  • [x] forever() seems to have issues
  • [x] skip unreferenced globals when initilized with literal
  • [ ] do not DECR no-closure functions
  • [ ] after uninstall pouch db throws 404 after reload
  • [ ] ptr-<username>-* as the main way publishing packages
  • [ ] in simulator currResume start loop() in nextTick
  • [ ] foo${bar}baz
  • [ ] x ? a : b

web app

  • [x] make blocks output file read only
  • [x] do not type-check while auto-completing
  • [x] scroll completion window with keyboard
  • [x] indent when entering first character on a line
  • [ ] save source in hex
  • [ ] Save json
  • [ ] Drag and drop load
  • [x] Link up simulator
  • [ ] Flag to hide from TS auto completion (eg: set sprite property with enum)
  • [ ] add markdown processor for docs
  • [ ] help for specific arguments
  • [ ] stepping debugger
  • [ ] attaching runtime warning to specific lines of code or block

converter from TD to TS (different repo)

  • [x] multi-line strings into backtick literals
  • [ ] use bit operators for bits.XYZ
  • [x] fish out {shim:...} and friends
  • [x] {hints:...} -> @param x Blah, eg: 100, 200 (?)
  • [ ] async is flipped
  • [ ] use expr as Type not <Type> expr

Docs

We use mkdocs to generate the docs under the /docs folder. To setup mkdocs,

pip install mkdocs
mkdocs serve
open http://127.0.0.1:8000

License

MIT