Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes requested on PR review for node version validator #12976 #1

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Gruntfile.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require('./src/babel-register');
require('./src/setup_node_env');

module.exports = function (grunt) {
// set the config once before calling load-grunt-config
Expand Down
2 changes: 1 addition & 1 deletion packages/kbn-plugin-helpers/lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ function babelRegister() {

try {
// add support for moved babel-register source: https://github.com/elastic/kibana/pull/13973
require(resolve(plugin.kibanaRoot, 'src/babel-register'));
require(resolve(plugin.kibanaRoot, 'src/setup_node_env/babel_register'));
} catch (error) {
if (error.code === 'MODULE_NOT_FOUND') {
require(resolve(plugin.kibanaRoot, 'src/optimize/babel/register'));
Expand Down
2 changes: 1 addition & 1 deletion scripts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ node scripts/{{script name}} --help

This directory is excluded from the build and tools within it should help users discover their capabilities. Each script in this directory must:

- require `src/babel-register` to bootstrap babel
- require `src/setup_node_env` to bootstrap NodeJS environment
- call out to source code in the [`src`](../src) or [`packages`](../packages) directories
- react to the `--help` flag
- run everywhere OR check and fail fast when a required OS or toolchain is not available
Expand Down
2 changes: 1 addition & 1 deletion scripts/build.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/dev/build/cli');
2 changes: 1 addition & 1 deletion scripts/docs.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/docs/cli');
2 changes: 1 addition & 1 deletion scripts/es_archiver.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/es_archiver/cli');
2 changes: 1 addition & 1 deletion scripts/eslint.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/dev/run_eslint');
2 changes: 1 addition & 1 deletion scripts/functional_test_runner.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/functional_test_runner/cli');
2 changes: 1 addition & 1 deletion scripts/functional_tests.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../packages/kbn-test').runTestsCli([
require.resolve('../test/functional/config.js'),
require.resolve('../test/api_integration/config.js'),
Expand Down
2 changes: 1 addition & 1 deletion scripts/functional_tests_server.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../packages/kbn-test').startServersCli(
require.resolve('../test/functional/config.js'),
);
6 changes: 4 additions & 2 deletions scripts/jest.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/* eslint-disable no-var */

// # Run Jest tests
//
// All args will be forwarded directly to Jest, e.g. to watch tests run:
Expand All @@ -10,8 +12,8 @@
//
// See all cli options in https://facebook.github.io/jest/docs/cli.html

const { resolve } = require('path');
var resolve = require('path').resolve;
process.argv.push('--config', resolve(__dirname, '../src/dev/jest/config.js'));

require('../src/babel-register');
require('../src/setup_node_env');
require('../src/dev/jest/cli');
6 changes: 4 additions & 2 deletions scripts/jest_integration.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/* eslint-disable no-var */

// # Run Jest integration tests
//
// All args will be forwarded directly to Jest, e.g. to watch tests run:
Expand All @@ -10,8 +12,8 @@
//
// See all cli options in https://facebook.github.io/jest/docs/cli.html

const { resolve } = require('path');
var resolve = require('path').resolve;
process.argv.push('--config', resolve(__dirname, '../src/dev/jest/config.integration.js'));

require('../src/babel-register');
require('../src/setup_node_env');
require('../src/dev/jest/cli');
2 changes: 1 addition & 1 deletion scripts/kibana.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/cli/cli');
2 changes: 1 addition & 1 deletion scripts/kibana_keystore.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/cli_keystore');
2 changes: 1 addition & 1 deletion scripts/kibana_plugin.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/cli_plugin/cli');
2 changes: 1 addition & 1 deletion scripts/mocha.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/dev/mocha').runMochaCli();
2 changes: 1 addition & 1 deletion scripts/notice.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/dev/notice/cli');
2 changes: 1 addition & 1 deletion scripts/precommit_hook.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../src/babel-register');
require('../src/setup_node_env');
require('../src/dev/run_precommit_hook');
15 changes: 0 additions & 15 deletions src/babel-register/index.js

This file was deleted.

12 changes: 1 addition & 11 deletions src/cli/cli.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,11 @@
import _ from 'lodash';
import { pkg, NodeVersion } from '../utils';
import { pkg } from '../utils';
import Command from './command';
import serveCommand from './serve/serve';

const argv = process.env.kbnWorkerArgv ? JSON.parse(process.env.kbnWorkerArgv) : process.argv.slice();
const program = new Command('bin/kibana');

// Validates current the NodeJS version compatibility when Kibana starts.
NodeVersion.runValidator(() => {
// Action to apply when validation fails: error report + exit.
console.error(
`Kibana does not support the current Node.js version ${NodeVersion.getCurrentVersion()}. `
+ `Please use Node.js ${NodeVersion.getRequiredVersion()}.`
);
process.exit(1);
});

program
.version(pkg.version)
.description(
Expand Down
2 changes: 1 addition & 1 deletion src/cli/index.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../babel-register');
require('../setup_node_env');
require('./cli');
2 changes: 1 addition & 1 deletion src/cli_keystore/index.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../babel-register');
require('../setup_node_env');
require('./cli_keystore');
2 changes: 1 addition & 1 deletion src/cli_plugin/index.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../babel-register');
require('../setup_node_env');
require('./cli');
2 changes: 1 addition & 1 deletion src/dev/jest/setup/babel_polyfill.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Note: In theory importing the polyfill should not be needed, as Babel should
// include the necessary polyfills when using `babel-preset-env`, but for some
// reason it did not work. See https://github.com/elastic/kibana/issues/14506
import '../../../babel-register/polyfill';
import '../../../setup_node_env/babel_register/polyfill';
2 changes: 1 addition & 1 deletion src/dev/jest/ts_transform.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
require('../../babel-register');
require('../../setup_node_env');
module.exports = require('./ts_transform.ts');
4 changes: 2 additions & 2 deletions src/dev/mocha/run_mocha_cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ export function runMochaCli() {
// check that we aren't leaking any globals
process.argv.push('--check-leaks');

// ensure that mocha requires the babel-register script
process.argv.push('--require', require.resolve('../../babel-register'));
// ensure that mocha requires the setup_node_env script
process.argv.push('--require', require.resolve('../../setup_node_env'));

// set default test timeout
if (opts.timeout == null && !opts['no-timeouts']) {
Expand Down
4 changes: 2 additions & 2 deletions src/dev/mocha/server_junit_reporter.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// when the reporter is loaded by mocha in child process it might be before babel-register
require('../../babel-register');
// when the reporter is loaded by mocha in child process it might be before setup_node_env
require('../../setup_node_env');

module.exports = require('./auto_junit_reporter').createAutoJunitReporter({
reportName: 'Server Mocha Tests',
Expand Down
4 changes: 2 additions & 2 deletions src/server/config/__tests__/deprecation_warnings.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { spawn } from 'child_process';
import expect from 'expect.js';

const RUN_KBN_SERVER_STARTUP = require.resolve('./fixtures/run_kbn_server_startup');
const BABEL_REGISTER = require.resolve('../../../babel-register');
const SETUP_NODE_ENV = require.resolve('../../../setup_node_env');
const SECOND = 1000;

describe('config/deprecation warnings mixin', function () {
Expand All @@ -14,7 +14,7 @@ describe('config/deprecation warnings mixin', function () {

before(() => new Promise((resolve, reject) => {
proc = spawn(process.execPath, [
'-r', BABEL_REGISTER,
'-r', SETUP_NODE_ENV,
RUN_KBN_SERVER_STARTUP
], {
stdio: ['ignore', 'pipe', 'pipe'],
Expand Down
5 changes: 5 additions & 0 deletions src/setup_node_env/babel_register/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// register and polyfill need to happen in this
// order and in separate files. Checkout each file
// for a much more detailed explaination
require('./register');
require('./polyfill');
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const { resolve } = require('path');
// this must happen before `require('babel-register')` and can't be changed
// once the module has been loaded
if (!process.env.BABEL_CACHE_PATH) {
process.env.BABEL_CACHE_PATH = resolve(__dirname, '../../optimize/.babelcache.json');
process.env.BABEL_CACHE_PATH = resolve(__dirname, '../../../optimize/.babelcache.json');
}

// paths that babel-register should ignore
Expand Down Expand Up @@ -32,7 +32,7 @@ if (global.__BUILT_WITH_BABEL__) {
// We still need babel-register for plugins though, we've been
// building their server code at require-time since version 4.2
// TODO: the plugin install process could transpile plugin server code...
ignore.push(resolve(__dirname, '../../src'));
ignore.push(resolve(__dirname, '../../../src'));
}

// modifies all future calls to require() to automatically
Expand Down
3 changes: 3 additions & 0 deletions src/setup_node_env/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
require('./node_version_validator');
require('./ts_node_register');
require('./babel_register');
15 changes: 15 additions & 0 deletions src/setup_node_env/node_version_validator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/* eslint-disable no-var */

// Note: This is written in ES5 so we can run this before anything else
// and gives support for older NodeJS versions
var NodeVersion = require('../utils/node_version').NodeVersion;

// Validates current the NodeJS version compatibility when Kibana starts.
NodeVersion.runValidator(function () {
// Action to apply when validation fails: error report + exit.
console.error(
`Kibana does not support the current Node.js version ${NodeVersion.getCurrentVersion()}. `
+ `Please use Node.js ${NodeVersion.getRequiredVersion()}.`
);
process.exit(1);
});
12 changes: 12 additions & 0 deletions src/setup_node_env/ts_node_register.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Unless we are running a prebuilt/distributable version of
// Kibana, automatically transpile typescript to js.
//
// NOTE: It should run before babel.
//
if (!global.__BUILT_WITH_BABEL__) {
const { resolve } = require('path');
require('ts-node').register({
transpileOnly: true,
cacheDirectory: resolve(__dirname, '../../../optimize/.cache/ts-node')
});
}
Loading