From a6522f71a1d0c717a8aebedb634f2f839deea51b Mon Sep 17 00:00:00 2001 From: Colum Ferry Date: Fri, 5 Jul 2024 14:48:17 +0100 Subject: [PATCH] feat(module-federation): use @module-federation/enhanced for withModuleFederation (#26777) ## Current Behavior We currently use the `ModuleFederationPlugin` from `webpack` itself. This doesn't receive the same attention as the new `@module-federation/enhanced` package, which is where all new work by Zack Jackson and Bytedance is being conducted. ## Expected Behavior Our `withModuleFederation` utils should use the `@module-federation/enhanced` package. ## Related Issue(s) #26322 Fixes # --- package.json | 2 + packages/angular/migrations.json | 9 + packages/angular/ng-package.json | 2 +- packages/angular/package.json | 2 +- .../host/__snapshots__/host.spec.ts.snap | 4 - .../generators/host/lib/update-ssr-setup.ts | 9 + .../remote/__snapshots__/remote.spec.ts.snap | 2 - .../generators/remote/lib/update-ssr-setup.ts | 8 + .../src/generators/setup-mf/setup-mf.ts | 16 +- .../src/utils/backward-compatible-versions.ts | 6 +- .../utils/mf/with-module-federation-ssr.ts | 12 +- .../src/utils/mf/with-module-federation.ts | 16 +- packages/angular/src/utils/versions.ts | 3 +- packages/react/migrations.json | 9 + packages/react/package.json | 1 + packages/react/src/generators/host/host.ts | 9 + .../react/src/generators/remote/remote.ts | 9 + .../with-module-federation-ssr.ts | 12 +- .../with-module-federation.ts | 14 +- packages/react/src/utils/versions.ts | 3 +- packages/webpack/package.json | 1 + .../utils/module-federation/dependencies.ts | 1 - .../utils/module-federation/models/index.ts | 12 + pnpm-lock.yaml | 469 +++++++++++++++++- 24 files changed, 599 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 222367ade9a24..4c2ee8e1beee8 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,8 @@ "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", "@jest/types": "^29.4.1", + "@module-federation/enhanced": "^0.2.3", + "@module-federation/sdk": "^0.2.3", "@monodon/rust": "1.3.3", "@napi-rs/cli": "2.14.0", "@nestjs/cli": "^10.0.2", diff --git a/packages/angular/migrations.json b/packages/angular/migrations.json index 8232cf5a50664..60fccd57af11c 100644 --- a/packages/angular/migrations.json +++ b/packages/angular/migrations.json @@ -1933,6 +1933,15 @@ "alwaysAddToPackageJson": false } } + }, + "19.5.0-module-federation": { + "version": "19.5.0-beta.0", + "packages": { + "@module-federation/node": { + "version": "^2.3.0", + "alwaysAddToPackageJson": false + } + } } } } diff --git a/packages/angular/ng-package.json b/packages/angular/ng-package.json index 0c6cbffba2413..4e212c1f475cc 100644 --- a/packages/angular/ng-package.json +++ b/packages/angular/ng-package.json @@ -9,6 +9,7 @@ "@nx/", "@angular-devkit", "@angular-eslint/", + "@module-federation/enhanced", "@schematics", "@phenomnomnominal/tsquery", "@typescript-eslint/", @@ -20,7 +21,6 @@ "ts-node", "tsconfig-paths", "semver", - "webpack", "http-server", "magic-string", "enquirer", diff --git a/packages/angular/package.json b/packages/angular/package.json index a5cbfa8291641..e2090b894d739 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -56,8 +56,8 @@ "minimatch": "9.0.3", "semver": "^7.5.3", "tslib": "^2.3.0", - "webpack": "^5.80.0", "webpack-merge": "^5.8.0", + "@module-federation/enhanced": "~0.2.3", "@nx/devkit": "file:../devkit", "@nx/js": "file:../js", "@nx/eslint": "file:../eslint", diff --git a/packages/angular/src/generators/host/__snapshots__/host.spec.ts.snap b/packages/angular/src/generators/host/__snapshots__/host.spec.ts.snap index 9e151a6b1ce13..19ae9e6cf55ba 100644 --- a/packages/angular/src/generators/host/__snapshots__/host.spec.ts.snap +++ b/packages/angular/src/generators/host/__snapshots__/host.spec.ts.snap @@ -232,7 +232,6 @@ exports[`Host App Generator --ssr should generate the correct files 9`] = ` "extractLicenses": false, "optimization": false, "sourceMap": true, - "vendorChunk": true, }, "production": { "outputHashing": "media", @@ -446,7 +445,6 @@ exports[`Host App Generator --ssr should generate the correct files for standalo "extractLicenses": false, "optimization": false, "sourceMap": true, - "vendorChunk": true, }, "production": { "outputHashing": "media", @@ -661,7 +659,6 @@ exports[`Host App Generator --ssr should generate the correct files for standalo "extractLicenses": false, "optimization": false, "sourceMap": true, - "vendorChunk": true, }, "production": { "outputHashing": "media", @@ -863,7 +860,6 @@ exports[`Host App Generator --ssr should generate the correct files when --types "extractLicenses": false, "optimization": false, "sourceMap": true, - "vendorChunk": true, }, "production": { "outputHashing": "media", diff --git a/packages/angular/src/generators/host/lib/update-ssr-setup.ts b/packages/angular/src/generators/host/lib/update-ssr-setup.ts index 8b2e35f5e3dd3..bb7d549d01e24 100644 --- a/packages/angular/src/generators/host/lib/update-ssr-setup.ts +++ b/packages/angular/src/generators/host/lib/update-ssr-setup.ts @@ -71,6 +71,15 @@ export async function updateSsrSetup( ), }; + if ( + project.targets.server.configurations && + project.targets.server.configurations.development + ) { + if ('vendorChunk' in project.targets.server.configurations.development) { + delete project.targets.server.configurations.development.vendorChunk; + } + } + project.targets['serve-ssr'].executor = '@nx/angular:module-federation-dev-ssr'; diff --git a/packages/angular/src/generators/remote/__snapshots__/remote.spec.ts.snap b/packages/angular/src/generators/remote/__snapshots__/remote.spec.ts.snap index 7bd6129de18e3..847d04ef141c5 100644 --- a/packages/angular/src/generators/remote/__snapshots__/remote.spec.ts.snap +++ b/packages/angular/src/generators/remote/__snapshots__/remote.spec.ts.snap @@ -264,7 +264,6 @@ exports[`MF Remote App Generator --ssr should generate the correct files 11`] = "extractLicenses": false, "optimization": false, "sourceMap": true, - "vendorChunk": true, }, "production": { "outputHashing": "media", @@ -482,7 +481,6 @@ exports[`MF Remote App Generator --ssr should generate the correct files when -- "extractLicenses": false, "optimization": false, "sourceMap": true, - "vendorChunk": true, }, "production": { "outputHashing": "media", diff --git a/packages/angular/src/generators/remote/lib/update-ssr-setup.ts b/packages/angular/src/generators/remote/lib/update-ssr-setup.ts index f02d7322a6432..d7168a6e988b8 100644 --- a/packages/angular/src/generators/remote/lib/update-ssr-setup.ts +++ b/packages/angular/src/generators/remote/lib/update-ssr-setup.ts @@ -100,6 +100,14 @@ export async function updateSsrSetup( `webpack.server.config.${typescriptConfiguration ? 'ts' : 'js'}` ), }; + if ( + project.targets.server.configurations && + project.targets.server.configurations.development + ) { + if ('vendorChunk' in project.targets.server.configurations.development) { + delete project.targets.server.configurations.development.vendorChunk; + } + } project.targets['serve-ssr'].options = { ...(project.targets['serve-ssr'].options ?? {}), port, diff --git a/packages/angular/src/generators/setup-mf/setup-mf.ts b/packages/angular/src/generators/setup-mf/setup-mf.ts index 11ee73929b5ff..886da7eb8282f 100644 --- a/packages/angular/src/generators/setup-mf/setup-mf.ts +++ b/packages/angular/src/generators/setup-mf/setup-mf.ts @@ -22,7 +22,10 @@ import { updateHostAppRoutes, updateTsConfig, } from './lib'; -import { nxVersion } from '../../utils/versions'; +import { + moduleFederationEnhancedVersion, + nxVersion, +} from '../../utils/versions'; export async function setupMf(tree: Tree, rawOptions: Schema) { const options = normalizeOptions(tree, rawOptions); @@ -43,7 +46,11 @@ export async function setupMf(tree: Tree, rawOptions: Schema) { installTask = addDependenciesToPackageJson( tree, {}, - { '@nx/web': nxVersion, '@nx/webpack': nxVersion } + { + '@nx/web': nxVersion, + '@nx/webpack': nxVersion, + '@module-federation/enhanced': moduleFederationEnhancedVersion, + } ); } } @@ -71,7 +78,10 @@ export async function setupMf(tree: Tree, rawOptions: Schema) { installTask = addDependenciesToPackageJson( tree, {}, - { '@nx/webpack': nxVersion } + { + '@nx/webpack': nxVersion, + '@module-federation/enhanced': moduleFederationEnhancedVersion, + } ); } } diff --git a/packages/angular/src/utils/backward-compatible-versions.ts b/packages/angular/src/utils/backward-compatible-versions.ts index 2e69273e5eb2c..392bec4315533 100644 --- a/packages/angular/src/utils/backward-compatible-versions.ts +++ b/packages/angular/src/utils/backward-compatible-versions.ts @@ -48,7 +48,8 @@ export const backwardCompatibleVersions: VersionMap = { expressVersion: '~4.18.2', typesExpressVersion: '4.17.14', browserSyncVersion: '^3.0.0', - moduleFederationNodeVersion: '~1.0.5', + moduleFederationNodeVersion: '~2.3.0', + moduleFederationEnhancedVersion: '~0.2.3', angularEslintVersion: '~16.0.0', tailwindVersion: '^3.0.2', postcssVersion: '^8.4.5', @@ -74,7 +75,8 @@ export const backwardCompatibleVersions: VersionMap = { expressVersion: '~4.18.2', typesExpressVersion: '4.17.14', browserSyncVersion: '^3.0.0', - moduleFederationNodeVersion: '~1.0.5', + moduleFederationNodeVersion: '~2.3.0', + moduleFederationEnhancedVersion: '~0.2.3', angularEslintVersion: '~17.3.0', tailwindVersion: '^3.0.2', postcssVersion: '^8.4.5', diff --git a/packages/angular/src/utils/mf/with-module-federation-ssr.ts b/packages/angular/src/utils/mf/with-module-federation-ssr.ts index 9cbdeafb19a9b..a125470e800ed 100644 --- a/packages/angular/src/utils/mf/with-module-federation-ssr.ts +++ b/packages/angular/src/utils/mf/with-module-federation-ssr.ts @@ -1,8 +1,12 @@ -import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation'; +import type { + ModuleFederationConfig, + NxModuleFederationConfigOverride, +} from '@nx/webpack/src/utils/module-federation'; import { getModuleFederationConfig } from './utils'; export async function withModuleFederationForSSR( - options: ModuleFederationConfig + options: ModuleFederationConfig, + configOverride?: NxModuleFederationConfigOverride ) { if (global.NX_GRAPH_CREATION) { return (config) => config; @@ -45,6 +49,10 @@ export async function withModuleFederationForSSR( type: 'commonjs-module', }, isServer: true, + /** + * Apply user-defined config override + */ + ...(configOverride ? configOverride : {}), }, {} ), diff --git a/packages/angular/src/utils/mf/with-module-federation.ts b/packages/angular/src/utils/mf/with-module-federation.ts index 2676ef4682718..91d3a575c06a8 100644 --- a/packages/angular/src/utils/mf/with-module-federation.ts +++ b/packages/angular/src/utils/mf/with-module-federation.ts @@ -1,8 +1,14 @@ -import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation'; +import type { + ModuleFederationConfig, + NxModuleFederationConfigOverride, +} from '@nx/webpack/src/utils/module-federation'; import { getModuleFederationConfig } from './utils'; -import ModuleFederationPlugin from 'webpack/lib/container/ModuleFederationPlugin'; +import { ModuleFederationPlugin } from '@module-federation/enhanced/webpack'; -export async function withModuleFederation(options: ModuleFederationConfig) { +export async function withModuleFederation( + options: ModuleFederationConfig, + configOverride?: NxModuleFederationConfigOverride +) { if (global.NX_GRAPH_CREATION) { return (config) => config; } @@ -44,6 +50,10 @@ export async function withModuleFederation(options: ModuleFederationConfig) { library: { type: 'module', }, + /** + * Apply user-defined config override + */ + ...(configOverride ? configOverride : {}), }), sharedLibraries.getReplacementPlugin(), ], diff --git a/packages/angular/src/utils/versions.ts b/packages/angular/src/utils/versions.ts index 35a4b4876578f..71bf2c2816a2c 100644 --- a/packages/angular/src/utils/versions.ts +++ b/packages/angular/src/utils/versions.ts @@ -14,7 +14,8 @@ export const typesCorsVersion = '~2.8.5'; export const expressVersion = '~4.18.2'; export const typesExpressVersion = '4.17.14'; export const browserSyncVersion = '^3.0.0'; -export const moduleFederationNodeVersion = '~1.0.5'; +export const moduleFederationNodeVersion = '^2.3.0'; +export const moduleFederationEnhancedVersion = '~0.2.3'; export const angularEslintVersion = '^18.0.1'; export const typescriptEslintVersion = '^8.0.0-alpha.28'; diff --git a/packages/react/migrations.json b/packages/react/migrations.json index db1edccd9f3d2..65b261391dfa8 100644 --- a/packages/react/migrations.json +++ b/packages/react/migrations.json @@ -202,6 +202,15 @@ "alwaysAddToPackageJson": false } } + }, + "19.5.0-module-federation": { + "version": "19.5.0-beta.0", + "packages": { + "@module-federation/node": { + "version": "^2.3.0", + "alwaysAddToPackageJson": false + } + } } } } diff --git a/packages/react/package.json b/packages/react/package.json index 254c6db5595d7..e35162f536c3e 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -38,6 +38,7 @@ "file-loader": "^6.2.0", "minimatch": "9.0.3", "tslib": "^2.3.0", + "@module-federation/enhanced": "~0.2.3", "@nx/devkit": "file:../devkit", "@nx/js": "file:../js", "@nx/eslint": "file:../eslint", diff --git a/packages/react/src/generators/host/host.ts b/packages/react/src/generators/host/host.ts index 08f7709991b5a..57b1335f3480f 100644 --- a/packages/react/src/generators/host/host.ts +++ b/packages/react/src/generators/host/host.ts @@ -1,4 +1,5 @@ import { + addDependenciesToPackageJson, formatFiles, GeneratorCallback, joinPathFragments, @@ -22,6 +23,7 @@ import { updateModuleFederationE2eProject } from './lib/update-module-federation import { NormalizedSchema, Schema } from './schema'; import { addMfEnvToTargetDefaultInputs } from '../../utils/add-mf-env-to-inputs'; import { isValidVariable } from '@nx/js'; +import { moduleFederationEnhancedVersion } from '../../utils/versions'; export async function hostGenerator( host: Tree, @@ -137,6 +139,13 @@ export async function hostGeneratorInternal( addMfEnvToTargetDefaultInputs(host); + const installTask = addDependenciesToPackageJson( + host, + {}, + { '@module-federation/enhanced': moduleFederationEnhancedVersion } + ); + tasks.push(installTask); + if (!options.skipFormat) { await formatFiles(host); } diff --git a/packages/react/src/generators/remote/remote.ts b/packages/react/src/generators/remote/remote.ts index ec4aaf3d719dd..c878b179bc9e4 100644 --- a/packages/react/src/generators/remote/remote.ts +++ b/packages/react/src/generators/remote/remote.ts @@ -1,5 +1,6 @@ import { join } from 'path'; import { + addDependenciesToPackageJson, formatFiles, generateFiles, GeneratorCallback, @@ -24,6 +25,7 @@ import { addRemoteToDynamicHost } from './lib/add-remote-to-dynamic-host'; import { addMfEnvToTargetDefaultInputs } from '../../utils/add-mf-env-to-inputs'; import { maybeJs } from '../../utils/maybe-js'; import { isValidVariable } from '@nx/js'; +import { moduleFederationEnhancedVersion } from '../../utils/versions'; export function addModuleFederationFiles( host: Tree, @@ -171,6 +173,13 @@ export async function remoteGeneratorInternal(host: Tree, schema: Schema) { addMfEnvToTargetDefaultInputs(host); + const installTask = addDependenciesToPackageJson( + host, + {}, + { '@module-federation/enhanced': moduleFederationEnhancedVersion } + ); + tasks.push(installTask); + if (!options.skipFormat) { await formatFiles(host); } diff --git a/packages/react/src/module-federation/with-module-federation-ssr.ts b/packages/react/src/module-federation/with-module-federation-ssr.ts index cd68d6efa0f17..c1ca0f6065b93 100644 --- a/packages/react/src/module-federation/with-module-federation-ssr.ts +++ b/packages/react/src/module-federation/with-module-federation-ssr.ts @@ -1,8 +1,12 @@ -import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation'; +import { + ModuleFederationConfig, + NxModuleFederationConfigOverride, +} from '@nx/webpack/src/utils/module-federation'; import { getModuleFederationConfig } from './utils'; export async function withModuleFederationForSSR( - options: ModuleFederationConfig + options: ModuleFederationConfig, + configOverride?: NxModuleFederationConfigOverride ) { if (global.NX_GRAPH_CREATION) { return (config) => config; @@ -34,6 +38,10 @@ export async function withModuleFederationForSSR( type: 'commonjs-module', }, isServer: true, + /** + * Apply user-defined config overrides + */ + ...(configOverride ? configOverride : {}), }, {} ), diff --git a/packages/react/src/module-federation/with-module-federation.ts b/packages/react/src/module-federation/with-module-federation.ts index 4536997af3dd1..c336882583250 100644 --- a/packages/react/src/module-federation/with-module-federation.ts +++ b/packages/react/src/module-federation/with-module-federation.ts @@ -1,7 +1,10 @@ -import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation'; +import { + ModuleFederationConfig, + NxModuleFederationConfigOverride, +} from '@nx/webpack/src/utils/module-federation'; import { getModuleFederationConfig } from './utils'; import type { AsyncNxComposableWebpackPlugin } from '@nx/webpack'; -import ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin'); +import { ModuleFederationPlugin } from '@module-federation/enhanced/webpack'; const isVarOrWindow = (libType?: string) => libType === 'var' || libType === 'window'; @@ -11,7 +14,8 @@ const isVarOrWindow = (libType?: string) => * @return {Promise} */ export async function withModuleFederation( - options: ModuleFederationConfig + options: ModuleFederationConfig, + configOverride?: NxModuleFederationConfigOverride ): Promise { if (global.NX_GRAPH_CREATION) { return (config) => config; @@ -62,6 +66,10 @@ export async function withModuleFederation( * { appY: 'appY@http://localhost:3002/remoteEntry.js' } */ ...(isGlobal ? { remoteType: 'script' } : {}), + /** + * Apply user-defined config overrides + */ + ...(configOverride ? configOverride : {}), }), sharedLibraries.getReplacementPlugin() ); diff --git a/packages/react/src/utils/versions.ts b/packages/react/src/utils/versions.ts index bc43e56b92b25..3729d936279eb 100755 --- a/packages/react/src/utils/versions.ts +++ b/packages/react/src/utils/versions.ts @@ -54,7 +54,8 @@ export const typesExpressVersion = '4.17.17'; export const isbotVersion = '^3.6.5'; export const corsVersion = '~2.8.5'; export const typesCorsVersion = '~2.8.12'; -export const moduleFederationNodeVersion = '~0.9.9'; +export const moduleFederationNodeVersion = '^2.3.0'; +export const moduleFederationEnhancedVersion = '~0.2.3'; // style preprocessors export const lessVersion = '3.12.2'; diff --git a/packages/webpack/package.json b/packages/webpack/package.json index d49f9672032d3..5547b48e6355a 100644 --- a/packages/webpack/package.json +++ b/packages/webpack/package.json @@ -32,6 +32,7 @@ "dependencies": { "@babel/core": "^7.23.2", "@phenomnomnominal/tsquery": "~5.0.1", + "@module-federation/sdk": "^0.2.3", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", "babel-loader": "^9.1.2", diff --git a/packages/webpack/src/utils/module-federation/dependencies.ts b/packages/webpack/src/utils/module-federation/dependencies.ts index 27f0bc3f337f7..18263ecf0f29a 100644 --- a/packages/webpack/src/utils/module-federation/dependencies.ts +++ b/packages/webpack/src/utils/module-federation/dependencies.ts @@ -5,7 +5,6 @@ import { getOutputsForTargetAndConfiguration, parseTargetString, } from '@nx/devkit'; -import { interpolate } from 'nx/src/tasks-runner/utils'; export function getDependentPackagesForProject( projectGraph: ProjectGraph, diff --git a/packages/webpack/src/utils/module-federation/models/index.ts b/packages/webpack/src/utils/module-federation/models/index.ts index 3c2d2d9c260ec..2a1150a9cfe92 100644 --- a/packages/webpack/src/utils/module-federation/models/index.ts +++ b/packages/webpack/src/utils/module-federation/models/index.ts @@ -1,4 +1,5 @@ import type { NormalModuleReplacementPlugin } from 'webpack'; +import type { moduleFederationPlugin } from '@module-federation/sdk'; export type ModuleFederationLibrary = { type: string; name: string }; @@ -46,6 +47,17 @@ export interface ModuleFederationConfig { additionalShared?: AdditionalSharedConfig; } +export type NxModuleFederationConfigOverride = Omit< + moduleFederationPlugin.ModuleFederationPluginOptions, + | 'exposes' + | 'remotes' + | 'name' + | 'library' + | 'shared' + | 'filename' + | 'remoteType' +>; + export type WorkspaceLibrarySecondaryEntryPoint = { name: string; path: string; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7397c24df50e..09bdb82cbce57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -224,6 +224,12 @@ devDependencies: '@jest/types': specifier: ^29.4.1 version: 29.6.3 + '@module-federation/enhanced': + specifier: ^0.2.3 + version: 0.2.3(typescript@5.4.2)(webpack@5.88.0) + '@module-federation/sdk': + specifier: ^0.2.3 + version: 0.2.3 '@monodon/rust': specifier: 1.3.3 version: 1.3.3(@swc-node/register@1.9.1)(@swc/core@1.5.7)(@types/node@18.19.8)(typescript@5.4.2)(verdaccio@5.31.0) @@ -478,7 +484,7 @@ devDependencies: version: 0.3.1(immer@9.0.16)(xstate@4.34.0) '@xstate/inspect': specifier: 0.7.0 - version: 0.7.0(ws@8.16.0)(xstate@4.34.0) + version: 0.7.0(ws@8.17.1)(xstate@4.34.0) '@xstate/react': specifier: 3.0.1 version: 3.0.1(@types/react@18.3.1)(react@18.3.1)(xstate@4.34.0) @@ -8637,6 +8643,151 @@ packages: react: 18.3.1 dev: true + /@module-federation/bridge-react-webpack-plugin@0.2.3: + resolution: {integrity: sha512-RpFoo25kMaGkQpbwOhcYuF9cDNdo7FTFm6LceBbje8CkVaX8ekR9foXvKYoykbmCi/SbLw0WcXnq7/5y0UZ4nQ==} + dependencies: + '@module-federation/sdk': 0.2.3 + dev: true + + /@module-federation/dts-plugin@0.2.3(typescript@5.4.2): + resolution: {integrity: sha512-8QWWdspNNmGuCqiyGf1UiFxIt99TDFoajnK52IiJXnC6DsTjb2lHvHcw01NTJUwmfvxWUbwUjcGPSGeta3861Q==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ^1.0.24 + peerDependenciesMeta: + vue-tsc: + optional: true + dependencies: + '@module-federation/managers': 0.2.3 + '@module-federation/sdk': 0.2.3 + '@module-federation/third-party-dts-extractor': 0.2.3 + adm-zip: 0.5.14 + ansi-colors: 4.1.3 + axios: 1.7.2 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0(ws@8.17.1) + koa: 2.11.0 + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: 9.2.1 + typescript: 5.4.2 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /@module-federation/enhanced@0.2.3(typescript@5.4.2)(webpack@5.88.0): + resolution: {integrity: sha512-OHHR0BtNidz82K38MrNxZsKgFP6DNFfVZQmdJhMIrfIjURAbWw3zG1FOywdTZ3+Nic9FS3f65ttha6x9Cv4SpA==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ^1.0.24 + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.2.3 + '@module-federation/dts-plugin': 0.2.3(typescript@5.4.2) + '@module-federation/managers': 0.2.3 + '@module-federation/manifest': 0.2.3(typescript@5.4.2) + '@module-federation/rspack': 0.2.3(typescript@5.4.2) + '@module-federation/runtime-tools': 0.2.3 + '@module-federation/sdk': 0.2.3 + btoa: 1.2.1 + typescript: 5.4.2 + upath: 2.0.1 + webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /@module-federation/managers@0.2.3: + resolution: {integrity: sha512-GqNMkUiK4GbAu3emrwVPtP8BzG4lCX+O9kMUUw6LQ8ZDhjOCr+McvDOSgvWLZ89aB+rLPRtnz3fOT6pdUAa+oA==} + dependencies: + '@module-federation/sdk': 0.2.3 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + dev: true + + /@module-federation/manifest@0.2.3(typescript@5.4.2): + resolution: {integrity: sha512-TFrjNhsMkSOE4TADJt6kOaKfQ4uugQg4kFlocjAnxN5JHj5rTo/r9lSxtWeoeS2GMli9ifTFgECndmShpz3QcQ==} + dependencies: + '@module-federation/dts-plugin': 0.2.3(typescript@5.4.2) + '@module-federation/managers': 0.2.3 + '@module-federation/sdk': 0.2.3 + chalk: 3.0.0 + find-pkg: 2.0.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + dev: true + + /@module-federation/rspack@0.2.3(typescript@5.4.2): + resolution: {integrity: sha512-9n9SHiJvFOV/GHuLEF2xWwyg6SGsLu5g/onulpJ2dpkY57ZLPDRprEKoBsOZfz+dp/PWBUOt0YxHcl934hcF8Q==} + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.2.3 + '@module-federation/dts-plugin': 0.2.3(typescript@5.4.2) + '@module-federation/managers': 0.2.3 + '@module-federation/manifest': 0.2.3(typescript@5.4.2) + '@module-federation/runtime-tools': 0.2.3 + '@module-federation/sdk': 0.2.3 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + dev: true + + /@module-federation/runtime-tools@0.2.3: + resolution: {integrity: sha512-capN8CVTCEqNAjnl102girrkevczoQfnQYyiYC4WuyKsg7+LUqfirIe1Eiyv6VSE2UgvOTZDnqvervA6rBOlmg==} + dependencies: + '@module-federation/runtime': 0.2.3 + '@module-federation/webpack-bundler-runtime': 0.2.3 + dev: true + + /@module-federation/runtime@0.2.3: + resolution: {integrity: sha512-N+ZxBUb1mkmfO9XT1BwgYQgShtUTlijHbukqQ4afFka5lRAT+ayC7RKfHJLz0HbuexKPCmPBDfdmCnErR5WyTQ==} + dependencies: + '@module-federation/sdk': 0.2.3 + dev: true + + /@module-federation/sdk@0.2.3: + resolution: {integrity: sha512-W9zrPchLocyCBc/B8CW21akcfJXLl++9xBe1L1EtgxZGfj/xwHt0GcBWE/y+QGvYTL2a1iZjwscbftbUhxgxXg==} + dev: true + + /@module-federation/third-party-dts-extractor@0.2.3: + resolution: {integrity: sha512-/J1KIOYT071MBHE78JaZR+rngpOFOv/16MLIc5Qg4ckl1HdojLa4nZ+o2N6atRGDE2nX6hJFFTCeGXkBC7TQhg==} + dependencies: + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 + dev: true + + /@module-federation/webpack-bundler-runtime@0.2.3: + resolution: {integrity: sha512-L/jt2uJ+8dwYiyn9GxryzDR6tr/Wk8rpgvelM2EBeLIhu7YxCHSmSjQYhw3BTux9zZIr47d1K9fGjBFsVRd/SQ==} + dependencies: + '@module-federation/runtime': 0.2.3 + '@module-federation/sdk': 0.2.3 + dev: true + /@mole-inc/bin-wrapper@8.0.1: resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -16241,7 +16392,7 @@ packages: xstate: 4.34.0 dev: true - /@xstate/inspect@0.7.0(ws@8.16.0)(xstate@4.34.0): + /@xstate/inspect@0.7.0(ws@8.17.1)(xstate@4.34.0): resolution: {integrity: sha512-3wrTf8TfBYprH1gBFdxmOQUBDpBazlICWvGdFzr8IHFL4MbiexEZdAsL2QC/WAmW9BqNYTWTwgfbvKHKg+FrlA==} peerDependencies: '@types/ws': ^8.0.0 @@ -16252,7 +16403,7 @@ packages: optional: true dependencies: fast-safe-stringify: 2.1.1 - ws: 8.16.0 + ws: 8.17.1 xstate: 4.34.0 dev: true @@ -16446,6 +16597,11 @@ packages: regex-parser: 2.2.11 dev: true + /adm-zip@0.5.14: + resolution: {integrity: sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==} + engines: {node: '>=12.0'} + dev: true + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -17133,6 +17289,16 @@ packages: transitivePeerDependencies: - debug + /axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: @@ -17829,6 +17995,12 @@ packages: resolution: {integrity: sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==} dev: true + /btoa@1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true + dev: true + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true @@ -18006,6 +18178,14 @@ packages: unique-filename: 3.0.0 dev: true + /cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + dev: true + /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} @@ -18878,6 +19058,14 @@ packages: engines: {node: '>= 0.6'} dev: true + /cookies@0.8.0: + resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + dev: true + /copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} dependencies: @@ -19076,6 +19264,13 @@ packages: postcss-media-query-parser: 0.2.3 dev: true + /cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + dependencies: + luxon: 3.4.4 + dev: true + /cross-domain-safe-weakmap@1.0.29: resolution: {integrity: sha512-VLoUgf2SXnf3+na8NfeUFV59TRZkIJqCIATaMdbhccgtnTlSnHXkyTRwokngEGYdQXx8JbHT9GDYitgR2sdjuA==} dependencies: @@ -19639,6 +19834,11 @@ packages: whatwg-url: 11.0.0 dev: true + /date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + dev: true + /dateformat@3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true @@ -19657,6 +19857,17 @@ packages: dependencies: ms: 2.0.0 + /debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + /debug@3.2.7(supports-color@8.1.1): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -19737,6 +19948,10 @@ packages: type-detect: 4.0.8 dev: true + /deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + dev: true + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -20310,6 +20525,10 @@ packages: is-arrayish: 0.2.1 dev: true + /error-inject@1.0.0: + resolution: {integrity: sha512-JM8N6PytDbmIYm1IhPWlo8vr3NtfjhDY/1MhD/a5b/aad/USE8a0+NsqE9d5n+GVGmuNkPQWm4bFQWv18d8tMg==} + dev: true + /error-stack-parser-es@0.1.1: resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==} dev: true @@ -21425,6 +21644,13 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + dependencies: + homedir-polyfill: 1.0.3 + dev: true + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -21918,6 +22144,20 @@ packages: pkg-dir: 7.0.0 dev: true + /find-file-up@2.0.1: + resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==} + engines: {node: '>=8'} + dependencies: + resolve-dir: 1.0.1 + dev: true + + /find-pkg@2.0.0: + resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==} + engines: {node: '>=8'} + dependencies: + find-file-up: 2.0.1 + dev: true + /find-up@2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} @@ -21982,6 +22222,16 @@ packages: dependencies: debug: 4.3.4(supports-color@8.1.1) + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -22668,6 +22918,26 @@ packages: ini: 2.0.0 dev: true + /global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + dev: true + + /global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -23010,6 +23280,13 @@ packages: react-is: 16.13.1 dev: true + /homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + dependencies: + parse-passwd: 1.0.0 + dev: true + /hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} dev: true @@ -23120,6 +23397,14 @@ packages: entities: 4.5.0 dev: true + /http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + dev: true + /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true @@ -23145,7 +23430,17 @@ packages: setprototypeof: 1.1.1 statuses: 1.5.0 toidentifier: 1.0.0 - dev: false + + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + dev: true /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} @@ -24189,6 +24484,14 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + /isomorphic-ws@5.0.0(ws@8.17.1): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.17.1 + dev: true + /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true @@ -25060,6 +25363,13 @@ packages: source-map-support: 0.5.19 dev: true + /keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + dependencies: + tsscmp: 1.0.6 + dev: true + /keyv@4.5.2: resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} dependencies: @@ -25102,6 +25412,56 @@ packages: resolution: {integrity: sha512-dWl0Dbjm6Xm+kDxhPQJsCBTxrJzuGl0aP9rhr+TG8D3l+GL90N8O8lYUi7dTSAN2uuDqCtNgb6aEuQH5wsiV8Q==} dev: true + /koa-compose@3.2.1: + resolution: {integrity: sha512-8gen2cvKHIZ35eDEik5WOo8zbVp9t4cP8p4hW4uE55waxolLRexKKrqfCpwhGVppnB40jWeF8bZeTVg99eZgPw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + dev: true + + /koa-convert@1.2.0: + resolution: {integrity: sha512-K9XqjmEDStGX09v3oxR7t5uPRy0jqJdvodHa6wxWTHrTfDq0WUNnYTOOUZN6g8OM8oZQXprQASbiIXG2Ez8ehA==} + engines: {node: '>= 4'} + dependencies: + co: 4.6.0 + koa-compose: 3.2.1 + dev: true + + /koa@2.11.0: + resolution: {integrity: sha512-EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.8.0 + debug: 3.1.0 + delegates: 1.0.0 + depd: 1.1.2 + destroy: 1.2.0 + encodeurl: 1.0.2 + error-inject: 1.0.0 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.7.3 + is-generator-function: 1.0.10 + koa-compose: 4.1.0 + koa-convert: 1.2.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} dev: true @@ -25447,6 +25807,10 @@ packages: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} dev: false + /lodash.clonedeepwith@4.5.0: + resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} + dev: true + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true @@ -25526,6 +25890,23 @@ packages: wrap-ansi: 6.2.0 dev: true + /log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.4(supports-color@8.1.1) + flatted: 3.2.9 + rfdc: 1.3.0 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + dev: true + + /long-timeout@0.1.1: + resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} + dev: true + /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: true @@ -25619,6 +26000,11 @@ packages: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true + /luxon@3.4.4: + resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} + engines: {node: '>=12'} + dev: true + /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -27323,6 +27709,15 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /node-schedule@2.1.1: + resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} + engines: {node: '>=6'} + dependencies: + cron-parser: 4.9.0 + long-timeout: 0.1.1 + sorted-array-functions: 1.3.0 + dev: true + /nopt@4.0.3: resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==} hasBin: true @@ -28017,6 +28412,10 @@ packages: mimic-fn: 4.0.0 dev: true + /only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + dev: true + /open@10.0.3: resolution: {integrity: sha512-dtbI5oW7987hwC9qjJTyABldTaa19SuyJse1QboWv3b0qCcrrLNVDqBx1XgELAjh9QTVQaP/C5b1nhQebd1H2A==} engines: {node: '>=18'} @@ -28438,6 +28837,11 @@ packages: engines: {node: '>= 0.10'} dev: true + /parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true + /parse-path@7.0.0: resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} dependencies: @@ -30245,6 +30649,10 @@ packages: resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} dev: true + /rambda@9.2.1: + resolution: {integrity: sha512-6Dp+QQVQuAuhwBlbIvL2FjJVHCKF29W+n9ca/BMTVDqpj+Q7KKqUh7UAINEna8aaB2/oRvPuL5hViCTQARa70Q==} + dev: true + /ramda@0.29.0: resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} dev: true @@ -31021,6 +31429,14 @@ packages: dependencies: resolve-from: 5.0.0 + /resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + dev: true + /resolve-from@3.0.0: resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} engines: {node: '>=4'} @@ -31733,7 +32149,6 @@ packages: /setprototypeof@1.1.1: resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - dev: false /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -31999,6 +32414,10 @@ packages: is-plain-obj: 1.1.0 dev: true + /sorted-array-functions@1.3.0: + resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -32293,6 +32712,17 @@ packages: resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} dev: true + /streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.4(supports-color@8.1.1) + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + dev: true + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -33197,7 +33627,6 @@ packages: /toidentifier@1.0.0: resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} engines: {node: '>=0.6'} - dev: false /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} @@ -33467,6 +33896,11 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + dev: true + /tsutils@3.21.0(typescript@5.4.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -34073,6 +34507,11 @@ packages: setimmediate: 1.0.5 dev: true + /upath@2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + dev: true + /update-browserslist-db@1.0.10(browserslist@4.21.4): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true @@ -35662,6 +36101,19 @@ packages: optional: true dev: true + /ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -35771,6 +36223,11 @@ packages: fd-slicer: 1.1.0 dev: true + /ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} + engines: {node: '>= 4.0.0'} + dev: true + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'}