Don't use depricated constructor

This commit is contained in:
Ryan Brandenburg
2018-08-23 15:54:03 -07:00
parent 24ebd9ff3e
commit c2f15f4199
18 changed files with 13975 additions and 970 deletions

View File

@@ -0,0 +1,28 @@
[cmdletbinding(SupportsShouldProcess = $true)]
param(
)
$ErrorActionPreference = 'Stop'
Set-StrictMode -Version 2
Push-Location "src"
try {
$dirs = Get-ChildItem -Directory
foreach($dir in $dirs)
{
Push-Location $dir
try{
if(Test-Path -Path "package.json")
{
npm install
npm run build
}
}
finally{
Pop-Location
}
}
}
finally {
Pop-Location
}

View File

@@ -1,57 +1,103 @@
(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap (function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache /******/ // The module cache
/******/ var installedModules = {}; /******/ var installedModules = {};
/******/
/******/ // The require function /******/ // The require function
/******/ function __webpack_require__(moduleId) { /******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache /******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) /******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports; /******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache) /******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = { /******/ var module = installedModules[moduleId] = {
/******/ exports: {}, /******/ i: moduleId,
/******/ id: moduleId, /******/ l: false,
/******/ loaded: false /******/ exports: {}
/******/ }; /******/ };
/******/
/******/ // Execute the module function /******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded /******/ // Flag the module as loaded
/******/ module.loaded = true; /******/ module.l = true;
/******/
/******/ // Return the exports of the module /******/ // Return the exports of the module
/******/ return module.exports; /******/ return module.exports;
/******/ } /******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__) /******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules; /******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache /******/ // expose the module cache
/******/ __webpack_require__.c = installedModules; /******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__ /******/ // __webpack_public_path__
/******/ __webpack_require__.p = ""; /******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports /******/ // Load entry module and return exports
/******/ return __webpack_require__(0); /******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ }) /******/ })
/************************************************************************/ /************************************************************************/
/******/ ([ /******/ ([
/* 0 */ /* 0 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(1); module.exports = __webpack_require__(1);
/***/ }, /***/ }),
/* 1 */ /* 1 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
exports.__esModule = true;
// Limit dependencies to core Node modules. This means the code in this file has to be very low-level and unattractive, // Limit dependencies to core Node modules. This means the code in this file has to be very low-level and unattractive,
// but simplifies things for the consumer of this module. // but simplifies things for the consumer of this module.
__webpack_require__(2); __webpack_require__(2);
@@ -115,12 +161,12 @@
var parsedArgs = ArgsUtil_1.parseArgs(process.argv); var parsedArgs = ArgsUtil_1.parseArgs(process.argv);
var listenAddress = (useWindowsNamedPipes ? '\\\\.\\pipe\\' : '/tmp/') + parsedArgs.listenAddress; var listenAddress = (useWindowsNamedPipes ? '\\\\.\\pipe\\' : '/tmp/') + parsedArgs.listenAddress;
server.listen(listenAddress); server.listen(listenAddress);
ExitWhenParentExits_1.exitWhenParentExits(parseInt(parsedArgs.parentPid)); ExitWhenParentExits_1.exitWhenParentExits(parseInt(parsedArgs.parentPid), /* ignoreSigint */ true);
/***/ }, /***/ }),
/* 2 */ /* 2 */
/***/ function(module, exports) { /***/ (function(module, exports) {
// When Node writes to stdout/strerr, we capture that and convert the lines into calls on the // When Node writes to stdout/strerr, we capture that and convert the lines into calls on the
// active .NET ILogger. But by default, stdout/stderr don't have any way of distinguishing // active .NET ILogger. But by default, stdout/stderr don't have any way of distinguishing
@@ -159,29 +205,31 @@
} }
/***/ }, /***/ }),
/* 3 */ /* 3 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("net"); module.exports = require("net");
/***/ }, /***/ }),
/* 4 */ /* 4 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("path"); module.exports = require("path");
/***/ }, /***/ }),
/* 5 */ /* 5 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("readline"); module.exports = require("readline");
/***/ }, /***/ }),
/* 6 */ /* 6 */
/***/ function(module, exports) { /***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
exports.__esModule = true;
function parseArgs(args) { function parseArgs(args) {
// Very simplistic parsing which is sufficient for the cases needed. We don't want to bring in any external // Very simplistic parsing which is sufficient for the cases needed. We don't want to bring in any external
// dependencies (such as an args-parsing library) to this file. // dependencies (such as an args-parsing library) to this file.
@@ -203,9 +251,11 @@
exports.parseArgs = parseArgs; exports.parseArgs = parseArgs;
/***/ }, /***/ }),
/* 7 */ /* 7 */
/***/ function(module, exports) { /***/ (function(module, exports, __webpack_require__) {
"use strict";
/* /*
In general, we want the Node child processes to be terminated as soon as the parent .NET processes exit, In general, we want the Node child processes to be terminated as soon as the parent .NET processes exit,
@@ -240,9 +290,9 @@
Of these, the only cross-platform approach that is actually documented as a valid strategy is simply polling Of these, the only cross-platform approach that is actually documented as a valid strategy is simply polling
to check whether the parent PID is still running. So that's what we do here. to check whether the parent PID is still running. So that's what we do here.
*/ */
"use strict"; exports.__esModule = true;
var pollIntervalMs = 1000; var pollIntervalMs = 1000;
function exitWhenParentExits(parentPid) { function exitWhenParentExits(parentPid, ignoreSigint) {
setInterval(function () { setInterval(function () {
if (!processExists(parentPid)) { if (!processExists(parentPid)) {
// Can't log anything at this point, because out stdout was connected to the parent, // Can't log anything at this point, because out stdout was connected to the parent,
@@ -250,6 +300,24 @@
process.exit(); process.exit();
} }
}, pollIntervalMs); }, pollIntervalMs);
if (ignoreSigint) {
// Pressing ctrl+c in the terminal sends a SIGINT to all processes in the foreground process tree.
// By default, the Node process would then exit before the .NET process, because ASP.NET implements
// a delayed shutdown to allow ongoing requests to complete.
//
// This is problematic, because if Node exits first, the CopyToAsync code in ConditionalProxyMiddleware
// will experience a read fault, and logs a huge load of errors. Fortunately, since the Node process is
// already set up to shut itself down if it detects the .NET process is terminated, all we have to do is
// ignore the SIGINT. The Node process will then terminate automatically after the .NET process does.
//
// A better solution would be to have WebpackDevMiddleware listen for SIGINT and gracefully close any
// ongoing EventSource connections before letting the Node process exit, independently of the .NET
// process exiting. However, doing this well in general is very nontrivial (see all the discussion at
// https://github.com/nodejs/node/issues/2642).
process.on('SIGINT', function () {
console.log('Received SIGINT. Waiting for .NET process to exit...');
});
}
} }
exports.exitWhenParentExits = exitWhenParentExits; exports.exitWhenParentExits = exitWhenParentExits;
function processExists(pid) { function processExists(pid) {
@@ -270,11 +338,13 @@
} }
/***/ }, /***/ }),
/* 8 */ /* 8 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
exports.__esModule = true;
var events_1 = __webpack_require__(9); var events_1 = __webpack_require__(9);
var VirtualConnection_1 = __webpack_require__(10); var VirtualConnection_1 = __webpack_require__(10);
// Keep this in sync with the equivalent constant in the .NET code. Both sides split up their transmissions into frames with this max length, // Keep this in sync with the equivalent constant in the .NET code. Both sides split up their transmissions into frames with this max length,
@@ -300,7 +370,7 @@
/** /**
* Tracks the 'virtual connections' associated with a single physical socket connection. * Tracks the 'virtual connections' associated with a single physical socket connection.
*/ */
var VirtualConnectionsCollection = (function () { var VirtualConnectionsCollection = /** @class */ (function () {
function VirtualConnectionsCollection(_socket, _onVirtualConnectionCallback) { function VirtualConnectionsCollection(_socket, _onVirtualConnectionCallback) {
var _this = this; var _this = this;
this._socket = _socket; this._socket = _socket;
@@ -382,7 +452,7 @@
newVirtualConnection.on('finish', function () { newVirtualConnection.on('finish', function () {
// The virtual connection was closed locally. Clean up locally, and notify the remote that we're done. // The virtual connection was closed locally. Clean up locally, and notify the remote that we're done.
_this._onVirtualConnectionWasClosed(header.connectionIdString); _this._onVirtualConnectionWasClosed(header.connectionIdString);
_this._sendFrame(header.connectionIdBinary, new Buffer(0)); _this._sendFrame(header.connectionIdBinary, Buffer.alloc(0));
}); });
this._virtualConnections[header.connectionIdString] = newVirtualConnection; this._virtualConnections[header.connectionIdString] = newVirtualConnection;
this._onVirtualConnectionCallback(newVirtualConnection); this._onVirtualConnectionCallback(newVirtualConnection);
@@ -444,7 +514,7 @@
* Sends a number serialized in the correct format for .NET to receive as a System.Int32 * Sends a number serialized in the correct format for .NET to receive as a System.Int32
*/ */
VirtualConnectionsCollection.prototype._sendInt32LE = function (value, callback) { VirtualConnectionsCollection.prototype._sendInt32LE = function (value, callback) {
var buf = new Buffer(4); var buf = Buffer.alloc(4);
buf.writeInt32LE(value, 0); buf.writeInt32LE(value, 0);
this._socket.write(buf, callback); this._socket.write(buf, callback);
}; };
@@ -457,27 +527,37 @@
}()); }());
/***/ }, /***/ }),
/* 9 */ /* 9 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("events"); module.exports = require("events");
/***/ }, /***/ }),
/* 10 */ /* 10 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
}
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; } function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}; };
})();
exports.__esModule = true;
var stream_1 = __webpack_require__(11); var stream_1 = __webpack_require__(11);
/** /**
* Represents a virtual connection. Multiple virtual connections may be multiplexed over a single physical socket connection. * Represents a virtual connection. Multiple virtual connections may be multiplexed over a single physical socket connection.
*/ */
var VirtualConnection = (function (_super) { var VirtualConnection = /** @class */ (function (_super) {
__extends(VirtualConnection, _super); __extends(VirtualConnection, _super);
function VirtualConnection(_beginWriteCallback) { function VirtualConnection(_beginWriteCallback) {
var _this = _super.call(this) || this; var _this = _super.call(this) || this;
@@ -497,7 +577,7 @@
}; };
VirtualConnection.prototype._write = function (chunk, encodingIfString, callback) { VirtualConnection.prototype._write = function (chunk, encodingIfString, callback) {
if (typeof chunk === 'string') { if (typeof chunk === 'string') {
chunk = new Buffer(chunk, encodingIfString); chunk = Buffer.from(chunk, encodingIfString);
} }
this._beginWriteCallback(chunk, callback); this._beginWriteCallback(chunk, callback);
}; };
@@ -514,11 +594,11 @@
exports.VirtualConnection = VirtualConnection; exports.VirtualConnection = VirtualConnection;
/***/ }, /***/ }),
/* 11 */ /* 11 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("stream"); module.exports = require("stream");
/***/ } /***/ })
/******/ ]))); /******/ ])));

View File

@@ -27,7 +27,7 @@ export class VirtualConnection extends Duplex {
public _write(chunk: Buffer | string, encodingIfString: string, callback: EndWriteCallback) { public _write(chunk: Buffer | string, encodingIfString: string, callback: EndWriteCallback) {
if (typeof chunk === 'string') { if (typeof chunk === 'string') {
chunk = new Buffer(chunk as string, encodingIfString); chunk = Buffer.from(chunk as string, encodingIfString);
} }
this._beginWriteCallback(chunk as Buffer, callback); this._beginWriteCallback(chunk as Buffer, callback);

View File

@@ -113,7 +113,7 @@ class VirtualConnectionsCollection {
newVirtualConnection.on('finish', () => { newVirtualConnection.on('finish', () => {
// The virtual connection was closed locally. Clean up locally, and notify the remote that we're done. // The virtual connection was closed locally. Clean up locally, and notify the remote that we're done.
this._onVirtualConnectionWasClosed(header.connectionIdString); this._onVirtualConnectionWasClosed(header.connectionIdString);
this._sendFrame(header.connectionIdBinary, new Buffer(0)); this._sendFrame(header.connectionIdBinary, Buffer.alloc(0));
}); });
this._virtualConnections[header.connectionIdString] = newVirtualConnection; this._virtualConnections[header.connectionIdString] = newVirtualConnection;
@@ -180,7 +180,7 @@ class VirtualConnectionsCollection {
* Sends a number serialized in the correct format for .NET to receive as a System.Int32 * Sends a number serialized in the correct format for .NET to receive as a System.Int32
*/ */
private _sendInt32LE(value: number, callback?: EndWriteCallback) { private _sendInt32LE(value: number, callback?: EndWriteCallback) {
const buf = new Buffer(4); const buf = Buffer.alloc(4);
buf.writeInt32LE(value, 0); buf.writeInt32LE(value, 0);
this._socket.write(buf, callback); this._socket.write(buf, callback);
} }

File diff suppressed because it is too large Load Diff

View File

@@ -5,14 +5,15 @@
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"build": "./node_modules/.bin/webpack" "build": "webpack --mode production"
}, },
"author": "Microsoft", "author": "Microsoft",
"license": "Apache-2.0", "license": "Apache-2.0",
"devDependencies": { "devDependencies": {
"@types/node": "^6.0.42", "@types/node": "^10.9.2",
"ts-loader": "^0.8.2", "ts-loader": "^4.5.0",
"typescript": "^2.0.0", "typescript": "^3.0.1",
"webpack": "^1.13.1" "webpack": "^4.17.1",
"webpack-cli": "^3.1.0"
} }
} }

View File

@@ -1,12 +1,13 @@
const path = require('path');
module.exports = { module.exports = {
target: 'node', target: 'node',
externals: ['fs', 'net', 'events', 'readline', 'stream'],
resolve: { resolve: {
extensions: [ '.ts' ] extensions: [ '.ts' ]
}, },
module: { module: {
loaders: [ rules: [
{ test: /\.ts$/, loader: 'ts-loader' }, { test: /\.ts$/, use: 'ts-loader' },
] ]
}, },
entry: { entry: {
@@ -14,7 +15,10 @@ module.exports = {
}, },
output: { output: {
libraryTarget: 'commonjs', libraryTarget: 'commonjs',
path: './Content/Node', path: path.join(__dirname, 'Content', 'Node'),
filename: '[name].js' filename: '[name].js'
},
optimization: {
minimize: false
} }
}; };

View File

@@ -1,63 +1,115 @@
(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap (function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache /******/ // The module cache
/******/ var installedModules = {}; /******/ var installedModules = {};
/******/
/******/ // The require function /******/ // The require function
/******/ function __webpack_require__(moduleId) { /******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache /******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) /******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports; /******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache) /******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = { /******/ var module = installedModules[moduleId] = {
/******/ exports: {}, /******/ i: moduleId,
/******/ id: moduleId, /******/ l: false,
/******/ loaded: false /******/ exports: {}
/******/ }; /******/ };
/******/
/******/ // Execute the module function /******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded /******/ // Flag the module as loaded
/******/ module.loaded = true; /******/ module.l = true;
/******/
/******/ // Return the exports of the module /******/ // Return the exports of the module
/******/ return module.exports; /******/ return module.exports;
/******/ } /******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__) /******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules; /******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache /******/ // expose the module cache
/******/ __webpack_require__.c = installedModules; /******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__ /******/ // __webpack_public_path__
/******/ __webpack_require__.p = ""; /******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports /******/ // Load entry module and return exports
/******/ return __webpack_require__(0); /******/ return __webpack_require__(__webpack_require__.s = 1);
/******/ }) /******/ })
/************************************************************************/ /************************************************************************/
/******/ ([ /******/ ([
/* 0 */ /* 0 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports) {
module.exports = __webpack_require__(1); module.exports = require("path");
/***/ }),
/***/ },
/* 1 */ /* 1 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(2);
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
exports.__esModule = true;
// Limit dependencies to core Node modules. This means the code in this file has to be very low-level and unattractive, // Limit dependencies to core Node modules. This means the code in this file has to be very low-level and unattractive,
// but simplifies things for the consumer of this module. // but simplifies things for the consumer of this module.
__webpack_require__(2); __webpack_require__(3);
__webpack_require__(4); __webpack_require__(4);
var http = __webpack_require__(5); var http = __webpack_require__(5);
var path = __webpack_require__(3); var path = __webpack_require__(0);
var ArgsUtil_1 = __webpack_require__(6); var ArgsUtil_1 = __webpack_require__(6);
var ExitWhenParentExits_1 = __webpack_require__(7); var ExitWhenParentExits_1 = __webpack_require__(7);
// Webpack doesn't support dynamic requires for files not present at compile time, so grab a direct // Webpack doesn't support dynamic requires for files not present at compile time, so grab a direct
@@ -121,8 +173,9 @@
var parsedArgs = ArgsUtil_1.parseArgs(process.argv); var parsedArgs = ArgsUtil_1.parseArgs(process.argv);
var requestedPortOrZero = parsedArgs.port || 0; // 0 means 'let the OS decide' var requestedPortOrZero = parsedArgs.port || 0; // 0 means 'let the OS decide'
server.listen(requestedPortOrZero, 'localhost', function () { server.listen(requestedPortOrZero, 'localhost', function () {
var addressInfo = server.address();
// Signal to HttpNodeHost which loopback IP address (IPv4 or IPv6) and port it should make its HTTP connections on // Signal to HttpNodeHost which loopback IP address (IPv4 or IPv6) and port it should make its HTTP connections on
console.log('[Microsoft.AspNetCore.NodeServices.HttpNodeHost:Listening on {' + server.address().address + '} port ' + server.address().port + '\]'); console.log('[Microsoft.AspNetCore.NodeServices.HttpNodeHost:Listening on {' + addressInfo.address + '} port ' + addressInfo.port + '\]');
// Signal to the NodeServices base class that we're ready to accept invocations // Signal to the NodeServices base class that we're ready to accept invocations
console.log('[Microsoft.AspNetCore.NodeServices:Listening]'); console.log('[Microsoft.AspNetCore.NodeServices:Listening]');
}); });
@@ -141,12 +194,14 @@
} }
/***/ }, /***/ }),
/* 2 */ /* 3 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
var path = __webpack_require__(3);
exports.__esModule = true;
var path = __webpack_require__(0);
var startsWith = function (str, prefix) { return str.substring(0, prefix.length) === prefix; }; var startsWith = function (str, prefix) { return str.substring(0, prefix.length) === prefix; };
var appRootDir = process.cwd(); var appRootDir = process.cwd();
function patchedLStat(pathToStatLong, fsReqWrap) { function patchedLStat(pathToStatLong, fsReqWrap) {
@@ -189,19 +244,15 @@
} }
} }
catch (ex) { catch (ex) {
// If some future version of Node throws (e.g., to prevent use of process.binding()),
// don't apply the patch, but still let the application run.
} }
} }
/***/ }, /***/ }),
/* 3 */
/***/ function(module, exports) {
module.exports = require("path");
/***/ },
/* 4 */ /* 4 */
/***/ function(module, exports) { /***/ (function(module, exports) {
// When Node writes to stdout/strerr, we capture that and convert the lines into calls on the // When Node writes to stdout/strerr, we capture that and convert the lines into calls on the
// active .NET ILogger. But by default, stdout/stderr don't have any way of distinguishing // active .NET ILogger. But by default, stdout/stderr don't have any way of distinguishing
@@ -240,17 +291,19 @@
} }
/***/ }, /***/ }),
/* 5 */ /* 5 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("http"); module.exports = require("http");
/***/ }, /***/ }),
/* 6 */ /* 6 */
/***/ function(module, exports) { /***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
exports.__esModule = true;
function parseArgs(args) { function parseArgs(args) {
// Very simplistic parsing which is sufficient for the cases needed. We don't want to bring in any external // Very simplistic parsing which is sufficient for the cases needed. We don't want to bring in any external
// dependencies (such as an args-parsing library) to this file. // dependencies (such as an args-parsing library) to this file.
@@ -272,9 +325,11 @@
exports.parseArgs = parseArgs; exports.parseArgs = parseArgs;
/***/ }, /***/ }),
/* 7 */ /* 7 */
/***/ function(module, exports) { /***/ (function(module, exports, __webpack_require__) {
"use strict";
/* /*
In general, we want the Node child processes to be terminated as soon as the parent .NET processes exit, In general, we want the Node child processes to be terminated as soon as the parent .NET processes exit,
@@ -309,7 +364,7 @@
Of these, the only cross-platform approach that is actually documented as a valid strategy is simply polling Of these, the only cross-platform approach that is actually documented as a valid strategy is simply polling
to check whether the parent PID is still running. So that's what we do here. to check whether the parent PID is still running. So that's what we do here.
*/ */
"use strict"; exports.__esModule = true;
var pollIntervalMs = 1000; var pollIntervalMs = 1000;
function exitWhenParentExits(parentPid, ignoreSigint) { function exitWhenParentExits(parentPid, ignoreSigint) {
setInterval(function () { setInterval(function () {
@@ -357,5 +412,5 @@
} }
/***/ } /***/ })
/******/ ]))); /******/ ])));

View File

@@ -6,6 +6,7 @@ import * as http from 'http';
import * as path from 'path'; import * as path from 'path';
import { parseArgs } from './Util/ArgsUtil'; import { parseArgs } from './Util/ArgsUtil';
import { exitWhenParentExits } from './Util/ExitWhenParentExits'; import { exitWhenParentExits } from './Util/ExitWhenParentExits';
import { AddressInfo } from 'net';
// Webpack doesn't support dynamic requires for files not present at compile time, so grab a direct // Webpack doesn't support dynamic requires for files not present at compile time, so grab a direct
// reference to Node's runtime 'require' function. // reference to Node's runtime 'require' function.
@@ -70,8 +71,10 @@ const server = http.createServer((req, res) => {
const parsedArgs = parseArgs(process.argv); const parsedArgs = parseArgs(process.argv);
const requestedPortOrZero = parsedArgs.port || 0; // 0 means 'let the OS decide' const requestedPortOrZero = parsedArgs.port || 0; // 0 means 'let the OS decide'
server.listen(requestedPortOrZero, 'localhost', function () { server.listen(requestedPortOrZero, 'localhost', function () {
const addressInfo = server.address() as AddressInfo;
// Signal to HttpNodeHost which loopback IP address (IPv4 or IPv6) and port it should make its HTTP connections on // Signal to HttpNodeHost which loopback IP address (IPv4 or IPv6) and port it should make its HTTP connections on
console.log('[Microsoft.AspNetCore.NodeServices.HttpNodeHost:Listening on {' + server.address().address + '} port ' + server.address().port + '\]'); console.log('[Microsoft.AspNetCore.NodeServices.HttpNodeHost:Listening on {' + addressInfo.address + '} port ' + addressInfo.port + '\]');
// Signal to the NodeServices base class that we're ready to accept invocations // Signal to the NodeServices base class that we're ready to accept invocations
console.log('[Microsoft.AspNetCore.NodeServices:Listening]'); console.log('[Microsoft.AspNetCore.NodeServices:Listening]');

File diff suppressed because it is too large Load Diff

View File

@@ -5,14 +5,15 @@
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"build": "./node_modules/.bin/webpack" "build": "webpack --mode production"
}, },
"author": "Microsoft", "author": "Microsoft",
"license": "Apache-2.0", "license": "Apache-2.0",
"devDependencies": { "devDependencies": {
"@types/node": "^6.0.42", "@types/node": "^10.9.2",
"ts-loader": "^0.8.2", "ts-loader": "^4.5.0",
"typescript": "^2.0.0", "typescript": "^3.0.1",
"webpack": "^1.13.1" "webpack": "^4.17.1",
"webpack-cli": "^3.1.0"
} }
} }

View File

@@ -1,12 +1,13 @@
const path = require('path');
module.exports = { module.exports = {
target: 'node', target: 'node',
externals: ['fs', 'net', 'events', 'readline', 'stream'],
resolve: { resolve: {
extensions: [ '.ts' ] extensions: [ '.ts' ]
}, },
module: { module: {
loaders: [ rules: [
{ test: /\.ts$/, loader: 'ts-loader' }, { test: /\.ts$/, use: 'ts-loader' },
] ]
}, },
entry: { entry: {
@@ -14,7 +15,10 @@ module.exports = {
}, },
output: { output: {
libraryTarget: 'commonjs', libraryTarget: 'commonjs',
path: './Content/Node', path: path.join(__dirname, 'Content', 'Node'),
filename: '[name].js' filename: '[name].js'
},
optimization: {
minimize: false
} }
}; };

View File

@@ -1,57 +1,103 @@
(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap (function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache /******/ // The module cache
/******/ var installedModules = {}; /******/ var installedModules = {};
/******/
/******/ // The require function /******/ // The require function
/******/ function __webpack_require__(moduleId) { /******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache /******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) /******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports; /******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache) /******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = { /******/ var module = installedModules[moduleId] = {
/******/ exports: {}, /******/ i: moduleId,
/******/ id: moduleId, /******/ l: false,
/******/ loaded: false /******/ exports: {}
/******/ }; /******/ };
/******/
/******/ // Execute the module function /******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded /******/ // Flag the module as loaded
/******/ module.loaded = true; /******/ module.l = true;
/******/
/******/ // Return the exports of the module /******/ // Return the exports of the module
/******/ return module.exports; /******/ return module.exports;
/******/ } /******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__) /******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules; /******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache /******/ // expose the module cache
/******/ __webpack_require__.c = installedModules; /******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__ /******/ // __webpack_public_path__
/******/ __webpack_require__.p = ""; /******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports /******/ // Load entry module and return exports
/******/ return __webpack_require__(0); /******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ }) /******/ })
/************************************************************************/ /************************************************************************/
/******/ ([ /******/ ([
/* 0 */ /* 0 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(1); module.exports = __webpack_require__(1);
/***/ }, /***/ }),
/* 1 */ /* 1 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
exports.__esModule = true;
var path = __webpack_require__(2); var path = __webpack_require__(2);
// Separate declaration and export just to add type checking on function signature // Separate declaration and export just to add type checking on function signature
exports.renderToString = renderToStringImpl; exports.renderToString = renderToStringImpl;
@@ -125,7 +171,7 @@
} }
else if (typeof foundBootModule !== 'function') { else if (typeof foundBootModule !== 'function') {
// TypeScript-style default export // TypeScript-style default export
renderToStringFunc = foundBootModule.default; renderToStringFunc = foundBootModule["default"];
} }
else { else {
// Native default export // Native default export
@@ -162,17 +208,17 @@
} }
/***/ }, /***/ }),
/* 2 */ /* 2 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("path"); module.exports = require("path");
/***/ }, /***/ }),
/* 3 */ /* 3 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("aspnet-prerendering"); module.exports = require("aspnet-prerendering");
/***/ } /***/ })
/******/ ]))); /******/ ])));

View File

@@ -1,65 +1,112 @@
(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap (function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache /******/ // The module cache
/******/ var installedModules = {}; /******/ var installedModules = {};
/******/
/******/ // The require function /******/ // The require function
/******/ function __webpack_require__(moduleId) { /******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache /******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) /******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports; /******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache) /******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = { /******/ var module = installedModules[moduleId] = {
/******/ exports: {}, /******/ i: moduleId,
/******/ id: moduleId, /******/ l: false,
/******/ loaded: false /******/ exports: {}
/******/ }; /******/ };
/******/
/******/ // Execute the module function /******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded /******/ // Flag the module as loaded
/******/ module.loaded = true; /******/ module.l = true;
/******/
/******/ // Return the exports of the module /******/ // Return the exports of the module
/******/ return module.exports; /******/ return module.exports;
/******/ } /******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__) /******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules; /******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache /******/ // expose the module cache
/******/ __webpack_require__.c = installedModules; /******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__ /******/ // __webpack_public_path__
/******/ __webpack_require__.p = ""; /******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports /******/ // Load entry module and return exports
/******/ return __webpack_require__(0); /******/ return __webpack_require__(__webpack_require__.s = 4);
/******/ }) /******/ })
/************************************************************************/ /************************************************************************/
/******/ ([ /******/ ([
/* 0 */ /* 0 */,
/***/ function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(4);
/***/ },
/* 1 */, /* 1 */,
/* 2 */, /* 2 */,
/* 3 */, /* 3 */,
/* 4 */ /* 4 */
/***/ function(module, exports, __webpack_require__) { /***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(5);
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict"; "use strict";
exports.__esModule = true;
// Pass through the invocation to the 'aspnet-webpack' package, verifying that it can be loaded // Pass through the invocation to the 'aspnet-webpack' package, verifying that it can be loaded
function createWebpackDevServer(callback) { function createWebpackDevServer(callback) {
var aspNetWebpack; var aspNetWebpack;
try { try {
aspNetWebpack = __webpack_require__(5); aspNetWebpack = __webpack_require__(6);
} }
catch (ex) { catch (ex) {
// Developers sometimes have trouble with badly-configured Node installations, where it's unable // Developers sometimes have trouble with badly-configured Node installations, where it's unable
@@ -76,11 +123,11 @@
exports.createWebpackDevServer = createWebpackDevServer; exports.createWebpackDevServer = createWebpackDevServer;
/***/ }, /***/ }),
/* 5 */ /* 6 */
/***/ function(module, exports) { /***/ (function(module, exports) {
module.exports = require("aspnet-webpack"); module.exports = require("aspnet-webpack");
/***/ } /***/ })
/******/ ]))); /******/ ])));

View File

@@ -1,7 +1,5 @@
/// <reference path="../npm/aspnet-prerendering/src/PrerenderingInterfaces.d.ts" /> import { BootModuleInfo, RenderToStringFunc, RenderToStringCallback } from '../npm/aspnet-prerendering/src/PrerenderingInterfaces';
import * as url from 'url';
import * as path from 'path'; import * as path from 'path';
import * as fs from 'fs';
declare var __non_webpack_require__; declare var __non_webpack_require__;
// Separate declaration and export just to add type checking on function signature // Separate declaration and export just to add type checking on function signature

File diff suppressed because it is too large Load Diff

View File

@@ -5,14 +5,15 @@
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"build": "./node_modules/.bin/webpack" "build": "webpack --mode production"
}, },
"author": "Microsoft", "author": "Microsoft",
"license": "Apache-2.0", "license": "Apache-2.0",
"devDependencies": { "devDependencies": {
"@types/node": "^6.0.42", "@types/node": "^10.9.2",
"ts-loader": "^0.8.2", "ts-loader": "^4.5.0",
"typescript": "^2.0.0", "typescript": "^3.0.1",
"webpack": "^1.13.1" "webpack": "^4.17.1",
"webpack-cli": "^3.1.0"
} }
} }

View File

@@ -1,3 +1,5 @@
const path = require('path');
module.exports = { module.exports = {
target: 'node', target: 'node',
externals: [ externals: [
@@ -10,8 +12,8 @@ module.exports = {
extensions: [ '.ts' ] extensions: [ '.ts' ]
}, },
module: { module: {
loaders: [ rules: [
{ test: /\.ts$/, loader: 'ts-loader' }, { test: /\.ts$/, use: 'ts-loader' },
] ]
}, },
entry: { entry: {
@@ -20,7 +22,10 @@ module.exports = {
}, },
output: { output: {
libraryTarget: 'commonjs', libraryTarget: 'commonjs',
path: './Content/Node', path: path.join(__dirname, 'Content', 'Node'),
filename: '[name].js' filename: '[name].js'
},
optimization: {
minimize: false
} }
}; };