diff --git a/.gitignore b/.gitignore index 1d119a062..b43014d21 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,10 @@ .DS_Store node_modules npm-debug.log -yarn-error.log coverage/ .aws-config.json awsconfig -/emails/dist -/public_gen /tmp -vendor/phantomjs/phantomjs -vendor/opennms*.js* -vendor/parenthesis -vendor/crypto-js docs/AWS_S3_BUCKET docs/GIT_BRANCH @@ -33,10 +26,6 @@ public/css/*.min.css /bin/* conf/custom.ini -fig.yml -profile.cov -/grafana -.notouch # Antora documentation public/ @@ -44,8 +33,6 @@ build/ # Not ready yet /dist -/SPECS -/SOURCES # Debian package droppings /dist/opennms-grafana-plugin diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 2970421d8..f1260d1c3 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -92,8 +92,92 @@ Use the `npm overrides` mechanism in the `package.json`. Delete the `package-loc } ``` +## Issue with Grafana, json-source-map and our opennms-js OnmsEnum / toJSON representation ## opennms-js and json-source-map isJSON issue This is described more fully here: https://github.com/OpenNMS/opennms-js/pull/1118 Just note that if `opennms-js` has any model data classes which have a `toJSON` method (which returns a somewhat more human-readable version of the object), it will also have this fix, meaning the object will also have a fake `.replace()` method on it. Should not cause any issues, but just noting it here. + +More details... + +This is a bit long-winded, but it was tricky to debug. + +There is an issue with how Grafana saves and serializes panel data and our `opennms-js` implementation of `OnmsEnum` +and derived classes. + +In cases where we are using the Grafana `SegmentAsync` dropdown, which has a `loadOptions` function to +load nodes (ultimately via `opennms-js` and to our Rest API), we need to make sure that the `loadNodes` prop receives a +`SelectableValue[]`, e.g. `SelectableValue[]`, and +*not* an `OnmsNode[]`. + +While `OnmsNode` has an `id` and `label` which `SelectableValue` might be expecting, there's another issue. + +When you make a change in a query editor, Grafana saves off the panel state. +Grafana does a `jsonDiff` by serializing the old and new state. +They use the `json-source-map` npm library to stringify objects (recursively) before diffing. + +`json-source-map` has a line where if an object has a `toJSON()` function, it uses +it to stringify the object. It expects `toJSON()` to return a `String`. + +Our `OnmsEnum`, and derived classes (for example `OnmsManagedType`, used in `OnmsIpInterface.isManaged`, +used in `OnmsNode.ipInterfaces`), has a `toJSON()` function defined, but it returns +an object `{ id: this.i, label: this.l }` instead of a `String`. + +The Grafana code then calls `getDashboardChanges`, `getPanelChanges`: + +``` + const diff = jsonDiff(originalSaveModel, saveModel); +``` + +`jsonDiff` calls `jsonMap.stringify()` (`jsonMap` is from `json-source-map`) which calls `_stringify`. + +`_stringify` does a check if the item is an object and has a `toJSON` function and calls it. + +Then also inside json-source-map: + +``` +function quoted(str) { + str = str.replace(ESC_QUOTE, '\\$&') + ... +``` + +This throws a `TypeError` since `str` is actually an `OnmsNode`, not a `String`, and does not have a +`replace` function. + +``` + case 'object': + if (_data === null) { + out('null'); + } else if (typeof _data.toJSON == 'function') { + out(quoted(_data.toJSON())); + } +``` + +See: https://github.com/epoberezkin/json-source-map/blob/master/index.js, `_stringify`. + +See: https://github.com/grafana/grafana/blob/main/public/app/features/dashboard-scene/panel-edit/PanelEditor.tsx where `getPanelChanges` is called. + +See: https://github.com/grafana/grafana/blob/main/public/app/features/dashboard-scene/saving/getDashboardChanges.ts where the `jsonDiff` occurs. + +If we do the conversion from `OnmsNode` to a `SelectableValue`, `json-source-map` will call their `stringifyObject` since +the object does not have a `toJSON`, and it should work correctly. + +Example, in `PerformanceQueryEditor.tsx`: + +``` +const nodes = await datasource.client.findNodes(filter, true) + +const selectableValues: SelectableValue[] = nodes.map(n => { + return { + id: n.id, + label: n.label, + value: { + id: n.id, + label: n.label + } + } +}) + +return selectableValues +``` diff --git a/package-lock.json b/package-lock.json index 37abbe05c..e04f991b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,12 +16,11 @@ "@grafana/schema": "^12.2.1", "@grafana/ui": "^12.2.1", "async": "^3.2.3", - "crypto-js": "^4.2.0", "flot": "^0.8.3", "flot-axislabels": "https://github.com/j-white/flot-axislabels#master", "lodash.clonedeep": "^4.5.0", "lodash.escaperegexp": "^4.1.2", - "opennms": "^2.6.0", + "opennms": "^2.6.1", "parenthesis": "^3.1.8", "perfect-scrollbar": "^1.5.5", "react": "~18.3.1", @@ -32,14 +31,14 @@ "@antora/cli": "^3.1.14", "@antora/site-generator-default": "^3.1.12", "@babel/core": "^7.28.3", - "@grafana/e2e-selectors": "^12.1.2", + "@grafana/e2e-selectors": "^12.2.1", "@grafana/eslint-config": "^8.2.0", "@grafana/plugin-e2e": "^2.2.3", "@grafana/tsconfig": "^2.0.1", "@opennms/style": "github:OpenNMS/opennms-style#v0.4.0", "@playwright/test": "^1.56.1", "@stylistic/eslint-plugin-ts": "^2.13.0", - "@swc/core": "~1.3.75", + "@swc/core": "^1.13.3", "@swc/helpers": "^0.5.17", "@swc/jest": "^0.2.39", "@testing-library/jest-dom": "^6.9.1", @@ -61,7 +60,7 @@ "eslint-webpack-plugin": "^5.0.2", "fork-ts-checker-webpack-plugin": "^9.1.0", "fs-extra": "^11.1.0", - "glob": "^10.4.5", + "glob": "^11.0.3", "identity-obj-proxy": "^3.0.0", "imports-loader": "^5.0.0", "jest": "^29.7.0", @@ -92,93 +91,6 @@ "node": ">=20 <23" } }, - "../opennms-js": { - "name": "opennms", - "version": "2.6.1-SNAPSHOT", - "extraneous": true, - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.9.3", - "axios": "^1.13.0", - "btoa": "^1.2.1", - "commander": "^12.1.0", - "fs": "^0.0.2", - "html-to-formatted-text": "^2.7.0", - "ip-address": "^10.0.1", - "lodash": "^4.17.21", - "moment": "^2.30.1", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "qs": "^6.13.1", - "regenerator-runtime": "^0.14.1", - "table": "^6.9.0", - "version_compare": "^0.0.3", - "x2js": "^3.4.4" - }, - "bin": { - "opennms": "dist/cli.node.js" - }, - "devDependencies": { - "@antora/cli": "^3.1.14", - "@antora/site-generator-default": "^3.1.14", - "@babel/cli": "^7.28.3", - "@babel/core": "^7.28.5", - "@babel/eslint-parser": "^7.28.5", - "@babel/plugin-proposal-async-generator-functions": "^7.20.7", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.4", - "@babel/plugin-transform-runtime": "^7.28.5", - "@babel/preset-env": "^7.28.5", - "@babel/preset-typescript": "^7.28.5", - "@babel/runtime-corejs3": "^7.28.4", - "@commitlint/cli": "^19.0.3", - "@commitlint/config-conventional": "^19.0.3", - "@types/btoa": "^1.2.3", - "@types/jest": "^29.5.14", - "@types/lodash": "^4.17.20", - "@types/lodash.clonedeep": "^4.5.9", - "@types/lodash.startcase": "^4.4.9", - "@types/node": "^20.19.23", - "@types/object-hash": "^3.0.1", - "@types/urijs": "^1.19.17", - "@typescript-eslint/eslint-plugin": "^8.11.0", - "@typescript-eslint/parser": "^8.17.0", - "babel-loader": "^9.1.0", - "babel-plugin-angularjs-annotate": "^0.10.0", - "babel-plugin-lodash": "^3.3.4", - "babel-plugin-module-resolver": "^5.0.0", - "cache-loader": "^4.1.0", - "chai": "^5.0.0", - "child_process": "^1.0.2", - "core-js": "^3.46.0", - "eslint": "^8.57.0", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-prefer-arrow": "^1.2.3", - "eslint-plugin-tsdoc": "^0.4.0", - "eslint-webpack-plugin": "^4.0.1", - "husky": "^9.0.3", - "jest": "^29.7.0", - "lodash-webpack-plugin": "^0.11.6", - "parallel-webpack": "^2.6.0", - "rimraf": "^6.0.1", - "standard-changelog": "^5.0.0", - "terser-webpack-plugin": "^5.3.0", - "ts-jest": "^29.4.5", - "ts-node": "^10.4.0", - "typedoc": "^0.28.14", - "typescript": "~5.7.2", - "urijs": "^1.19.1", - "webpack": "^5.66.0", - "webpack-cli": "^6.0.1" - }, - "engines": { - "node": ">=20 <=23" - } - }, "node_modules/@adobe/css-tools": { "version": "4.4.4", "dev": true, @@ -186,8 +98,6 @@ }, "node_modules/@antora/asciidoc-loader": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.14.tgz", - "integrity": "sha512-4xxisnoBFrlLNY6f3xZtyyfgm+tBLsqesTcEStfc8jtXUMYJ4b2DWIzo1vULmxvZ7yY5+Q7YqEvS5o6kIWAG0A==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -201,8 +111,6 @@ }, "node_modules/@antora/cli": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.14.tgz", - "integrity": "sha512-I6WcygMU2bFInjdURJjkYjo7K5M8B3lBB53v9OO0IcY0LhEY8Wa7IlZ7wVinf5qEjHvaYzRGTZVl6RsJtVt7Sw==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -220,8 +128,6 @@ }, "node_modules/@antora/content-aggregator": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.14.tgz", - "integrity": "sha512-FVuBgnrGPiktYqK1WHbGF8O8l4m5KHlkxoJumrbacgFo8SKuiRFEo31zalxrCUsv8QM3UBEgX+LdHrve/9CGLg==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -247,8 +153,6 @@ }, "node_modules/@antora/content-classifier": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.14.tgz", - "integrity": "sha512-y8Fk+KU1lqD3aawOu3ZFK92YfOZ1k3YBJhLI9QIFM6Ck4STPnf7AwYbhfOtjODlwer5/OhFmfhjUB2hn7onGnA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -263,8 +167,6 @@ }, "node_modules/@antora/document-converter": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.14.tgz", - "integrity": "sha512-f6wFnL+489DI0ZDgoxYWzbxxWqPviRiJ56OHS1NixEfvJ7OpRBDPEbX1xnsIeiyFBgqX4+nY92MsCWKTa+Gf3w==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -276,8 +178,6 @@ }, "node_modules/@antora/expand-path-helper": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz", - "integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==", "dev": true, "license": "MPL-2.0", "engines": { @@ -286,8 +186,6 @@ }, "node_modules/@antora/file-publisher": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.14.tgz", - "integrity": "sha512-fTaAnkyKSOlsxQM1TBFCAmiERA6Q67XleDCD2bMPVgfcENmo0Xfx59KwCHaA92IcRSmMftydlXHPaFxNh0UVsg==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -302,8 +200,6 @@ }, "node_modules/@antora/logger": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.14.tgz", - "integrity": "sha512-kVEeGqZbXR903hPIm+BlN97fLdQ3LoUzE/BOPZ6vRp9m9Mmbnm67Kg7fSYkfTMLB0S2UWpAPFg22RdsU5ZoAzA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -318,8 +214,6 @@ }, "node_modules/@antora/navigation-builder": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.14.tgz", - "integrity": "sha512-/637YLGD7oUHGSfEfszXkk4ASfIhDAg5Xs9035J1dV07XYRlGqmtUb15rtapbcECpcQFjCyM5jFQYSNNvLrGcQ==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -331,8 +225,6 @@ }, "node_modules/@antora/page-composer": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.14.tgz", - "integrity": "sha512-RfA+67TxCqUPrQbZdrfjgLpHh8MR2z2du7cyF3HGX4N6DpqEBvz81NHHl3rA3fj6BQZPQbGm2OYAMU6wzJ6Pog==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -346,8 +238,6 @@ }, "node_modules/@antora/playbook-builder": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.14.tgz", - "integrity": "sha512-Ss2r7In00u/n9Da+JOxEqIE8NeRosf+f+agzH3Te09JV/mpgZKxEOE5V/VuP+TNNq4ww1eu5aOS8DiU2PYwj4Q==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -362,8 +252,6 @@ }, "node_modules/@antora/redirect-producer": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.14.tgz", - "integrity": "sha512-5koAwRk1cZrvE/qfOWKXqb3jtxrZbWA5EYHYGFEoato5By3cbC42blH4Bre9/48pjyS6znFpbZhYUBpT7PRhZA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -375,8 +263,6 @@ }, "node_modules/@antora/site-generator": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.14.tgz", - "integrity": "sha512-hQIUVtM9+xwleYWc4fIRZmiKl2p+ItOJuUm2+Hkdh07BZsySxkMOxxCyZsvTn9rc+4R94CYqDQCYElwFwdB2WA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -401,8 +287,6 @@ }, "node_modules/@antora/site-generator-default": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/site-generator-default/-/site-generator-default-3.1.14.tgz", - "integrity": "sha512-p+tVzVkJ8+pcnxUP7m5KG6ROK9T6ULS9Vmt9v/9mfQH9KmZ4xtlbbG00x8j/OLSY9pEvTvdTfUwZXm/6Nqpc9g==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -414,8 +298,6 @@ }, "node_modules/@antora/site-mapper": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.14.tgz", - "integrity": "sha512-3qbETtwadl+fWREjzrBUxPUorMcMiZ+hdkB1El9z7it9KzKh0Yp7Je0+2uTxGX+Lov9uik48dZJ9e/mr5PeaRQ==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -428,8 +310,6 @@ }, "node_modules/@antora/site-publisher": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.14.tgz", - "integrity": "sha512-8apyEmgepUc7ms9CTEIPwN3tGtWwLqR6fbLMLs7hibqmOSR880Ut/4GRGb97sqcGQXSHdIyWK2oJKzRl1Akb6Q==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -441,8 +321,6 @@ }, "node_modules/@antora/ui-loader": { "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.14.tgz", - "integrity": "sha512-LVvTdKQOB44CmJ1JQDu8sJf6rrLZMxPAWWackdg2JtGyGHHpd80/MBcv4BSFk7//cJQ13Oqm/7JCbhD51KAFjg==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -464,8 +342,6 @@ }, "node_modules/@antora/user-require-helper": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-3.0.0.tgz", - "integrity": "sha512-KIXb8WYhnrnwH7Jj21l1w+et9k5GvcgcqvLOwxqWLEd0uVZOiMFdqFjqbVm3M+zcrs1JXWMeh2LLvxBbQs3q/Q==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -868,18 +744,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz", - "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==", - "license": "MIT", - "dependencies": { - "core-js-pure": "^3.43.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.27.2", "license": "MIT", @@ -1367,6 +1231,8 @@ }, "node_modules/@grafana/e2e-selectors": { "version": "12.2.1", + "resolved": "https://registry.npmjs.org/@grafana/e2e-selectors/-/e2e-selectors-12.2.1.tgz", + "integrity": "sha512-h9wrrqTurFB+YfGglPZvjlF674N5pAgpriUp6ntuakag4iwpKCAOa3xBQvc6SW+x1zJMw3GludY6etNxDJbAUQ==", "license": "Apache-2.0", "dependencies": { "semver": "^7.7.0", @@ -1770,6 +1636,8 @@ }, "node_modules/@isaacs/balanced-match": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "dev": true, "license": "MIT", "engines": { @@ -1778,6 +1646,8 @@ }, "node_modules/@isaacs/brace-expansion": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", "dev": true, "license": "MIT", "dependencies": { @@ -1789,6 +1659,8 @@ }, "node_modules/@isaacs/cliui": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "license": "ISC", "dependencies": { @@ -2794,13 +2666,13 @@ }, "node_modules/@pinojs/redact": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", - "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", "dev": true, "license": "MIT" }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", "optional": true, @@ -3208,13 +3080,15 @@ } }, "node_modules/@swc/core": { - "version": "1.3.107", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.3.tgz", + "integrity": "sha512-ZaDETVWnm6FE0fc+c2UE8MHYVS3Fe91o5vkmGfgwGXFbxYvAjKSqxM/j4cRc9T7VZNSJjriXq58XkfCp3Y6f+w==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@swc/counter": "^0.1.1", - "@swc/types": "^0.1.5" + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.23" }, "engines": { "node": ">=10" @@ -3224,19 +3098,19 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.107", - "@swc/core-darwin-x64": "1.3.107", - "@swc/core-linux-arm-gnueabihf": "1.3.107", - "@swc/core-linux-arm64-gnu": "1.3.107", - "@swc/core-linux-arm64-musl": "1.3.107", - "@swc/core-linux-x64-gnu": "1.3.107", - "@swc/core-linux-x64-musl": "1.3.107", - "@swc/core-win32-arm64-msvc": "1.3.107", - "@swc/core-win32-ia32-msvc": "1.3.107", - "@swc/core-win32-x64-msvc": "1.3.107" + "@swc/core-darwin-arm64": "1.13.3", + "@swc/core-darwin-x64": "1.13.3", + "@swc/core-linux-arm-gnueabihf": "1.13.3", + "@swc/core-linux-arm64-gnu": "1.13.3", + "@swc/core-linux-arm64-musl": "1.13.3", + "@swc/core-linux-x64-gnu": "1.13.3", + "@swc/core-linux-x64-musl": "1.13.3", + "@swc/core-win32-arm64-msvc": "1.13.3", + "@swc/core-win32-ia32-msvc": "1.13.3", + "@swc/core-win32-x64-msvc": "1.13.3" }, "peerDependencies": { - "@swc/helpers": "^0.5.0" + "@swc/helpers": ">=0.5.17" }, "peerDependenciesMeta": { "@swc/helpers": { @@ -3245,7 +3119,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.107", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.3.tgz", + "integrity": "sha512-ux0Ws4pSpBTqbDS9GlVP354MekB1DwYlbxXU3VhnDr4GBcCOimpocx62x7cFJkSpEBF8bmX8+/TTCGKh4PbyXw==", "cpu": [ "arm64" ], @@ -3259,6 +3135,159 @@ "node": ">=10" } }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.3.tgz", + "integrity": "sha512-p0X6yhxmNUOMZrbeZ3ZNsPige8lSlSe1llllXvpCLkKKxN/k5vZt1sULoq6Nj4eQ7KeHQVm81/+AwKZyf/e0TA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.3.tgz", + "integrity": "sha512-OmDoiexL2fVWvQTCtoh0xHMyEkZweQAlh4dRyvl8ugqIPEVARSYtaj55TBMUJIP44mSUOJ5tytjzhn2KFxFcBA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.3.tgz", + "integrity": "sha512-STfKku3QfnuUj6k3g9ld4vwhtgCGYIFQmsGPPgT9MK/dI3Lwnpe5Gs5t1inoUIoGNP8sIOLlBB4HV4MmBjQuhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.3.tgz", + "integrity": "sha512-bc+CXYlFc1t8pv9yZJGus372ldzOVscBl7encUBlU1m/Sig0+NDJLz6cXXRcFyl6ABNOApWeR4Yl7iUWx6C8og==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.3.tgz", + "integrity": "sha512-dFXoa0TEhohrKcxn/54YKs1iwNeW6tUkHJgXW33H381SvjKFUV53WR231jh1sWVJETjA3vsAwxKwR23s7UCmUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.3.tgz", + "integrity": "sha512-ieyjisLB+ldexiE/yD8uomaZuZIbTc8tjquYln9Quh5ykOBY7LpJJYBWvWtm1g3pHv6AXlBI8Jay7Fffb6aLfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.3.tgz", + "integrity": "sha512-elTQpnaX5vESSbhCEgcwXjpMsnUbqqHfEpB7ewpkAsLzKEXZaK67ihSRYAuAx6ewRQTo7DS5iTT6X5aQD3MzMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.3.tgz", + "integrity": "sha512-nvehQVEOdI1BleJpuUgPLrclJ0TzbEMc+MarXDmmiRFwEUGqj+pnfkTSb7RZyS1puU74IXdK/YhTirHurtbI9w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.3.tgz", + "integrity": "sha512-A+JSKGkRbPLVV2Kwx8TaDAV0yXIXm/gc8m98hSkVDGlPBBmydgzNdWy3X7HTUBM7IDk7YlWE7w2+RUGjdgpTmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@swc/counter": { "version": "0.1.3", "dev": true, @@ -4137,8 +4166,6 @@ }, "node_modules/@xmldom/xmldom": { "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", - "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", "license": "MIT", "engines": { "node": ">=14.6" @@ -4591,8 +4618,6 @@ }, "node_modules/astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "license": "MIT", "engines": { "node": ">=8" @@ -4649,9 +4674,7 @@ } }, "node_modules/axios": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.0.tgz", - "integrity": "sha512-zt40Pz4zcRXra9CVV31KeyofwiNvAbJ5B6YPz9pMJ+yOSLikvPT4Yi5LjfgjRa9CawVYBaD1JQzIVcIvBejKeA==", + "version": "1.13.1", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -4899,8 +4922,6 @@ }, "node_modules/btoa": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", "license": "(MIT OR Apache-2.0)", "bin": { "btoa": "bin/btoa.js" @@ -5327,28 +5348,6 @@ "webpack": "^5.1.0" } }, - "node_modules/core-js": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", - "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.46.0.tgz", - "integrity": "sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/cosmiconfig": { "version": "7.1.0", "license": "MIT", @@ -5467,10 +5466,6 @@ "node": ">= 8" } }, - "node_modules/crypto-js": { - "version": "4.2.0", - "license": "MIT" - }, "node_modules/css-box-model": { "version": "1.2.1", "license": "MIT", @@ -6260,6 +6255,8 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, @@ -6281,6 +6278,8 @@ }, "node_modules/emoji-regex": { "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, @@ -7185,8 +7184,6 @@ }, "node_modules/follow-redirects": { "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -7359,10 +7356,8 @@ } }, "node_modules/fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", - "license": "ISC" + "version": "0.0.2", + "license": "MIT" }, "node_modules/fs-constants": { "version": "1.0.0", @@ -7560,20 +7555,25 @@ } }, "node_modules/glob": { - "version": "10.4.5", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", "dev": true, "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, + "engines": { + "node": "20 || >=22" + }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -7593,6 +7593,49 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/glob/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { "version": "14.0.0", "license": "MIT", @@ -7813,8 +7856,6 @@ }, "node_modules/html-to-formatted-text": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/html-to-formatted-text/-/html-to-formatted-text-2.7.0.tgz", - "integrity": "sha512-dwAWKPVKf9LeNSQ3FBok3Z6PqNtino2o828/O5MMg9NHMBDmUZXAG5omFyptB4ouBasiE0C0B2WUMAs+BVKQAQ==", "license": "MIT", "dependencies": { "striptags": "3.1.1" @@ -8110,8 +8151,6 @@ }, "node_modules/ip-address": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", "license": "MIT", "engines": { "node": ">= 12" @@ -8665,17 +8704,19 @@ } }, "node_modules/jackspeak": { - "version": "3.4.3", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, + "engines": { + "node": "20 || >=22" + }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jest": { @@ -9929,6 +9970,27 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/jest-mock-axios/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/jest-mock-axios/node_modules/istanbul-lib-source-maps": { "version": "5.0.6", "dev": true, @@ -9942,6 +10004,22 @@ "node": ">=10" } }, + "node_modules/jest-mock-axios/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-mock-axios/node_modules/jest": { "version": "30.1.3", "dev": true, @@ -11376,8 +11454,6 @@ }, "node_modules/lodash.truncate": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "license": "MIT" }, "node_modules/long": { @@ -11832,8 +11908,6 @@ }, "node_modules/object-hash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "license": "MIT", "engines": { "node": ">= 6" @@ -11970,37 +12044,35 @@ } }, "node_modules/opennms": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/opennms/-/opennms-2.6.0.tgz", - "integrity": "sha512-5PmYN6l6IPWgJE1tq70l91TAtxvp/6JLtsfO17twcPUupDkXXyjyoc1gny/HDhXyRlxhmdoZoiPbrdWPDD4JMA==", + "version": "2.6.1", "license": "MIT", "dependencies": { - "@babel/runtime-corejs3": "^7.17.9", "@xmldom/xmldom": "^0.9.3", - "axios": "^1.1.3", + "axios": "^1.13.0", "btoa": "^1.2.1", - "commander": "^12.0.0", - "core-js": "^3.22.2", - "fs": "^0.0.1-security", - "html-to-formatted-text": "^2.6.0", + "commander": "^12.1.0", + "fs": "^0.0.2", + "html-to-formatted-text": "^2.7.0", "ip-address": "^10.0.1", - "lodash": "^4.17.20", - "moment": "^2.29.1", + "lodash": "^4.17.21", + "moment": "^2.30.1", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "qs": "^6.13.1", + "regenerator-runtime": "^0.14.1", "table": "^6.9.0", "version_compare": "^0.0.3", - "x2js": "^3.4.2" + "x2js": "^3.4.4" }, "bin": { "opennms": "dist/cli.node.js" + }, + "engines": { + "node": ">=20 <=23" } }, "node_modules/opennms/node_modules/commander": { "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", "engines": { "node": ">=18" @@ -12255,8 +12327,6 @@ }, "node_modules/pino": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.1.0.tgz", - "integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==", "dev": true, "license": "MIT", "dependencies": { @@ -12392,8 +12462,6 @@ }, "node_modules/pino/node_modules/pino-abstract-transport": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", - "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", "dev": true, "license": "MIT", "dependencies": { @@ -12688,8 +12756,6 @@ }, "node_modules/process-warning": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", "dev": true, "funding": [ { @@ -12772,8 +12838,6 @@ }, "node_modules/proxy-from-env": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, "node_modules/prr": { @@ -13618,6 +13682,10 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "dev": true, @@ -13768,79 +13836,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "11.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/jackspeak": { - "version": "4.1.1", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/lru-cache": { - "version": "11.2.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "10.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/path-scurry": { - "version": "2.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/robust-predicates": { "version": "3.0.2", "license": "Unlicense" @@ -14488,8 +14483,6 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -14777,6 +14770,8 @@ }, "node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { @@ -14794,6 +14789,8 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -14807,11 +14804,15 @@ }, "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -14911,6 +14912,8 @@ }, "node_modules/strip-ansi": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { @@ -14926,6 +14929,8 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -14937,6 +14942,8 @@ }, "node_modules/strip-ansi/node_modules/ansi-regex": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -14993,8 +15000,6 @@ }, "node_modules/striptags": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz", - "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==", "license": "MIT" }, "node_modules/style-loader": { @@ -15078,8 +15083,6 @@ }, "node_modules/table": { "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", @@ -15094,8 +15097,6 @@ }, "node_modules/table/node_modules/ajv": { "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -15110,20 +15111,14 @@ }, "node_modules/table/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, "node_modules/table/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -15136,8 +15131,6 @@ }, "node_modules/table/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -15934,8 +15927,6 @@ }, "node_modules/version_compare": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/version_compare/-/version_compare-0.0.3.tgz", - "integrity": "sha512-a9YzbQmnPZ3GhnE/LCxyRhL+xCP7SrYN+XAMCszRpwp8WRR89Jp8+1tw1InkBuZ+6jWKxGe+cr6SJpdP8RShtw==", "license": "CC-BY-SA" }, "node_modules/vinyl": { @@ -16361,6 +16352,8 @@ }, "node_modules/wrap-ansi": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16378,6 +16371,8 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -16394,11 +16389,15 @@ }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -16412,6 +16411,8 @@ }, "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -16423,6 +16424,8 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { @@ -16476,8 +16479,6 @@ }, "node_modules/x2js": { "version": "3.4.4", - "resolved": "https://registry.npmjs.org/x2js/-/x2js-3.4.4.tgz", - "integrity": "sha512-yG/ThaBCgnsa3aoMPAe7QwDpcyU4D70hjXC4Y1lZSfD/Tgd0MpE19FnZZRAjekryw0c8cffpOt9zsPEiqktO6Q==", "license": "Apache-2.0", "dependencies": { "@xmldom/xmldom": "^0.8.3" @@ -16485,8 +16486,6 @@ }, "node_modules/x2js/node_modules/@xmldom/xmldom": { "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index 2ca8ba2b5..84fa76ec5 100644 --- a/package.json +++ b/package.json @@ -37,14 +37,14 @@ "@antora/cli": "^3.1.14", "@antora/site-generator-default": "^3.1.12", "@babel/core": "^7.28.3", - "@grafana/e2e-selectors": "^12.1.2", + "@grafana/e2e-selectors": "^12.2.1", "@grafana/eslint-config": "^8.2.0", "@grafana/plugin-e2e": "^2.2.3", "@grafana/tsconfig": "^2.0.1", "@opennms/style": "github:OpenNMS/opennms-style#v0.4.0", "@playwright/test": "^1.56.1", "@stylistic/eslint-plugin-ts": "^2.13.0", - "@swc/core": "~1.3.75", + "@swc/core": "^1.13.3", "@swc/helpers": "^0.5.17", "@swc/jest": "^0.2.39", "@testing-library/jest-dom": "^6.9.1", @@ -66,7 +66,7 @@ "eslint-webpack-plugin": "^5.0.2", "fork-ts-checker-webpack-plugin": "^9.1.0", "fs-extra": "^11.1.0", - "glob": "^10.4.5", + "glob": "^11.0.3", "identity-obj-proxy": "^3.0.0", "imports-loader": "^5.0.0", "jest": "^29.7.0", @@ -101,12 +101,11 @@ "@grafana/schema": "^12.2.1", "@grafana/ui": "^12.2.1", "async": "^3.2.3", - "crypto-js": "^4.2.0", "flot": "^0.8.3", "flot-axislabels": "https://github.com/j-white/flot-axislabels#master", "lodash.clonedeep": "^4.5.0", "lodash.escaperegexp": "^4.1.2", - "opennms": "^2.6.0", + "opennms": "^2.6.1", "parenthesis": "^3.1.8", "perfect-scrollbar": "^1.5.5", "react": "~18.3.1", diff --git a/src/datasources/flow-ds/types.ts b/src/datasources/flow-ds/types.ts index bcac4f05e..30234a914 100644 --- a/src/datasources/flow-ds/types.ts +++ b/src/datasources/flow-ds/types.ts @@ -2,16 +2,6 @@ import { DataQuery, DataQueryRequest, DataSourceJsonData, SelectableValue } from import { ClientDelegate } from 'lib/client_delegate' import { SimpleOpenNMSRequest } from 'lib/simpleRequest' -// TODO: Leaving this commented-out until we confirm it is not necessary. -// // Workaround for this not being available in all browsers. -// // We check for its use and fall back to a random number if it's not present. -// declare global { -// interface Crypto { -// randomUUID: () => string | any -// // randomUUID: () => `${string}-${string}-${string}-${string}-${string}` -// } -// } - /** * These are options configured for each DataSource instance */ diff --git a/src/datasources/perf-ds/PerformanceQueryEditor.tsx b/src/datasources/perf-ds/PerformanceQueryEditor.tsx index 4aaca1cc6..cb1f7f9fa 100644 --- a/src/datasources/perf-ds/PerformanceQueryEditor.tsx +++ b/src/datasources/perf-ds/PerformanceQueryEditor.tsx @@ -8,13 +8,14 @@ import { PerformanceAttribute } from './PerformanceAttribute' import { PerformanceExpression } from './PerformanceExpression' import { PerformanceFilter } from './PerformanceFilter' import { PerformanceStringProperty } from './PerformanceStringProperty' -import { PerformanceQueryEditorProps, QuickSelect, PerformanceStringPropertyState } from './types' +import { PerformanceAttributeItemState, PerformanceQueryEditorProps, PerformanceStringPropertyState, QuickSelect } from './types' import { collectInterpolationVariables, interpolate } from './queries/interpolate' import { getRemoteResourceId } from './queries/queryBuilder' import { getStringProperties } from './PerformanceHelpers' import { getTemplateVariable, isTemplateVariable } from '../../lib/variableHelpers' import { OnmsResourceDto, OnmsRrdGraphAttribute } from '../../lib/api_types' import { getMultiValues, isInteger, sanitizeFiqlQuery } from 'lib/utils' +import { SelectableValue } from '@grafana/data' export const PerformanceQueryEditor: React.FC = ({ onChange, query, onRunQuery, datasource, ...rest }) => { const [performanceType, setPerformanceType] = useState(query.performanceType) @@ -94,7 +95,21 @@ export const PerformanceQueryEditor: React.FC = ({ } as API.Filter const nodes = await datasource.client.findNodes(filter, true) - return nodes + + // Convert to SelectableValue + // See DEVELOPMENT.md for an in-depth explanation of why we cannot pass OnmsNode[] + const selectableValues: SelectableValue[] = nodes.map(n => { + return { + id: n.id, + label: n.label, + value: { + id: n.id, + label: n.label + } + } + }) + + return selectableValues } /**