Skip to content

Commit b601fdf

Browse files
authored
Add script to check alignment with Kibana dependencies, update Lodash, downgrade lru-cache (#242)
* Add script to check alignment with Kibana dependencies * Set Kibana branch properly * Upgrade lodash and downgrade lru-cache to align with Kibana
1 parent c092112 commit b601fdf

File tree

6 files changed

+104
-26
lines changed

6 files changed

+104
-26
lines changed

.buildkite/build.sh

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ set -eu
99
echo "--- :yarn: Installing dependencies"
1010
yarn install
1111

12+
echo "--- :gear: Checking dependencies with Kibana"
13+
node .buildkite/compare_dependencies.js
14+
1215
echo "--- :alembic: Running tests"
1316
yarn test
1417

.buildkite/compare_dependencies.js

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0; you may not use this file except in compliance with the Elastic License
5+
* 2.0.
6+
*/
7+
8+
/* Script that will check the current package.json dependencies
9+
against Kibana (using BUILDKITE_BRANCH to determine the branch)
10+
and exits with a 1 status code if, for any shared dependency,
11+
EMS Client is behind */
12+
13+
const fs = require('node:fs');
14+
const semver = require('semver');
15+
16+
const DEFAULT_BRANCH = 'main';
17+
const branch = process.env.KIBANA_BRANCH || DEFAULT_BRANCH;
18+
const kibanaPackageUrl = `https://raw.githubusercontent.com/elastic/kibana/${branch}/package.json`;
19+
20+
const processDependency = function (dependency, srcDeps, dstDeps, dstDevDeps) {
21+
if (!(dependency in dstDeps) && !(dependency in dstDevDeps)) {
22+
return true;
23+
}
24+
const source = srcDeps[dependency].replace('^', '');
25+
const destination = dstDeps[dependency] || dstDevDeps[dependency];
26+
27+
if (semver.satisfies(source, destination)) {
28+
return true;
29+
}
30+
31+
if ( dependency in dstDevDeps){
32+
console.log(`⚠ ${dependency}: ${source} vs ${destination}`);
33+
return true
34+
}
35+
36+
console.log(`🛑 ${dependency}: ${source} vs ${destination}`);
37+
return false;
38+
};
39+
40+
const main = async function () {
41+
const kibanaPackage = await fetch(kibanaPackageUrl);
42+
const kibanaPackageJson = await kibanaPackage.json();
43+
const kibanaDeps = kibanaPackageJson['dependencies'];
44+
const kibanaDevDeps = kibanaPackageJson['devDependencies'];
45+
46+
const emsClientPackageJson = JSON.parse(fs.readFileSync('package.json'));
47+
const emsClientDeps = {
48+
...emsClientPackageJson['dependencies'],
49+
...emsClientPackageJson['devDependencies']
50+
};
51+
52+
console.log(`ems-client@${emsClientPackageJson['version']}`);
53+
console.log(`kibana@${kibanaPackageJson['version']}`);
54+
55+
const results = Object.keys(emsClientDeps).map((dep) =>
56+
processDependency(dep, emsClientDeps, kibanaDeps, kibanaDevDeps)
57+
);
58+
59+
process.exit(results.every(r => r) ? 0 : 1);
60+
};
61+
62+
main()
63+
.then(console.log)
64+
.catch((error) => {
65+
console.error(error);
66+
process.exit(1);
67+
});

.buildkite/pipeline.yml

+2
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ agents:
66
steps:
77
- label: ":hammer_and_wrench: Test and build"
88
command: ".buildkite/build.sh"
9+
env:
10+
KIBANA_BRANCH: "main"

eslint.config.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default tseslint.config(
88
eslint.configs.recommended,
99
...tseslint.configs.recommended,
1010
{
11-
ignores: ["target","*.config.js"]
11+
ignores: ["target","*.config.js",".buildkite"]
1212
},
1313
{
1414
files: ['**/*.{ts,tsx,mts,cts}'],

package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
"@types/topojson-client": "^3.1.4",
3636
"@types/topojson-specification": "^1.0.5",
3737
"chroma-js": "^2.1.0",
38-
"lodash": "^4.17.15",
39-
"lru-cache": "7.18.3",
40-
"semver": "7.6.2",
38+
"lodash": "^4.17.21",
39+
"lru-cache": "^4.1.5",
40+
"semver": "^7.6.2",
4141
"topojson-client": "^3.1.0"
4242
},
4343
"devDependencies": {
@@ -51,7 +51,7 @@
5151
"@types/eslint__js": "^8.42.3",
5252
"@types/jest": "^29.5.12",
5353
"@types/lodash": "^4.14.150",
54-
"@types/lru-cache": "^7.10.10",
54+
"@types/lru-cache": "^5.1.0",
5555
"@types/node": "^20.12.13",
5656
"@types/node-fetch": "^2.5.7",
5757
"@types/semver": "^7.1.0",

yarn.lock

+27-21
Original file line numberDiff line numberDiff line change
@@ -1771,12 +1771,10 @@
17711771
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.6.tgz#193ced6a40c8006cfc1ca3f4553444fb38f0e543"
17721772
integrity sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==
17731773

1774-
"@types/lru-cache@^7.10.10":
1775-
version "7.10.10"
1776-
resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-7.10.10.tgz#3fa937c35ff4b3f6753d5737915c9bf8e693a713"
1777-
integrity sha512-nEpVRPWW9EBmx2SCfNn3ClYxPL7IktPX12HhIoSc/H5mMjdeW3+YsXIpseLQ2xF35+OcpwKQbEUw5VtqE4PDNA==
1778-
dependencies:
1779-
lru-cache "*"
1774+
"@types/lru-cache@^5.1.0":
1775+
version "5.1.1"
1776+
resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef"
1777+
integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==
17801778

17811779
"@types/mapbox__point-geometry@*":
17821780
version "0.1.2"
@@ -3577,20 +3575,18 @@ lodash.merge@^4.6.2:
35773575
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
35783576
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
35793577

3580-
lodash@^4.17.15:
3578+
lodash@^4.17.21:
35813579
version "4.17.21"
35823580
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
35833581
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
35843582

3585-
lru-cache@*:
3586-
version "10.3.0"
3587-
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.3.0.tgz#4a4aaf10c84658ab70f79a85a9a3f1e1fb11196b"
3588-
integrity sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==
3589-
3590-
3591-
version "7.18.3"
3592-
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
3593-
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
3583+
lru-cache@^4.1.5:
3584+
version "4.1.5"
3585+
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
3586+
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
3587+
dependencies:
3588+
pseudomap "^1.0.2"
3589+
yallist "^2.1.2"
35943590

35953591
lru-cache@^5.1.1:
35963592
version "5.1.1"
@@ -3934,6 +3930,11 @@ protocol-buffers-schema@^3.3.1:
39343930
resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03"
39353931
integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==
39363932

3933+
pseudomap@^1.0.2:
3934+
version "1.0.2"
3935+
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
3936+
integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
3937+
39373938
punycode@^2.1.0:
39383939
version "2.3.1"
39393940
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
@@ -4069,11 +4070,6 @@ rw@^1.3.3:
40694070
resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
40704071
integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==
40714072

4072-
[email protected], semver@^7.5.3, semver@^7.5.4, semver@^7.6.0:
4073-
version "7.6.2"
4074-
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
4075-
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
4076-
40774073
semver@^5.6.0:
40784074
version "5.7.2"
40794075
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
@@ -4084,6 +4080,11 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
40844080
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
40854081
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
40864082

4083+
semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2:
4084+
version "7.6.2"
4085+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
4086+
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
4087+
40874088
set-value@^2.0.1:
40884089
version "2.0.1"
40894090
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
@@ -4512,6 +4513,11 @@ y18n@^5.0.5:
45124513
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
45134514
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
45144515

4516+
yallist@^2.1.2:
4517+
version "2.1.2"
4518+
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
4519+
integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
4520+
45154521
yallist@^3.0.2:
45164522
version "3.1.1"
45174523
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"

0 commit comments

Comments
 (0)