Update ReactGrid sample to use newer server-side rendering APIs

This commit is contained in:
SteveSandersonMS
2016-02-10 12:13:24 -08:00
parent 558aa31542
commit 71cb3abc13
9 changed files with 145 additions and 96 deletions

View File

@@ -8,17 +8,26 @@
// TODO: Consider some general method for checking if you have all the necessary NPM modules installed,
// and if not, giving an error that tells you what command to execute to install the missing ones.
var fs = require('fs');
var ts = require('ntypescript');
var ts = requireIfInstalled('ntypescript');
var babelCore = require('babel-core');
var resolveBabelRc = require('babel-loader/lib/resolve-rc'); // If this ever breaks, we can easily scan up the directory hierarchy ourselves
var origJsLoader = require.extensions['.js'];
function resolveBabelOptions(relativeToFilename) {
var babelRcText = resolveBabelRc(relativeToFilename);
return babelRcText ? JSON.parse(babelRcText) : {};
try {
return babelRcText ? JSON.parse(babelRcText) : {};
} catch (ex) {
ex.message = 'Error while parsing babelrc JSON: ' + ex.message;
throw ex;
}
}
function loadViaTypeScript(module, filename) {
if (!ts) {
throw new Error('Can\'t load .ts/.tsx files because the \'ntypescript\' package isn\'t installed.\nModule requested: ' + module);
}
// First perform a minimal transpilation from TS code to ES2015. This is very fast (doesn't involve type checking)
// and is unlikely to need any special compiler options
var src = fs.readFileSync(filename, 'utf8');
@@ -45,6 +54,19 @@ function loadViaBabel(module, filename) {
}
}
function requireIfInstalled(packageName) {
return isPackageInstalled(packageName) ? require(packageName) : null;
}
function isPackageInstalled(packageName) {
try {
require.resolve(packageName);
return true;
} catch(e) {
return false;
}
}
function register() {
require.extensions['.js'] = loadViaBabel;
require.extensions['.jsx'] = loadViaBabel;