Chore: Add capability for overriding local development behaviour using env vars (#85603)

This commit is contained in:
Tom Ratcliffe 2024-08-13 13:07:42 +01:00 committed by GitHub
parent 735954386f
commit 8136fbef1f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 218 additions and 34 deletions

View File

@ -1973,3 +1973,10 @@ feedback_url = https://docs.google.com/forms/d/e/1FAIpQLSeEE33vhbSpR8A8S1A1ocZ1B
# How frequently should the frontend UI poll for changes while resources are migrating # How frequently should the frontend UI poll for changes while resources are migrating
frontend_poll_interval = 2s frontend_poll_interval = 2s
################################## Frontend development configuration ###################################
# Warning! Any settings placed in this section will be available on `process.env.frontend_dev_{foo}` within frontend code
# Any values placed here may be accessible to the UI. Do not place sensitive information here.
[frontend_dev]
# Should UI tests fail when console log/warn/erroring?
# Does not affect the result when running on CI - only for allowing devs to choose this behaviour locally
fail_tests_on_console = true

View File

@ -1905,3 +1905,11 @@ timeout = 30s
;feedback_url = "" ;feedback_url = ""
# How frequently should the frontend UI poll for changes while resources are migrating # How frequently should the frontend UI poll for changes while resources are migrating
;frontend_poll_interval = 2s ;frontend_poll_interval = 2s
################################## Frontend development configuration ###################################
# Warning! Any settings placed in this section will be available on `process.env.frontend_dev_{foo}` within frontend code
# Any values placed here may be accessible to the UI. Do not place sensitive information here.
[frontend_dev]
# Should UI tests fail when console log/warn/erroring?
# Does not affect the result when running on CI - only for allowing devs to choose this behaviour locally
; fail_tests_on_console = true

View File

@ -112,6 +112,7 @@
"@types/google.analytics": "^0.0.46", "@types/google.analytics": "^0.0.46",
"@types/gtag.js": "^0.0.20", "@types/gtag.js": "^0.0.20",
"@types/history": "4.7.11", "@types/history": "4.7.11",
"@types/ini": "^4",
"@types/jest": "29.5.12", "@types/jest": "29.5.12",
"@types/jquery": "3.5.30", "@types/jquery": "3.5.30",
"@types/js-yaml": "^4.0.5", "@types/js-yaml": "^4.0.5",
@ -189,6 +190,7 @@
"html-webpack-plugin": "5.6.0", "html-webpack-plugin": "5.6.0",
"http-server": "14.1.1", "http-server": "14.1.1",
"i18next-parser": "9.0.1", "i18next-parser": "9.0.1",
"ini": "^4.1.3",
"jest": "29.7.0", "jest": "29.7.0",
"jest-canvas-mock": "2.5.2", "jest-canvas-mock": "2.5.2",
"jest-date-mock": "1.0.10", "jest-date-mock": "1.0.10",

View File

@ -5,9 +5,13 @@ import i18next from 'i18next';
import failOnConsole from 'jest-fail-on-console'; import failOnConsole from 'jest-fail-on-console';
import { initReactI18next } from 'react-i18next'; import { initReactI18next } from 'react-i18next';
import getEnvConfig from '../../scripts/webpack/env-util';
import { matchers } from './matchers'; import { matchers } from './matchers';
if (process.env.CI) { const config = getEnvConfig() as Record<string, string | boolean>;
if (config.frontend_dev_fail_tests_on_console || process.env.CI) {
failOnConsole({ failOnConsole({
shouldFailOnLog: true, shouldFailOnLog: true,
shouldFailOnDebug: true, shouldFailOnDebug: true,

View File

@ -0,0 +1,29 @@
const { parse } = require('ini');
const { readFileSync, existsSync } = require('node:fs');
const getEnvConfig = () => {
const defaultSettings = readFileSync(`./conf/defaults.ini`, {
encoding: 'utf-8',
});
const customSettings = existsSync(`./conf/custom.ini`)
? readFileSync(`./conf/custom.ini`, {
encoding: 'utf-8',
})
: '';
const defaults = parse(defaultSettings);
const custom = parse(customSettings);
const merged = { ...defaults.frontend_dev, ...custom.frontend_dev };
// Take all frontend keys from the ini file and prefix with `frontend_dev_`,
// so they can be added to `process.env` elsewhere
return Object.entries(merged).reduce((acc, [key, value]) => {
return {
...acc,
[`frontend_dev_${key}`]: value,
};
}, {});
};
module.exports = getEnvConfig;

View File

@ -6,11 +6,12 @@ const ESLintPlugin = require('eslint-webpack-plugin');
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const path = require('path'); const path = require('path');
const { DefinePlugin } = require('webpack'); const { DefinePlugin, EnvironmentPlugin } = require('webpack');
const WebpackAssetsManifest = require('webpack-assets-manifest'); const WebpackAssetsManifest = require('webpack-assets-manifest');
const { merge } = require('webpack-merge'); const { merge } = require('webpack-merge');
const WebpackBar = require('webpackbar'); const WebpackBar = require('webpackbar');
const getEnvConfig = require('./env-util.js');
const common = require('./webpack.common.js'); const common = require('./webpack.common.js');
const esbuildTargets = resolveToEsbuildTarget(browserslist(), { printUnknownTargets: false }); const esbuildTargets = resolveToEsbuildTarget(browserslist(), { printUnknownTargets: false });
// esbuild-loader 3.0.0+ requires format to be set to prevent it // esbuild-loader 3.0.0+ requires format to be set to prevent it
@ -27,6 +28,8 @@ function getDecoupledPlugins() {
return packages.filter((pkg) => pkg.dir.includes('plugins/datasource')).map((pkg) => `${pkg.dir}/**`); return packages.filter((pkg) => pkg.dir.includes('plugins/datasource')).map((pkg) => `${pkg.dir}/**`);
} }
const envConfig = getEnvConfig();
module.exports = (env = {}) => { module.exports = (env = {}) => {
return merge(common, { return merge(common, {
devtool: 'source-map', devtool: 'source-map',
@ -139,6 +142,7 @@ module.exports = (env = {}) => {
color: '#eb7b18', color: '#eb7b18',
name: 'Grafana', name: 'Grafana',
}), }),
new EnvironmentPlugin(envConfig),
], ],
stats: 'minimal', stats: 'minimal',

View File

@ -6,10 +6,12 @@ const { EsbuildPlugin } = require('esbuild-loader');
const { resolveToEsbuildTarget } = require('esbuild-plugin-browserslist'); const { resolveToEsbuildTarget } = require('esbuild-plugin-browserslist');
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const path = require('path'); const path = require('path');
const { EnvironmentPlugin } = require('webpack');
const WebpackAssetsManifest = require('webpack-assets-manifest'); const WebpackAssetsManifest = require('webpack-assets-manifest');
const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); const { WebpackManifestPlugin } = require('webpack-manifest-plugin');
const { merge } = require('webpack-merge'); const { merge } = require('webpack-merge');
const getEnvConfig = require('./env-util.js');
const common = require('./webpack.common.js'); const common = require('./webpack.common.js');
const esbuildTargets = resolveToEsbuildTarget(browserslist(), { printUnknownTargets: false }); const esbuildTargets = resolveToEsbuildTarget(browserslist(), { printUnknownTargets: false });
@ -21,6 +23,8 @@ const esbuildOptions = {
jsx: 'automatic', jsx: 'automatic',
}; };
const envConfig = getEnvConfig();
module.exports = (env = {}) => module.exports = (env = {}) =>
merge(common, { merge(common, {
mode: 'production', mode: 'production',
@ -87,5 +91,6 @@ module.exports = (env = {}) =>
} }
}); });
}, },
new EnvironmentPlugin(envConfig),
], ],
}); });

189
yarn.lock
View File

@ -275,7 +275,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
version: 7.24.7
resolution: "@babel/helper-plugin-utils@npm:7.24.7"
checksum: 10/dad51622f0123fdba4e2d40a81a6b7d6ef4b1491b2f92fd9749447a36bde809106cf117358705057a2adc8fd73d5dc090222e0561b1213dae8601c8367f5aac8
languageName: node
linkType: hard
"@babel/helper-plugin-utils@npm:^7.24.8":
version: 7.24.8 version: 7.24.8
resolution: "@babel/helper-plugin-utils@npm:7.24.8" resolution: "@babel/helper-plugin-utils@npm:7.24.8"
checksum: 10/adbc9fc1142800a35a5eb0793296924ee8057fe35c61657774208670468a9fbfbb216f2d0bc46c680c5fefa785e5ff917cc1674b10bd75cdf9a6aa3444780630 checksum: 10/adbc9fc1142800a35a5eb0793296924ee8057fe35c61657774208670468a9fbfbb216f2d0bc46c680c5fefa785e5ff917cc1674b10bd75cdf9a6aa3444780630
@ -337,6 +344,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/helper-string-parser@npm:^7.24.7":
version: 7.24.7
resolution: "@babel/helper-string-parser@npm:7.24.7"
checksum: 10/603d8d962bbe89907aa99a8f19a006759ab7b2464615f20a6a22e3e2e8375af37ddd0e5175c9e622e1c4b2d83607ffb41055a59d0ce34404502af30fde573a5c
languageName: node
linkType: hard
"@babel/helper-string-parser@npm:^7.24.8": "@babel/helper-string-parser@npm:^7.24.8":
version: 7.24.8 version: 7.24.8
resolution: "@babel/helper-string-parser@npm:7.24.8" resolution: "@babel/helper-string-parser@npm:7.24.8"
@ -402,6 +416,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/parser@npm:^7.24.7":
version: 7.24.7
resolution: "@babel/parser@npm:7.24.7"
bin:
parser: ./bin/babel-parser.js
checksum: 10/ef9ebce60e13db560ccc7af9235d460f6726bb7e23ae2d675098c1fc43d5249067be60d4118889dad33b1d4f85162cf66baf554719e1669f29bb20e71322568e
languageName: node
linkType: hard
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3": "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3":
version: 7.25.3 version: 7.25.3
resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3" resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3"
@ -1590,7 +1613,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/template@npm:^7.22.5, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.3.3": "@babel/template@npm:^7.22.5, @babel/template@npm:^7.24.7, @babel/template@npm:^7.3.3":
version: 7.24.7
resolution: "@babel/template@npm:7.24.7"
dependencies:
"@babel/code-frame": "npm:^7.24.7"
"@babel/parser": "npm:^7.24.7"
"@babel/types": "npm:^7.24.7"
checksum: 10/5975d404ef51cf379515eb0f80b115981d0b9dff5539e53a47516644abb8c83d7559f5b083eb1d4977b20d8359ebb2f911ccd4f729143f8958fdc465f976d843
languageName: node
linkType: hard
"@babel/template@npm:^7.25.0":
version: 7.25.0 version: 7.25.0
resolution: "@babel/template@npm:7.25.0" resolution: "@babel/template@npm:7.25.0"
dependencies: dependencies:
@ -1616,7 +1650,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.22.5, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": "@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.22.5, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
version: 7.24.7
resolution: "@babel/types@npm:7.24.7"
dependencies:
"@babel/helper-string-parser": "npm:^7.24.7"
"@babel/helper-validator-identifier": "npm:^7.24.7"
to-fast-properties: "npm:^2.0.0"
checksum: 10/ad3c8c0d6fb4acb0bb74bb5b4bb849b181bf6185677ef9c59c18856c81e43628d0858253cf232f0eca806f02e08eff85a1d3e636a3e94daea737597796b0b430
languageName: node
linkType: hard
"@babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2":
version: 7.25.2 version: 7.25.2
resolution: "@babel/types@npm:7.25.2" resolution: "@babel/types@npm:7.25.2"
dependencies: dependencies:
@ -4847,7 +4892,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@msagl/core@npm:^1.1.19, @msagl/core@npm:^1.1.20": "@msagl/core@npm:^1.1.19":
version: 1.1.20 version: 1.1.20
resolution: "@msagl/core@npm:1.1.20" resolution: "@msagl/core@npm:1.1.20"
dependencies: dependencies:
@ -4860,25 +4905,25 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@msagl/drawing@npm:^1.1.20": "@msagl/drawing@npm:^1.1.19":
version: 1.1.20 version: 1.1.19
resolution: "@msagl/drawing@npm:1.1.20" resolution: "@msagl/drawing@npm:1.1.19"
dependencies: dependencies:
"@msagl/core": "npm:^1.1.20" "@msagl/core": "npm:^1.1.19"
checksum: 10/69a18e6dbff44f7332cd4340678341b9a57580328bfcf6342e642e8372e27179b7f1b8c2869ad2e92f9e3e1aba4e06b622596e57927e58c93804715887e6ead6 checksum: 10/b8963ab6f8dd7943a10d950abe11030996e12cd74503c6d704678dce54c1fd0f5ee1570cc893027e24150e475294d09a4ae4ac3be8f9e9f8d7382d7b7c5303a9
languageName: node languageName: node
linkType: hard linkType: hard
"@msagl/parser@npm:^1.1.19": "@msagl/parser@npm:^1.1.19":
version: 1.1.20 version: 1.1.19
resolution: "@msagl/parser@npm:1.1.20" resolution: "@msagl/parser@npm:1.1.19"
dependencies: dependencies:
"@msagl/core": "npm:^1.1.20" "@msagl/core": "npm:^1.1.19"
"@msagl/drawing": "npm:^1.1.20" "@msagl/drawing": "npm:^1.1.19"
"@types/parse-color": "npm:^1.0.1" "@types/parse-color": "npm:^1.0.1"
dotparser: "npm:^1.1.1" dotparser: "npm:^1.1.1"
parse-color: "npm:^1.0.0" parse-color: "npm:^1.0.0"
checksum: 10/1ae5a17ad537f1b247e7c05b0c936ceead3be923f283bb76af22ea42272d8fd1dcf0d075934174bb7b99e7e7aa0927bde3255874e50566e1a1ba90194aa5347d checksum: 10/349dcd57a3365628699b45172359363b86a1b27f8300b5b7fde97ba65eb512191a7433b72908a544fbbdc1d91bcaa9ca498faef345078367529820a47af38609
languageName: node languageName: node
linkType: hard linkType: hard
@ -5088,7 +5133,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@npmcli/package-json@npm:5.2.0, @npmcli/package-json@npm:^5.0.0, @npmcli/package-json@npm:^5.1.0": "@npmcli/package-json@npm:5.2.0, @npmcli/package-json@npm:^5.1.0":
version: 5.2.0 version: 5.2.0
resolution: "@npmcli/package-json@npm:5.2.0" resolution: "@npmcli/package-json@npm:5.2.0"
dependencies: dependencies:
@ -5103,6 +5148,21 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@npmcli/package-json@npm:^5.0.0":
version: 5.1.0
resolution: "@npmcli/package-json@npm:5.1.0"
dependencies:
"@npmcli/git": "npm:^5.0.0"
glob: "npm:^10.2.2"
hosted-git-info: "npm:^7.0.0"
json-parse-even-better-errors: "npm:^3.0.0"
normalize-package-data: "npm:^6.0.0"
proc-log: "npm:^4.0.0"
semver: "npm:^7.5.3"
checksum: 10/0e5cb5eff32cf80234525160a702c91a38e4b98ab74e34e2632b43c4350dbad170bd835989cc7d6e18d24798e3242e45b60f3d5e26bd128fe1c4529931105f8e
languageName: node
linkType: hard
"@npmcli/promise-spawn@npm:^7.0.0": "@npmcli/promise-spawn@npm:^7.0.0":
version: 7.0.2 version: 7.0.2
resolution: "@npmcli/promise-spawn@npm:7.0.2" resolution: "@npmcli/promise-spawn@npm:7.0.2"
@ -8996,6 +9056,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/ini@npm:^4":
version: 4.1.0
resolution: "@types/ini@npm:4.1.0"
checksum: 10/43dc756f60a4b2e828371baa0c5db006f3d31a2d58877f88ff15a58815aa804a612eea35adfc2c0e99ba09632b7a96bdf4a55ccaf5f164598f9ee314ad1171a1
languageName: node
linkType: hard
"@types/is-hotkey@npm:0.1.10": "@types/is-hotkey@npm:0.1.10":
version: 0.1.10 version: 0.1.10
resolution: "@types/is-hotkey@npm:0.1.10" resolution: "@types/is-hotkey@npm:0.1.10"
@ -9211,7 +9278,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/node@npm:*, @types/node@npm:20.14.14, @types/node@npm:>=13.7.0, @types/node@npm:^20.11.16": "@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^20.11.16":
version: 20.14.2
resolution: "@types/node@npm:20.14.2"
dependencies:
undici-types: "npm:~5.26.4"
checksum: 10/c38e47b190fa0a8bdfde24b036dddcf9401551f2fb170a90ff33625c7d6f218907e81c74e0fa6e394804a32623c24c60c50e249badc951007830f0d02c48ee0f
languageName: node
linkType: hard
"@types/node@npm:20.14.14":
version: 20.14.14 version: 20.14.14
resolution: "@types/node@npm:20.14.14" resolution: "@types/node@npm:20.14.14"
dependencies: dependencies:
@ -10659,7 +10735,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.12.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0": "acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0":
version: 8.11.3
resolution: "acorn@npm:8.11.3"
bin:
acorn: bin/acorn
checksum: 10/b688e7e3c64d9bfb17b596e1b35e4da9d50553713b3b3630cf5690f2b023a84eac90c56851e6912b483fe60e8b4ea28b254c07e92f17ef83d72d78745a8352dd
languageName: node
linkType: hard
"acorn@npm:^8.12.0":
version: 8.12.1 version: 8.12.1
resolution: "acorn@npm:8.12.1" resolution: "acorn@npm:8.12.1"
bin: bin:
@ -14267,7 +14352,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"dedent@npm:1.5.3, dedent@npm:^1.0.0": "dedent@npm:1.5.3":
version: 1.5.3 version: 1.5.3
resolution: "dedent@npm:1.5.3" resolution: "dedent@npm:1.5.3"
peerDependencies: peerDependencies:
@ -14286,6 +14371,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"dedent@npm:^1.0.0":
version: 1.5.1
resolution: "dedent@npm:1.5.1"
peerDependencies:
babel-plugin-macros: ^3.1.0
peerDependenciesMeta:
babel-plugin-macros:
optional: true
checksum: 10/fc00a8bc3dfb7c413a778dc40ee8151b6c6ff35159d641f36ecd839c1df5c6e0ec5f4992e658c82624a1a62aaecaffc23b9c965ceb0bbf4d698bfc16469ac27d
languageName: node
linkType: hard
"deep-equal@npm:^2.0.5": "deep-equal@npm:^2.0.5":
version: 2.2.3 version: 2.2.3
resolution: "deep-equal@npm:2.2.3" resolution: "deep-equal@npm:2.2.3"
@ -14999,7 +15096,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"enhanced-resolve@npm:^5.16.0, enhanced-resolve@npm:^5.17.1": "enhanced-resolve@npm:^5.16.0":
version: 5.17.1 version: 5.17.1
resolution: "enhanced-resolve@npm:5.17.1" resolution: "enhanced-resolve@npm:5.17.1"
dependencies: dependencies:
@ -15046,7 +15143,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"envinfo@npm:7.13.0, envinfo@npm:^7.7.3": "envinfo@npm:7.13.0":
version: 7.13.0 version: 7.13.0
resolution: "envinfo@npm:7.13.0" resolution: "envinfo@npm:7.13.0"
bin: bin:
@ -15055,6 +15152,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"envinfo@npm:^7.7.3":
version: 7.8.1
resolution: "envinfo@npm:7.8.1"
bin:
envinfo: dist/cli.js
checksum: 10/e7a2d71c7dfe398a4ffda0e844e242d2183ef2627f98e74e4cd71edd2af691c8707a2b34aacef92538c27b3daf9a360d32202f33c0a9f27f767c4e1c6ba8b522
languageName: node
linkType: hard
"eol@npm:^0.9.1": "eol@npm:^0.9.1":
version: 0.9.1 version: 0.9.1
resolution: "eol@npm:0.9.1" resolution: "eol@npm:0.9.1"
@ -17563,6 +17669,7 @@ __metadata:
"@types/google.analytics": "npm:^0.0.46" "@types/google.analytics": "npm:^0.0.46"
"@types/gtag.js": "npm:^0.0.20" "@types/gtag.js": "npm:^0.0.20"
"@types/history": "npm:4.7.11" "@types/history": "npm:4.7.11"
"@types/ini": "npm:^4"
"@types/jest": "npm:29.5.12" "@types/jest": "npm:29.5.12"
"@types/jquery": "npm:3.5.30" "@types/jquery": "npm:3.5.30"
"@types/js-yaml": "npm:^4.0.5" "@types/js-yaml": "npm:^4.0.5"
@ -17673,6 +17780,7 @@ __metadata:
i18next-parser: "npm:9.0.1" i18next-parser: "npm:9.0.1"
immer: "npm:10.1.1" immer: "npm:10.1.1"
immutable: "npm:4.3.7" immutable: "npm:4.3.7"
ini: "npm:^4.1.3"
jest: "npm:29.7.0" jest: "npm:29.7.0"
jest-canvas-mock: "npm:2.5.2" jest-canvas-mock: "npm:2.5.2"
jest-date-mock: "npm:1.0.10" jest-date-mock: "npm:1.0.10"
@ -18707,6 +18815,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ini@npm:^4.1.3":
version: 4.1.3
resolution: "ini@npm:4.1.3"
checksum: 10/f536b414d1442e5b233429e2b56efcdb354109b2d65ddd489e5939d8f0f5ad23c88aa2b19c92987249d0dd63ba8192e9aeb1a02b0459549c5a9ff31acd729a5d
languageName: node
linkType: hard
"init-package-json@npm:6.0.3": "init-package-json@npm:6.0.3":
version: 6.0.3 version: 6.0.3
resolution: "init-package-json@npm:6.0.3" resolution: "init-package-json@npm:6.0.3"
@ -20597,13 +20712,12 @@ __metadata:
linkType: hard linkType: hard
"knip@npm:^5.10.0": "knip@npm:^5.10.0":
version: 5.27.2 version: 5.27.0
resolution: "knip@npm:5.27.2" resolution: "knip@npm:5.27.0"
dependencies: dependencies:
"@nodelib/fs.walk": "npm:1.2.8" "@nodelib/fs.walk": "npm:1.2.8"
"@snyk/github-codeowners": "npm:1.1.0" "@snyk/github-codeowners": "npm:1.1.0"
easy-table: "npm:1.2.0" easy-table: "npm:1.2.0"
enhanced-resolve: "npm:^5.17.1"
fast-glob: "npm:^3.3.2" fast-glob: "npm:^3.3.2"
jiti: "npm:^1.21.6" jiti: "npm:^1.21.6"
js-yaml: "npm:^4.1.0" js-yaml: "npm:^4.1.0"
@ -20611,6 +20725,7 @@ __metadata:
picocolors: "npm:^1.0.0" picocolors: "npm:^1.0.0"
picomatch: "npm:^4.0.1" picomatch: "npm:^4.0.1"
pretty-ms: "npm:^9.0.0" pretty-ms: "npm:^9.0.0"
resolve: "npm:^1.22.8"
smol-toml: "npm:^1.1.4" smol-toml: "npm:^1.1.4"
strip-json-comments: "npm:5.0.1" strip-json-comments: "npm:5.0.1"
summary: "npm:2.1.0" summary: "npm:2.1.0"
@ -20622,7 +20737,7 @@ __metadata:
bin: bin:
knip: bin/knip.js knip: bin/knip.js
knip-bun: bin/knip-bun.js knip-bun: bin/knip-bun.js
checksum: 10/65023f970b400e66b6d5edb7262409647399cd0f6706c54dd70f923b44776b954d3c639495a5bd6e2d82ab8c6b700fced8c0d350b34683417417394c5c8815a1 checksum: 10/0b48a4789b9d9a4444bf6914ff2f71f6e5a926219287b170f2919fe2dc0f1bdb5ee11e1e15f511337684ab1883cb9cde8ea6c5226926f54c382072e139dd388b
languageName: node languageName: node
linkType: hard linkType: hard
@ -24651,7 +24766,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.15, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.1": "postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.1.1":
version: 6.1.1 version: 6.1.1
resolution: "postcss-selector-parser@npm:6.1.1" resolution: "postcss-selector-parser@npm:6.1.1"
dependencies: dependencies:
@ -24661,6 +24776,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.15, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4":
version: 6.1.0
resolution: "postcss-selector-parser@npm:6.1.0"
dependencies:
cssesc: "npm:^3.0.0"
util-deprecate: "npm:^1.0.2"
checksum: 10/2f9e5045b8bbe674fed3b79dbcd3daf21f5188cd7baf179beac513710ec3d75a8fc8184a262c3aec1c628ad3fd8bdb29c5d8530f1c9c5a61a18e1980bb000945
languageName: node
linkType: hard
"postcss-svgo@npm:^6.0.2": "postcss-svgo@npm:^6.0.2":
version: 6.0.2 version: 6.0.2
resolution: "postcss-svgo@npm:6.0.2" resolution: "postcss-svgo@npm:6.0.2"
@ -25714,11 +25839,11 @@ __metadata:
linkType: hard linkType: hard
"react-hook-form@npm:^7.49.2": "react-hook-form@npm:^7.49.2":
version: 7.52.2 version: 7.51.5
resolution: "react-hook-form@npm:7.52.2" resolution: "react-hook-form@npm:7.51.5"
peerDependencies: peerDependencies:
react: ^16.8.0 || ^17 || ^18 || ^19 react: ^16.8.0 || ^17 || ^18
checksum: 10/91a738881d9463fb73794374a5aec17b3fac41aac92ddf64ccfa205fd2ebc211376a6a41a8c579fd256cda4aae4d64b0c1f3e872e361b9673edef5e2f0b75c35 checksum: 10/f4ff77989202b1faf2dede7a7730210635a6225189dcaeaeb191cea12422bcb97d2adfef0712c50d13bf5c5e14b8debc00fbba16491f86a6d24945a52cacfa59
languageName: node languageName: node
linkType: hard linkType: hard
@ -26334,12 +26459,12 @@ __metadata:
linkType: hard linkType: hard
"react-zoom-pan-pinch@npm:^3.3.0": "react-zoom-pan-pinch@npm:^3.3.0":
version: 3.6.1 version: 3.4.4
resolution: "react-zoom-pan-pinch@npm:3.6.1" resolution: "react-zoom-pan-pinch@npm:3.4.4"
peerDependencies: peerDependencies:
react: "*" react: "*"
react-dom: "*" react-dom: "*"
checksum: 10/9146aa5c427dd6d0c8a4ebe3db0c720718eef6262d1b4b36033ee433bc76a9c84e30ca91311211ab95446305d3e2813d9abc576d093efbf5562be984431896cb checksum: 10/c02a7047923ed85f6d5e45d754d3df8403c00c2bf39fce4ef07d81961bdb3bcd549ca27b3122fba17dc2ac7eb2eb4c2b4c656bb503402aa6f7869a446a8ddff4
languageName: node languageName: node
linkType: hard linkType: hard