feat(module-federation): use proxy servers to proxy to single file server for static remotes (#26782)
<!-- Please make sure you have read the submission guidelines before posting an PR --> <!-- https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr --> <!-- Please make sure that your commit message follows our format --> <!-- Example: `fix(nx): must begin with lowercase` --> <!-- If this is a particularly complex change or feature addition, you can request a dedicated Nx release for this pull request branch. Mention someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they will confirm if the PR warrants its own release for testing purposes, and generate it for you if appropriate. --> ## Current Behavior <!-- This is the behavior we have today --> Remotes that are served for a host are usually served from a single file server running on a single port. We perform some mapping logic during the build of the host application to update the locations the remotes can be found at to point to the single file server. This works, but it's also wrong, as it breaks the flow that users expect. It also breaks dynamic remotes. ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> Continue to serve the remotes from a single file server, as this helps reduce the amount of resources used on developers machines. Use express to create proxy servers that will proxy requests from the original remote location to the single file server. This allows applications to continue to work without us having to interfere and map any remote locations. It also solves the issue with dynamic remotes. ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #26318
This commit is contained in:
parent
53d2e9cfc7
commit
a549b9b0c9
@ -20,13 +20,13 @@ import { join } from 'path';
|
||||
import { createTreeWithEmptyWorkspace } from 'nx/src/devkit-testing-exports';
|
||||
|
||||
describe('React Module Federation', () => {
|
||||
beforeAll(() => {
|
||||
newProject({ packages: ['@nx/react'] });
|
||||
});
|
||||
|
||||
afterAll(() => cleanupProject());
|
||||
|
||||
describe('Default Configuration', () => {
|
||||
beforeAll(() => {
|
||||
newProject({ packages: ['@nx/react'] });
|
||||
});
|
||||
|
||||
afterAll(() => cleanupProject());
|
||||
|
||||
it.each`
|
||||
js
|
||||
${false}
|
||||
@ -39,9 +39,6 @@ describe('React Module Federation', () => {
|
||||
const remote2 = uniq('remote2');
|
||||
const remote3 = uniq('remote3');
|
||||
|
||||
// Since we are using a single-file server for the remotes
|
||||
const defaultRemotePort = 4201;
|
||||
|
||||
runCLI(
|
||||
`generate @nx/react:host ${shell} --remotes=${remote1},${remote2},${remote3} --e2eTestRunner=cypress --style=css --no-interactive --skipFormat --js=${js}`
|
||||
);
|
||||
@ -65,54 +62,6 @@ describe('React Module Federation', () => {
|
||||
),
|
||||
});
|
||||
|
||||
if (js) {
|
||||
updateFile(
|
||||
`apps/${shell}/webpack.config.js`,
|
||||
stripIndents`
|
||||
const { composePlugins, withNx } = require('@nx/webpack');
|
||||
const { withReact } = require('@nx/react');
|
||||
const { withModuleFederation } = require('@nx/react/module-federation');
|
||||
|
||||
const baseConfig = require('./module-federation.config');
|
||||
|
||||
const config = {
|
||||
...baseConfig,
|
||||
remotes: [
|
||||
'${remote1}',
|
||||
['${remote2}', 'http://localhost:${defaultRemotePort}/${remote2}/remoteEntry.js'],
|
||||
['${remote3}', 'http://localhost:${defaultRemotePort}/${remote3}/remoteEntry.js'],
|
||||
],
|
||||
};
|
||||
|
||||
// Nx plugins for webpack to build config object from Nx options and context.
|
||||
module.exports = composePlugins(withNx(), withReact(), withModuleFederation(config));
|
||||
`
|
||||
);
|
||||
} else {
|
||||
updateFile(
|
||||
`apps/${shell}/webpack.config.ts`,
|
||||
stripIndents`
|
||||
import { composePlugins, withNx } from '@nx/webpack';
|
||||
import { withReact } from '@nx/react';
|
||||
import { withModuleFederation } from '@nx/react/module-federation';
|
||||
|
||||
import baseConfig from './module-federation.config';
|
||||
|
||||
const config = {
|
||||
...baseConfig,
|
||||
remotes: [
|
||||
'${remote1}',
|
||||
['${remote2}', 'http://localhost:${defaultRemotePort}/${remote2}/remoteEntry.js'],
|
||||
['${remote3}', 'http://localhost:${defaultRemotePort}/${remote3}/remoteEntry.js'],
|
||||
],
|
||||
};
|
||||
|
||||
// Nx plugins for webpack to build config object from Nx options and context.
|
||||
export default composePlugins(withNx(), withReact(), withModuleFederation(config));
|
||||
`
|
||||
);
|
||||
}
|
||||
|
||||
updateFile(
|
||||
`apps/${shell}-e2e/src/integration/app.spec.${js ? 'js' : 'ts'}`,
|
||||
stripIndents`
|
||||
@ -153,11 +102,7 @@ describe('React Module Federation', () => {
|
||||
output.includes(`http://localhost:${readPort(shell)}`)
|
||||
);
|
||||
|
||||
await killProcessAndPorts(
|
||||
serveResult.pid,
|
||||
readPort(shell),
|
||||
defaultRemotePort
|
||||
);
|
||||
await killProcessAndPorts(serveResult.pid, readPort(shell));
|
||||
|
||||
if (runE2ETests()) {
|
||||
const e2eResultsSwc = await runCommandUntil(
|
||||
@ -165,11 +110,7 @@ describe('React Module Federation', () => {
|
||||
(output) => output.includes('All specs passed!')
|
||||
);
|
||||
|
||||
await killProcessAndPorts(
|
||||
e2eResultsSwc.pid,
|
||||
readPort(shell),
|
||||
defaultRemotePort
|
||||
);
|
||||
await killProcessAndPorts(e2eResultsSwc.pid, readPort(shell));
|
||||
|
||||
const e2eResultsTsNode = await runCommandUntil(
|
||||
`e2e ${shell}-e2e --no-watch --verbose`,
|
||||
@ -179,11 +120,7 @@ describe('React Module Federation', () => {
|
||||
env: { NX_PREFER_TS_NODE: 'true' },
|
||||
}
|
||||
);
|
||||
await killProcessAndPorts(
|
||||
e2eResultsTsNode.pid,
|
||||
readPort(shell),
|
||||
defaultRemotePort
|
||||
);
|
||||
await killProcessAndPorts(e2eResultsTsNode.pid, readPort(shell));
|
||||
}
|
||||
},
|
||||
500_000
|
||||
@ -924,14 +861,20 @@ describe('React Module Federation', () => {
|
||||
});
|
||||
|
||||
afterAll(() => cleanupProject());
|
||||
it('should load remote dynamic module', async () => {
|
||||
it('ttt should load remote dynamic module', async () => {
|
||||
const shell = uniq('shell');
|
||||
const remote = uniq('remote');
|
||||
const remotePort = 4205;
|
||||
|
||||
runCLI(
|
||||
`generate @nx/react:host ${shell} --remotes=${remote} --e2eTestRunner=cypress --dynamic=true --project-name-and-root-format=as-provided --no-interactive --skipFormat`
|
||||
);
|
||||
|
||||
updateJson(`${remote}/project.json`, (project) => {
|
||||
project.targets.serve.options.port = remotePort;
|
||||
return project;
|
||||
});
|
||||
|
||||
// Webpack prod config should not exists when loading dynamic modules
|
||||
expect(
|
||||
fileExists(`${tmpProjPath()}/${shell}/webpack.config.prod.ts`)
|
||||
@ -942,12 +885,20 @@ describe('React Module Federation', () => {
|
||||
)
|
||||
).toBeTruthy();
|
||||
|
||||
updateJson(
|
||||
`${shell}/src/assets/module-federation.manifest.json`,
|
||||
(json) => {
|
||||
return {
|
||||
[remote]: `http://localhost:${remotePort}`,
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
const manifest = readJson(
|
||||
`${shell}/src/assets/module-federation.manifest.json`
|
||||
);
|
||||
|
||||
expect(manifest[remote]).toBeDefined();
|
||||
expect(manifest[remote]).toEqual('http://localhost:4201');
|
||||
expect(manifest[remote]).toEqual('http://localhost:4205');
|
||||
|
||||
// update e2e
|
||||
updateFile(
|
||||
@ -981,7 +932,6 @@ describe('React Module Federation', () => {
|
||||
expect(remoteOutput).toContain('Successfully ran target build');
|
||||
|
||||
const shellPort = readPort(shell);
|
||||
const remotePort = readPort(remote);
|
||||
|
||||
if (runE2ETests()) {
|
||||
// Serve Remote since it is dynamic and won't be started with the host
|
||||
|
||||
@ -180,7 +180,7 @@
|
||||
"eslint-plugin-react": "7.32.2",
|
||||
"eslint-plugin-react-hooks": "4.6.0",
|
||||
"eslint-plugin-storybook": "^0.6.12",
|
||||
"express": "^4.18.1",
|
||||
"express": "^4.19.2",
|
||||
"fast-xml-parser": "^4.2.7",
|
||||
"figures": "3.2.0",
|
||||
"file-type": "^16.2.0",
|
||||
@ -192,6 +192,7 @@
|
||||
"gpt3-tokenizer": "^1.1.5",
|
||||
"handlebars": "4.7.7",
|
||||
"html-webpack-plugin": "5.5.0",
|
||||
"http-proxy-middleware": "^3.0.0",
|
||||
"http-server": "14.1.0",
|
||||
"husky": "^8.0.1",
|
||||
"identity-obj-proxy": "3.0.0",
|
||||
|
||||
@ -21,6 +21,9 @@
|
||||
"ts-node",
|
||||
"tsconfig-paths",
|
||||
"semver",
|
||||
"webpack",
|
||||
"express",
|
||||
"http-proxy-middleware",
|
||||
"http-server",
|
||||
"magic-string",
|
||||
"enquirer",
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import { type Schema } from '../schema';
|
||||
import { type ExecutorContext, logger } from '@nx/devkit';
|
||||
import type { StaticRemotesConfig } from './parse-static-remotes-config';
|
||||
import { workspaceDataDirectory } from 'nx/src/utils/cache-directory';
|
||||
import { fork } from 'node:child_process';
|
||||
import { join } from 'node:path';
|
||||
import { createWriteStream } from 'node:fs';
|
||||
import type { StaticRemotesConfig } from '@nx/webpack/src/utils/module-federation/parse-static-remotes-config';
|
||||
|
||||
export async function buildStaticRemotes(
|
||||
staticRemotesConfig: StaticRemotesConfig,
|
||||
@ -23,9 +23,6 @@ export async function buildStaticRemotes(
|
||||
staticRemotesConfig.config[app].urlSegment
|
||||
}`;
|
||||
}
|
||||
process.env.NX_MF_DEV_SERVER_STATIC_REMOTES = JSON.stringify(
|
||||
mappedLocationOfRemotes
|
||||
);
|
||||
|
||||
await new Promise<void>((res) => {
|
||||
logger.info(
|
||||
@ -81,4 +78,6 @@ export async function buildStaticRemotes(
|
||||
process.on('SIGTERM', () => staticProcess.kill('SIGTERM'));
|
||||
process.on('exit', () => staticProcess.kill('SIGTERM'));
|
||||
});
|
||||
|
||||
return mappedLocationOfRemotes;
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
export * from './build-static-remotes';
|
||||
export * from './normalize-options';
|
||||
export * from './parse-static-remotes-config';
|
||||
export * from './start-dev-remotes';
|
||||
export * from './start-static-remotes-file-server';
|
||||
|
||||
@ -3,13 +3,19 @@ import { type Schema } from '../schema';
|
||||
import fileServerExecutor from '@nx/web/src/executors/file-server/file-server.impl';
|
||||
import { join } from 'path';
|
||||
import { cpSync } from 'fs';
|
||||
import type { StaticRemotesConfig } from './parse-static-remotes-config';
|
||||
import type { StaticRemotesConfig } from '@nx/webpack/src/utils/module-federation/parse-static-remotes-config';
|
||||
|
||||
export function startStaticRemotesFileServer(
|
||||
staticRemotesConfig: StaticRemotesConfig,
|
||||
context: ExecutorContext,
|
||||
options: Schema
|
||||
) {
|
||||
if (
|
||||
!staticRemotesConfig.remotes ||
|
||||
staticRemotesConfig.remotes.length === 0
|
||||
) {
|
||||
return;
|
||||
}
|
||||
let shouldMoveToCommonLocation = false;
|
||||
let commonOutputDirectory: string;
|
||||
for (const app of staticRemotesConfig.remotes) {
|
||||
|
||||
@ -7,7 +7,6 @@ import { type Schema } from './schema';
|
||||
import {
|
||||
buildStaticRemotes,
|
||||
normalizeOptions,
|
||||
parseStaticRemotesConfig,
|
||||
startRemotes,
|
||||
startStaticRemotesFileServer,
|
||||
} from './lib';
|
||||
@ -31,6 +30,8 @@ import {
|
||||
} from '../../builders/utilities/module-federation';
|
||||
import { extname, join } from 'path';
|
||||
import { existsSync } from 'fs';
|
||||
import { startRemoteProxies } from '@nx/webpack/src/utils/module-federation/start-remote-proxies';
|
||||
import { parseStaticRemotesConfig } from '@nx/webpack/src/utils/module-federation/parse-static-remotes-config';
|
||||
|
||||
export async function* moduleFederationDevServerExecutor(
|
||||
schema: Schema,
|
||||
@ -39,7 +40,6 @@ export async function* moduleFederationDevServerExecutor(
|
||||
// Force Node to resolve to look for the nx binary that is inside node_modules
|
||||
const nxBin = require.resolve('nx/bin/nx');
|
||||
const options = normalizeOptions(schema);
|
||||
options.staticRemotesPort ??= options.port + 1;
|
||||
|
||||
const { projects: workspaceProjects } =
|
||||
readProjectsConfigurationFromProjectGraph(context.projectGraph);
|
||||
@ -123,30 +123,23 @@ export async function* moduleFederationDevServerExecutor(
|
||||
pathToManifestFile
|
||||
);
|
||||
|
||||
options.staticRemotesPort ??= remotes.staticRemotePort;
|
||||
|
||||
// Set NX_MF_DEV_REMOTES for the Nx Runtime Library Control Plugin
|
||||
process.env.NX_MF_DEV_REMOTES = JSON.stringify(
|
||||
remotes.devRemotes.map((r) => (typeof r === 'string' ? r : r.remoteName))
|
||||
);
|
||||
|
||||
if (remotes.devRemotes.length > 0 && !schema.staticRemotesPort) {
|
||||
options.staticRemotesPort = options.devRemotes.reduce((portToUse, r) => {
|
||||
const remoteName = typeof r === 'string' ? r : r.remoteName;
|
||||
const remotePort =
|
||||
context.projectGraph.nodes[remoteName].data.targets['serve'].options
|
||||
.port;
|
||||
if (remotePort >= portToUse) {
|
||||
return remotePort + 1;
|
||||
} else {
|
||||
return portToUse;
|
||||
}
|
||||
}, options.staticRemotesPort);
|
||||
}
|
||||
|
||||
const staticRemotesConfig = parseStaticRemotesConfig(
|
||||
remotes.staticRemotes,
|
||||
[...remotes.staticRemotes, ...remotes.dynamicRemotes],
|
||||
context
|
||||
);
|
||||
await buildStaticRemotes(staticRemotesConfig, nxBin, context, options);
|
||||
const mappedLocationsOfStaticRemotes = await buildStaticRemotes(
|
||||
staticRemotesConfig,
|
||||
nxBin,
|
||||
context,
|
||||
options
|
||||
);
|
||||
|
||||
const devRemoteIters = await startRemotes(
|
||||
remotes.devRemotes,
|
||||
@ -156,18 +149,13 @@ export async function* moduleFederationDevServerExecutor(
|
||||
'serve'
|
||||
);
|
||||
|
||||
const dynamicRemoteIters = await startRemotes(
|
||||
remotes.dynamicRemotes,
|
||||
workspaceProjects,
|
||||
options,
|
||||
const staticRemotesIter = startStaticRemotesFileServer(
|
||||
staticRemotesConfig,
|
||||
context,
|
||||
'serve-static'
|
||||
options
|
||||
);
|
||||
|
||||
const staticRemotesIter =
|
||||
remotes.staticRemotes.length > 0
|
||||
? startStaticRemotesFileServer(staticRemotesConfig, context, options)
|
||||
: undefined;
|
||||
startRemoteProxies(staticRemotesConfig, mappedLocationsOfStaticRemotes);
|
||||
|
||||
const removeBaseUrlEmission = (iter: AsyncIterable<unknown>) =>
|
||||
mapAsyncIterable(iter, (v) => ({
|
||||
@ -178,7 +166,6 @@ export async function* moduleFederationDevServerExecutor(
|
||||
return yield* combineAsyncIterables(
|
||||
removeBaseUrlEmission(currIter),
|
||||
...devRemoteIters.map(removeBaseUrlEmission),
|
||||
...dynamicRemoteIters.map(removeBaseUrlEmission),
|
||||
...(staticRemotesIter ? [removeBaseUrlEmission(staticRemotesIter)] : []),
|
||||
createAsyncIterable<{ success: true; baseUrl: string }>(
|
||||
async ({ next, done }) => {
|
||||
|
||||
@ -20,10 +20,15 @@ import {
|
||||
import { waitForPortOpen } from '@nx/web/src/utils/wait-for-port-open';
|
||||
import { workspaceDataDirectory } from 'nx/src/utils/cache-directory';
|
||||
import { fork } from 'node:child_process';
|
||||
import { basename, dirname, join } from 'node:path';
|
||||
import { createWriteStream, cpSync } from 'node:fs';
|
||||
import { join } from 'node:path';
|
||||
import { cpSync, createWriteStream } from 'node:fs';
|
||||
import { existsSync } from 'fs';
|
||||
import { extname } from 'path';
|
||||
import { startRemoteProxies } from '@nx/webpack/src/utils/module-federation/start-remote-proxies';
|
||||
import {
|
||||
parseStaticRemotesConfig,
|
||||
type StaticRemotesConfig,
|
||||
} from '@nx/webpack/src/utils/module-federation/parse-static-remotes-config';
|
||||
|
||||
type ModuleFederationDevServerOptions = WebDevServerOptions & {
|
||||
devRemotes?: (
|
||||
@ -56,6 +61,12 @@ function startStaticRemotesFileServer(
|
||||
context: ExecutorContext,
|
||||
options: ModuleFederationDevServerOptions
|
||||
) {
|
||||
if (
|
||||
!staticRemotesConfig.remotes ||
|
||||
staticRemotesConfig.remotes.length === 0
|
||||
) {
|
||||
return;
|
||||
}
|
||||
let shouldMoveToCommonLocation = false;
|
||||
let commonOutputDirectory: string;
|
||||
for (const app of staticRemotesConfig.remotes) {
|
||||
@ -238,45 +249,14 @@ async function buildStaticRemotes(
|
||||
process.on('SIGTERM', () => staticProcess.kill('SIGTERM'));
|
||||
process.on('exit', () => staticProcess.kill('SIGTERM'));
|
||||
});
|
||||
}
|
||||
|
||||
type StaticRemoteConfig = {
|
||||
basePath: string;
|
||||
outputPath: string;
|
||||
urlSegment: string;
|
||||
};
|
||||
|
||||
type StaticRemotesConfig = {
|
||||
remotes: string[];
|
||||
config: Record<string, StaticRemoteConfig> | undefined;
|
||||
};
|
||||
|
||||
export function parseStaticRemotesConfig(
|
||||
staticRemotes: string[] | undefined,
|
||||
context: ExecutorContext
|
||||
): StaticRemotesConfig {
|
||||
if (!staticRemotes?.length) {
|
||||
return { remotes: [], config: undefined };
|
||||
}
|
||||
|
||||
const config: Record<string, StaticRemoteConfig> = {};
|
||||
for (const app of staticRemotes) {
|
||||
const outputPath =
|
||||
context.projectGraph.nodes[app].data.targets['build'].options.outputPath;
|
||||
const basePath = dirname(outputPath);
|
||||
const urlSegment = basename(outputPath);
|
||||
config[app] = { basePath, outputPath, urlSegment };
|
||||
}
|
||||
|
||||
return { remotes: staticRemotes, config };
|
||||
return mappedLocationOfRemotes;
|
||||
}
|
||||
|
||||
export default async function* moduleFederationDevServer(
|
||||
options: ModuleFederationDevServerOptions,
|
||||
context: ExecutorContext
|
||||
): AsyncIterableIterator<{ success: boolean; baseUrl?: string }> {
|
||||
const initialStaticRemotesPorts = options.staticRemotesPort;
|
||||
options.staticRemotesPort ??= options.port + 1;
|
||||
// Force Node to resolve to look for the nx binary that is inside node_modules
|
||||
const nxBin = require.resolve('nx/bin/nx');
|
||||
const currIter = options.static
|
||||
@ -344,31 +324,23 @@ export default async function* moduleFederationDevServer(
|
||||
},
|
||||
pathToManifestFile
|
||||
);
|
||||
options.staticRemotesPort ??= remotes.staticRemotePort;
|
||||
|
||||
// Set NX_MF_DEV_REMOTES for the Nx Runtime Library Control Plugin
|
||||
process.env.NX_MF_DEV_REMOTES = JSON.stringify(
|
||||
remotes.devRemotes.map((r) => (typeof r === 'string' ? r : r.remoteName))
|
||||
);
|
||||
|
||||
if (remotes.devRemotes.length > 0 && !initialStaticRemotesPorts) {
|
||||
options.staticRemotesPort = options.devRemotes.reduce((portToUse, r) => {
|
||||
const remoteName = typeof r === 'string' ? r : r.remoteName;
|
||||
const remotePort =
|
||||
context.projectGraph.nodes[remoteName].data.targets['serve'].options
|
||||
.port;
|
||||
if (remotePort >= portToUse) {
|
||||
return remotePort + 1;
|
||||
} else {
|
||||
return portToUse;
|
||||
}
|
||||
}, options.staticRemotesPort);
|
||||
}
|
||||
|
||||
const staticRemotesConfig = parseStaticRemotesConfig(
|
||||
remotes.staticRemotes,
|
||||
[...remotes.staticRemotes, ...remotes.dynamicRemotes],
|
||||
context
|
||||
);
|
||||
await buildStaticRemotes(staticRemotesConfig, nxBin, context, options);
|
||||
const mappedLocationsOfStaticRemotes = await buildStaticRemotes(
|
||||
staticRemotesConfig,
|
||||
nxBin,
|
||||
context,
|
||||
options
|
||||
);
|
||||
|
||||
const devRemoteIters = await startRemotes(
|
||||
remotes.devRemotes,
|
||||
@ -376,22 +348,18 @@ export default async function* moduleFederationDevServer(
|
||||
options,
|
||||
'serve'
|
||||
);
|
||||
const dynamicRemotesIters = await startRemotes(
|
||||
remotes.dynamicRemotes,
|
||||
|
||||
const staticRemotesIter = startStaticRemotesFileServer(
|
||||
staticRemotesConfig,
|
||||
context,
|
||||
options,
|
||||
'serve-static'
|
||||
options
|
||||
);
|
||||
|
||||
const staticRemotesIter =
|
||||
remotes.staticRemotes.length > 0
|
||||
? startStaticRemotesFileServer(staticRemotesConfig, context, options)
|
||||
: undefined;
|
||||
startRemoteProxies(staticRemotesConfig, mappedLocationsOfStaticRemotes);
|
||||
|
||||
return yield* combineAsyncIterables(
|
||||
currIter,
|
||||
...devRemoteIters,
|
||||
...dynamicRemotesIters,
|
||||
...(staticRemotesIter ? [staticRemotesIter] : []),
|
||||
createAsyncIterable<{ success: true; baseUrl: string }>(
|
||||
async ({ next, done }) => {
|
||||
|
||||
@ -87,7 +87,14 @@ export function addModuleFederationFiles(
|
||||
processWebpackConfig(options, host, 'webpack.config.prod.js');
|
||||
processWebpackConfig(options, host, 'webpack.config.prod.ts');
|
||||
if (!host.exists(pathToMFManifest)) {
|
||||
host.write(pathToMFManifest, '{}');
|
||||
host.write(
|
||||
pathToMFManifest,
|
||||
`{
|
||||
${defaultRemoteManifest
|
||||
.map(({ name, port }) => `"${name}": "http://localhost:${port}"`)
|
||||
.join(',\n')}
|
||||
}`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,12 +6,14 @@ export function addRemoteToDynamicHost(
|
||||
remotePort: number,
|
||||
pathToMfManifest: string
|
||||
) {
|
||||
const current = tree.read(pathToMfManifest, 'utf8');
|
||||
tree.write(
|
||||
pathToMfManifest,
|
||||
JSON.stringify({
|
||||
...JSON.parse(current),
|
||||
[remoteName]: `http://localhost:${remotePort}`,
|
||||
})
|
||||
);
|
||||
if (tree.exists(pathToMfManifest)) {
|
||||
const current = tree.read(pathToMfManifest, 'utf8');
|
||||
tree.write(
|
||||
pathToMfManifest,
|
||||
JSON.stringify({
|
||||
...JSON.parse(current),
|
||||
[remoteName]: `http://localhost:${remotePort}`,
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,7 +42,9 @@
|
||||
"copy-webpack-plugin": "^10.2.4",
|
||||
"css-loader": "^6.4.0",
|
||||
"css-minimizer-webpack-plugin": "^5.0.0",
|
||||
"express": "^4.19.2",
|
||||
"fork-ts-checker-webpack-plugin": "7.2.13",
|
||||
"http-proxy-middleware": "^3.0.0",
|
||||
"less": "4.1.3",
|
||||
"less-loader": "11.1.0",
|
||||
"license-webpack-plugin": "^4.0.2",
|
||||
|
||||
@ -121,8 +121,8 @@ export function getRemotes(
|
||||
);
|
||||
|
||||
const staticRemotes = knownRemotes.filter((r) => !devServeApps.has(r));
|
||||
const devServeRemotes = [...knownRemotes, ...dynamicRemotes].filter((r) =>
|
||||
devServeApps.has(r)
|
||||
const devServeRemotes = [...knownRemotes, ...knownDynamicRemotes].filter(
|
||||
(r) => devServeApps.has(r)
|
||||
);
|
||||
const staticDynamicRemotes = knownDynamicRemotes.filter(
|
||||
(r) => !devServeApps.has(r)
|
||||
@ -130,12 +130,23 @@ export function getRemotes(
|
||||
const remotePorts = [...devServeRemotes, ...staticDynamicRemotes].map(
|
||||
(r) => context.projectGraph.nodes[r].data.targets['serve'].options.port
|
||||
);
|
||||
const staticRemotePort =
|
||||
Math.max(
|
||||
...([
|
||||
...remotePorts,
|
||||
...staticRemotes.map(
|
||||
(r) =>
|
||||
context.projectGraph.nodes[r].data.targets['serve'].options.port
|
||||
),
|
||||
] as number[])
|
||||
) + 1;
|
||||
|
||||
return {
|
||||
staticRemotes,
|
||||
devRemotes: devServeRemotes,
|
||||
dynamicRemotes: staticDynamicRemotes,
|
||||
remotePorts,
|
||||
staticRemotePort,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ export type StaticRemoteConfig = {
|
||||
basePath: string;
|
||||
outputPath: string;
|
||||
urlSegment: string;
|
||||
port: number;
|
||||
};
|
||||
|
||||
export type StaticRemotesConfig = {
|
||||
@ -26,7 +27,9 @@ export function parseStaticRemotesConfig(
|
||||
context.projectGraph.nodes[app].data.targets['build'].options.outputPath;
|
||||
const basePath = dirname(outputPath);
|
||||
const urlSegment = basename(outputPath);
|
||||
config[app] = { basePath, outputPath, urlSegment };
|
||||
const port =
|
||||
context.projectGraph.nodes[app].data.targets['serve'].options.port;
|
||||
config[app] = { basePath, outputPath, urlSegment, port };
|
||||
}
|
||||
|
||||
return { remotes: staticRemotes, config };
|
||||
@ -0,0 +1,27 @@
|
||||
import type { Express } from 'express';
|
||||
import { logger } from '@nx/devkit';
|
||||
import { StaticRemotesConfig } from './parse-static-remotes-config';
|
||||
|
||||
export function startRemoteProxies(
|
||||
staticRemotesConfig: StaticRemotesConfig,
|
||||
mappedLocationsOfRemotes: Record<string, string>
|
||||
) {
|
||||
const { createProxyMiddleware } = require('http-proxy-middleware');
|
||||
const express = require('express');
|
||||
logger.info(`NX Starting static remotes proxies...`);
|
||||
for (const app of staticRemotesConfig.remotes) {
|
||||
const expressProxy: Express = express();
|
||||
expressProxy.use(
|
||||
createProxyMiddleware({
|
||||
target: mappedLocationsOfRemotes[app],
|
||||
changeOrigin: true,
|
||||
})
|
||||
);
|
||||
const proxyServer = expressProxy.listen(
|
||||
staticRemotesConfig.config[app].port
|
||||
);
|
||||
process.on('SIGTERM', () => proxyServer.close());
|
||||
process.on('exit', () => proxyServer.close());
|
||||
}
|
||||
logger.info(`NX Static remotes proxies started successfully`);
|
||||
}
|
||||
318
pnpm-lock.yaml
generated
318
pnpm-lock.yaml
generated
@ -630,8 +630,8 @@ devDependencies:
|
||||
specifier: ^0.6.12
|
||||
version: 0.6.12(eslint@8.57.0)(typescript@5.5.3)
|
||||
express:
|
||||
specifier: ^4.18.1
|
||||
version: 4.18.1
|
||||
specifier: ^4.19.2
|
||||
version: 4.19.2
|
||||
fast-xml-parser:
|
||||
specifier: ^4.2.7
|
||||
version: 4.2.7
|
||||
@ -665,6 +665,9 @@ devDependencies:
|
||||
html-webpack-plugin:
|
||||
specifier: 5.5.0
|
||||
version: 5.5.0(webpack@5.88.0)
|
||||
http-proxy-middleware:
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0
|
||||
http-server:
|
||||
specifier: 14.1.0
|
||||
version: 14.1.0
|
||||
@ -9239,7 +9242,7 @@ packages:
|
||||
resolution: {integrity: sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
dev: true
|
||||
|
||||
/@ljharb/through@2.3.13:
|
||||
@ -13660,7 +13663,7 @@ packages:
|
||||
esbuild-plugins-node-modules-polyfill: 1.6.1(esbuild@0.17.6)
|
||||
execa: 5.1.1
|
||||
exit-hook: 2.2.1
|
||||
express: 4.18.2
|
||||
express: 4.19.2
|
||||
fs-extra: 10.1.0
|
||||
get-port: 5.1.1
|
||||
gunzip-maybe: 1.4.2
|
||||
@ -14823,7 +14826,7 @@ packages:
|
||||
'@types/find-cache-dir': 3.2.1
|
||||
browser-assert: 1.2.1
|
||||
es-module-lexer: 0.9.3
|
||||
express: 4.18.2
|
||||
express: 4.19.2
|
||||
find-cache-dir: 3.3.2
|
||||
fs-extra: 11.2.0
|
||||
magic-string: 0.30.10
|
||||
@ -14861,7 +14864,7 @@ packages:
|
||||
case-sensitive-paths-webpack-plugin: 2.4.0
|
||||
constants-browserify: 1.0.0
|
||||
css-loader: 6.10.0(webpack@5.88.0)
|
||||
express: 4.18.2
|
||||
express: 4.19.2
|
||||
fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.88.0)
|
||||
fs-extra: 11.2.0
|
||||
html-webpack-plugin: 5.5.0(webpack@5.88.0)
|
||||
@ -15069,7 +15072,7 @@ packages:
|
||||
cli-table3: 0.6.3
|
||||
compression: 1.7.4
|
||||
detect-port: 1.5.1
|
||||
express: 4.18.2
|
||||
express: 4.19.2
|
||||
fs-extra: 11.1.1
|
||||
globby: 11.1.0
|
||||
ip: 2.0.0
|
||||
@ -18539,7 +18542,7 @@ packages:
|
||||
/array-buffer-byte-length@1.0.0:
|
||||
resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
is-array-buffer: 3.0.2
|
||||
dev: true
|
||||
|
||||
@ -18578,10 +18581,10 @@ packages:
|
||||
resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.0
|
||||
es-abstract: 1.22.3
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
is-string: 1.0.7
|
||||
dev: true
|
||||
|
||||
@ -18607,11 +18610,11 @@ packages:
|
||||
resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
es-shim-unscopables: 1.0.0
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
dev: true
|
||||
|
||||
/array.prototype.flat@1.3.1:
|
||||
@ -18628,7 +18631,7 @@ packages:
|
||||
resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
es-shim-unscopables: 1.0.0
|
||||
@ -18648,7 +18651,7 @@ packages:
|
||||
resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
es-shim-unscopables: 1.0.0
|
||||
@ -18669,10 +18672,10 @@ packages:
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
array-buffer-byte-length: 1.0.0
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
is-array-buffer: 3.0.2
|
||||
is-shared-array-buffer: 1.0.2
|
||||
dev: true
|
||||
@ -18869,7 +18872,7 @@ packages:
|
||||
/axios@1.6.2:
|
||||
resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==}
|
||||
dependencies:
|
||||
follow-redirects: 1.15.2(debug@4.3.4)
|
||||
follow-redirects: 1.15.2
|
||||
form-data: 4.0.0
|
||||
proxy-from-env: 1.1.0
|
||||
transitivePeerDependencies:
|
||||
@ -18879,7 +18882,7 @@ packages:
|
||||
/axios@1.7.2:
|
||||
resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==}
|
||||
dependencies:
|
||||
follow-redirects: 1.15.6
|
||||
follow-redirects: 1.15.6(debug@4.3.4)
|
||||
form-data: 4.0.0
|
||||
proxy-from-env: 1.1.0
|
||||
transitivePeerDependencies:
|
||||
@ -19425,26 +19428,6 @@ packages:
|
||||
resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
|
||||
dev: true
|
||||
|
||||
/body-parser@1.20.0:
|
||||
resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==}
|
||||
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
|
||||
dependencies:
|
||||
bytes: 3.1.2
|
||||
content-type: 1.0.4
|
||||
debug: 2.6.9
|
||||
depd: 2.0.0
|
||||
destroy: 1.2.0
|
||||
http-errors: 2.0.0
|
||||
iconv-lite: 0.4.24
|
||||
on-finished: 2.4.1
|
||||
qs: 6.10.3
|
||||
raw-body: 2.5.1
|
||||
type-is: 1.6.18
|
||||
unpipe: 1.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/body-parser@1.20.1:
|
||||
resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
|
||||
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
|
||||
@ -19463,6 +19446,7 @@ packages:
|
||||
unpipe: 1.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/body-parser@1.20.2:
|
||||
resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
|
||||
@ -19482,7 +19466,6 @@ packages:
|
||||
unpipe: 1.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/bonjour-service@1.0.14:
|
||||
resolution: {integrity: sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==}
|
||||
@ -19828,8 +19811,9 @@ packages:
|
||||
resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
|
||||
dependencies:
|
||||
function-bind: 1.1.2
|
||||
get-intrinsic: 1.2.2
|
||||
set-function-length: 1.2.0
|
||||
get-intrinsic: 1.2.4
|
||||
set-function-length: 1.2.2
|
||||
dev: true
|
||||
|
||||
/call-bind@1.0.7:
|
||||
resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
|
||||
@ -19840,7 +19824,6 @@ packages:
|
||||
function-bind: 1.1.2
|
||||
get-intrinsic: 1.2.4
|
||||
set-function-length: 1.2.2
|
||||
dev: true
|
||||
|
||||
/call-me-maybe@1.0.1:
|
||||
resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==}
|
||||
@ -20508,11 +20491,11 @@ packages:
|
||||
/content-type@1.0.4:
|
||||
resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: true
|
||||
|
||||
/content-type@1.0.5:
|
||||
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: true
|
||||
|
||||
/conventional-changelog-angular@5.0.13:
|
||||
resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==}
|
||||
@ -20694,11 +20677,11 @@ packages:
|
||||
/cookie@0.5.0:
|
||||
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: true
|
||||
|
||||
/cookie@0.6.0:
|
||||
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: true
|
||||
|
||||
/cookies@0.8.0:
|
||||
resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==}
|
||||
@ -21662,14 +21645,6 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/define-data-property@1.1.1:
|
||||
resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
get-intrinsic: 1.2.2
|
||||
gopd: 1.0.1
|
||||
has-property-descriptors: 1.0.1
|
||||
|
||||
/define-data-property@1.1.4:
|
||||
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@ -21677,7 +21652,6 @@ packages:
|
||||
es-define-property: 1.0.0
|
||||
es-errors: 1.3.0
|
||||
gopd: 1.0.1
|
||||
dev: true
|
||||
|
||||
/define-lazy-prop@2.0.0:
|
||||
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
|
||||
@ -21692,7 +21666,7 @@ packages:
|
||||
resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
has-property-descriptors: 1.0.1
|
||||
has-property-descriptors: 1.0.2
|
||||
object-keys: 1.1.1
|
||||
dev: true
|
||||
|
||||
@ -21700,8 +21674,8 @@ packages:
|
||||
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
define-data-property: 1.1.1
|
||||
has-property-descriptors: 1.0.1
|
||||
define-data-property: 1.1.4
|
||||
has-property-descriptors: 1.0.2
|
||||
object-keys: 1.1.1
|
||||
dev: true
|
||||
|
||||
@ -22228,14 +22202,14 @@ packages:
|
||||
resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
es-to-primitive: 1.2.1
|
||||
function-bind: 1.1.2
|
||||
function.prototype.name: 1.1.5
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
get-symbol-description: 1.0.0
|
||||
has: 1.0.3
|
||||
has-property-descriptors: 1.0.1
|
||||
has-property-descriptors: 1.0.2
|
||||
has-symbols: 1.0.3
|
||||
internal-slot: 1.0.5
|
||||
is-callable: 1.2.7
|
||||
@ -22244,7 +22218,7 @@ packages:
|
||||
is-shared-array-buffer: 1.0.2
|
||||
is-string: 1.0.7
|
||||
is-weakref: 1.0.2
|
||||
object-inspect: 1.12.2
|
||||
object-inspect: 1.13.1
|
||||
object-keys: 1.1.1
|
||||
object.assign: 4.1.4
|
||||
regexp.prototype.flags: 1.5.1
|
||||
@ -22261,15 +22235,15 @@ packages:
|
||||
array-buffer-byte-length: 1.0.0
|
||||
arraybuffer.prototype.slice: 1.0.2
|
||||
available-typed-arrays: 1.0.5
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
es-set-tostringtag: 2.0.2
|
||||
es-to-primitive: 1.2.1
|
||||
function.prototype.name: 1.1.6
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
get-symbol-description: 1.0.0
|
||||
globalthis: 1.0.3
|
||||
gopd: 1.0.1
|
||||
has-property-descriptors: 1.0.1
|
||||
has-property-descriptors: 1.0.2
|
||||
has-proto: 1.0.1
|
||||
has-symbols: 1.0.3
|
||||
hasown: 2.0.0
|
||||
@ -22304,25 +22278,23 @@ packages:
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
get-intrinsic: 1.2.4
|
||||
dev: true
|
||||
|
||||
/es-errors@1.3.0:
|
||||
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dev: true
|
||||
|
||||
/es-iterator-helpers@1.0.15:
|
||||
resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==}
|
||||
dependencies:
|
||||
asynciterator.prototype: 1.0.0
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
es-set-tostringtag: 2.0.2
|
||||
function-bind: 1.1.2
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
globalthis: 1.0.3
|
||||
has-property-descriptors: 1.0.1
|
||||
has-property-descriptors: 1.0.2
|
||||
has-proto: 1.0.1
|
||||
has-symbols: 1.0.3
|
||||
internal-slot: 1.0.5
|
||||
@ -22345,7 +22317,7 @@ packages:
|
||||
resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
has-tostringtag: 1.0.0
|
||||
hasown: 2.0.0
|
||||
dev: true
|
||||
@ -23402,45 +23374,6 @@ packages:
|
||||
resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==}
|
||||
dev: true
|
||||
|
||||
/express@4.18.1:
|
||||
resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==}
|
||||
engines: {node: '>= 0.10.0'}
|
||||
dependencies:
|
||||
accepts: 1.3.8
|
||||
array-flatten: 1.1.1
|
||||
body-parser: 1.20.0
|
||||
content-disposition: 0.5.4
|
||||
content-type: 1.0.4
|
||||
cookie: 0.5.0
|
||||
cookie-signature: 1.0.6
|
||||
debug: 2.6.9
|
||||
depd: 2.0.0
|
||||
encodeurl: 1.0.2
|
||||
escape-html: 1.0.3
|
||||
etag: 1.8.1
|
||||
finalhandler: 1.2.0
|
||||
fresh: 0.5.2
|
||||
http-errors: 2.0.0
|
||||
merge-descriptors: 1.0.1
|
||||
methods: 1.1.2
|
||||
on-finished: 2.4.1
|
||||
parseurl: 1.3.3
|
||||
path-to-regexp: 0.1.7
|
||||
proxy-addr: 2.0.7
|
||||
qs: 6.10.3
|
||||
range-parser: 1.2.1
|
||||
safe-buffer: 5.2.1
|
||||
send: 0.18.0
|
||||
serve-static: 1.15.0
|
||||
setprototypeof: 1.2.0
|
||||
statuses: 2.0.1
|
||||
type-is: 1.6.18
|
||||
utils-merge: 1.0.1
|
||||
vary: 1.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/express@4.18.2:
|
||||
resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
|
||||
engines: {node: '>= 0.10.0'}
|
||||
@ -23478,6 +23411,7 @@ packages:
|
||||
vary: 1.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/express@4.18.3:
|
||||
resolution: {integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==}
|
||||
@ -23487,7 +23421,7 @@ packages:
|
||||
array-flatten: 1.1.1
|
||||
body-parser: 1.20.2
|
||||
content-disposition: 0.5.4
|
||||
content-type: 1.0.4
|
||||
content-type: 1.0.5
|
||||
cookie: 0.5.0
|
||||
cookie-signature: 1.0.6
|
||||
debug: 2.6.9
|
||||
@ -23526,7 +23460,7 @@ packages:
|
||||
array-flatten: 1.1.1
|
||||
body-parser: 1.20.2
|
||||
content-disposition: 0.5.4
|
||||
content-type: 1.0.4
|
||||
content-type: 1.0.5
|
||||
cookie: 0.6.0
|
||||
cookie-signature: 1.0.6
|
||||
debug: 2.6.9
|
||||
@ -23555,7 +23489,6 @@ packages:
|
||||
vary: 1.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/ext-list@2.2.2:
|
||||
resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
|
||||
@ -23940,9 +23873,19 @@ packages:
|
||||
resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
|
||||
dev: true
|
||||
|
||||
/follow-redirects@1.15.2(debug@4.3.4):
|
||||
/follow-redirects@1.15.2:
|
||||
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
|
||||
engines: {node: '>=4.0'}
|
||||
peerDependencies:
|
||||
debug: '*'
|
||||
peerDependenciesMeta:
|
||||
debug:
|
||||
optional: true
|
||||
dev: false
|
||||
|
||||
/follow-redirects@1.15.6(debug@4.3.4):
|
||||
resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
|
||||
engines: {node: '>=4.0'}
|
||||
peerDependencies:
|
||||
debug: '*'
|
||||
peerDependenciesMeta:
|
||||
@ -23951,16 +23894,6 @@ 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:
|
||||
@ -24255,7 +24188,7 @@ packages:
|
||||
resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
functions-have-names: 1.2.3
|
||||
@ -24265,7 +24198,7 @@ packages:
|
||||
resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
functions-have-names: 1.2.3
|
||||
@ -24335,6 +24268,7 @@ packages:
|
||||
has-proto: 1.0.1
|
||||
has-symbols: 1.0.3
|
||||
hasown: 2.0.0
|
||||
dev: true
|
||||
|
||||
/get-intrinsic@1.2.4:
|
||||
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
|
||||
@ -24345,7 +24279,6 @@ packages:
|
||||
has-proto: 1.0.1
|
||||
has-symbols: 1.0.3
|
||||
hasown: 2.0.0
|
||||
dev: true
|
||||
|
||||
/get-nonce@1.0.1:
|
||||
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
|
||||
@ -24407,8 +24340,8 @@ packages:
|
||||
resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
get-intrinsic: 1.2.2
|
||||
call-bind: 1.0.7
|
||||
get-intrinsic: 1.2.4
|
||||
dev: true
|
||||
|
||||
/get-symbol-from-current-process-h@1.0.2:
|
||||
@ -24766,7 +24699,7 @@ packages:
|
||||
/gopd@1.0.1:
|
||||
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
|
||||
dependencies:
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
|
||||
/got@11.8.6:
|
||||
resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
|
||||
@ -24896,16 +24829,10 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/has-property-descriptors@1.0.1:
|
||||
resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
|
||||
dependencies:
|
||||
get-intrinsic: 1.2.2
|
||||
|
||||
/has-property-descriptors@1.0.2:
|
||||
resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
|
||||
dependencies:
|
||||
es-define-property: 1.0.0
|
||||
dev: true
|
||||
|
||||
/has-proto@1.0.1:
|
||||
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
|
||||
@ -25172,6 +25099,7 @@ 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==}
|
||||
@ -25293,7 +25221,7 @@ packages:
|
||||
engines: {node: '>=8.0.0'}
|
||||
dependencies:
|
||||
eventemitter3: 4.0.7
|
||||
follow-redirects: 1.15.2(debug@4.3.4)
|
||||
follow-redirects: 1.15.6(debug@4.3.4)
|
||||
requires-port: 1.0.0
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
@ -25654,7 +25582,7 @@ packages:
|
||||
resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
has: 1.0.3
|
||||
side-channel: 1.0.4
|
||||
dev: true
|
||||
@ -25748,15 +25676,15 @@ packages:
|
||||
resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
has-tostringtag: 1.0.0
|
||||
dev: true
|
||||
|
||||
/is-array-buffer@3.0.2:
|
||||
resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
get-intrinsic: 1.2.2
|
||||
call-bind: 1.0.7
|
||||
get-intrinsic: 1.2.4
|
||||
is-typed-array: 1.1.12
|
||||
dev: true
|
||||
|
||||
@ -25787,7 +25715,7 @@ packages:
|
||||
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
has-tostringtag: 1.0.0
|
||||
dev: true
|
||||
|
||||
@ -25872,7 +25800,7 @@ packages:
|
||||
/is-finalizationregistry@1.0.2:
|
||||
resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
dev: true
|
||||
|
||||
/is-fullwidth-code-point@3.0.0:
|
||||
@ -25967,7 +25895,7 @@ packages:
|
||||
resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
dev: true
|
||||
|
||||
@ -26069,7 +25997,7 @@ packages:
|
||||
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
has-tostringtag: 1.0.0
|
||||
dev: true
|
||||
|
||||
@ -26080,7 +26008,7 @@ packages:
|
||||
/is-shared-array-buffer@1.0.2:
|
||||
resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
dev: true
|
||||
|
||||
/is-ssh@1.4.0:
|
||||
@ -26136,7 +26064,7 @@ packages:
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
available-typed-arrays: 1.0.5
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
es-abstract: 1.22.3
|
||||
for-each: 0.3.3
|
||||
has-tostringtag: 1.0.0
|
||||
@ -26167,14 +26095,14 @@ packages:
|
||||
/is-weakref@1.0.2:
|
||||
resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
dev: true
|
||||
|
||||
/is-weakset@2.0.2:
|
||||
resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
get-intrinsic: 1.2.2
|
||||
call-bind: 1.0.7
|
||||
get-intrinsic: 1.2.4
|
||||
dev: true
|
||||
|
||||
/is-what@3.14.1:
|
||||
@ -26314,7 +26242,7 @@ packages:
|
||||
resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
|
||||
dependencies:
|
||||
define-properties: 1.2.1
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
has-symbols: 1.0.3
|
||||
reflect.getprototypeof: 1.0.4
|
||||
set-function-name: 2.0.1
|
||||
@ -27242,7 +27170,7 @@ packages:
|
||||
escape-html: 1.0.3
|
||||
fresh: 0.5.2
|
||||
http-assert: 1.5.0
|
||||
http-errors: 1.7.3
|
||||
http-errors: 1.8.1
|
||||
is-generator-function: 1.0.10
|
||||
koa-compose: 4.1.0
|
||||
koa-convert: 1.2.0
|
||||
@ -30078,18 +30006,14 @@ packages:
|
||||
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
/object-inspect@1.12.2:
|
||||
resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
|
||||
|
||||
/object-inspect@1.13.1:
|
||||
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
|
||||
dev: true
|
||||
|
||||
/object-is@1.1.5:
|
||||
resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
dev: true
|
||||
|
||||
@ -30102,7 +30026,7 @@ packages:
|
||||
resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
has-symbols: 1.0.3
|
||||
object-keys: 1.1.1
|
||||
@ -30130,7 +30054,7 @@ packages:
|
||||
resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
dev: true
|
||||
@ -30138,10 +30062,10 @@ packages:
|
||||
/object.groupby@1.0.1:
|
||||
resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
dev: true
|
||||
|
||||
/object.hasown@1.1.2:
|
||||
@ -30164,7 +30088,7 @@ packages:
|
||||
resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
dev: true
|
||||
@ -32456,13 +32380,6 @@ packages:
|
||||
engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
|
||||
dev: true
|
||||
|
||||
/qs@6.10.3:
|
||||
resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==}
|
||||
engines: {node: '>=0.6'}
|
||||
dependencies:
|
||||
side-channel: 1.0.4
|
||||
dev: true
|
||||
|
||||
/qs@6.10.4:
|
||||
resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==}
|
||||
engines: {node: '>=0.6'}
|
||||
@ -32536,6 +32453,7 @@ packages:
|
||||
http-errors: 2.0.0
|
||||
iconv-lite: 0.4.24
|
||||
unpipe: 1.0.0
|
||||
dev: true
|
||||
|
||||
/raw-body@2.5.2:
|
||||
resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
|
||||
@ -32545,7 +32463,6 @@ packages:
|
||||
http-errors: 2.0.0
|
||||
iconv-lite: 0.4.24
|
||||
unpipe: 1.0.0
|
||||
dev: true
|
||||
|
||||
/raw-loader@4.0.2(webpack@5.88.0):
|
||||
resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==}
|
||||
@ -33112,10 +33029,10 @@ packages:
|
||||
resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
get-intrinsic: 1.2.2
|
||||
get-intrinsic: 1.2.4
|
||||
globalthis: 1.0.3
|
||||
which-builtin-type: 1.1.3
|
||||
dev: true
|
||||
@ -33163,7 +33080,7 @@ packages:
|
||||
resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
set-function-name: 2.0.1
|
||||
dev: true
|
||||
@ -33666,8 +33583,8 @@ packages:
|
||||
resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==}
|
||||
engines: {node: '>=0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
get-intrinsic: 1.2.2
|
||||
call-bind: 1.0.7
|
||||
get-intrinsic: 1.2.4
|
||||
has-symbols: 1.0.3
|
||||
isarray: 2.0.5
|
||||
dev: true
|
||||
@ -33685,8 +33602,8 @@ packages:
|
||||
/safe-regex-test@1.0.0:
|
||||
resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
get-intrinsic: 1.2.2
|
||||
call-bind: 1.0.7
|
||||
get-intrinsic: 1.2.4
|
||||
is-regex: 1.1.4
|
||||
dev: true
|
||||
|
||||
@ -34021,16 +33938,6 @@ packages:
|
||||
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
|
||||
dev: true
|
||||
|
||||
/set-function-length@1.2.0:
|
||||
resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
define-data-property: 1.1.1
|
||||
function-bind: 1.1.2
|
||||
get-intrinsic: 1.2.2
|
||||
gopd: 1.0.1
|
||||
has-property-descriptors: 1.0.1
|
||||
|
||||
/set-function-length@1.2.2:
|
||||
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@ -34041,15 +33948,14 @@ packages:
|
||||
get-intrinsic: 1.2.4
|
||||
gopd: 1.0.1
|
||||
has-property-descriptors: 1.0.2
|
||||
dev: true
|
||||
|
||||
/set-function-name@2.0.1:
|
||||
resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
define-data-property: 1.1.1
|
||||
define-data-property: 1.1.4
|
||||
functions-have-names: 1.2.3
|
||||
has-property-descriptors: 1.0.1
|
||||
has-property-descriptors: 1.0.2
|
||||
dev: true
|
||||
|
||||
/setimmediate-napi@1.0.6:
|
||||
@ -34068,6 +33974,7 @@ packages:
|
||||
|
||||
/setprototypeof@1.1.1:
|
||||
resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==}
|
||||
dev: false
|
||||
|
||||
/setprototypeof@1.2.0:
|
||||
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
|
||||
@ -34146,9 +34053,9 @@ packages:
|
||||
/side-channel@1.0.4:
|
||||
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
get-intrinsic: 1.2.2
|
||||
object-inspect: 1.12.2
|
||||
call-bind: 1.0.7
|
||||
get-intrinsic: 1.2.4
|
||||
object-inspect: 1.13.1
|
||||
|
||||
/siginfo@2.0.0:
|
||||
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
|
||||
@ -34749,7 +34656,7 @@ packages:
|
||||
resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
dev: true
|
||||
@ -34757,7 +34664,7 @@ packages:
|
||||
/string.prototype.trimend@1.0.5:
|
||||
resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
dev: true
|
||||
@ -34765,7 +34672,7 @@ packages:
|
||||
/string.prototype.trimend@1.0.7:
|
||||
resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
dev: true
|
||||
@ -34773,7 +34680,7 @@ packages:
|
||||
/string.prototype.trimstart@1.0.5:
|
||||
resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
dev: true
|
||||
@ -34781,7 +34688,7 @@ packages:
|
||||
/string.prototype.trimstart@1.0.7:
|
||||
resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
define-properties: 1.2.1
|
||||
es-abstract: 1.22.3
|
||||
dev: true
|
||||
@ -35640,6 +35547,7 @@ 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==}
|
||||
@ -36087,8 +35995,8 @@ packages:
|
||||
resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
get-intrinsic: 1.2.2
|
||||
call-bind: 1.0.7
|
||||
get-intrinsic: 1.2.4
|
||||
is-typed-array: 1.1.12
|
||||
dev: true
|
||||
|
||||
@ -36096,7 +36004,7 @@ packages:
|
||||
resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
for-each: 0.3.3
|
||||
has-proto: 1.0.1
|
||||
is-typed-array: 1.1.12
|
||||
@ -36107,7 +36015,7 @@ packages:
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
available-typed-arrays: 1.0.5
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
for-each: 0.3.3
|
||||
has-proto: 1.0.1
|
||||
is-typed-array: 1.1.12
|
||||
@ -36116,7 +36024,7 @@ packages:
|
||||
/typed-array-length@1.0.4:
|
||||
resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
for-each: 0.3.3
|
||||
is-typed-array: 1.1.12
|
||||
dev: true
|
||||
@ -36194,7 +36102,7 @@ packages:
|
||||
/unbox-primitive@1.0.2:
|
||||
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
|
||||
dependencies:
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
has-bigints: 1.0.2
|
||||
has-symbols: 1.0.3
|
||||
which-boxed-primitive: 1.0.2
|
||||
@ -37658,7 +37566,7 @@ packages:
|
||||
compression: 1.7.4
|
||||
connect-history-api-fallback: 2.0.0
|
||||
default-gateway: 6.0.3
|
||||
express: 4.18.2
|
||||
express: 4.19.2
|
||||
graceful-fs: 4.2.10
|
||||
html-entities: 2.3.3
|
||||
http-proxy-middleware: 2.0.6(@types/express@4.17.15)
|
||||
@ -38073,7 +37981,7 @@ packages:
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
available-typed-arrays: 1.0.5
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
for-each: 0.3.3
|
||||
gopd: 1.0.1
|
||||
has-tostringtag: 1.0.0
|
||||
@ -38084,7 +37992,7 @@ packages:
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
available-typed-arrays: 1.0.5
|
||||
call-bind: 1.0.5
|
||||
call-bind: 1.0.7
|
||||
es-abstract: 1.22.3
|
||||
for-each: 0.3.3
|
||||
has-tostringtag: 1.0.0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user