pulumi/sdk/nodejs
CyrusNajmabadi 901a238fd5
Get closure serialiation working in Node11 (#2101)
* Make v8 primitives async as there is no way to avoid async in node11.

* Simplify API.

* Move processing of well-known globals into the v8 layer.
We'll need this so that we can map from RemoteObjectIds back to these well known values.

* Remove unnecesssary check.

* Cleanup comments and extract helper.

* Introduce helper bridge method for the simple case of making an entry for a string.

* Make functions async.  They'll need to be async once we move to the Inspector api.

* Make functions async.  They'll need to be async once we move to the Inspector api.

* Make functions async.  They'll need to be async once we move to the Inspector api.

* Move property access behind helpers so they can move to the Inspector API in the future.

* Only call function when we know we have a Function.  Remove redundant null check.

* Properly serialize certain special JavaScript number values that JSON serialization cannot handle.

* Only marshall across the 'source' and 'flags' for a RegExp when serializing.

* Add a simple test to validate a regex without flags.

* Extract functionality into helper method.

* Add test with complex output scenarios.

* Output serialization needs to avoid recursively trying to serialize a serialized value.

* Introduce indirection for introspecting properties of an object.

* Use our own introspection API for examining an Array.

* Hide direct property access through API indirection.

* Produce values like the v8 Inspector does.

* Compute the module map asynchronously.  Will need that when mapping mirrors instead.

* Cleanup a little code in closure creation.

* Get serialization working on Node11 (except function locations).

* Run tests in the same order on <v11 and >=v11

* Make tests run on multiple versions of node.

* Rename file to make PR simpler to review.

* Cleanup.

* Be more careful with global state.

* Remove commented line.

* Only allow getting a session when on Node11 or above.

* Promisify methods.
2018-11-01 15:46:21 -07:00
..
asset Make RTTI markers internal (#1479) 2018-06-07 21:34:06 -07:00
cmd Get closure serialiation working in Node11 (#2101) 2018-11-01 15:46:21 -07:00
dist Don't set NODE_PATH in dynamic provider 2018-06-15 11:12:24 -07: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 Get closure serialiation working in Node11 (#2101) 2018-11-01 15:46:21 -07:00
tests Get closure serialiation working in Node11 (#2101) 2018-11-01 15:46:21 -07:00
.gitignore Continue to add native modules to NODE_PATH 2018-04-13 14:26:32 -07:00
Makefile Add a Dockerfile for the Pulumi CLI 2018-09-29 11:48:21 -07: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 Move combinators to an iterable module 2018-10-27 12:19:42 -07: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 Add Node 11 scouting build 2018-10-25 19:07:04 -07:00
resource.ts Ensure method always returns a boolean. (#2120) 2018-10-28 13:02:37 -07:00
tsconfig.json Get closure serialiation working in Node11 (#2101) 2018-11-01 15:46:21 -07: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
yarn.lock Add Node 11 scouting build 2018-10-25 19:07:04 -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.