pulumi/tools/mujs
joeduffy af45bfd53f Fix up a few things
* Improve some logging and assertions.

* Initialize the prototype map (it was always empty before).

* Actually memoize the prototype objects in this map.

* During class initialization, ensure the base class is also initialized.

* Trigger class initialization anytime a property or function is loaded
  from that class.  Similarly, trigger module initialization on loads too.

* Treat For/ForIn/ForOfStatements as legal parents for local variables.
  This ensures for loops at the top-level in a module have their variables
  treated as locals, rather than module properties.  Add a test also.

* Track source locations for more nodes.

* Mark auto-generated constructors as public so that they may be called.

* Fix the naming of class init methods; it should be ".init", not ".ctor".

* Clone the loop test cases into both function and module top-level variants.
2017-02-16 06:48:39 -08:00
..
cmd Save TypeScript definition files 2017-02-09 09:07:10 -08:00
lib Fix up a few things 2017-02-16 06:48:39 -08:00
tests Fix up a few things 2017-02-16 06:48:39 -08:00
.gitignore Add a new harness for test cases 2017-01-08 15:20:46 -06:00
mujs Add a handy executable wrapper for MuJS 2017-01-08 15:34:10 -06:00
package.json Remove some unused variables 2017-02-10 15:30:48 -08:00
README.md Update some READMEs from last night 2017-02-02 11:09:33 -08:00
tsconfig.json Remove some unused variables 2017-02-10 15:30:48 -08:00
tslint.json Upgrade to latest TSLint, and compile cleanly 2016-12-31 11:16:36 -08:00
yarn.lock Remove some unused variables 2017-02-10 15:30:48 -08:00

MuJS

This directory contains Mu's JavaScript compiler.

It implements a subset of JavaScript with TypeScript-style type annotations, and can compile that subset into MuPack/IL.

Building and Testing

MuJS is built independent from the overall Mu toolchain. First clone and cd to the right place:

$ git clone git@github.com:marapongo/mu
$ cd mu/tools/mujs

Next, install dependencies, ideally using Yarn:

$ yarn install

(NPM can be used instead, but Yarn offers better performance, reliability, and security, so it's what we use below.)

From there, to build:

$ yarn run build

It's possible to simply run the TypeScript compiler using tsc, however the Yarn build step performs a couple extra steps; namely, it runs TSLint and also copies some test baseline files into the right place.

Next, to test, simply run:

$ yarn run test

It will be obvious if the tests passed or failed and, afterwards, code coverage data will be output to the console.

Libraries

In order to use the Mu libraries -- including the Mu standard library -- you will need to do a few additional steps to prepare your developer workspace. Please see this document for details on how to do this.