pulumi/sdk/nodejs
Pat Gavlin b85f95acd9
Fix error codes for early exceptions (#2337)
It is possible for the sub-process responsible for running a NodeJS
Pulumi program to exit with a success code before the user's program has
run if the process of loading the runtime generates an unhandled promise
rejection. These changes fix this by registering the unhandled exception
and rejection handlers that are responsible for ensuring a non-zero exit
code in these cases before any other action is taken.

Note that this issue is really only possible because the Node language
host (like the Python language host) is composed of two processes: one
that serves the language host gRPC service and one that loads and runs
the user's program. The former launches the latter in response to a call
to its `Run` gRPC endpoint. The lifetime of the user's program is
considered to be bounded by the lifetime of the `Run` invocation. The
NodeJS process maintains its own connection to the engine over which
resource registrations are communicated. It is tempting to add a message
to the resource monitor RPC interface that signals that no further
registrations are performed, but this is complicated due to the
three-party topology and the possibility that such an RPC may never be
sent (e.g. due to a crash or a downlevel version of the Pulumi Node
runtime).

Fixes #2316.
2019-01-07 09:59:29 -08:00
..
asset Make RTTI markers internal (#1479) 2018-06-07 21:34:06 -07:00
cmd Fix error codes for early exceptions (#2337) 2019-01-07 09:59:29 -08:00
dist Do not use relative path when launching dynamic provider 2018-12-05 13:45:06 -08:00
dynamic Reimplement refresh. (#1814) 2018-08-22 17:52:46 -07:00
iterable Add an extra layer of Input-ness 2018-10-27 13:47:15 -07:00
log Expose hte ephemeral logging flag to the Nodejs sdk. (#2056) 2018-10-12 11:09:09 -07:00
proto Move management of root resource state to engine (#1944) 2018-09-18 11:47:34 -07:00
runtime Convert resource to pojo objects when used as stack outputs. (#2311) 2019-01-03 10:03:11 -08:00
tests Revert https://github.com/pulumi/pulumi/pull/2281 (#2297) 2018-12-15 21:04:53 -08:00
.gitignore Continue to add native modules to NODE_PATH 2018-04-13 14:26:32 -07:00
Makefile Pass -count=1 to disable result caching on go 1.10 and above 2018-11-08 14:11:52 -08:00
README.md Remove Private Beta warning 2018-06-18 05:00:38 -07:00
config.ts Fix requireObject docs (#1961) 2018-09-21 07:58:14 -07:00
errors.ts Fix rtti check. (#1983) 2018-09-24 20:06:31 -07:00
index.ts Add an API for importing stack outputs (#2180) 2018-11-14 13:33:35 -08:00
invoke.ts Pull default options from a resource's parent. (#1748) 2018-08-10 16:18:21 -07:00
metadata.ts Add license headers 2018-05-22 15:02:47 -07:00
package.json Bump @types/node dependency 2018-11-13 11:20:21 -08:00
resource.ts Force rebuild of htis package to wipe out previously published 'dev' package. (#2300) 2018-12-17 16:00:31 -08:00
stackReference.ts Always read StackReference resources (#2332) 2019-01-03 16:06:21 -08:00
tsconfig.json Add stackReference.ts to tsconfig.json (#2253) 2018-11-29 10:27:29 -08:00
tslint.json Add license headers 2018-05-22 15:02:47 -07:00
version.ts Add license headers 2018-05-22 15:02:47 -07:00

README.md

Pulumi Node.js SDK

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

Installation

Using npm:

$ npm install --save @pulumi/pulumi

Using yarn:

$ yarn add @pulumi/pulumi

This SDK is meant for use with the Pulumi CLI. Please visit pulumi.io for installation instructions.

Building and Testing

For anybody who wants to build from source, here is how you do it.

Prerequisites

This SDK uses Node.js and we support the Active LTS and Current releases, as defined by this table. We support both NPM and Yarn for package management.

At the moment, we only support building on macOS and Linux, where standard GNU tools like make are available.

Make Targets

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

$ make ensure

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 (where this README lives, at sdk/nodejs/ from the repo's root). This will build the code, run tests, and install the package and its supporting artifacts.

At the moment, for local development, we install everything into /opt/pulumi. You will want this on your $PATH.

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.