follows the same lifecycle as golang and java: install -> instantiate -> upgrade

utilizes the "chaincode platform" framework based on docker, so that a javascript chaincode image is built by the peer based on a base image and dockerfile commands specific to the js chaincode execution environment

chaincodes written in javascript is able to use the standard require() to make use of npm modules

an optional package.json can accompany the chaincode to specify name, version, and most importantly external dependencies

during install, the chaincode's external dependencies can either be specified by the package.json, for which they will be installed when the chaincode docker image is being built by the peer, or they can be included in the chaincode package as part of the ChaincodeDeploymentSpec inside a "node_modules" folder. having this flexibility provides the balance b/w deterministic installs and light-weight code packages, and enables the developer to determine the optimal approach

The implementation of this new capability will be split b/w two repositories:

fabric: enhancement to core/chaincode/chaincode_support.go to direct requests targeting the node.js chaincode to new platform handler, to be implemented in core/chaincode/platforms/node package

fabric-chaincode-node: will originally contain the shim implementation in node.js