From aa3eb7c142498994ad3a8ac851765d014e1fd712 Mon Sep 17 00:00:00 2001 From: Valery Bugakov Date: Fri, 29 Jul 2022 11:22:05 +0800 Subject: [PATCH] web: named `Webpack` chunks (#39481) --- .stylelintignore | 1 + .vscode/settings.json | 20 +- babel.config.js | 22 +- client/build-config/src/paths.ts | 3 +- client/build-config/src/webpack/plugins.ts | 11 +- client/observability/.eslintignore | 1 + client/observability/.eslintrc.js | 13 + client/observability/OWNERS | 3 + client/observability/README.md | 12 + client/observability/babel.config.js | 5 + client/observability/jest.config.js | 13 + client/observability/package.json | 14 + client/observability/src/constants.ts | 13 + client/observability/src/libhoney.d.ts | 115 +++++ client/observability/src/sdk.ts | 12 + .../__mocks__/assets/scripts/app.bundle.js | 1 + .../__mocks__/assets/scripts/app.bundle.js.br | 1 + .../__mocks__/assets/scripts/app.bundle.js.gz | 1 + .../assets/styles/app.123.bundle.css | 3 + .../assets/styles/app.123.bundle.css.br | 1 + .../assets/styles/app.123.bundle.css.gz | 1 + .../__mocks__/bundlesize.config.js | 16 + .../webBundleSize/getBundleSizeStats.test.ts | 20 + .../src/webBundleSize/getBundleSizeStats.ts | 53 ++ .../observability/src/webBundleSize/index.ts | 55 ++ client/observability/tsconfig.json | 16 + client/web/bundlesize.config.js | 40 +- client/web/package.json | 1 + client/web/webpack.config.js | 19 +- dev/foreach-ts-project.sh | 1 + package.json | 4 + tsconfig.all.json | 1 + yarn.lock | 474 ++++++++++++++---- 33 files changed, 834 insertions(+), 132 deletions(-) create mode 100644 client/observability/.eslintignore create mode 100644 client/observability/.eslintrc.js create mode 100644 client/observability/OWNERS create mode 100644 client/observability/README.md create mode 100644 client/observability/babel.config.js create mode 100644 client/observability/jest.config.js create mode 100644 client/observability/package.json create mode 100644 client/observability/src/constants.ts create mode 100644 client/observability/src/libhoney.d.ts create mode 100644 client/observability/src/sdk.ts create mode 100644 client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js create mode 100644 client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js.br create mode 100644 client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js.gz create mode 100644 client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css create mode 100644 client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css.br create mode 100644 client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css.gz create mode 100644 client/observability/src/webBundleSize/__mocks__/bundlesize.config.js create mode 100644 client/observability/src/webBundleSize/getBundleSizeStats.test.ts create mode 100644 client/observability/src/webBundleSize/getBundleSizeStats.ts create mode 100644 client/observability/src/webBundleSize/index.ts create mode 100644 client/observability/tsconfig.json diff --git a/.stylelintignore b/.stylelintignore index 6d63984458c..bb4bb19c8b6 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -4,3 +4,4 @@ **/*.tsx **/*.svg node_modules/ +__mocks__/ diff --git a/.vscode/settings.json b/.vscode/settings.json index ed8ab8ff6d9..84d426e861e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -56,25 +56,7 @@ }, "eslint.codeActionsOnSave.mode": "problems", "eslint.options": { "cache": true }, - "eslint.workingDirectories": [ - "./dev/release", - "./client/web", - "./client/browser", - "./client/build-config", - "./client/shared", - "./client/search", - "./client/search-ui", - "./client/vscode", - "./client/http-client", - "./client/branded", - "./client/wildcard", - "./client/storybook", - "./client/extension-api-types", - "./client/extension-api", - "./client/template-parser", - "./client/codeintellify", - "./client/client-api", - ], + "eslint.workingDirectories": ["./dev/release", "./client/*"], "go.lintTool": "golangci-lint", "shellformat.flag": "-i 2 -ci", "vscode-graphql.useSchemaFileDefinitions": true, diff --git a/babel.config.js b/babel.config.js index 93c1d6904a4..c70a4025957 100644 --- a/babel.config.js +++ b/babel.config.js @@ -55,7 +55,27 @@ module.exports = api => { }, ], ], - plugins: [['@babel/plugin-transform-typescript', { isTSX: true }], 'babel-plugin-lodash'], + plugins: [ + ['@babel/plugin-transform-typescript', { isTSX: true }], + 'babel-plugin-lodash', + [ + 'webpack-chunkname', + { + /** + * Autogenerate `webpackChunkName` for dynamic imports. + * + * import('./pages/Home') -> import(/* webpackChunkName: 'sg_pages_Home' *\/'./pages/Home') + */ + getChunkName: (/** @type string */ importPath) => { + const chunkName = importPath + .replace(/[./]+/g, '_') // replace "." and "/" with "_". + .replace(/(^_+)/g, '') // remove all leading "_". + + return `sg_${chunkName}` + }, + }, + ], + ], // Required for d3-array v1.2 (dependency of recharts). See https://github.com/babel/babel/issues/11038 ignore: [new RegExp('d3-array/src/cumsum.js')], } diff --git a/client/build-config/src/paths.ts b/client/build-config/src/paths.ts index 25e93c9ca02..8696713946f 100644 --- a/client/build-config/src/paths.ts +++ b/client/build-config/src/paths.ts @@ -1,7 +1,8 @@ import path from 'path' export const ROOT_PATH = path.resolve(__dirname, '../../../') +export const WORKSPACES_PATH = path.resolve(ROOT_PATH, 'client') export const NODE_MODULES_PATH = path.resolve(ROOT_PATH, 'node_modules') export const MONACO_EDITOR_PATH = path.resolve(NODE_MODULES_PATH, 'monaco-editor') -export const STATIC_ASSETS_PATH = path.join(ROOT_PATH, 'ui/assets') +export const STATIC_ASSETS_PATH = path.resolve(ROOT_PATH, 'ui/assets') export const STATIC_INDEX_PATH = path.resolve(STATIC_ASSETS_PATH, 'index.html') diff --git a/client/build-config/src/webpack/plugins.ts b/client/build-config/src/webpack/plugins.ts index 57a5e3264a6..b16012a69d0 100644 --- a/client/build-config/src/webpack/plugins.ts +++ b/client/build-config/src/webpack/plugins.ts @@ -1,6 +1,6 @@ import StatoscopeWebpackPlugin from '@statoscope/webpack-plugin' import TerserPlugin from 'terser-webpack-plugin' -import webpack from 'webpack' +import webpack, { StatsOptions } from 'webpack' export const getTerserPlugin = (): TerserPlugin => new TerserPlugin({ @@ -23,9 +23,7 @@ export const getProvidePlugin = (): webpack.ProvidePlugin => Buffer: ['buffer', 'Buffer'], }) -export const getStatoscopePlugin = (): StatoscopeWebpackPlugin => new StatoscopeWebpackPlugin() - -export const STATOSCOPE_STATS = { +const STATOSCOPE_STATS: StatsOptions = { all: false, // disable all the stats hash: true, // compilation hash entrypoints: true, @@ -47,3 +45,8 @@ export const STATOSCOPE_STATS = { timings: true, // modules timing information performance: true, // info about oversized assets } + +export const getStatoscopePlugin = (): StatoscopeWebpackPlugin => + new StatoscopeWebpackPlugin({ + statsOptions: STATOSCOPE_STATS as Record, + }) diff --git a/client/observability/.eslintignore b/client/observability/.eslintignore new file mode 100644 index 00000000000..89f9ac04aac --- /dev/null +++ b/client/observability/.eslintignore @@ -0,0 +1 @@ +out/ diff --git a/client/observability/.eslintrc.js b/client/observability/.eslintrc.js new file mode 100644 index 00000000000..3747f40c469 --- /dev/null +++ b/client/observability/.eslintrc.js @@ -0,0 +1,13 @@ +// @ts-check + +const baseConfig = require('../../.eslintrc.js') + +module.exports = { + extends: '../../.eslintrc.js', + parserOptions: { + ...baseConfig.parserOptions, + project: [__dirname + '/tsconfig.json'], + }, + rules: {}, + overrides: baseConfig.overrides, +} diff --git a/client/observability/OWNERS b/client/observability/OWNERS new file mode 100644 index 00000000000..1b5cf3a0dfe --- /dev/null +++ b/client/observability/OWNERS @@ -0,0 +1,3 @@ +# See https://github.com/sourcegraph/codenotify for documentation. + +**/* @sourcegraph/frontend-platform-devs diff --git a/client/observability/README.md b/client/observability/README.md new file mode 100644 index 00000000000..4fd31a2cffb --- /dev/null +++ b/client/observability/README.md @@ -0,0 +1,12 @@ +# Observability + +Shared client infrastructure observability tools. + +## Vision + +1. Use this package for new scripts related to client infrastructure instrumentation and analysis. +2. Colocate logic here to benefit from having shared: + - setup configuration (libhoney.js), + - observability event schemas, + - environment variable validators, + - unit tests. diff --git a/client/observability/babel.config.js b/client/observability/babel.config.js new file mode 100644 index 00000000000..73a95d310cd --- /dev/null +++ b/client/observability/babel.config.js @@ -0,0 +1,5 @@ +// @ts-check + +module.exports = { + extends: '../../babel.config.js', +} diff --git a/client/observability/jest.config.js b/client/observability/jest.config.js new file mode 100644 index 00000000000..aeb7cd9287b --- /dev/null +++ b/client/observability/jest.config.js @@ -0,0 +1,13 @@ +// @ts-check + +const config = require('../../jest.config.base') + +const exportedConfig = { + ...config, + displayName: 'observability', + rootDir: __dirname, + roots: [''], + verbose: true, +} + +module.exports = exportedConfig diff --git a/client/observability/package.json b/client/observability/package.json new file mode 100644 index 00000000000..e42d9c16b83 --- /dev/null +++ b/client/observability/package.json @@ -0,0 +1,14 @@ +{ + "private": true, + "name": "@sourcegraph/observability", + "version": "0.0.1", + "description": "Sourcegraph client observability tools", + "main": "./src/index.ts", + "sideEffects": false, + "license": "Apache-2.0", + "scripts": { + "bundlesize:web:upload": "NODE_ENV=production ts-node-transpile-only ./src/webBundleSize", + "lint:js": "eslint --cache 'src/**/*.[jt]s?(x)'", + "test": "jest" + } +} diff --git a/client/observability/src/constants.ts b/client/observability/src/constants.ts new file mode 100644 index 00000000000..7a50bb67597 --- /dev/null +++ b/client/observability/src/constants.ts @@ -0,0 +1,13 @@ +import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' + +export const SDK_INFO = { + [SemanticResourceAttributes.TELEMETRY_SDK_NAME]: 'libhoney', + [SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE]: 'node.js', +} + +export const BUILDKITE_INFO = { + 'buildkite.build.url': process.env.BUILDKITE_BUILD_URL, + 'buildkite.build.id': process.env.BUILDKITE_BUILD_ID, + 'buildkite.step.key': process.env.BUILDKITE_STEP_KEY, + 'buildkite.step.id': process.env.BUILDKITE_STEP_ID, +} diff --git a/client/observability/src/libhoney.d.ts b/client/observability/src/libhoney.d.ts new file mode 100644 index 00000000000..a28e20db45a --- /dev/null +++ b/client/observability/src/libhoney.d.ts @@ -0,0 +1,115 @@ +/* eslint-disable @typescript-eslint/consistent-type-definitions */ +declare module 'libhoney' { + type LibhoneyOptions = { + writeKey: string + dataset: string + } + + type FieldValue = string | number | undefined | null | boolean + type DynamicFieldValue = () => FieldValue + + type Fields = Record + type DynamicFields = Record + + /** + * Represents an individual event to send to Honeycomb. + */ + class Event { + public timestamp: string + public data: Fields + + constructor(libhoney: Libhoney, fields: Fields, dynamicFields: DynamicFields) + + /** + * adds a group of field->values to this event. + */ + add(data: Fields): void + + /** + * adds a single field->value mapping to this event. + */ + addField(name: string, value: FieldValue): Event + + /** + * attaches data to an event that is not transmitted to honeycomb, but instead is available + * when checking the send responses. + */ + addMetadata(md: Record): Event + + /** + * Sends this event to honeycomb, sampling if necessary. + */ + send(): void + + /** + * Dispatch an event to be sent to Honeycomb. Assumes sampling has already happened, + * and will send every event handed to it. + */ + sendPresampled(): void + } + + /* + * Allows piecemeal creation of events. + */ + class Builder { + constructor(libhoney: Libhoney, fields: Fields, dynamicFields: DynamicFields) + /* + * adds a group of field->values to the events created from this builder. + */ + add(fields: Fields & DynamicFields): Builder + /* + * adds a single field->value mapping to the events created from this builder. + */ + addField(name: string, value: FieldValue): Builder + /* + * adds a single field->dynamic value function, which is invoked to supply values when events + are created from this builder. + */ + addDynamicField(name: string, dynamicFieldValue: DynamicFieldValue): Builder + /** + * creates and sends an event, including all builder fields/dynFields, as well as anything + * in the optional data parameter. + */ + sendNow(fields: Fields): void + /* + * creates and returns a new Event containing all fields/dynFields from this builder, that + can be further fleshed out and sent on its own. + */ + newEvent(): Event + /* + * creates and returns a clone of this builder, merged with fields and dynFields passed as + * arguments. + */ + newBuilder(fields: Fields, dynamicFields?: DynamicFields): Builder + } + + /* + * libhoney aims to make it as easy as possible to create events and send them on into Honeycomb. + */ + class Libhoney { + public sampleRate: number + public dataset: number + public writeKey: string + public apiHost: string + /* + * Constructs a libhoney context in order to configure default behavior, + * though each of its members (`apiHost`, `writeKey`, `dataset`, and + * `sampleRate`) may in fact be overridden on a specific Builder or Event. + */ + constructor(options: LibhoneyOptions) + add: Builder['add'] + addField: Builder['addField'] + addDynamicField: Builder['addDynamicField'] + sendNow: Builder['sendNow'] + newEvent: Builder['newEvent'] + newBuilder: Builder['newBuilder'] + /** + * Allows you to easily wait for everything to be sent to Honeycomb (and for responses to come back for + * events). Also initializes a transmission instance for libhoney to use, so any events sent + * after a call to flush will not be waited on. + */ + flush(): Promise + } + + export default Libhoney +} diff --git a/client/observability/src/sdk.ts b/client/observability/src/sdk.ts new file mode 100644 index 00000000000..48d94f4d827 --- /dev/null +++ b/client/observability/src/sdk.ts @@ -0,0 +1,12 @@ +import { cleanEnv, str } from 'envalid' +import Libhoney from 'libhoney' + +const environment = cleanEnv(process.env, { + HONEYCOMB_API_KEY: str(), + HONEYCOMB_DATASET: str({ default: 'client-infrastructure', choices: ['client-infrastructure'] }), +}) + +export const libhoneySDK = new Libhoney({ + writeKey: environment.HONEYCOMB_API_KEY, + dataset: environment.HONEYCOMB_DATASET, +}) diff --git a/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js b/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js new file mode 100644 index 00000000000..e14c4f2a956 --- /dev/null +++ b/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js @@ -0,0 +1 @@ +console.log(1) diff --git a/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js.br b/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js.br new file mode 100644 index 00000000000..58c9bdf9d01 --- /dev/null +++ b/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js.br @@ -0,0 +1 @@ +111 diff --git a/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js.gz b/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js.gz new file mode 100644 index 00000000000..f7c6dd0164f --- /dev/null +++ b/client/observability/src/webBundleSize/__mocks__/assets/scripts/app.bundle.js.gz @@ -0,0 +1 @@ +11111 diff --git a/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css b/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css new file mode 100644 index 00000000000..b05faf8ead0 --- /dev/null +++ b/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css @@ -0,0 +1,3 @@ +body { + color: red; +} diff --git a/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css.br b/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css.br new file mode 100644 index 00000000000..58c9bdf9d01 --- /dev/null +++ b/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css.br @@ -0,0 +1 @@ +111 diff --git a/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css.gz b/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css.gz new file mode 100644 index 00000000000..f7c6dd0164f --- /dev/null +++ b/client/observability/src/webBundleSize/__mocks__/assets/styles/app.123.bundle.css.gz @@ -0,0 +1 @@ +11111 diff --git a/client/observability/src/webBundleSize/__mocks__/bundlesize.config.js b/client/observability/src/webBundleSize/__mocks__/bundlesize.config.js new file mode 100644 index 00000000000..89ce7f932cb --- /dev/null +++ b/client/observability/src/webBundleSize/__mocks__/bundlesize.config.js @@ -0,0 +1,16 @@ +const path = require('path') + +const config = { + files: [ + { + path: path.join(__dirname, './assets/scripts/*.br'), + maxSize: '10kb', + }, + { + path: path.join(__dirname, './assets/styles/*.br'), + maxSize: '10kb', + }, + ], +} + +module.exports = config diff --git a/client/observability/src/webBundleSize/getBundleSizeStats.test.ts b/client/observability/src/webBundleSize/getBundleSizeStats.test.ts new file mode 100644 index 00000000000..50eb8707b3d --- /dev/null +++ b/client/observability/src/webBundleSize/getBundleSizeStats.test.ts @@ -0,0 +1,20 @@ +import path from 'path' + +import { mapKeys } from 'lodash' + +import { getBundleSizeStats } from './getBundleSizeStats' + +const MOCKS_PATH = path.join(__dirname, './__mocks__') +const BUNDLESIZE_CONFIG_PATH = path.join(MOCKS_PATH, 'bundlesize.config.js') + +describe('getBundleSizeStats', () => { + it('collects bundle stats based on bundlesize config', () => { + const stats = getBundleSizeStats(BUNDLESIZE_CONFIG_PATH) + const prettyStats = mapKeys(stats, (_value, key) => key.replace(`${MOCKS_PATH}/`, '')) + + expect(prettyStats).toEqual({ + 'assets/scripts/app.bundle.js': { raw: 15, gzip: 6, brotli: 4 }, + 'assets/styles/app.123.bundle.css': { raw: 25, gzip: 6, brotli: 4 }, + }) + }) +}) diff --git a/client/observability/src/webBundleSize/getBundleSizeStats.ts b/client/observability/src/webBundleSize/getBundleSizeStats.ts new file mode 100644 index 00000000000..57185524ea4 --- /dev/null +++ b/client/observability/src/webBundleSize/getBundleSizeStats.ts @@ -0,0 +1,53 @@ +import { statSync } from 'fs' +import path from 'path' + +import glob from 'glob' + +import { STATIC_ASSETS_PATH } from '@sourcegraph/build-config' + +interface BundleSizeConfig { + files: { + path: string + maxSize: string + }[] +} + +interface BundleSizeStats { + [baseFilePath: string]: { + raw: number + gzip: number + brotli: number + } +} + +/** + * Get a list of files specified by bundlesize config glob and their respective sizes. + */ +export function getBundleSizeStats(bundlesizeConfigPath: string): BundleSizeStats { + // eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports + const bundleSizeConfig = require(bundlesizeConfigPath) as BundleSizeConfig + + return bundleSizeConfig.files.reduce((result, file) => { + const filePaths = glob.sync(file.path) + + const fileStats = filePaths.reduce((fileStats, brotliFilePath) => { + const { dir, name } = path.parse(brotliFilePath) + const noCompressionFilePath = path.join(dir, name) + const gzipFilePath = `${noCompressionFilePath}.gz` + + return { + ...fileStats, + [noCompressionFilePath.replace(`${STATIC_ASSETS_PATH}/`, '')]: { + raw: statSync(noCompressionFilePath).size, + gzip: statSync(gzipFilePath).size, + brotli: statSync(brotliFilePath).size, + }, + } + }, {}) + + return { + ...result, + ...fileStats, + } + }, {}) +} diff --git a/client/observability/src/webBundleSize/index.ts b/client/observability/src/webBundleSize/index.ts new file mode 100644 index 00000000000..3aeb420f3ef --- /dev/null +++ b/client/observability/src/webBundleSize/index.ts @@ -0,0 +1,55 @@ +/** + * The script collects web application bundlesize information from the disk and uploads it to Honeycomb. + * + * 1. Build web application using: + * ENTERPRISE=1 NODE_ENV=production DISABLE_TYPECHECKING=true WEBPACK_USE_NAMED_CHUNKS=true yarn build-web + * + * 2. Upload bundlesize information to Honeycomb: + * HONEYCOMB_API_KEY=XXX yarn workspace @sourcegraph/observability run bundlesize:web:upload + * + * 3. Check out collected data in Honeycomb! 🧠 + */ +import { execSync } from 'child_process' +import path from 'path' + +import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' +import { cleanEnv, bool, str } from 'envalid' + +import { WORKSPACES_PATH } from '@sourcegraph/build-config' + +import { BUILDKITE_INFO, SDK_INFO } from '../constants' +import { libhoneySDK } from '../sdk' + +import { getBundleSizeStats } from './getBundleSizeStats' + +const environment = cleanEnv(process.env, { + ENTERPRISE: bool({ default: false }), + NODE_ENV: str({ choices: ['development', 'production'] }), +}) + +const bundleSizeStats = getBundleSizeStats(path.join(WORKSPACES_PATH, 'web/bundlesize.config')) +const commit = execSync('git rev-parse HEAD').toString().trim() +const branch = execSync('git rev-parse --abbrev-ref HEAD').toString().trim() + +/** + * Log every file size as a separate event to Honeycomb. + */ +for (const [baseFilePath, fileSizes] of Object.entries(bundleSizeStats)) { + libhoneySDK.sendNow({ + name: 'bundlesize', + [SemanticResourceAttributes.SERVICE_NAME]: 'bundlesize', + [SemanticResourceAttributes.SERVICE_NAMESPACE]: 'web', + [SemanticResourceAttributes.SERVICE_VERSION]: commit, + 'service.branch': branch, + + 'bundle.file.name': baseFilePath, + 'bundle.file.size.raw': fileSizes.raw, + 'bundle.file.size.gzip': fileSizes.gzip, + 'bundle.file.size.brotli': fileSizes.brotli, + 'bundle.enterprise': environment.ENTERPRISE, + 'bundle.env': environment.NODE_ENV, + + ...SDK_INFO, + ...BUILDKITE_INFO, + }) +} diff --git a/client/observability/tsconfig.json b/client/observability/tsconfig.json new file mode 100644 index 00000000000..38a7e35edbb --- /dev/null +++ b/client/observability/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "sourceRoot": "src", + "rootDir": ".", + "outDir": "./out", + "baseUrl": "./src", + }, + "include": ["./src/**/*", "./*.ts"], + "references": [ + { + "path": "../build-config", + }, + ], +} diff --git a/client/web/bundlesize.config.js b/client/web/bundlesize.config.js index 9ebc6d2101c..ba882bffcb2 100644 --- a/client/web/bundlesize.config.js +++ b/client/web/bundlesize.config.js @@ -1,10 +1,14 @@ +const path = require('path') + +const STATIC_ASSETS_PATH = path.join(__dirname, '../../ui/assets') + const config = { files: [ /** * Our main entry JavaScript bundles, contains core logic that is loaded on every page. */ { - path: '../../ui/assets/scripts/*.bundle.js.br', + path: path.join(STATIC_ASSETS_PATH, 'scripts/app.bundle.js.br'), /** * Note: Temporary increase from 400kb. * Primary cause is due to multiple ongoing migrations that mean we are duplicating similar dependencies. @@ -13,6 +17,16 @@ const config = { maxSize: '425kb', compression: 'none', }, + { + path: path.join(STATIC_ASSETS_PATH, 'scripts/embed.bundle.js.br'), + maxSize: '155kb', + compression: 'none', + }, + { + path: path.join(STATIC_ASSETS_PATH, 'scripts/react.bundle.js.br'), + maxSize: '45kb', + compression: 'none', + }, /** * Our generated application chunks. Matches the deterministic id generated by Webpack. * @@ -21,15 +35,20 @@ const config = { * Issue to improve this: https://github.com/sourcegraph/sourcegraph/issues/26573 */ { - path: '../../ui/assets/scripts/[0-9]*.chunk.js.br', + path: path.join(STATIC_ASSETS_PATH, 'scripts/!(sg_)*.chunk.js.br'), maxSize: '500kb', compression: 'none', }, + { + path: path.join(STATIC_ASSETS_PATH, 'scripts/sg_*.chunk.js.br'), + maxSize: '200kb', + compression: 'none', + }, /** * Our generated worker files. */ { - path: '../../ui/assets/*.worker.js.br', + path: path.join(STATIC_ASSETS_PATH, '*.worker.js.br'), maxSize: '250kb', compression: 'none', }, @@ -37,10 +56,23 @@ const config = { * Our main entry CSS bundle, contains core styles that are loaded on every page. */ { - path: '../../ui/assets/styles/app.*.css.br', + path: path.join(STATIC_ASSETS_PATH, 'styles/app.*.css.br'), maxSize: '50kb', compression: 'none', }, + /** + * Notebook embed main entry CSS bundle. + */ + { + path: path.join(STATIC_ASSETS_PATH, 'styles/embed.*.css.br'), + maxSize: '35kb', + compression: 'none', + }, + { + path: path.join(STATIC_ASSETS_PATH, 'styles/!(app|embed).*.css.br'), + maxSize: '10kb', + compression: 'none', + }, ], } diff --git a/client/web/package.json b/client/web/package.json index b49671170e4..d456e32bffd 100644 --- a/client/web/package.json +++ b/client/web/package.json @@ -31,6 +31,7 @@ "lint:css": "stylelint 'src/**/*.scss' --quiet", "browserslist": "browserslist", "analyze-bundle": "WEBPACK_USE_NAMED_CHUNKS=true NODE_ENV=production ENTERPRISE=1 WEBPACK_BUNDLE_ANALYZER=1 yarn build", + "bundlesize:upload": "NODE_ENV=production ts-node-transpile-only --project ./dev/tsconfig.json ./dev/observability/bundlesize", "bundlesize": "bundlesize --config=./bundlesize.config.js" } } diff --git a/client/web/webpack.config.js b/client/web/webpack.config.js index 4734d918674..e2e45bd2ac7 100644 --- a/client/web/webpack.config.js +++ b/client/web/webpack.config.js @@ -25,7 +25,6 @@ const { getMonacoTTFRule, getBasicCSSLoader, getStatoscopePlugin, - STATOSCOPE_STATS, } = require('@sourcegraph/build-config') const { IS_PRODUCTION, IS_DEVELOPMENT, ENVIRONMENT_CONFIG } = require('./dev/utils') @@ -76,15 +75,13 @@ const extensionHostWorker = /main\.worker\.ts$/ const config = { context: __dirname, // needed when running `gulp webpackDevServer` from the root dir mode: IS_PRODUCTION ? 'production' : 'development', - stats: WEBPACK_BUNDLE_ANALYZER - ? STATOSCOPE_STATS - : { - // Minimize logging in case if Webpack is used along with multiple other services. - // Use `normal` output preset in case of running standalone web server. - preset: WEBPACK_SERVE_INDEX || IS_PRODUCTION ? 'normal' : 'errors-warnings', - errorDetails: true, - timings: true, - }, + stats: { + // Minimize logging in case if Webpack is used along with multiple other services. + // Use `normal` output preset in case of running standalone web server. + preset: WEBPACK_SERVE_INDEX || IS_PRODUCTION ? 'normal' : 'errors-warnings', + errorDetails: true, + timings: true, + }, infrastructureLogging: { // Controls webpack-dev-server logging level. level: 'warn', @@ -215,7 +212,7 @@ const config = { { loader: 'babel-loader', options: { - cacheDirectory: true, + cacheDirectory: !IS_PRODUCTION, ...(isHotReloadEnabled && { plugins: ['react-refresh/babel'] }), }, }, diff --git a/dev/foreach-ts-project.sh b/dev/foreach-ts-project.sh index 36236ada522..56e4c761424 100755 --- a/dev/foreach-ts-project.sh +++ b/dev/foreach-ts-project.sh @@ -28,6 +28,7 @@ DIRS=( client/storybook client/client-api client/jetbrains + client/observability dev/release ) diff --git a/package.json b/package.json index 6523159d112..3ea4449a25e 100644 --- a/package.json +++ b/package.json @@ -247,6 +247,7 @@ "babel-jest": "^25.5.1", "babel-loader": "^8.2.2", "babel-plugin-lodash": "^3.3.4", + "babel-plugin-webpack-chunkname": "^1.2.0", "babel-preset-react-app": "^10.0.0", "browserslist": "^4.17.4", "buffer": "^6.0.3", @@ -267,6 +268,7 @@ "elm": "^0.19.1-3", "elm-webpack-loader": "^8.0.0", "enhanced-resolve": "^5.9.3", + "envalid": "^7.3.1", "esbuild": "^0.14.2", "eslint": "^8.13.0", "eslint-formatter-lsif": "^1.0.3", @@ -298,6 +300,7 @@ "json-schema-ref-parser": "^9.0.6", "json-schema-to-typescript": "^10.1.3", "latest-version": "^5.1.0", + "libhoney": "^3.1.1", "license-checker": "^25.0.1", "message-port-polyfill": "^0.2.0", "mime-types": "^2.1.28", @@ -370,6 +373,7 @@ "@lezer/highlight": "^1.0.0", "@mdi/js": "^6.7.96", "@microsoft/fetch-event-source": "^2.0.1", + "@opentelemetry/semantic-conventions": "^1.5.0", "@radix-ui/react-tooltip": "^0.1.8 || 0.1.8-rc.2", "@reach/accordion": "^0.16.1", "@reach/combobox": "^0.16.5", diff --git a/tsconfig.all.json b/tsconfig.all.json index d91496e0251..5694e523bd3 100644 --- a/tsconfig.all.json +++ b/tsconfig.all.json @@ -26,5 +26,6 @@ { "path": "client/client-api" }, { "path": "client/vscode" }, { "path": "client/jetbrains" }, + { "path": "client/observability" }, ], } diff --git a/yarn.lock b/yarn.lock index 416f15f57dc..5018a8e960e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3083,6 +3083,11 @@ dependencies: "@octokit/openapi-types" "^12.4.0" +"@opentelemetry/semantic-conventions@^1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.5.0.tgz#cea9792bfcf556c87ded17c6ac729348697bb632" + integrity sha512-wlYG/U6ddW1ilXslnDLLQYJ8nd97W8JJTTfwkGhubx6dzW6SUkd+N4/MzTjjyZlrHQunxHtkHFvVpUKiROvFDw== + "@peculiar/asn1-schema@^2.0.27", "@peculiar/asn1-schema@^2.0.32": version "2.0.36" resolved "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.0.36.tgz#ca7978f43ffa4f35fbb74436c3f983c10a69ac27" @@ -6984,7 +6989,7 @@ acorn-walk@^7.1.1, acorn-walk@^7.2.0: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.0.0, acorn-walk@^8.1.1: +acorn-walk@^8.0.0, acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== @@ -6994,10 +6999,10 @@ acorn@^7.1.1, acorn@^7.4.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.1: - version "8.7.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== +acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.0, acorn@^8.7.1: + version "8.8.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== addons-linter@5.10.0: version "5.10.0" @@ -7068,10 +7073,10 @@ after@0.8.2: resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -agent-base@6: - version "6.0.1" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== +agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" @@ -7156,7 +7161,7 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6, ajv@^6.5.5: alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" @@ -7534,6 +7539,17 @@ array.prototype.map@^1.0.1: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.4" +array.prototype.reduce@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" + integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" @@ -7947,6 +7963,11 @@ babel-plugin-transform-react-remove-prop-types@0.4.24: resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== +babel-plugin-webpack-chunkname@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/babel-plugin-webpack-chunkname/-/babel-plugin-webpack-chunkname-1.2.0.tgz#51630743afe0458acdd041b2e62b1c0c562e47bf" + integrity sha512-czjhg9fOG8Abf8A1xeSgKdPW9jMnWhAtzU0cx3F7Uaml+UZAHMLi1xaSWdvgexkeF9aTXuspx0Wufy5Ur4MkLw== + babel-preset-current-node-syntax@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" @@ -8527,11 +8548,16 @@ bytes@3.0.0: resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0, bytes@^3.1.0: +bytes@3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2, bytes@^3.1.0: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + bytesish@^0.4.1: version "0.4.2" resolved "https://registry.npmjs.org/bytesish/-/bytesish-0.4.2.tgz#99c2e7c392dcd57b48e01650753aca2bc3ac9fb7" @@ -9398,9 +9424,9 @@ color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-string@^1.6.0: - version "1.9.0" - resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" - integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== + version "1.9.1" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -9542,7 +9568,7 @@ component-emitter@1.2.1: resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= -component-emitter@^1.2.1, component-emitter@~1.3.0: +component-emitter@^1.2.1, component-emitter@^1.3.0, component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -9708,6 +9734,11 @@ cookie@~0.4.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookiejar@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" + integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -9953,7 +9984,7 @@ csp_evaluator@^1.0.1: css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== css-declaration-sorter@^4.0.1: version "4.0.1" @@ -10167,12 +10198,12 @@ cssnano-preset-default@^4.0.7: cssnano-util-get-arguments@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== cssnano-util-get-match@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== cssnano-util-raw-cache@^4.0.1: version "4.0.1" @@ -10811,6 +10842,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@3: + version "3.0.1" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" + integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -11101,6 +11137,16 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +degenerator@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz#6a61fcc42a702d6e50ff6023fe17bff435f68235" + integrity sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ== + dependencies: + ast-types "^0.13.2" + escodegen "^1.8.1" + esprima "^4.0.0" + vm2 "^3.9.8" + del@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" @@ -11142,16 +11188,16 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +depd@2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -depd@~2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - dependency-graph@^0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" @@ -11239,7 +11285,7 @@ devtools-protocol@0.0.969999: resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.969999.tgz#3d6be0a126b3607bb399ae2719b471dda71f3478" integrity sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ== -dezalgo@^1.0.0: +dezalgo@1.0.3, dezalgo@^1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= @@ -11355,12 +11401,12 @@ dom-helpers@^5.0.1: csstype "^3.0.2" dom-serializer@0: - version "0.1.1" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" + domelementtype "^2.0.1" + entities "^2.0.0" dom-serializer@^1.0.1: version "1.3.2" @@ -11385,7 +11431,7 @@ dom-walk@^0.1.0: resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= -domelementtype@1, domelementtype@^1.3.0: +domelementtype@1: version "1.3.1" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== @@ -11686,10 +11732,10 @@ engine.io@~3.5.0: engine.io-parser "~2.2.0" ws "~7.4.2" -enhanced-resolve@^5.0.0, enhanced-resolve@^5.9.2, enhanced-resolve@^5.9.3: - version "5.9.3" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" - integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0, enhanced-resolve@^5.9.3: + version "5.10.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -11724,6 +11770,13 @@ env-ci@^5.0.2: execa "^4.0.0" java-properties "^1.0.0" +envalid@^7.3.1: + version "7.3.1" + resolved "https://registry.npmjs.org/envalid/-/envalid-7.3.1.tgz#5bf6bbb4effab2d64a1991d8078b4ae38924f0d2" + integrity sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg== + dependencies: + tslib "2.3.1" + envinfo@^7.7.3: version "7.8.1" resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -11750,10 +11803,10 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5, es-abstract@^1.18.0-next.1, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.4.3, es-abstract@^1.9.0: - version "1.20.0" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz#b2d526489cceca004588296334726329e0a6bfb6" - integrity sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA== +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5, es-abstract@^1.18.0-next.1, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1, es-abstract@^1.4.3, es-abstract@^1.9.0: + version "1.20.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -11774,7 +11827,7 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstrac object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" - regexp.prototype.flags "^1.4.1" + regexp.prototype.flags "^1.4.3" string.prototype.trimend "^1.0.5" string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" @@ -12029,6 +12082,18 @@ escape-string-regexp@^2.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -12355,7 +12420,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -12610,6 +12675,11 @@ extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extend@~2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-2.0.2.tgz#1b74985400171b85554894459c978de6ef453ab7" + integrity sha512-AgFD4VU+lVLP6vjnlNfF7OeInLTyeyckCNPEsuxz1vi786UuK/nk6ynPuhn/h+Ju9++TQyr5EpLRI14fc1QtTQ== + external-editor@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" @@ -12734,6 +12804,11 @@ fast-redact@^3.1.1: resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz#790fcff8f808c2e12fabbfb2be5cb2deda448fa0" integrity sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A== +fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + fast-text-encoding@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz#3e5ce8293409cfaa7177a71b9ca84e1b1e6f25ef" @@ -12858,6 +12933,11 @@ file-uri-to-path@1.0.0: resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +file-uri-to-path@2: + version "2.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" + integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -13141,6 +13221,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -13163,6 +13252,16 @@ formdata-node@^4.3.1: node-domexception "1.0.0" web-streams-polyfill "4.0.0-beta.1" +formidable@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz#4310bc7965d185536f9565184dee74fbb75557ff" + integrity sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ== + dependencies: + dezalgo "1.0.3" + hexoid "1.0.0" + once "1.4.0" + qs "6.9.3" + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -13287,6 +13386,14 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" +ftp@^0.3.10: + version "0.3.10" + resolved "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -13488,6 +13595,18 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-uri@3: + version "3.0.2" + resolved "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" + integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== + dependencies: + "@tootallnate/once" "1" + data-uri-to-buffer "3" + debug "4" + file-uri-to-path "2" + fs-extra "^8.1.0" + ftp "^0.3.10" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -14369,6 +14488,11 @@ hex-color-regex@^1.1.0: resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +hexoid@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + highcharts@^9.2.2: version "9.3.3" resolved "https://registry.npmjs.org/highcharts/-/highcharts-9.3.3.tgz#ae62178de788fd7934431aa26b8e250b8073c541" @@ -14387,7 +14511,7 @@ highlightjs-graphql@^1.0.2: history@4.5.1, history@^4.9.0, history@^5.2.0, history@^5.3.0: version "4.5.1" resolved "https://registry.npmjs.org/history/-/history-4.5.1.tgz#44935a51021e3b8e67ebac267a35675732aba569" - integrity sha1-RJNaUQIeO45n66wmejVnVzKrpWk= + integrity sha512-gfHeJeYeMzFtos61gdA1AloO0hGXPF2Yum+2FRdJvlylYQOz51OnT1zuwg9UYst1BRrONhcAh3Nmsg9iblgl6g== dependencies: invariant "^2.2.1" loose-envify "^1.2.0" @@ -14441,12 +14565,12 @@ hpack.js@^2.1.6: hsl-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== hsla-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== html-encoding-sniffer@^2.0.1: version "2.0.1" @@ -14560,6 +14684,17 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + http-errors@^1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -14598,7 +14733,7 @@ http-parser-js@>=0.5.1: resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== -http-proxy-agent@^4.0.1: +http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== @@ -14673,7 +14808,7 @@ https-browserify@^1.0.0: resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: +https-proxy-agent@5, https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== @@ -14850,7 +14985,7 @@ indent-string@^4.0.0: indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== indexof@0.0.1: version "0.0.1" @@ -14870,7 +15005,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -15006,10 +15141,10 @@ ip-regex@^4.0.0: resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== -ip@^1.1.0: - version "1.1.5" - resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +ip@^1.1.0, ip@^1.1.5: + version "1.1.8" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== ip@^2.0.0: version "2.0.0" @@ -15039,7 +15174,7 @@ is-absolute-url@*, is-absolute-url@^3.0.0, is-absolute-url@^3.0.3: is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== is-absolute@^0.1.7: version "0.1.7" @@ -15165,7 +15300,7 @@ is-ci@^3.0.1: is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== dependencies: css-color-names "^0.0.4" hex-color-regex "^1.1.0" @@ -16992,6 +17127,15 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libhoney@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/libhoney/-/libhoney-3.1.1.tgz#7e9bd47fa6837f08afbc9d6482420e992a499f25" + integrity sha512-QnR8Knslwwe3Jh4qAmREVTMt/oJvslqmdLg0+DDK/6ZjWEqkoad+QL/caQccb7ZYSehM8m2i/y3WkB46xZ5oCA== + dependencies: + superagent "^7.0.2" + superagent-proxy "^3.0.0" + urljoin "^0.1.5" + license-checker@^25.0.1: version "25.0.1" resolved "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz#4d14504478a5240a857bb3c21cd0491a00d761fa" @@ -17453,7 +17597,7 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^5.0.0: +lru-cache@^5.0.0, lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== @@ -17848,7 +17992,7 @@ metaviewport-parser@0.2.0: resolved "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.2.0.tgz#535c3ce1ccf6223a5025fddc6a1c36505f7e7db1" integrity sha1-U1w84cz2IjpQJf3cahw2UF9+fbE= -methods@~1.1.2: +methods@^1.1.2, methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= @@ -17902,10 +18046,10 @@ mime@1.6.0, mime@^1.3.4: resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.2.0, mime@^2.3.1, mime@^2.4.4: - version "2.5.2" - resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== +mime@2.6.0, mime@^2.2.0, mime@^2.3.1, mime@^2.4.4: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^1.0.0: version "1.2.0" @@ -18299,6 +18443,11 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + next-tick@1, next-tick@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -18734,14 +18883,15 @@ object.entries@^1.1.0, object.entries@^1.1.2: function-bind "^1.1.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3: - version "2.1.3" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.4" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" + integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== dependencies: + array.prototype.reduce "^1.0.4" call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.1" object.map@^1.0.0: version "1.0.1" @@ -18807,7 +18957,7 @@ on-headers@~1.0.2: resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: +once@1.4.0, once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -19144,6 +19294,30 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pac-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" + integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + get-uri "3" + http-proxy-agent "^4.0.1" + https-proxy-agent "5" + pac-resolver "^5.0.0" + raw-body "^2.2.0" + socks-proxy-agent "5" + +pac-resolver@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" + integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== + dependencies: + degenerator "^3.0.2" + ip "^1.1.5" + netmask "^2.0.2" + package-hash@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" @@ -20364,7 +20538,21 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" -proxy-from-env@1.1.0, proxy-from-env@^1.1.0: +proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" + integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== + dependencies: + agent-base "^6.0.0" + debug "4" + http-proxy-agent "^4.0.0" + https-proxy-agent "^5.0.0" + lru-cache "^5.1.1" + pac-proxy-agent "^5.0.0" + proxy-from-env "^1.0.0" + socks-proxy-agent "^5.0.0" + +proxy-from-env@1.1.0, proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -20489,17 +20677,22 @@ pvutils@latest: q@^1.1.2: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== qs@6.7.0: version "6.7.0" resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^6.10.0, qs@^6.7.0, qs@^6.9.1: - version "6.10.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== +qs@6.9.3: + version "6.9.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" + integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== + +qs@^6.10.0, qs@^6.10.3, qs@^6.7.0, qs@^6.9.1: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" @@ -20575,7 +20768,7 @@ raven@^2.2.1: timed-out "4.0.1" uuid "3.3.2" -raw-body@2.4.0: +raw-body@2.4.0, raw-body@^2.2.0: version "2.4.0" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== @@ -21067,6 +21260,16 @@ read@^1.0.7: dependencies: mute-stream "~0.0.4" +readable-stream@1.1.x: + version "1.1.14" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -21256,7 +21459,7 @@ regexp-tree@^0.1.24, regexp-tree@~0.1.1: resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0, regexp.prototype.flags@^1.4.1: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== @@ -21718,12 +21921,12 @@ reusify@^1.0.0: rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== rgba-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== right-pad@^1.0.1: version "1.0.1" @@ -22116,6 +22319,11 @@ setprototypeof@1.1.1: resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + sha.js@2.4.11: version "2.4.11" resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -22251,7 +22459,7 @@ simple-get@^4.0.0: simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== dependencies: is-arrayish "^0.3.1" @@ -22331,6 +22539,11 @@ slugify@^1.3.4: resolved "https://registry.npmjs.org/slugify/-/slugify-1.4.5.tgz#a7517acf5f4c02a4df41e735354b660a4ed1efcf" integrity sha512-WpECLAgYaxHoEAJ8Q1Lo8HOs1ngn7LN7QjXgOLbmmfkcWvosyk4ZTXkTzKyhngK640USTZUlgoQJfED1kz5fnQ== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snake-case@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" @@ -22430,6 +22643,23 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" +socks-proxy-agent@5, socks-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" + integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== + dependencies: + agent-base "^6.0.2" + debug "4" + socks "^2.3.3" + +socks@^2.3.3: + version "2.7.0" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0" + integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + sonic-boom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.0.0.tgz#235119a6606e2646919a27d83ef687f2ba6c0fba" @@ -22717,6 +22947,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -22923,6 +23158,11 @@ string_decoder@^1.1.1, string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + strip-ansi@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -23195,6 +23435,31 @@ subscriptions-transport-ws@^0.11.0: symbol-observable "^1.0.4" ws "^5.2.0 || ^6.0.0 || ^7.0.0" +superagent-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/superagent-proxy/-/superagent-proxy-3.0.0.tgz#e1a17ccba25883599e18d2974020fe83ee7d95d1" + integrity sha512-wAlRInOeDFyd9pyonrkJspdRAxdLrcsZ6aSnS+8+nu4x1aXbz6FWSTT9M6Ibze+eG60szlL7JA8wEIV7bPWuyQ== + dependencies: + debug "^4.3.2" + proxy-agent "^5.0.0" + +superagent@^7.0.2: + version "7.1.6" + resolved "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz#64f303ed4e4aba1e9da319f134107a54cacdc9c6" + integrity sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.3" + debug "^4.3.4" + fast-safe-stringify "^2.1.1" + form-data "^4.0.0" + formidable "^2.0.1" + methods "^1.1.2" + mime "2.6.0" + qs "^6.10.3" + readable-stream "^3.6.0" + semver "^7.3.7" + supports-color@8.1.1, supports-color@^8.0.0: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -23598,7 +23863,7 @@ timers-ext@^0.1.5, timers-ext@^0.1.7: timsort@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== tiny-invariant@^1.0.2: version "1.0.3" @@ -23722,6 +23987,11 @@ toidentifier@1.0.0: resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + tosource@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz#42d88dd116618bcf00d6106dd5446f3427902ff1" @@ -23894,7 +24164,7 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.1.0, tslib@^1.0.0, tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3, tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@~2.0.0, tslib@~2.0.1, tslib@~2.2.0, tslib@~2.3.0: +tslib@2.1.0, tslib@2.3.1, tslib@^1.0.0, tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3, tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@~2.0.0, tslib@~2.0.1, tslib@~2.2.0, tslib@~2.3.0: version "2.1.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== @@ -24222,12 +24492,12 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== uniqs@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== unique-filename@^1.1.1: version "1.1.1" @@ -24372,7 +24642,7 @@ unpipe@1.0.0, unpipe@~1.0.0: unquote@~1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== unset-value@^1.0.0: version "1.0.0" @@ -24552,6 +24822,13 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +urljoin@^0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/urljoin/-/urljoin-0.1.5.tgz#b25d2c6112c55ac9d50096a49a0f1fb7f4f53921" + integrity sha512-OSGi+PS3zxk8XfQ+7buaupOdrW9P9p+V9rjxGzJaYEYDe/B2rv3WJCupq5LNERW4w4kWxsduUUrhCxZZiQ2udw== + dependencies: + extend "~2.0.0" + use-callback-ref@^1.2.3, use-callback-ref@^1.2.5: version "1.2.5" resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.2.5.tgz#6115ed242cfbaed5915499c0a9842ca2912f38a5" @@ -24708,7 +24985,7 @@ validate-npm-package-license@^3.0.1: value-equal@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/value-equal/-/value-equal-0.2.1.tgz#c220a304361fce6994dbbedaa3c7e1a1b895871d" - integrity sha1-wiCjBDYfzmmU277ao8fhobiVhx0= + integrity sha512-yRL36Xb2K/HmFT5Fe3M86S7mu4+a12/3l7uytUh6eNPPjP77ldPBvsAvmnWff39sXn55naRMZN8LZWRO8PWaeQ== value-or-function@^3.0.0: version "3.0.0" @@ -24811,6 +25088,14 @@ vinyl@^2.0.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vm2@^3.9.8: + version "3.9.10" + resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.10.tgz#c66543096b5c44c8861a6465805c23c7cc996a44" + integrity sha512-AuECTSvwu2OHLAZYhG716YzwodKCIJxB6u1zG7PgSQwIgAlEaoXH52bxdcvT8GkGjnYK7r7yWDW0m0sOsPuBjQ== + dependencies: + acorn "^8.7.0" + acorn-walk "^8.2.0" + vsce@^2.7.0: version "2.7.0" resolved "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz#7be8deebd1e673b996238d608e7f7324c98744ed" @@ -24897,7 +25182,7 @@ walker@^1.0.7, walker@~1.0.5: warning@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + integrity sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ== dependencies: loose-envify "^1.0.0" @@ -24908,7 +25193,7 @@ warning@^4.0.2, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack@2.4.0, watchpack@^2.2.0, watchpack@^2.3.1: +watchpack@2.4.0, watchpack@^2.2.0, watchpack@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== @@ -25204,33 +25489,33 @@ webpack-virtual-modules@^0.4.1: integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw== webpack@4, webpack@5, "webpack@>=4.43.0 <6.0.0", webpack@^5, webpack@^5.1.0, webpack@^5.37.0, webpack@^5.38.1, webpack@^5.45.1, webpack@^5.51.0, webpack@^5.9.0: - version "5.70.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" - integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== + version "5.74.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" + integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" + acorn "^8.7.1" acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.2" + enhanced-resolve "^5.10.0" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" graceful-fs "^4.2.9" - json-parse-better-errors "^1.0.2" + json-parse-even-better-errors "^2.3.1" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" + watchpack "^2.4.0" webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: @@ -25597,6 +25882,11 @@ xmlhttprequest-ssl@~1.6.2: resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz#03b713873b01659dfa2c1c5d056065b27ddc2de6" integrity sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q== +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== + xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"