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

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

Merged
merged 18 commits into from
Jan 3, 2024
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 .ci/Dockerfile
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion .node-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18.18.2
20.10.0
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18.18.2
20.10.0
12 changes: 6 additions & 6 deletions WORKSPACE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -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}",
],
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/kbn-es-archiver/src/lib/archives/parse.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`);
}
});
});
Expand Down
4 changes: 2 additions & 2 deletions packages/kbn-es/src/integration_tests/__fixtures__/es_bin.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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'
)})`
);
Expand Down
20 changes: 10 additions & 10 deletions src/dev/build/tasks/patch_native_modules_task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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',
},
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/data/public/search/expressions/esdsl.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"`
);
});
});
7 changes: 7 additions & 0 deletions src/setup_node_env/exit_on_warning.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion test/functional/apps/management/_import_objects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
});
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
});
Expand Down
12 changes: 6 additions & 6 deletions x-pack/plugins/reporting/server/browsers/download/download.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -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,
Expand All @@ -34,7 +34,7 @@ export async function download(
});

resp.data.on('data', (chunk: Buffer) => {
writeSync(handle, chunk);
writeSync(handle.fd, chunk);
hash.update(chunk);
});

Expand All @@ -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');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -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 () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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: [],
Expand Down
12 changes: 6 additions & 6 deletions x-pack/test/functional/apps/canvas/reports.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
endobj
8 0 obj
<<
/Length 149
/Length 158
/Filter /FlateDecode
>>
"
Expand Down Expand Up @@ -131,7 +131,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
endobj
9 0 obj
<<
/Length 270
/Length 268
/Filter /FlateDecode
>>
"
Expand Down Expand Up @@ -192,14 +192,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
endobj
21 0 obj
<<
/Length 250
/Length 254
jbudz marked this conversation as resolved.
Show resolved Hide resolved
/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 () {
Expand Down Expand Up @@ -261,7 +261,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
endobj
6 0 obj
<<
/Length 45
/Length 47
/Filter /FlateDecode
>>
"
Expand Down Expand Up @@ -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');
});
});
});
Expand Down
15 changes: 11 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down
Loading