pulumi/docs/design/lumijs.md
joeduffy dafeb77dff Rename Coconut to Lumi
This is part of pulumi/coconut#147.

After it has landed, I will rename the repo on GitHub.
2017-05-18 11:38:28 -07:00

1,003 B

Lumi JavaScript (LumiJS)

LumiJS is a superset of a JavaScript (ECMAScript) subset. First, take a subset of JavaScript, and then superset it with optional typing annotations (using TypeScript's syntax and semantics for them).

Modules

LumiJS uses ES6-style modules.

An ES6 module is a special kind of script, which is just a file containing a list of top-level statements. LumiIL modules have a bit more structure to them to facilitate analysis and determinism. As a result, there is a mapping from LumiJS to LumiIL module structure.

The mapping simply records all declarations -- variables and functions -- and then moves all other statements into the special module initializer (.init) function. In the case of blueprints, the special entrypoint function .main is devoid of logic, because in Node.js-style of programming, the module initializer takes care of entrypoint functionality.

TODO: document more