pulumi/sdk/nodejs
Pat Gavlin 97ace29ab1
Begin tracing Pulumi API calls. (#1330)
These changes enable tracing of Pulumi API calls.

The span with which to associate an API call is passed via a
`context.Context` parameter. This required plumbing a
`context.Context` parameter through a rather large number of APIs,
especially in the backend.

In general, all API calls are associated with a new root span that
exists for essentially the entire lifetime of an invocation of the
Pulumi CLI. There were a few places where the plumbing got a bit hairier
than I was willing to address with these changes; I've used
`context.Background()` in these instances. API calls that receive this
context will create new root spans, but will still be traced.
2018-05-07 18:23:03 -07:00
..
asset Use x is T return types for isX functions 2018-04-16 15:03:23 -07:00
cmd Begin tracing Pulumi API calls. (#1330) 2018-05-07 18:23:03 -07:00
dist Invoke node directly from the language host 2018-05-02 11:16:58 -07:00
dynamic Make some resource model changes 2018-04-05 08:14:25 -07:00
log Switch to a resource-progress oriented view for pulumi preview/update/destroy (#1116) 2018-04-10 12:03:11 -07:00
proto Add an ID property to ReadResponse (#1145) 2018-04-10 12:58:50 -07:00
runtime Support async function serialization. (#1311) 2018-05-03 12:25:52 -07:00
tests Support async function serialization. (#1311) 2018-05-03 12:25:52 -07:00
.gitignore Continue to add native modules to NODE_PATH 2018-04-13 14:26:32 -07:00
config.ts Switch to a resource-progress oriented view for pulumi preview/update/destroy (#1116) 2018-04-10 12:03:11 -07:00
errors.ts Use x is T return types for isX functions 2018-04-16 15:03:23 -07:00
index.ts Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
Makefile Support async function serialization. (#1311) 2018-05-03 12:25:52 -07:00
metadata.ts Allow multiple Pulumi SDKs side-by-side (#1132) 2018-04-07 08:02:59 -07:00
package.json Rename pulumi package to @pulumi/pulumi (#917) 2018-02-12 13:13:13 -08:00
README.md Fix wording in nodejs readme (#1239) 2018-04-19 21:42:26 -07:00
resource.ts Require a resource's parent to actually be a resource. (#1266) 2018-04-24 17:23:18 -07:00
tsconfig.json Support async function serialization. (#1311) 2018-05-03 12:25:52 -07:00
tslint.json Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
version.ts Allow multiple Pulumi SDKs side-by-side (#1132) 2018-04-07 08:02:59 -07:00
yarn.lock Run yarn upgrade and commit all resulting lockfiles 2018-01-30 14:46:44 -08: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, you will need a version of Node. We officially support the current node Active LTS releases and the most recent Current release, as defined by this table.

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 can make ensure to install and prepare native plugins for V8:

$ make configure

This is only necessary if you intend to produce a build that is capable of running older versions of the SDK contained in this directory. If you do intend to do this, you must have node 6.10.2 installed.

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.