kibana/x-pack/plugins/apm/scripts/precommit.js
Dario Gieselaar 821aeb1ff4
[APM] Typed client-side routing (#104274)
* [APM] @kbn/typed-router-config

* [APM] typed route config

* Breadcrumbs, wildcards

* Migrate settings, home

* Migrate part of service detail page

* Migrate remaining routes, tests

* Set maxWorkers for precommit script to 4

* Add jest types to tsconfigs

* Make sure transaction distribution data is fetched

* Fix typescript errors

* Remove usage of react-router's useParams

* Add route() utility function

* Don't use ApmServiceContext for alert flyouts

* Don't add onClick handler for breadcrumb

* Clarify ts-ignore

* Remove unused things

* Update documentation

* Use useServiceName() in ServiceMap component
2021-07-15 11:30:59 +02:00

92 lines
2.3 KiB
JavaScript

/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
/* eslint-disable no-console*/
/* eslint-disable import/no-extraneous-dependencies*/
const execa = require('execa');
const Listr = require('listr');
const { resolve } = require('path');
const { argv } = require('yargs');
const root = resolve(__dirname, '../../../..');
const execaOpts = { cwd: root, stderr: 'pipe' };
const useOptimizedTsConfig = !!argv.optimizeTs;
const tsconfig = useOptimizedTsConfig
? resolve(root, 'tsconfig.json')
: resolve(root, 'x-pack/plugins/apm/tsconfig.json');
const testTsconfig = resolve(root, 'x-pack/test/tsconfig.json');
const tasks = new Listr(
[
{
title: 'Lint',
task: () => execa('node', [resolve(__dirname, 'eslint.js')], execaOpts),
},
{
title: 'Typescript',
task: () =>
execa(
'node',
[
resolve(
__dirname,
useOptimizedTsConfig
? './optimize-tsconfig.js'
: './unoptimize-tsconfig.js'
),
],
execaOpts
).then(() =>
Promise.all([
execa(
require.resolve('typescript/bin/tsc'),
['--project', tsconfig, '--pretty', '--noEmit'],
execaOpts
),
execa(
require.resolve('typescript/bin/tsc'),
['--project', testTsconfig, '--pretty', '--noEmit'],
execaOpts
),
])
),
},
{
title: 'Jest',
task: () =>
execa(
'node',
[
resolve(__dirname, './jest.js'),
'--reporters',
resolve(__dirname, '../../../../node_modules/jest-silent-reporter'),
'--collect-coverage',
'false',
'--maxWorkers',
4,
],
execaOpts
),
},
],
{ exitOnError: true, concurrent: false }
);
tasks.run().catch((error) => {
// from src/dev/typescript/exec_in_projects.ts
process.exitCode = 1;
const errors = error.errors || [error];
for (const e of errors) {
process.stderr.write(e.stderr || e.stdout);
}
});