pulumi/sdk/nodejs
Luke Hoban ad5ee5bc04 Support module capture without serialization (#375)
This change adds first class support for capturing objects which are references to loaded Node modules.

If an object to be serialized is found as a loaded module which can be referenced as `require(<name>)`, then is is not serialized and is passed as a new kind of environment entry - `module` which will be de-serialized as a `require` statement.

Supports three cases:
1. built-in modules such as `http` and `path`
2. dependencies in the `node_modules` folder
3. other user-defined modules in the source folder

This allows natural use of `import`s with "inside" code.  For example - note the use of `$` in the outside scope only on the "inside".

```typescript
import * as cloud from "@pulumi/cloud";
import * as $ from "cheerio";
let queue = new pulumi.Topic<string>("sites_to_process");
queue.subscribe("foreachurl", async (url) => {
    let x = $("a", "<a href='foo'>hello</a>");
});
```

Also fixes free variable capture of `this` in arrow functions.

Fixes #342.
2017-09-28 16:44:00 -07:00
..
asset Convert sdk documentation to TypeDoc/JsDoc 2017-09-21 18:15:29 -07:00
bin Move language host into bin/ 2017-09-08 06:13:09 -07:00
cmd Improve output formatting 2017-09-23 05:20:11 -07:00
runtime Support module capture without serialization (#375) 2017-09-28 16:44:00 -07:00
tests Support module capture without serialization (#375) 2017-09-28 16:44:00 -07:00
.gitignore Move language host into bin/ 2017-09-08 06:13:09 -07:00
config.ts Improve output formatting 2017-09-23 05:20:11 -07:00
errors.ts Improve output formatting 2017-09-23 05:20:11 -07:00
index.ts Eliminate Computed/Property in favor of Promises 2017-09-20 09:59:32 -07:00
Makefile Support for destructing patterns in free variable computation (#365) 2017-09-25 15:01:31 -07:00
package.json Rename pulumi-fabric to pulumi 2017-09-21 19:18:21 -07:00
README.md push is dead; long live update. 2017-09-22 17:23:40 -07:00
resource.ts Convert sdk documentation to TypeDoc/JsDoc 2017-09-21 18:15:29 -07:00
tsconfig.json Improve output formatting 2017-09-23 05:20:11 -07:00
tslint.json Lint the test files 2017-09-04 11:35:21 -07:00
yarn.lock Support for destructing patterns in free variable computation (#365) 2017-09-25 15:01:31 -07:00

Pulumi Fabric Node.js SDK

The Pulumi Fabric Node.js SDK lets you write cloud programs in JavaScript.

Installing

For now, we only support developers building from source. Eventually we will have a nice installer.

Prerequisites

To build and install the SDK, you will first need a few things.

First, install Node.js 6.10.2. We recommend nvm, since it makes it easier to switch between versions of Node.js. Afterwards, run nvm install 6.10.2.

Next, we suggest using Yarn for package management. NPM works too, but Yarn is faster and therefore preferred. Please follow the directions on Yarn's website.

Building and Testing

The first time you build, you must make configure to install and prepare native plugins for V8:

$ make configure

Make sure to run this after installing the right version of Node.js above, otherwise it may bind to the wrong version.

To build the SDK, simply run make from the root directory (sdk/nodejs/). This will build the code, run tests, and then "install" the package (by yarn linking the resulting bin/ directory).

We recommend putting bin/ on your $PATH, since the pulumi-langhost-nodejs executable will be loaded dynamically by the pulumi tool whenever it encounters a Node.js program.

The tests will verify that everything works, but feel free to try running pulumi preview and/or pulumi update from the examples/minimal/ directory. Remember to run tsc first, since pulumi expects JavaScript, not TypeScript.