[7.17] Upgrade Node.js to v20.10.0 (#173962)

#173461
This commit is contained in:
Jon 2024-01-02 18:04:09 -06:00 committed by GitHub
parent a04ddbcb91
commit 85695dbd19
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 72 additions and 56 deletions

View file

@ -1,7 +1,7 @@
# NOTE: This Dockerfile is ONLY used to run certain tasks in CI. It is not used to run Kibana or as a distributable.
# If you're looking for the Kibana Docker image distributable, please see: src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts
ARG NODE_VERSION=18.18.2
ARG NODE_VERSION=20.10.0
FROM node:${NODE_VERSION} AS base

View file

@ -1 +1 @@
18.18.2
20.10.0

2
.nvmrc
View file

@ -1 +1 @@
18.18.2
20.10.0

View file

@ -27,13 +27,13 @@ check_rules_nodejs_version(minimum_version_string = "3.8.0")
# we can update that rule.
node_repositories(
node_repositories = {
"18.18.2-darwin_amd64": ("node-v18.18.2-darwin-x64.tar.gz", "node-v18.18.2-darwin-x64", "5bb8da908ed590e256a69bf2862238c8a67bc4600119f2f7721ca18a7c810c0f"),
"18.18.2-darwin_arm64": ("node-v18.18.2-darwin-arm64.tar.gz", "node-v18.18.2-darwin-arm64", "9f982cc91b28778dd8638e4f94563b0c2a1da7aba62beb72bd427721035ab553"),
"18.18.2-linux_arm64": ("node-v18.18.2-linux-arm64.tar.xz", "node-v18.18.2-linux-arm64", "8a5a03f6a742159c9aa0ae3a99b368cd938cf62f3a5522a2e5acbe6313710efe"),
"18.18.2-linux_amd64": ("node-v18.18.2-linux-x64.tar.xz", "node-v18.18.2-linux-x64", "f7cf590bc7153f3beaa9e1138d00e50d74df223f0bec61f63e7df65f7315b76a"),
"18.18.2-windows_amd64": ("node-v18.18.2-win-x64.zip", "node-v18.18.2-win-x64", "3bb0e51e579a41a22b3bf6cb2f3e79c03801aa17acbe0ca00fc555d1282e7acd"),
"20.10.0-darwin_amd64": ("node-v20.10.0-darwin-x64.tar.gz", "node-v20.10.0-darwin-x64", "5ff5e8abd3eea6e5f507eb6677554f5b2188eedef654096aa4168a9941e91a32"),
"20.10.0-darwin_arm64": ("node-v20.10.0-darwin-arm64.tar.gz", "node-v20.10.0-darwin-arm64", "68b93099451d77aac116cf8fce179cabcf53fec079508dc6b39d3a086fb461a8"),
"20.10.0-linux_arm64": ("node-v20.10.0-linux-arm64.tar.xz", "node-v20.10.0-linux-arm64", "a5c22683890d5d244f3afd488ef44e573b5b8287f8911b9a1b061ed3f20a5e6d"),
"20.10.0-linux_amd64": ("node-v20.10.0-linux-x64.tar.xz", "node-v20.10.0-linux-x64", "9c0fbc8cc7be9a6543af4b9afb05759c538c0f81015c388d63277b0158507697"),
"20.10.0-windows_amd64": ("node-v20.10.0-win-x64.zip", "node-v20.10.0-win-x64", "e5b861814a97e28ae7ac06a34e88fd5e0565b447d270c26e20b5ef60bf0aaaf9"),
},
node_version = "18.18.2",
node_version = "20.10.0",
node_urls = [
"https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/dist/v{version}/{filename}",
],

View file

@ -66,11 +66,11 @@
"url": "https://github.com/elastic/kibana.git"
},
"engines": {
"node": "18.18.2",
"node": "20.10.0",
"yarn": "^1.21.1"
},
"resolutions": {
"**/@types/node": "18.18.5",
"**/@types/node": "20.10.6",
"**/@types/react": "^16.14.25",
"**/@types/react-dom": "^16.9.8",
"**/@typescript-eslint/utils": "5.62.0",
@ -576,7 +576,7 @@
"@types/mustache": "^0.8.31",
"@types/ncp": "^2.0.1",
"@types/nock": "^10.0.3",
"@types/node": "18.18.5",
"@types/node": "20.10.6",
"@types/node-fetch": "2.6.4",
"@types/node-forge": "^1.3.10",
"@types/nodemailer": "^6.4.0",

View file

@ -114,7 +114,7 @@ describe('esArchiver createParseArchiveStreams', () => {
] as [Readable, ...Writable[]]);
throw new Error('should have failed');
} catch (err) {
expect(err.message).toEqual(expect.stringContaining('Unexpected number'));
expect(err.message).toEqual(`Expected property name or '}' in JSON at position 1`);
}
});
});

View file

@ -87,11 +87,11 @@ const { ES_KEY_PATH, ES_CERT_PATH } = require('@kbn/dev-utils');
}
);
// setup server auto close after 1 second of silence
// setup server auto close after 5 second of silence
let serverCloseTimer;
const delayServerClose = () => {
clearTimeout(serverCloseTimer);
serverCloseTimer = setTimeout(() => server.close(), 1000);
serverCloseTimer = setTimeout(() => server.close(), 5000);
};
server.on('request', delayServerClose);
server.on('listening', delayServerClose);

View file

@ -57,7 +57,7 @@ test('return error when manifest content is not a valid JSON', async () => {
});
await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({
message: `Unexpected token o in JSON at position 1 (invalid-manifest, ${pluginManifestPath})`,
message: `Unexpected token 'o', "not-json" is not valid JSON (invalid-manifest, ${pluginManifestPath})`,
type: PluginDiscoveryErrorType.InvalidManifest,
path: pluginManifestPath,
});

View file

@ -234,7 +234,7 @@ describe('plugins discovery system', () => {
.toPromise();
expect(errors).toContain(
`Error: Unexpected token o in JSON at position 1 (invalid-manifest, ${manifestPath(
`Error: Unexpected token 'o', "not-json" is not valid JSON (invalid-manifest, ${manifestPath(
'plugin_a'
)})`
);

View file

@ -47,8 +47,8 @@ const packages: Package[] = [
extractMethod: 'gunzip',
archives: {
'linux-x64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-x64-108.gz',
sha256: '136b6cf61b54bf610071a950400518add65d44a4923f11ef658769df1a037f0b',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-x64-115.gz',
sha256: 'b88183fe7bc8afa260d22cd909f496ab5636aace7075b54ac345d33ea32aedc0',
},
// Linux ARM builds are currently done manually as Github Actions used in upstream project
// do not natively support an Linux ARM target.
@ -63,20 +63,20 @@ const packages: Package[] = [
// * capture the sha256 with: `shasum -a 256 linux-arm64-*`
// * upload the `linux-arm64-*.gz` artifact to the `yarn-prebuilt-artifacts` bucket in GCS using the correct version number
'linux-arm64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-arm64-108.gz',
sha256: '311822ac689bd49a534ecf400b4732a288ad218f711b0e593e41dd3a6b739d97',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-arm64-115.gz',
sha256: '6c04136a6658df3dcc5b8ac0041641c227d232bed385fe55f62c8470f8db041d',
},
'darwin-x64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-x64-108.gz',
sha256: '215b6ffb1e5d124439a7dbdd09e4ed1263e065839354a6ad67091ce00d14ee9b',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-x64-115.gz',
sha256: '1e0d79983c94222c414a5410444ec0ccf37614fd0e45187d0f313a19b203702c',
},
'darwin-arm64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-arm64-108.gz',
sha256: '0a8bc28150c9efd04f3b52ac214cc7898bde1b8e1f8e6900ae711b03665ff657',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-arm64-115.gz',
sha256: '192c8e036062504b818941989c44ddb799efe0419d039f7089caedb09d49a597',
},
'win32-x64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/win32-x64-108.gz',
sha256: '117872144e4a2bb61611aacc51ac9fd24e494c209cf63366f236099a662316eb',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/win32-x64-115.gz',
sha256: '01ae2df89f976f4097e50e121d7ec6ac62ec8050c838107dcfb976d037a60d59',
},
},
},

View file

@ -717,7 +717,7 @@ describe('createStreamingBatchedFunction()', () => {
const [, error1] = await promise1;
const [result1] = await promise2;
expect(error1).toMatchObject({
message: 'Unexpected token N in JSON at position 0',
message: `Unexpected token 'N', "Not a JSON\n" is not valid JSON`,
code: 'STREAM',
});
expect(result1).toMatchObject({

View file

@ -63,7 +63,7 @@ describe('esdsl', () => {
} catch (error) {
errorMessage = error.message;
}
expect(errorMessage).toEqual('Unexpected token i in JSON at position 0');
expect(errorMessage).toEqual(`Unexpected token 'i', "invalid json" is not valid JSON`);
});
test('adds filters', async () => {

View file

@ -20,7 +20,7 @@ describe('importFile', () => {
const file = new File([`not_parseable`], 'file.json');
await expect(importLegacyFile(file)).rejects.toThrowErrorMatchingInlineSnapshot(
`"Unexpected token o in JSON at position 1"`
`"Unexpected token 'o', \\"not_parseable\\" is not valid JSON"`
);
});
});

View file

@ -52,6 +52,13 @@ var IGNORE_WARNINGS = [
// We need to discard that warning
name: 'ProductNotSupportedSecurityError',
},
// https://github.com/browserify/browserify-rsa/pull/20
{
name: 'DeprecationWarning',
code: 'DEP0170',
message:
'The URL https://github.com:crypto-browserify/browserify-rsa.git is invalid. Future versions of Node.js will throw an error.',
},
];
if (process.noProcessWarnings !== true) {

View file

@ -486,7 +486,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const errorText = await PageObjects.savedObjects.getImportErrorText();
expect(errorText).to.contain(`Unexpected token T in JSON at position 0`);
expect(errorText).to.contain('is not valid JSON');
});
});
});

View file

@ -223,7 +223,7 @@ describe('user action migrations', () => {
const log = context.log as jest.Mocked<SavedObjectsMigrationLogger>;
expect(log.error.mock.calls[0]).toMatchInlineSnapshot(`
Array [
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token a in JSON at position 1",
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Expected property name or '}' in JSON at position 1",
Object {
"migrations": Object {
"userAction": Object {
@ -403,7 +403,7 @@ describe('user action migrations', () => {
const log = context.log as jest.Mocked<SavedObjectsMigrationLogger>;
expect(log.error.mock.calls[0]).toMatchInlineSnapshot(`
Array [
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token b in JSON at position 1",
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Expected property name or '}' in JSON at position 1",
Object {
"migrations": Object {
"userAction": Object {
@ -585,7 +585,7 @@ describe('user action migrations', () => {
const log = context.log as jest.Mocked<SavedObjectsMigrationLogger>;
expect(log.error.mock.calls[0]).toMatchInlineSnapshot(`
Array [
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token e in JSON at position 1",
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token 'e', \\"new json value\\" is not valid JSON",
Object {
"migrations": Object {
"userAction": Object {

View file

@ -385,7 +385,7 @@ describe('DocumentCreationLogic', () => {
DocumentCreationLogic.actions.onSubmitJson();
expect(DocumentCreationLogic.actions.setErrors).toHaveBeenCalledWith([
'Unexpected token i in JSON at position 0',
'Unexpected token \'i\', "invalid JSON" is not valid JSON',
]);
expect(DocumentCreationLogic.actions.uploadDocuments).not.toHaveBeenCalled();
});

View file

@ -7,7 +7,8 @@
import Axios from 'axios';
import { createHash } from 'crypto';
import { closeSync, mkdirSync, openSync, writeSync } from 'fs';
import { mkdir, open } from 'fs/promises';
import { writeSync } from 'fs';
import { dirname } from 'path';
import { GenericLevelLogger } from '../../lib/level_logger';
@ -23,9 +24,8 @@ export async function download(
const hash = createHash('sha256');
mkdirSync(dirname(path), { recursive: true });
const handle = openSync(path, 'w');
await mkdir(dirname(path), { recursive: true });
const handle = await open(path, 'w');
try {
const resp = await Axios.request({
url,
@ -34,7 +34,7 @@ export async function download(
});
resp.data.on('data', (chunk: Buffer) => {
writeSync(handle, chunk);
writeSync(handle.fd, chunk);
hash.update(chunk);
});
@ -52,7 +52,7 @@ export async function download(
} catch (err) {
throw new Error(`Unable to download ${url}: ${err}`);
} finally {
closeSync(handle);
await handle.close();
}
return hash.digest('hex');

View file

@ -6,7 +6,7 @@
*/
import mockFs from 'mock-fs';
import { readFileSync } from 'fs';
import { readFile } from 'fs/promises';
import { ExtractError } from './extract_error';
import { unzip } from './unzip';
@ -28,7 +28,7 @@ describe('unzip', () => {
it('should extract zipped contents', async () => {
await unzip('/test.zip', '/output');
expect(readFileSync('/output/test.txt').toString()).toEqual('test');
await expect(readFile('/output/test.txt', 'utf8')).resolves.toBe('test');
});
it('should reject on invalid archive', async () => {

View file

@ -12,7 +12,7 @@ describe('checkForParseErrors', function () {
it('returns error from bad JSON', function () {
const json = '{"foo": {"bar": {"baz": "buzz}}}';
const result = checkForParseErrors(json);
expect(result.error.message).to.be(`Unexpected end of JSON input`);
expect(result.error.message).to.be(`Unterminated string in JSON at position 32`);
});
it('returns parsed value from good JSON', function () {

View file

@ -185,7 +185,7 @@ describe.each([
errors: [
{
error: {
message: 'Unexpected token h in JSON at position 1',
message: `Unexpected token 'h', "this is not"... is not valid JSON`,
status_code: 400,
},
rule_id: '(unknown id)',

View file

@ -324,7 +324,9 @@ describe('create_rules_stream_from_ndjson', () => {
references: [],
version: 1,
});
expect(resultOrError[1].message).toEqual('Unexpected token , in JSON at position 1');
expect(resultOrError[1].message).toEqual(
`Expected property name or '}' in JSON at position 1`
);
expect(resultOrError[2]).toEqual({
author: [],
actions: [],

View file

@ -87,7 +87,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
endobj
8 0 obj
<<
/Length 149
/Length 158
/Filter /FlateDecode
>>
"
@ -131,7 +131,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
endobj
9 0 obj
<<
/Length 270
/Length 268
/Filter /FlateDecode
>>
"
@ -192,14 +192,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
endobj
21 0 obj
<<
/Length 250
/Length 254
/Filter /FlateDecode
>>
"
`);
const contentLength = parseInt(res.get('content-length'), 10);
expect(contentLength >= 20725 && contentLength <= 20726).to.be(true); // contentLength can be between 20725 and 20726
expect(contentLength >= 20723 && contentLength <= 20724).to.be(true); // contentLength can be between 20723 and 20724
});
it('downloaded PDF base64 string is correct without borders and logo', async function () {
@ -261,7 +261,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
endobj
6 0 obj
<<
/Length 45
/Length 47
/Filter /FlateDecode
>>
"
@ -348,7 +348,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
"
`);
expect(res.get('content-length')).to.be('1598');
expect(res.get('content-length')).to.be('1600');
});
});
});

View file

@ -6157,10 +6157,12 @@
dependencies:
"@types/node" "*"
"@types/node@*", "@types/node@18.18.5", "@types/node@>= 8", "@types/node@>=18.0.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.17.5":
version "18.18.5"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.5.tgz#afc0fd975df946d6e1add5bbf98264225b212244"
integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A==
"@types/node@*", "@types/node@20.10.6", "@types/node@>= 8", "@types/node@>=18.0.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.17.5":
version "20.10.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.6.tgz#a3ec84c22965802bf763da55b2394424f22bfbb5"
integrity sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==
dependencies:
undici-types "~5.26.4"
"@types/nodemailer@^6.4.0":
version "6.4.0"
@ -27669,6 +27671,11 @@ undertaker@^1.2.1:
object.reduce "^1.0.0"
undertaker-registry "^1.0.0"
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
undici@^5.21.2:
version "5.26.3"
resolved "https://registry.yarnpkg.com/undici/-/undici-5.26.3.tgz#ab3527b3d5bb25b12f898dfd22165d472dd71b79"