From c189db45e1dacae842fa5b67d7567f6596c2bb3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9C=9C=E5=BA=8F?= <976060700@qq.com> Date: Fri, 31 May 2024 17:38:38 +0800 Subject: [PATCH] feat(ko): remove cache and add jsdoc (#162) * Feat 6.6.0 jsdoc (#1) * feat(ko): add jsdoc description and export .d.ts file * fix(create-ko): update jsdoc for template * docs(changeset): update jsdoc for create-ko template add jsdoc description and export .d.ts file * Feat 6.6.0 cache (#2) * feat(ko): auto purge cache when cache pack expired by maxAge and remove useless async * docs(changeset): support auto purge cache when cache pack expired by maxAge * Fix 6.6.0 dev serve (#3) * chore(ko): update webpack-dev-server to 4.14.0 * docs(changeset): update webpack-dev-server to 4.14.0 and remove error-overlay-webpack-plugin * RELEASING: Releasing 2 package(s) Releases: ko@6.6.0 create-ko@1.0.2 [skip ci] --------- Co-authored-by: jialan --- packages/create-ko/CHANGELOG.md | 6 + packages/create-ko/package.json | 2 +- packages/create-ko/template/ko.config.js | 3 + packages/ko/CHANGELOG.md | 12 + packages/ko/package.json | 5 +- packages/ko/src/actions/dev.ts | 6 +- packages/ko/src/types.ts | 72 +++++ .../purge-cache-webpack-plugin/index.ts | 76 +++++ packages/ko/src/webpack/index.ts | 5 +- packages/ko/src/webpack/plugins.ts | 4 +- packages/ko/tsconfig.json | 1 + pnpm-lock.yaml | 275 +++++++++--------- 12 files changed, 316 insertions(+), 151 deletions(-) create mode 100644 packages/ko/src/webpack/custom-plugins/purge-cache-webpack-plugin/index.ts diff --git a/packages/create-ko/CHANGELOG.md b/packages/create-ko/CHANGELOG.md index 9e5179e2..b597198c 100644 --- a/packages/create-ko/CHANGELOG.md +++ b/packages/create-ko/CHANGELOG.md @@ -1,5 +1,11 @@ # create-ko +## 1.0.2 + +### Patch Changes + +- dd8e687d7: update jsdoc for create-ko template + ## 1.0.1 ### Patch Changes diff --git a/packages/create-ko/package.json b/packages/create-ko/package.json index 2dd59e9d..c5fffd7e 100644 --- a/packages/create-ko/package.json +++ b/packages/create-ko/package.json @@ -1,6 +1,6 @@ { "name": "create-ko", - "version": "1.0.1", + "version": "1.0.2", "description": "create react project with ko", "repository": { "type": "git", diff --git a/packages/create-ko/template/ko.config.js b/packages/create-ko/template/ko.config.js index d4875d6b..bab6feae 100644 --- a/packages/create-ko/template/ko.config.js +++ b/packages/create-ko/template/ko.config.js @@ -5,6 +5,9 @@ const finalKoConfig = (function () { const APP_PATH = path.resolve(ROOT_PATH, 'src'); const BUILD_PATH = path.resolve(ROOT_PATH, `dist`); const WEB_PUBLIC = path.resolve(APP_PATH, 'public'); + /** + * @type {import("ko/lib/types").IOptions} + */ const baseKoConfig = { entry: path.join(APP_PATH, './main.tsx'), outputPath: BUILD_PATH, diff --git a/packages/ko/CHANGELOG.md b/packages/ko/CHANGELOG.md index 79026cac..77234d87 100644 --- a/packages/ko/CHANGELOG.md +++ b/packages/ko/CHANGELOG.md @@ -1,5 +1,16 @@ # ko +## 6.6.0 + +### Minor Changes + +- dd8e687d7: add jsdoc description and export .d.ts file +- b1a004f68: support auto purge cache when cache pack expired by maxAge + +### Patch Changes + +- 4d4071220: update webpack-dev-server to 4.14.0 and remove error-overlay-webpack-plugin + ## 6.5.12 ### Patch Changes @@ -12,6 +23,7 @@ - 22089fe9: scriptLoader with antlr4ng + ## 6.5.10 ### Patch Changes diff --git a/packages/ko/package.json b/packages/ko/package.json index e02838a1..e83671a4 100644 --- a/packages/ko/package.json +++ b/packages/ko/package.json @@ -1,6 +1,6 @@ { "name": "ko", - "version": "6.5.12", + "version": "6.6.0", "description": "build & lint library", "keywords": [ "ko", @@ -61,7 +61,6 @@ "css-minimizer-webpack-plugin": "^4.0.0", "detect-port": "^1.3.0", "dynamic-resolve-webpack-plugin": "workspace:^2.0.0", - "error-overlay-webpack-plugin": "^1.1.1", "esbuild-loader": "^2.19.0", "html-webpack-plugin": "^5.5.0", "inquirer": "^8.2.2", @@ -86,7 +85,7 @@ "thread-loader": "^3.0.4", "webpack": "^5.72.1", "webpack-bundle-analyzer": "^4.5.0", - "webpack-dev-server": "4.9.0", + "webpack-dev-server": "4.14.0", "webpackbar": "^5.0.2", "worker-loader": "^3.0.8" }, diff --git a/packages/ko/src/actions/dev.ts b/packages/ko/src/actions/dev.ts index cd29b743..741ac7e3 100644 --- a/packages/ko/src/actions/dev.ts +++ b/packages/ko/src/actions/dev.ts @@ -31,7 +31,11 @@ class Dev extends ActionFactory { setupExitSignals: false, allowedHosts: 'all', client: { - overlay: false, + overlay: { + errors: true, + warnings: false, + runtimeErrors: true, + }, }, historyApiFallback, }; diff --git a/packages/ko/src/types.ts b/packages/ko/src/types.ts index 6d27f0d9..3f6b6ef2 100644 --- a/packages/ko/src/types.ts +++ b/packages/ko/src/types.ts @@ -5,25 +5,89 @@ import { IOpts as AutoPolyfillsWebpackPluginOptions } from '@dtinsight/auto-poly export type IOptions = { //common configs + /** + * The current working directory. + * @param {string} + */ cwd: string; + /** + * An object mapping module names to file paths or directories. + * @param {Record} + */ alias?: Record; + /** + * An array of patterns specifying files to copy to the output directory. + * @param {Pattern[]} + */ copy?: Pattern[]; + /** + * The entry point of the application. + * @param {string} + */ entry?: string; + /** + * The path to the output directory. + * @param {string} + */ outputPath?: string; + /** + * The public path of the application. + * @param {string} + */ publicPath?: string; + /** + * Whether to append a hash to the output file name for cache busting. + * @param {boolean} + */ hash?: boolean; + /** + * An object mapping module names to global variables. + * @param {Record} + */ externals?: Record; + /** + * An array of plugin configurations. + * @param {HookOptions[]} + */ plugins?: HookOptions[]; + /** + * The path to the HTML template to use for the application. + * @param {string} + */ htmlTemplate?: string; htmlChunks?: 'all' | string[]; // style configs + /** + * Whether to enable the bundle analyzer plugin. + * @param {boolean} + */ analyzer?: boolean; + /** + * An array of additional PostCSS plugins to use. + * @param {Plugin[]} + */ extraPostCSSPlugins?: Plugin[]; + /** + * Options to pass to the Less compiler. + * @param {*} + */ lessOptions?: any; // integrated plugins options + /** + * A function to dynamically resolve module requests. + * @param {Function} + */ dynamicResolve?: (request: T) => T; + /** + * Whether to enable the auto-polyfills plugin, or an options object for the plugin. + * @param {string} + */ autoPolyfills: boolean | AutoPolyfillsWebpackPluginOptions; // dev, or serve configs + /** + * Options for the development server. + * @param {{proxy?: Record, host: string, port: number, staticPath?: string, historyApiFallback?: any, compilationSuccessInfo?: { messages: string[]; notes?: string[] }}} + */ serve: { proxy?: Record; host: string; @@ -33,6 +97,10 @@ export type IOptions = { compilationSuccessInfo?: { messages: string[]; notes?: string[] }; }; // experimental features + /** + * Experimental features to enable. + * @param {{speedUp?: boolean, minimizer?: boolean, disableLazyImports?: boolean, enableCssModule?: boolean, compress?: any}} + */ experiment?: { speedUp?: boolean; minimizer?: boolean; @@ -41,6 +109,10 @@ export type IOptions = { compress?: any; }; //misc + /** + * Options for the linter plugins. + * @param {Record>} + */ lints?: Record>; }; diff --git a/packages/ko/src/webpack/custom-plugins/purge-cache-webpack-plugin/index.ts b/packages/ko/src/webpack/custom-plugins/purge-cache-webpack-plugin/index.ts new file mode 100644 index 00000000..816904d5 --- /dev/null +++ b/packages/ko/src/webpack/custom-plugins/purge-cache-webpack-plugin/index.ts @@ -0,0 +1,76 @@ +import { Compiler } from 'webpack'; +import fs from 'fs/promises'; +import path from 'path'; + +class PurgeCacheWebpackPlugin { + WEBPACK_PLUGIN_NAME = 'PurgeCacheWebpackPlugin'; + + purgeCacheFiles( + directory: string, + maxAge: number, + callback: (errors?: Error[]) => void + ) { + fs.readdir(directory) + .then(files => { + const expiredPacks = []; + if (files.length === 0) return callback(); + + for (const file of files) { + const pack = new Promise((resolve, reject) => { + const filePath = path.join(directory, file); + fs.stat(filePath) + .then(stats => { + if (stats.mtime.getTime() + maxAge < Date.now()) { + fs.unlink(filePath) + .then(() => { + resolve(true); + }) + .catch(err => reject(err)); + } else { + resolve(true); + } + }) + .catch(err => reject(err)); + }); + + expiredPacks.push(pack); + } + + Promise.allSettled(expiredPacks).then(results => { + const errors = results + .filter(result => result.status === 'rejected') + .map((result: any) => result.reason); + callback(errors); + }); + }) + .catch(err => { + callback([err]); + }); + } + + apply(compiler: Compiler) { + compiler.hooks.done.tapAsync( + { name: this.WEBPACK_PLUGIN_NAME }, + (_, callback) => { + const { type, maxAge, cacheLocation } = compiler.options.cache as any; + if (type === 'filesystem') { + const logger = compiler.getInfrastructureLogger( + this.WEBPACK_PLUGIN_NAME + ); + this.purgeCacheFiles(cacheLocation, maxAge, errors => { + if (errors?.length) { + errors.forEach(err => logger.warn(err.message)); + } else { + logger.info(`purge expired cache files completed`); + } + callback(); + }); + } else { + callback(); + } + } + ); + } +} + +export default PurgeCacheWebpackPlugin; diff --git a/packages/ko/src/webpack/index.ts b/packages/ko/src/webpack/index.ts index e1e19387..2b9c748e 100644 --- a/packages/ko/src/webpack/index.ts +++ b/packages/ko/src/webpack/index.ts @@ -34,7 +34,7 @@ class WebpackConfig { return merge(this.base, ...opts); } - get cache() { + get cache(): FileCacheOptions { const { experiment } = this.opts; const type = experiment?.speedUp ? 'filesystem' @@ -46,6 +46,7 @@ class WebpackConfig { }; if (type === 'filesystem') { (cache as FileCacheOptions).version = this.projectVersion; + (cache as FileCacheOptions).maxAge = 7 * 24 * 3600000; } else { ( cache as Exclude< @@ -54,7 +55,7 @@ class WebpackConfig { > ).maxGenerations = 1; } - return cache; + return cache as FileCacheOptions; } get projectVersion(): string { diff --git a/packages/ko/src/webpack/plugins.ts b/packages/ko/src/webpack/plugins.ts index 5bfa7782..31c0d476 100644 --- a/packages/ko/src/webpack/plugins.ts +++ b/packages/ko/src/webpack/plugins.ts @@ -9,7 +9,7 @@ import HtmlWebpackPlugin from 'html-webpack-plugin'; import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import AutoPolyfillsWebpackPlugin from '@dtinsight/auto-polyfills-webpack-plugin'; import FriendlyErrorsWebpackPlugin from '@nuxt/friendly-errors-webpack-plugin'; -import ErrorOverlayPlugin from 'error-overlay-webpack-plugin'; +import PurgeCacheWebpackPlugin from './custom-plugins/purge-cache-webpack-plugin'; import { IWebpackOptions } from '../types'; function getPlugins(opts: IWebpackOptions) { @@ -99,7 +99,7 @@ function getPlugins(opts: IWebpackOptions) { notes: [], }, }), - !isProd && new ErrorOverlayPlugin(), + !isProd && new PurgeCacheWebpackPlugin(), isProd && autoPolyfills && (typeof autoPolyfills === 'boolean' diff --git a/packages/ko/tsconfig.json b/packages/ko/tsconfig.json index 0a98e3db..bc68544e 100644 --- a/packages/ko/tsconfig.json +++ b/packages/ko/tsconfig.json @@ -9,5 +9,6 @@ "strict": true, "strictPropertyInitialization": false, "outDir": "lib", + "declaration": true, }, } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44b0a1ac..7a934d50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -110,7 +110,6 @@ importers: css-minimizer-webpack-plugin: ^4.0.0 detect-port: ^1.3.0 dynamic-resolve-webpack-plugin: workspace:^2.0.0 - error-overlay-webpack-plugin: ^1.1.1 esbuild-loader: ^2.19.0 html-webpack-plugin: ^5.5.0 inquirer: ^8.2.2 @@ -138,7 +137,7 @@ importers: typescript: ^4.6.4 webpack: ^5.72.1 webpack-bundle-analyzer: ^4.5.0 - webpack-dev-server: 4.9.0 + webpack-dev-server: 4.14.0 webpackbar: ^5.0.2 worker-loader: ^3.0.8 dependencies: @@ -146,7 +145,7 @@ importers: '@dtinsight/auto-polyfills-webpack-plugin': link:../auto-polyfills-webpack-plugin '@nuxt/friendly-errors-webpack-plugin': 2.5.2_webpack@5.76.2 '@parcel/css': 1.14.0 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.10_314de8f3a90fabe03a552b52f33a1f58 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10_f04313728e0c35020f2dca265b59e24d autoprefixer: 10.4.14_postcss@8.4.21 babel-loader: 8.3.0_3f6ff19fd90870e7c7e9add153e17078 babel-plugin-treasure: 0.9.0 @@ -162,7 +161,6 @@ importers: css-minimizer-webpack-plugin: 4.2.2_c2a19e8688155f5787d39be946a96e47 detect-port: 1.5.1 dynamic-resolve-webpack-plugin: link:../dynamic-resolve-webpack-plugin - error-overlay-webpack-plugin: 1.1.1_typescript@4.9.5+webpack@5.76.2 esbuild-loader: 2.21.0_webpack@5.76.2 html-webpack-plugin: 5.5.0_webpack@5.76.2 inquirer: 8.2.5 @@ -187,7 +185,7 @@ importers: thread-loader: 3.0.4_webpack@5.76.2 webpack: 5.76.2 webpack-bundle-analyzer: 4.8.0 - webpack-dev-server: 4.9.0_webpack@5.76.2 + webpack-dev-server: 4.14.0_webpack@5.76.2 webpackbar: 5.0.2_webpack@5.76.2 worker-loader: 3.0.8_webpack@5.76.2 devDependencies: @@ -236,7 +234,7 @@ importers: eslint-config-prettier: 8.5.0_eslint@8.22.0 eslint-config-standard: 17.0.0_7ac7ba0c849a16475149cf009583350b eslint-plugin-dt-react: link:../eslint-plugin-dt-react - eslint-plugin-import: 2.26.0_eslint@8.22.0 + eslint-plugin-import: 2.26.0_53a80fa66eac2a32b769435a79ca645c eslint-plugin-jest: 26.5.3_b0c730430a4c96918685ef89cef11803 eslint-plugin-jsx-a11y: 6.6.0_eslint@8.22.0 eslint-plugin-n: 15.2.3_eslint@8.22.0 @@ -3811,7 +3809,7 @@ packages: lightningcss: 1.19.0 dev: false - /@pmmmwh/react-refresh-webpack-plugin/0.5.10_314de8f3a90fabe03a552b52f33a1f58: + /@pmmmwh/react-refresh-webpack-plugin/0.5.10_f04313728e0c35020f2dca265b59e24d: resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} engines: {node: '>= 10.13'} peerDependencies: @@ -3848,7 +3846,7 @@ packages: schema-utils: 3.1.1 source-map: 0.7.4 webpack: 5.76.2 - webpack-dev-server: 4.9.0_webpack@5.76.2 + webpack-dev-server: 4.14.0_webpack@5.76.2 dev: false /@polka/url/1.0.0-next.21: @@ -5067,6 +5065,8 @@ packages: dependencies: micromatch: 3.1.10 normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color dev: false optional: true @@ -5526,7 +5526,7 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} /batch/0.6.1: - resolution: {integrity: sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=} + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} dev: false /better-path-resolve/1.0.0: @@ -5593,6 +5593,8 @@ packages: raw-body: 2.5.1 type-is: 1.6.18 unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color dev: false /bonjour-service/1.1.0: @@ -5655,6 +5657,8 @@ packages: snapdragon-node: 2.1.1 split-string: 3.1.0 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: false /braces/3.0.2: @@ -5812,7 +5816,7 @@ packages: dev: false /bytes/3.0.0: - resolution: {integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=} + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} dev: false @@ -5834,7 +5838,7 @@ packages: mississippi: 3.0.0 mkdirp: 0.5.6 move-concurrently: 1.0.1 - promise-inflight: 1.0.1 + promise-inflight: 1.0.1_bluebird@3.7.2 rimraf: 2.7.1 ssri: 6.0.2 unique-filename: 1.1.1 @@ -6043,6 +6047,8 @@ packages: upath: 1.2.0 optionalDependencies: fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color dev: false optional: true @@ -6340,6 +6346,8 @@ packages: on-headers: 1.0.2 safe-buffer: 5.1.2 vary: 1.1.2 + transitivePeerDependencies: + - supports-color dev: false /concat-map/0.0.1: @@ -6372,6 +6380,11 @@ packages: engines: {node: '>=0.8'} dev: false + /connect-history-api-fallback/2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: false + /consola/2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} dev: false @@ -6445,7 +6458,7 @@ packages: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} /cookie-signature/1.0.6: - resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: false /cookie/0.5.0: @@ -6519,6 +6532,7 @@ packages: mkdirp: 0.5.6 webpack: 4.46.0 transitivePeerDependencies: + - supports-color - webpack-cli - webpack-command dev: false @@ -7056,12 +7070,22 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: false /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 dev: false @@ -7300,6 +7324,8 @@ packages: dependencies: address: 1.2.2 debug: 2.6.9 + transitivePeerDependencies: + - supports-color dev: false /detect-port/1.3.0: @@ -7309,6 +7335,8 @@ packages: dependencies: address: 1.2.0 debug: 2.6.9 + transitivePeerDependencies: + - supports-color dev: false /detect-port/1.5.1: @@ -7503,7 +7531,7 @@ packages: dev: false /ee-first/1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false /electron-to-chromium/1.4.137: @@ -7620,22 +7648,6 @@ packages: dependencies: is-arrayish: 0.2.1 - /error-overlay-webpack-plugin/1.1.1_typescript@4.9.5+webpack@5.76.2: - resolution: {integrity: sha512-mnBIlhMExA+OZI+oyj2opdBDIsq2zFoJTKDMDn6gm/kWENwZfeUc2kX7eV+l2MumV3aob9c/KC/MWpb5FZhMKw==} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - react-dev-utils: 12.0.1_typescript@4.9.5+webpack@5.76.2 - react-error-overlay: 6.0.9 - sockjs-client: 1.6.1 - url: 0.11.0 - webpack: 5.76.2 - transitivePeerDependencies: - - eslint - - typescript - - vue-template-compiler - dev: false - /error-stack-parser/2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: @@ -7835,7 +7847,7 @@ packages: eslint-plugin-promise: ^6.0.0 dependencies: eslint: 8.22.0 - eslint-plugin-import: 2.26.0_eslint@8.22.0 + eslint-plugin-import: 2.26.0_53a80fa66eac2a32b769435a79ca645c eslint-plugin-n: 15.2.3_eslint@8.22.0 eslint-plugin-promise: 6.0.0_eslint@8.22.0 dev: false @@ -7845,14 +7857,34 @@ packages: dependencies: debug: 3.2.7 resolve: 1.22.0 + transitivePeerDependencies: + - supports-color dev: false - /eslint-module-utils/2.7.3: + /eslint-module-utils/2.7.3_96b89962d8fe952f1f62e174300ae390: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 5.30.0_eslint@8.22.0+typescript@4.7.4 debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 + transitivePeerDependencies: + - supports-color dev: false /eslint-plugin-es/4.1.0_eslint@8.22.0: @@ -7866,19 +7898,24 @@ packages: regexpp: 3.2.0 dev: false - /eslint-plugin-import/2.26.0_eslint@8.22.0: + /eslint-plugin-import/2.26.0_53a80fa66eac2a32b769435a79ca645c: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: + '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: + '@typescript-eslint/parser': 5.30.0_eslint@8.22.0+typescript@4.7.4 array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.22.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3 + eslint-module-utils: 2.7.3_96b89962d8fe952f1f62e174300ae390 has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -7886,6 +7923,10 @@ packages: object.values: 1.1.5 resolve: 1.22.0 tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: false /eslint-plugin-jest/26.5.3_b0c730430a4c96918685ef89cef11803: @@ -8250,11 +8291,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - /eventsource/2.0.2: - resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} - engines: {node: '>=12.0.0'} - dev: false - /evp_bytestokey/1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} dependencies: @@ -8292,6 +8328,8 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: false /expand-tilde/2.0.2: @@ -8347,6 +8385,8 @@ packages: type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 + transitivePeerDependencies: + - supports-color dev: false /extend-shallow/2.0.1: @@ -8392,6 +8432,8 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: false /fast-deep-equal/3.1.3: @@ -8556,6 +8598,8 @@ packages: parseurl: 1.3.3 statuses: 2.0.1 unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color dev: false /find-cache-dir/2.1.0: @@ -8724,37 +8768,6 @@ packages: webpack: 5.72.1 dev: false - /fork-ts-checker-webpack-plugin/6.5.2_typescript@4.9.5+webpack@5.76.2: - resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.16.7 - '@types/json-schema': 7.0.11 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 6.0.0 - deepmerge: 4.2.2 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.4.3 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.3.7 - tapable: 1.1.3 - typescript: 4.9.5 - webpack: 5.76.2 - dev: false - /forwarded/0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -10946,6 +10959,13 @@ packages: package-json: 6.5.0 dev: false + /launch-editor/2.6.0: + resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.7.3 + dev: false + /less-loader/9.1.0_less@3.13.1+webpack@5.76.2: resolution: {integrity: sha512-/BPur/W4NaDBvw4A7pTGMtKpAsAnexeJdw2VWRVzWEQCNX2FboFa1GUIFwkzBFwX5x/q7M/Srtng96QnhV5wIA==} engines: {node: '>= 12.13.0'} @@ -11420,7 +11440,7 @@ packages: dev: false /media-typer/0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: false @@ -11506,7 +11526,7 @@ packages: dev: false /merge-descriptors/1.0.1: - resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: false /merge-stream/2.0.0: @@ -11542,6 +11562,8 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: false /micromatch/4.0.5: @@ -11782,6 +11804,8 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color dev: false /native-request/1.1.0: @@ -13355,8 +13379,15 @@ packages: engines: {node: '>= 0.6.0'} dev: false - /promise-inflight/1.0.1: + /promise-inflight/1.0.1_bluebird@3.7.2: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dependencies: + bluebird: 3.7.2 dev: false /promise/7.3.1: @@ -13485,10 +13516,6 @@ packages: engines: {node: '>=0.4.x'} deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - /querystringify/2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: false - /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -13583,41 +13610,7 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - eslint - - typescript - - vue-template-compiler - - webpack - dev: false - - /react-dev-utils/12.0.1_typescript@4.9.5+webpack@5.76.2: - resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} - engines: {node: '>=14'} - dependencies: - '@babel/code-frame': 7.16.7 - address: 1.2.0 - browserslist: 4.20.3 - chalk: 4.1.2 - cross-spawn: 7.0.3 - detect-port-alt: 1.1.6 - escape-string-regexp: 4.0.0 - filesize: 8.0.7 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.2_typescript@4.9.5+webpack@5.76.2 - global-modules: 2.0.0 - globby: 11.1.0 - gzip-size: 6.0.0 - immer: 9.0.14 - is-root: 2.1.0 - loader-utils: 3.2.0 - open: 8.4.0 - pkg-up: 3.1.0 - prompts: 2.4.2 - react-error-overlay: 6.0.11 - recursive-readdir: 2.2.2 - shell-quote: 1.7.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - eslint + - supports-color - typescript - vue-template-compiler - webpack @@ -13638,10 +13631,6 @@ packages: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} dev: false - /react-error-overlay/6.0.9: - resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} - dev: false - /react-fast-compare/3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} @@ -13849,6 +13838,8 @@ packages: graceful-fs: 4.2.10 micromatch: 3.1.10 readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color dev: false optional: true @@ -14429,6 +14420,8 @@ packages: on-finished: 2.4.1 range-parser: 1.2.1 statuses: 2.0.1 + transitivePeerDependencies: + - supports-color dev: false /serialize-javascript/4.0.0: @@ -14471,6 +14464,8 @@ packages: http-errors: 1.6.3 mime-types: 2.1.35 parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color dev: false /serve-static/1.15.0: @@ -14481,6 +14476,8 @@ packages: escape-html: 1.0.3 parseurl: 1.3.3 send: 0.18.0 + transitivePeerDependencies: + - supports-color dev: false /set-blocking/2.0.0: @@ -14654,17 +14651,8 @@ packages: source-map: 0.5.7 source-map-resolve: 0.5.3 use: 3.1.1 - dev: false - - /sockjs-client/1.6.1: - resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} - engines: {node: '>=12'} - dependencies: - debug: 3.2.7 - eventsource: 2.0.2 - faye-websocket: 0.11.4 - inherits: 2.0.4 - url-parse: 1.5.10 + transitivePeerDependencies: + - supports-color dev: false /sockjs/0.3.24: @@ -15977,13 +15965,6 @@ packages: prepend-http: 2.0.0 dev: false - /url-parse/1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: false - /url/0.11.0: resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} dependencies: @@ -16054,7 +16035,7 @@ packages: engines: {node: '>= 4'} /utils-merge/1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: false @@ -16144,6 +16125,8 @@ packages: requiresBuild: true dependencies: chokidar: 2.1.8 + transitivePeerDependencies: + - supports-color dev: false optional: true @@ -16155,6 +16138,8 @@ packages: optionalDependencies: chokidar: 3.5.3 watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color dev: false /watchpack/2.3.1: @@ -16257,14 +16242,16 @@ packages: webpack: 5.76.2 dev: false - /webpack-dev-server/4.9.0_webpack@5.72.1: - resolution: {integrity: sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==} + /webpack-dev-server/4.14.0_webpack@5.76.2: + resolution: {integrity: sha512-KUgiUNUZldyx5xz3uK0dnXmvsSz03TAMCLtO1cUOb5oishh9sfP3vaI4XNY3EztrPUu98WKzamNfuaydTedYWQ==} engines: {node: '>= 12.13.0'} hasBin: true peerDependencies: webpack: ^4.37.0 || ^5.0.0 webpack-cli: '*' peerDependenciesMeta: + webpack: + optional: true webpack-cli: optional: true dependencies: @@ -16272,6 +16259,7 @@ packages: '@types/connect-history-api-fallback': 1.3.5 '@types/express': 4.17.17 '@types/serve-index': 1.9.1 + '@types/serve-static': 1.15.1 '@types/sockjs': 0.3.33 '@types/ws': 8.5.4 ansi-html-community: 0.0.8 @@ -16279,13 +16267,14 @@ packages: chokidar: 3.5.3 colorette: 2.0.19 compression: 1.7.4 - connect-history-api-fallback: 1.6.0 + connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 express: 4.18.2 graceful-fs: 4.2.10 html-entities: 2.3.3 http-proxy-middleware: 2.0.6_@types+express@4.17.17 ipaddr.js: 2.0.1 + launch-editor: 2.6.0 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 @@ -16294,8 +16283,8 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.72.1 - webpack-dev-middleware: 5.3.3_webpack@5.72.1 + webpack: 5.76.2 + webpack-dev-middleware: 5.3.3_webpack@5.76.2 ws: 8.13.0 transitivePeerDependencies: - bufferutil @@ -16304,7 +16293,7 @@ packages: - utf-8-validate dev: false - /webpack-dev-server/4.9.0_webpack@5.76.2: + /webpack-dev-server/4.9.0_webpack@5.72.1: resolution: {integrity: sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==} engines: {node: '>= 12.13.0'} hasBin: true @@ -16341,8 +16330,8 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.76.2 - webpack-dev-middleware: 5.3.3_webpack@5.76.2 + webpack: 5.72.1 + webpack-dev-middleware: 5.3.3_webpack@5.72.1 ws: 8.13.0 transitivePeerDependencies: - bufferutil @@ -16405,6 +16394,8 @@ packages: terser-webpack-plugin: 1.4.5_webpack@4.46.0 watchpack: 1.7.5 webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color dev: false /webpack/5.72.1: