About Page
server request count: { global.requestCount++ }
diff --git a/examples/with-rsc/src/pages/index.module.css b/examples/with-rsc/src/pages/index.module.css
index d11aa6a0b6..67e8c355ea 100644
--- a/examples/with-rsc/src/pages/index.module.css
+++ b/examples/with-rsc/src/pages/index.module.css
@@ -27,19 +27,4 @@
flex-direction: column;
margin: 20px 0 10px;
font-size: 0.9rem;
-}
-
-.link {
- font-size: 1.2rem;
- color: var(--primary);
-}
-
-.button {
- outline: none;
- border: none;
- border-radius: 8px;
- padding: 10px 35px;
- background: var(--primary);
- box-shadow: 0 5px 10px 0 #ddd;
- font-size: calc(10px + 2vmin);
-}
+}
\ No newline at end of file
diff --git a/packages/ice/src/bundler/webpack/getWebpackConfig.ts b/packages/ice/src/bundler/webpack/getWebpackConfig.ts
index c0e7843198..b256536fe4 100644
--- a/packages/ice/src/bundler/webpack/getWebpackConfig.ts
+++ b/packages/ice/src/bundler/webpack/getWebpackConfig.ts
@@ -1,8 +1,11 @@
+import * as path from 'path';
+import { fileURLToPath } from 'url';
import webpack from '@ice/bundles/compiled/webpack/index.js';
import lodash from '@ice/bundles/compiled/lodash/index.js';
import { getWebpackConfig as getDefaultWebpackConfig } from '@ice/webpack-config';
import type { Configuration } from 'webpack';
import { FlightManifestPlugin } from '../../webpack/FlightManifestPlugin.js';
+import { FlightClientEntryPlugin } from '../../webpack/FlightClientEntryPlugin.js';
import { getExpandedEnvs } from '../../utils/runtimeEnv.js';
import { getRouteExportConfig } from '../../service/config.js';
import { getFileHash } from '../../utils/hash.js';
@@ -14,6 +17,8 @@ import type ServerRunnerPlugin from '../../webpack/ServerRunnerPlugin.js';
import type ServerCompilerPlugin from '../../webpack/ServerCompilerPlugin.js';
import type { BundlerOptions, Context } from '../types.js';
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+
const { debounce } = lodash;
type GetWebpackConfig = (
@@ -118,6 +123,16 @@ const getWebpackConfig: GetWebpackConfig = async (context, options) => {
// Add spinner for webpack task.
webpackConfig.plugins.push(getSpinnerPlugin(spinner));
if (userConfig.rsc) {
+ webpackConfig.resolveLoader = {
+ alias: {
+ 'flight-client-entry-loader': path.join(__dirname, '../../webpack/FlightClientEntryLoader.js'),
+ },
+ };
+
+ webpackConfig.plugins.push(new FlightClientEntryPlugin({
+ rootDir,
+ getRoutesFile,
+ }));
webpackConfig.plugins.push(new FlightManifestPlugin());
}
diff --git a/packages/ice/src/plugins/web/index.ts b/packages/ice/src/plugins/web/index.ts
index e8256fdf8d..7cd7eff5ec 100644
--- a/packages/ice/src/plugins/web/index.ts
+++ b/packages/ice/src/plugins/web/index.ts
@@ -49,8 +49,10 @@ const plugin: Plugin = () => ({
...(userConfig.rsc ? {
alias: createRSCAliases(),
// TODO: temporary solution for rsc.
- entry: { main: [path.join(rootDir, RUNTIME_TMP_DIR, 'rsc.client.tsx')] },
- } : {}),
+ entry: {
+ main: [path.join(rootDir, RUNTIME_TMP_DIR, 'rsc.client.tsx')],
+ route: [path.join(rootDir, RUNTIME_TMP_DIR, 'routes.tsx')],
+ } } : {}),
});
onHook('after.start.compile', async ({ isSuccessful, isFirstCompile, urls, devUrlInfo }) => {
diff --git a/packages/ice/src/webpack/FlightClientEntryLoader.ts b/packages/ice/src/webpack/FlightClientEntryLoader.ts
new file mode 100644
index 0000000000..748c947526
--- /dev/null
+++ b/packages/ice/src/webpack/FlightClientEntryLoader.ts
@@ -0,0 +1,24 @@
+export type ClientComponentImports = string[];
+export type CssImports = Record
;
+
+export type FlightClientEntryLoaderOptions = {
+ modules: ClientComponentImports;
+};
+
+export default function transformSource() {
+ let { modules }: FlightClientEntryLoaderOptions = this.getOptions();
+
+ if (!Array.isArray(modules)) {
+ modules = modules ? [modules] : [];
+ }
+
+ const requests = modules as string[];
+ const code = requests
+ .map(
+ (request) =>
+ `import(/* webpackMode: "eager" */ ${JSON.stringify(request)})`,
+ )
+ .join(';\n');
+
+ return code;
+}
diff --git a/packages/ice/src/webpack/FlightClientEntryPlugin.ts b/packages/ice/src/webpack/FlightClientEntryPlugin.ts
new file mode 100644
index 0000000000..32900200e3
--- /dev/null
+++ b/packages/ice/src/webpack/FlightClientEntryPlugin.ts
@@ -0,0 +1,343 @@
+import { join, relative } from 'path';
+import { stringify } from 'querystring';
+import { asyncLib, acorn } from '@ice/bundles';
+import webpack from '@ice/bundles/compiled/webpack/index.js';
+import NullDependency from '@ice/bundles/compiled/webpack/NullDependency.js';
+import ModuleDependency from '@ice/bundles/compiled/webpack/ModuleDependency.js';
+import type { Compiler, Compilation } from 'webpack';
+import { createComponentName } from '@ice/route-manifest';
+import formatPath from '../utils/formatPath.js';
+
+const PLUGIN_NAME = 'FlightClientEntryPlugin';
+
+interface ClientReferenceSearchPath {
+ directory: string;
+ recursive?: boolean;
+ include: RegExp;
+ exclude?: RegExp;
+}
+
+interface Options {
+ rootDir: string;
+ clientReferences?: ClientReferenceSearchPath[];
+ getRoutesFile: () => string[];
+}
+
+class ClientReferenceDependency extends ModuleDependency {
+ userRequest: string;
+ request: string;
+
+ constructor(request: string) {
+ super(request);
+ this.request = request;
+ }
+ get type(): string {
+ return 'client-reference';
+ }
+}
+
+export class FlightClientEntryPlugin {
+ clientReferences: ClientReferenceSearchPath[];
+ clientFiles = new Set();
+ pageDir: string;
+ rootDir: string;
+ getRoutesFile: () => string[];
+
+ constructor(options: Options) {
+ this.rootDir = options.rootDir;
+ this.pageDir = join(options.rootDir, 'src', 'pages');
+
+ this.getRoutesFile = options.getRoutesFile;
+
+ if (options.clientReferences) {
+ this.clientReferences = options.clientReferences;
+ } else {
+ this.clientReferences = [
+ {
+ directory: '.',
+ recursive: true,
+ include: /\.(js|ts|jsx|tsx)$/,
+ exclude: /types.ts|.d.ts|node_modules/,
+ },
+ ];
+ }
+ }
+
+ apply(compiler: Compiler) {
+ const _this = this;
+
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation, { normalModuleFactory }) => {
+ // @ts-expect-error TODO: add types for ModuleDependency.
+ compilation.dependencyFactories.set(ClientReferenceDependency, normalModuleFactory);
+ // @ts-expect-error TODO: add types for ModuleDependency.
+ compilation.dependencyTemplates.set(ClientReferenceDependency, new NullDependency.Template());
+ });
+
+ compiler.hooks.beforeCompile.tapAsync(PLUGIN_NAME, ({ contextModuleFactory }, callback) => {
+ const contextResolver = compiler.resolverFactory.get('context', {});
+ const normalResolver = compiler.resolverFactory.get('normal');
+
+ _this.resolveClientFiles(
+ compiler.context,
+ contextResolver,
+ normalResolver,
+ compiler.inputFileSystem,
+ contextModuleFactory,
+ (err, resolvedClientRefs) => {
+ if (err) {
+ callback(err);
+ return;
+ }
+ resolvedClientRefs.forEach(dep => {
+ _this.clientFiles.add(dep.request);
+ });
+
+ callback();
+ },
+ );
+ });
+
+ compiler.hooks.finishMake.tapPromise(PLUGIN_NAME, (compilation) =>
+ _this.createClientEntries(compiler, compilation),
+ );
+
+ compiler.hooks.make.tap(PLUGIN_NAME, (compilation) => {
+ compilation.hooks.processAssets.tap({
+ name: PLUGIN_NAME,
+ stage: webpack.Compilation.PROCESS_ASSETS_STAGE_PRE_PROCESS,
+ }, () => {
+ compilation.chunks.forEach((chunk) => {
+ if (chunk.name === 'route' || chunk.runtime === 'route') {
+ chunk.files.forEach((file) => {
+ delete compilation.assets[file];
+ });
+ }
+ });
+ });
+ });
+ }
+
+ async createClientEntries(compiler: Compiler, compilation: Compilation) {
+ const routes = this.getRoutesFile().map(file => join(this.rootDir, file));
+ const addClientEntryList = [];
+
+ for (const [name, entry] of compilation.entries.entries()) {
+ if (name === 'main') {
+ continue;
+ }
+
+ const entryDependency = entry.dependencies?.[0];
+ if (!entryDependency) {
+ continue;
+ }
+
+ const entryModule = compilation.moduleGraph.getResolvedModule(entryDependency);
+ for (const connection of compilation.moduleGraph.getOutgoingConnections(entryModule)) {
+ // @ts-ignore
+ const entryRequest = connection.resolvedModule?.resource;
+
+ if (routes.indexOf(entryRequest) === -1) continue;
+
+ const { clientComponentImports, CSSImports } = this.collectComponentInfoFromDependency({
+ compilation,
+ resolvedModule: connection.resolvedModule,
+ });
+
+ if (clientComponentImports.length || CSSImports.length) {
+ const injected = this.injectClientEntry({
+ compiler,
+ compilation,
+ bundlePath: entryRequest,
+ clientImports: [
+ ...clientComponentImports,
+ ...CSSImports,
+ ],
+ });
+
+ addClientEntryList.push(injected);
+ }
+ }
+ }
+
+ await Promise.all(addClientEntryList);
+ }
+
+ injectClientEntry({ compiler, compilation, bundlePath, clientImports }) {
+ const clientLoader = `flight-client-entry-loader?${stringify({
+ modules: clientImports,
+ })}!`;
+
+ const componentName = createComponentName(formatPath(relative(this.pageDir, bundlePath)));
+ const name = `rsc_${componentName}`;
+ const clientComponentEntryDep = webpack.EntryPlugin.createDependency(clientLoader, {
+ name,
+ });
+
+ return new Promise((resolve, reject) => {
+ compilation.addEntry(compiler.context, clientComponentEntryDep, { name, dependOn: ['main'] }, (err) => {
+ if (err) {
+ reject(err);
+ }
+
+ resolve();
+ });
+ });
+ }
+
+ collectComponentInfoFromDependency({ compilation, resolvedModule }) {
+ // Keep track of checked modules to avoid infinite loops with recursive imports.
+ const visited = new Set();
+ // Info to collect.
+ const clientComponentImports = [];
+ const CSSImports = [];
+
+ const filterClientComponents = (mod) => {
+ if (!mod) return;
+
+ const modRequest: string | undefined = mod.resourceResolveData?.path + mod.resourceResolveData?.query;
+
+ if (!modRequest || visited.has(modRequest)) return;
+ visited.add(modRequest);
+
+ const isCSS = isCSSMod(mod);
+
+ if (isCSS) {
+ CSSImports.push(modRequest);
+ }
+
+ if (this.isClientComponentEntryModule(mod)) {
+ clientComponentImports.push(modRequest);
+ return;
+ }
+
+ compilation.moduleGraph.getOutgoingConnections(mod).forEach((connection) => {
+ filterClientComponents(connection.resolvedModule);
+ });
+ };
+
+ // Traverse the module graph to find all client components.
+ filterClientComponents(resolvedModule);
+
+ return {
+ clientComponentImports,
+ CSSImports,
+ };
+ }
+
+ isClientComponentEntryModule(mod) {
+ if (this.clientFiles.has(mod.resource)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ resolveClientFiles(
+ context: string,
+ contenxtResolver: ReturnType,
+ normalResolver: ReturnType,
+ fs: Compilation['inputFileSystem'],
+ contextModuleFactory: Compilation['params']['contextModuleFactory'],
+ callback: (err: Error | null, files?: ClientReferenceDependency[]) => void,
+ ) {
+ function hasUseClientDirective(source: string): boolean {
+ if (source.indexOf('use client') === -1) {
+ return false;
+ }
+ let body;
+ try {
+ // TODO: check client directive by comment injected by swc plugin.
+ body = acorn.parse(source, {
+ ecmaVersion: '2024',
+ sourceType: 'module',
+ }).body;
+ } catch (x) {
+ return false;
+ }
+ for (let i = 0; i < body.length; i++) {
+ const node = body[i];
+ if (node.type !== 'ExpressionStatement' || !node.directive) {
+ break;
+ }
+ if (node.directive === 'use client') {
+ return true;
+ }
+ }
+ return false;
+ }
+ asyncLib.map(this.clientReferences, (
+ clientReference: ClientReferenceSearchPath,
+ cb: (err: null | Error, result?: ClientReferenceDependency[]) => void,
+ ) => {
+ contenxtResolver.resolve({}, context, clientReference.directory, {}, (err, resolvedDirectory) => {
+ if (err) return cb(err);
+ const options = {
+ resource: resolvedDirectory,
+ resourceQuery: '',
+ recursive:
+ clientReference.recursive === undefined
+ ? true
+ : clientReference.recursive,
+ regExp: clientReference.include,
+ include: undefined,
+ exclude: clientReference.exclude,
+ };
+ // @ts-expect-error TODO: add types for resolveDependencies options.
+ contextModuleFactory.resolveDependencies(fs, options, (err, dependencies) => {
+ if (err) return cb(err);
+ const clientRefDeps = dependencies.map(dep => {
+ // Use userRequest instead of request. request always end with undefined which is wrong.
+ const request = join(resolvedDirectory as string, dep.userRequest);
+ const clientRefDep = new ClientReferenceDependency(request);
+ clientRefDep.userRequest = dep.userRequest;
+ return clientRefDep;
+ });
+ asyncLib.filter(
+ clientRefDeps,
+ (dep: ClientReferenceDependency, filterCb: (err: null | Error, truthValue: boolean) => void,
+ ) => {
+ normalResolver.resolve(
+ {},
+ context,
+ dep.request,
+ {},
+ (err: null | Error, resolvedPath: any) => {
+ if (err || typeof resolvedPath !== 'string') {
+ return filterCb(null, false);
+ }
+
+ fs.readFile(
+ resolvedPath,
+ 'utf-8',
+ // @ts-expect-error
+ (err: null | Error, content: string) => {
+ if (err || typeof content !== 'string') {
+ return filterCb(null, false);
+ }
+ const useClient = hasUseClientDirective(content);
+ filterCb(null, useClient);
+ },
+ );
+ },
+ );
+ }, cb);
+ });
+ });
+ }, (
+ err: null | Error,
+ result: ClientReferenceDependency[],
+ ) => {
+ if (err) return callback(err);
+ const flat: ClientReferenceDependency[] = [];
+ for (let i = 0; i < result.length; i++) {
+ flat.push.apply(flat, result[i]);
+ }
+ callback(null, flat);
+ });
+ }
+}
+
+const regexCSS = /\.(css|scss|sass)(\?.*)?$/;
+function isCSSMod(mod) {
+ return mod.resource && regexCSS.test(mod.resource);
+}
\ No newline at end of file
diff --git a/packages/ice/src/webpack/FlightManifestPlugin.ts b/packages/ice/src/webpack/FlightManifestPlugin.ts
index 49cab9afea..f8bda22836 100644
--- a/packages/ice/src/webpack/FlightManifestPlugin.ts
+++ b/packages/ice/src/webpack/FlightManifestPlugin.ts
@@ -1,24 +1,11 @@
// Fork form https://github.com/facebook/react/blob/main/packages/react-server-dom-webpack/src/ReactFlightWebpackPlugin.js
// Add special handling for ice.js when enable RSC.
-import * as path from 'path';
-import { asyncLib, acorn } from '@ice/bundles';
-import ModuleDependency from '@ice/bundles/compiled/webpack/ModuleDependency.js';
-import NullDependency from '@ice/bundles/compiled/webpack/NullDependency.js';
import webpack from '@ice/bundles/compiled/webpack/index.js';
-import type { Compiler, Compilation } from 'webpack';
+import type { Compiler } from 'webpack';
const PLUGIN_NAME = 'FlightManifestPlugin';
-interface ClientReferenceSearchPath {
- directory: string;
- recursive?: boolean;
- include: RegExp;
- exclude?: RegExp;
-}
-
interface Options {
- clientReferences?: ClientReferenceSearchPath[];
- chunkName?: string;
clientManifestFilename?: string;
ssrManifestFilename?: string;
}
@@ -27,55 +14,23 @@ interface SSRExports {
[chunkName: string]: { specifier: string; name: string };
}
-class ClientReferenceDependency extends ModuleDependency {
- userRequest: string;
- request: string;
+interface ClientManifest {
+ [key: string]: {
+ chunks: (string | number)[];
+ id: string | number;
+ name: string;
+};
+}
- constructor(request: string) {
- super(request);
- this.request = request;
- }
- get type(): string {
- return 'client-reference';
- }
+interface SsrManifest {
+ [key: string]: SSRExports;
}
-// Webpack template utils of toPath.
-const PATH_NAME_NORMALIZE_REPLACE_REGEX = /[^a-zA-Z0-9_!§$()=\-^°]+/g;
-const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
-const toPath = (str: any) => {
- if (typeof str !== 'string') return '';
- return str
- .replace(PATH_NAME_NORMALIZE_REPLACE_REGEX, '-')
- .replace(MATCH_PADDED_HYPHENS_REPLACE_REGEX, '');
-};
export class FlightManifestPlugin {
- clientReferences: ClientReferenceSearchPath[];
- chunkName?: string;
clientManifestFilename?: string;
ssrManifestFilename?: string;
constructor(options: Options = {}) {
- if (options.clientReferences) {
- this.clientReferences = options.clientReferences;
- } else {
- this.clientReferences = [
- {
- directory: '.',
- recursive: true,
- include: /\.(js|ts|jsx|tsx)$/,
- exclude: /types.ts|.d.ts|node_modules/,
- },
- ];
- }
- if (typeof options.chunkName === 'string') {
- this.chunkName = options.chunkName;
- if (!/\[(index|request)\]/.test(this.chunkName)) {
- this.chunkName += '[index]';
- }
- } else {
- this.chunkName = 'client[index]';
- }
this.clientManifestFilename =
options.clientManifestFilename || 'react-client-manifest.json';
this.ssrManifestFilename =
@@ -84,107 +39,34 @@ export class FlightManifestPlugin {
apply(compiler: Compiler) {
const _this = this;
- let resolvedClientReferences: ClientReferenceDependency[];
- let clientFileNameFound = false;
-
- compiler.hooks.beforeCompile.tapAsync(PLUGIN_NAME, ({ contextModuleFactory }, callback) => {
- const contextResolver = compiler.resolverFactory.get('context', {});
- const normalResolver = compiler.resolverFactory.get('normal');
-
- _this.resolveClientFiles(
- compiler.context,
- contextResolver,
- normalResolver,
- compiler.inputFileSystem,
- contextModuleFactory,
- (err, resolvedClientRefs) => {
- if (err) {
- callback(err);
- return;
- }
- resolvedClientReferences = resolvedClientRefs;
- callback();
- },
- );
- });
-
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation, { normalModuleFactory }) => {
- // @ts-expect-error TODO: add types for ModuleDependency.
- compilation.dependencyFactories.set(ClientReferenceDependency, normalModuleFactory);
- // @ts-expect-error TODO: add types for ModuleDependency.
- compilation.dependencyTemplates.set(ClientReferenceDependency, new NullDependency.Template());
-
- const handler = (parser) => {
- parser.hooks.program.tap(PLUGIN_NAME, () => {
- const { module } = parser.state;
- if (!module.resource.includes('react-server-dom-webpack/client.browser')) {
- return;
- }
- clientFileNameFound = true;
- if (resolvedClientReferences) {
- if (resolvedClientReferences) {
- for (let i = 0; i < resolvedClientReferences.length; i++) {
- const dep = resolvedClientReferences[i];
-
- const chunkName = _this.chunkName
- .replace(/\[index\]/g, `${i}`)
- .replace(/\[request\]/g, toPath(dep.userRequest));
-
- const block = new webpack.AsyncDependenciesBlock(
- {
- name: chunkName,
- },
- null,
- dep.request,
- );
- // @ts-expect-error TODO: add types for ModuleDependency.
- block.addDependency(dep);
- module.addBlock(block);
- }
- }
- }
- });
- };
-
- normalModuleFactory.hooks.parser.for('javascript/auto').tap('HarmonyModulesPlugin', handler);
- normalModuleFactory.hooks.parser.for('javascript/esm').tap('HarmonyModulesPlugin', handler);
- normalModuleFactory.hooks.parser.for('javascript/dynamic').tap('HarmonyModulesPlugin', handler);
- });
compiler.hooks.make.tap(PLUGIN_NAME, (compilation) => {
compilation.hooks.processAssets.tap({
name: PLUGIN_NAME,
stage: webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT,
}, () => {
- if (clientFileNameFound === false) {
- compilation.warnings.push(
- // @ts-expect-error mismatch import path of webpack.
- new webpack.WebpackError(
- `Client runtime at 'react-server-dom-webpack/client' was not found. React Server Components module map file ${_this.clientManifestFilename} was not created.`,
- ),
- );
- return;
- }
-
- const resolveClientFiles = new Set((resolvedClientReferences || []).map((dep) => dep.request));
- const clientManifest: { [key: string]: {
- chunks: (string | number)[];
- id: string | number;
- name: string;
- };} = {};
- const ssrManifest: {
- [key: string]: SSRExports;
+ const clientManifestMapping: {
+ [key: string]: ClientManifest;
+ } = {};
+ const ssrManifestSetMapping: {
+ [key: string]: SsrManifest;
} = {};
compilation.chunkGroups.forEach((chunkGroup) => {
- const chunkIds = chunkGroup.chunks.map((chunk) => chunk.id);
+ const chunkGroupName = chunkGroup.name;
+
+ const clientManifest: ClientManifest = {};
+
+ const ssrManifest: SsrManifest = {};
+
+ let hasRecord = false;
+
const recordModule = (id: string | number, module: any) => {
- if (!resolveClientFiles.has(module.resource)) {
- return;
- }
// const modId = path.relative(compiler.context, module.resource);
const modId = module.resource;
if (modId !== undefined) {
+ hasRecord = true;
+
clientManifest[modId] = {
id,
chunks: chunkIds,
@@ -204,28 +86,62 @@ export class FlightManifestPlugin {
}
};
+ const chunkIds = chunkGroup.chunks.map((chunk) => chunk.id);
chunkGroup.chunks.forEach((chunk) => {
const chunkModules = compilation.chunkGraph.getChunkModulesIterable(chunk);
[...chunkModules].forEach((module) => {
- const moduleId = compilation.chunkGraph.getModuleId(module);
- recordModule(moduleId, module);
- // If this is a concatenation, register each child to the parent ID.
- // @ts-expect-error
- if (module.modules) {
- // @ts-expect-error
- module.modules.forEach(concatenatedMod => {
- recordModule(moduleId, concatenatedMod);
- });
+ const { request } = module as any;
+
+ if (
+ !request ||
+ !request.includes('FlightClientEntryLoader.js')
+ ) {
+ return;
+ }
+
+ const connections = compilation.moduleGraph.getOutgoingConnections(module);
+
+ for (const connection of connections) {
+ const { dependency } = connection;
+ if (!dependency) continue;
+
+ const clientEntryMod = compilation.moduleGraph.getResolvedModule(
+ dependency,
+ ) as any;
+ const modId = compilation.chunkGraph.getModuleId(clientEntryMod) as
+ | string
+ | number
+ | null;
+
+ if (modId) {
+ recordModule(modId, clientEntryMod);
+ } else {
+ // If this is a concatenation, register each child to the parent ID.
+ if (connection.module?.constructor.name === 'ConcatenatedModule') {
+ const concatenatedMod = connection.module;
+ const concatenatedModId =
+ compilation.chunkGraph.getModuleId(concatenatedMod);
+ recordModule(concatenatedModId, clientEntryMod);
+ }
+ }
}
});
+
+ // One client component may bundle into serveral chunks, so we need to create manifest for each page.
+ if (hasRecord) {
+ clientManifestMapping[chunkGroupName] = clientManifest;
+ ssrManifestSetMapping[chunkGroupName] = ssrManifest;
+ }
});
});
- const clientOutput = JSON.stringify(clientManifest, null, 2);
+
+ const clientOutput = JSON.stringify(clientManifestMapping, null, 2);
compilation.emitAsset(
_this.clientManifestFilename,
new webpack.sources.RawSource(clientOutput, false),
);
- const ssrOutput = JSON.stringify(ssrManifest, null, 2);
+
+ const ssrOutput = JSON.stringify(ssrManifestSetMapping, null, 2);
compilation.emitAsset(
_this.ssrManifestFilename,
new webpack.sources.RawSource(ssrOutput, false),
@@ -233,108 +149,4 @@ export class FlightManifestPlugin {
});
});
}
-
- resolveClientFiles(
- context: string,
- contenxtResolver: ReturnType,
- normalResolver: ReturnType,
- fs: Compilation['inputFileSystem'],
- contextModuleFactory: Compilation['params']['contextModuleFactory'],
- callback: (err: Error | null, files?: ClientReferenceDependency[]) => void,
- ) {
- function hasUseClientDirective(source: string): boolean {
- if (source.indexOf('use client') === -1) {
- return false;
- }
- let body;
- try {
- // TODO: check client directive by comment injected by swc plugin.
- body = acorn.parse(source, {
- ecmaVersion: '2024',
- sourceType: 'module',
- }).body;
- } catch (x) {
- return false;
- }
- for (let i = 0; i < body.length; i++) {
- const node = body[i];
- if (node.type !== 'ExpressionStatement' || !node.directive) {
- break;
- }
- if (node.directive === 'use client') {
- return true;
- }
- }
- return false;
- }
- asyncLib.map(this.clientReferences, (
- clientReference: ClientReferenceSearchPath,
- cb: (err: null | Error, result?: ClientReferenceDependency[]) => void,
- ) => {
- contenxtResolver.resolve({}, context, clientReference.directory, {}, (err, resolvedDirectory) => {
- if (err) return cb(err);
- const options = {
- resource: resolvedDirectory,
- resourceQuery: '',
- recursive:
- clientReference.recursive === undefined
- ? true
- : clientReference.recursive,
- regExp: clientReference.include,
- include: undefined,
- exclude: clientReference.exclude,
- };
- // @ts-expect-error TODO: add types for resolveDependencies options.
- contextModuleFactory.resolveDependencies(fs, options, (err, dependencies) => {
- if (err) return cb(err);
- const clientRefDeps = dependencies.map(dep => {
- // Use userRequest instead of request. request always end with undefined which is wrong.
- const request = path.join(resolvedDirectory as string, dep.userRequest);
- const clientRefDep = new ClientReferenceDependency(request);
- clientRefDep.userRequest = dep.userRequest;
- return clientRefDep;
- });
- asyncLib.filter(
- clientRefDeps,
- (dep: ClientReferenceDependency, filterCb: (err: null | Error, truthValue: boolean) => void,
- ) => {
- normalResolver.resolve(
- {},
- context,
- dep.request,
- {},
- (err: null | Error, resolvedPath: any) => {
- if (err || typeof resolvedPath !== 'string') {
- return filterCb(null, false);
- }
-
- fs.readFile(
- resolvedPath,
- 'utf-8',
- // @ts-expect-error
- (err: null | Error, content: string) => {
- if (err || typeof content !== 'string') {
- return filterCb(null, false);
- }
- const useClient = hasUseClientDirective(content);
- filterCb(null, useClient);
- },
- );
- },
- );
- }, cb);
- });
- });
- }, (
- err: null | Error,
- result: ClientReferenceDependency[],
- ) => {
- if (err) return callback(err);
- const flat: ClientReferenceDependency[] = [];
- for (let i = 0; i < result.length; i++) {
- flat.push.apply(flat, result[i]);
- }
- callback(null, flat);
- });
- }
}
diff --git a/packages/route-manifest/src/index.ts b/packages/route-manifest/src/index.ts
index af00031e2c..8175fbe6a1 100644
--- a/packages/route-manifest/src/index.ts
+++ b/packages/route-manifest/src/index.ts
@@ -46,11 +46,14 @@ const routeModuleExts = [
// '.mdx',
];
+export {
+ createComponentName,
+};
+
export function isRouteModuleFile(filename: string): boolean {
return routeModuleExts.includes(path.extname(filename));
}
-
export function generateRouteManifest(
rootDir: string,
ignoreFiles: string[] = [],
diff --git a/packages/runtime/package.json b/packages/runtime/package.json
index 3083c73f21..2e38daec2e 100644
--- a/packages/runtime/package.json
+++ b/packages/runtime/package.json
@@ -44,7 +44,7 @@
"@types/react-dom": "^18.0.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "react-server-dom-webpack": "canary",
+ "react-server-dom-webpack": "18.3.0-canary-dd480ef92-20230822",
"regenerator-runtime": "^0.13.9",
"@remix-run/web-fetch": "^4.3.3"
},
diff --git a/packages/runtime/src/routesConfig.ts b/packages/runtime/src/routesConfig.ts
index e377ec2cee..4b2a435ccf 100644
--- a/packages/runtime/src/routesConfig.ts
+++ b/packages/runtime/src/routesConfig.ts
@@ -32,7 +32,7 @@ function getMergedValue(key: string, matches: RouteMatch[], loadersData: Loaders
let result;
for (let match of matches) {
const routeId = match.route.id;
- const data = loadersData[routeId]?.pageConfig;
+ const data = loadersData?.[routeId]?.pageConfig;
const value = data?.[key];
if (Array.isArray(value)) {
diff --git a/packages/runtime/src/runRSCClientApp.tsx b/packages/runtime/src/runRSCClientApp.tsx
index c07392a5cb..213b32eaee 100644
--- a/packages/runtime/src/runRSCClientApp.tsx
+++ b/packages/runtime/src/runRSCClientApp.tsx
@@ -61,5 +61,5 @@ export function useRefresh() {
}
function getReactTree(location) {
- return fetch(location + location.indexOf('?') ? '?rsc' : '&rsc');
+ return fetch(location + (location.indexOf('?') > -1 ? '&rsc' : '?rsc'));
}
\ No newline at end of file
diff --git a/packages/runtime/src/runRSCServerApp.tsx b/packages/runtime/src/runRSCServerApp.tsx
index 87e3263881..f39c8ae2ef 100644
--- a/packages/runtime/src/runRSCServerApp.tsx
+++ b/packages/runtime/src/runRSCServerApp.tsx
@@ -26,7 +26,7 @@ export async function runRSCServerApp(serverContext: ServerContext, renderOption
renderMode,
basename,
serverOnlyBasename,
- clientManifest,
+ clientManifest: clientManifestMapping,
assetsManifest,
} = renderOptions;
@@ -50,7 +50,7 @@ export async function runRSCServerApp(serverContext: ServerContext, renderOption
};
if (req.url?.indexOf('rsc') === -1) {
- return renderDocument(serverContext, renderOptions, appContext);
+ return renderDocument(serverContext, renderOptions, appContext, matches);
}
const routeModules = await loadRouteModules(matches.map(({ route: { id, lazy } }) => ({ id, lazy })));
@@ -61,6 +61,16 @@ export async function runRSCServerApp(serverContext: ServerContext, renderOption
);
+ // Merge client manifest for match route.
+ const clientManifest = {};
+ matches.forEach(match => {
+ const { componentName } = match.route;
+ const manifest = clientManifestMapping[`rsc_${componentName}`];
+ if (manifest) {
+ Object.assign(clientManifest, manifest);
+ }
+ });
+
const { pipe } = renderToPipeableStream(
element,
clientManifest,
@@ -83,11 +93,12 @@ function renderMatches(matches: RouteMatch[], routeModules: RouteModules) {
}, React.createElement(null));
}
-function renderDocument(requestContext, renderOptions, appContext) {
+function renderDocument(requestContext, renderOptions, appContext, matches) {
const { res } = requestContext;
const {
Document,
+ routePath,
} = renderOptions;
const documentContext = {
@@ -95,9 +106,9 @@ function renderDocument(requestContext, renderOptions, appContext) {
};
const htmlStr = ReactDOMServer.renderToString(
-
+
-
+
,
);
diff --git a/packages/webpack-config/src/webpackPlugins/AssetsManifestPlugin.ts b/packages/webpack-config/src/webpackPlugins/AssetsManifestPlugin.ts
index fe494cd1a9..e3e8ad98d2 100644
--- a/packages/webpack-config/src/webpackPlugins/AssetsManifestPlugin.ts
+++ b/packages/webpack-config/src/webpackPlugins/AssetsManifestPlugin.ts
@@ -9,13 +9,15 @@ interface Assets {
getFiles: () => string[];
}
-function filterAssets(assets: Assets): string[] {
+function filterAssets(compilation: Compilation, assets: Assets): string[] {
return (
assets
?.getFiles()
.filter((file: string) => {
+ const exists = compilation.assets[file];
// We don't want to include `.hot-update.js` files into the initial page
- return /(? file.replace(/\\/g, '/')) ?? []
);
@@ -43,19 +45,38 @@ export default class AssetsManifestPlugin {
assets[asset.sourceFilename] = asset.contenthash;
}
}
+
const entryFiles = [];
for (const entrypoint of entrypoints) {
const entryName = entrypoint.name;
- const mainFiles = filterAssets(entrypoint);
+
+ const entryChunk = entrypoint.getEntrypointChunk();
+
+ // Keep only main chunk as entry files.
+ if (entryChunk.runtime !== entryChunk.name) {
+ continue;
+ }
+
+ const entryFile = [...entryChunk.files].filter((file) => file.endsWith('.js'))?.[0];
+ // Temp files may have been deleted.
+ if (!compilation.assets[entryFile]) {
+ continue;
+ }
+
+ const mainFiles = filterAssets(compilation, entrypoint);
+ if (!mainFiles.length) {
+ continue;
+ }
+
+ entryFiles.push(entryFile);
entries[entryName] = mainFiles;
- const jsMainFiles = mainFiles.filter((file) => file.endsWith('.js'));
- entryFiles.push(jsMainFiles[0]);
- const chunks = entrypoint?.getChildren();
- chunks.forEach((chunk) => {
+
+ const childChunks = entrypoint?.getChildren();
+ childChunks.forEach((chunk) => {
// Dynamic import missing chunk name, but not output solid assets.
const chunkName = chunk.name;
if (chunkName) {
- pages[chunkName.replace(/^p_/, '')] = filterAssets(chunk);
+ pages[chunkName.replace(/^p_/, '').replace(/^rsc_/, '')] = filterAssets(compilation, chunk);
}
});
}
@@ -76,6 +97,7 @@ export default class AssetsManifestPlugin {
const output = JSON.stringify(manifest, null, 2);
// Emit asset manifest for server compile.
compilation.emitAsset(this.fileName, new webpack.sources.RawSource(output));
+
// Inject assets manifest to entry file.
entryFiles.forEach((entryFile) => {
compilation.assets[entryFile] = new webpack.sources.ConcatSource(
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 485b2b59b3..0eaf9f536e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1181,7 +1181,7 @@ importers:
'@ice/bundles': link:../bundles
'@ice/route-manifest': link:../route-manifest
'@ice/rspack-config': link:../rspack-config
- '@ice/runtime': link:../runtime
+ '@ice/runtime': 1.3.1_react@18.2.0
'@ice/shared-config': link:../shared-config
'@ice/webpack-config': link:../webpack-config
'@swc/helpers': 0.5.1
@@ -1287,7 +1287,7 @@ importers:
react: ^18.1.0
react-dom: ^18.1.0
dependencies:
- '@ice/runtime': link:../runtime
+ '@ice/runtime': 1.3.1_biqbaboplfbrettd7655fr4n2y
'@ice/shared': link:../shared
miniapp-history: 0.1.7
devDependencies:
@@ -1303,7 +1303,7 @@ importers:
dependencies:
'@ice/style-import': link:../style-import
devDependencies:
- '@ice/app': link:../ice
+ '@ice/app': 3.3.5
packages/plugin-auth:
specifiers:
@@ -1313,8 +1313,8 @@ importers:
'@types/react-dom': ^18.0.0
regenerator-runtime: ^0.13.9
devDependencies:
- '@ice/app': link:../ice
- '@ice/runtime': link:../runtime
+ '@ice/app': 3.3.5
+ '@ice/runtime': 1.3.1
'@types/react': 18.0.28
'@types/react-dom': 18.0.11
regenerator-runtime: 0.13.11
@@ -1328,8 +1328,8 @@ importers:
dependencies:
'@ice/cache-canvas': link:../cache-canvas
devDependencies:
- '@ice/app': link:../ice
- '@ice/runtime': link:../runtime
+ '@ice/app': 3.3.5_webpack@5.88.2
+ '@ice/runtime': 1.3.1
webpack: 5.88.2
packages/plugin-css-assets-local:
@@ -1341,7 +1341,7 @@ importers:
consola: 2.15.3
extract-css-assets-webpack-plugin: 0.2.10
devDependencies:
- '@ice/app': link:../ice
+ '@ice/app': 3.3.5
packages/plugin-fusion:
specifiers:
@@ -1350,7 +1350,7 @@ importers:
dependencies:
'@ice/style-import': link:../style-import
devDependencies:
- '@ice/app': link:../ice
+ '@ice/app': 3.3.5
packages/plugin-i18n:
specifiers:
@@ -1395,8 +1395,8 @@ importers:
'@ice/stark': 2.7.5
'@ice/stark-app': 1.5.0
devDependencies:
- '@ice/app': link:../ice
- '@ice/runtime': link:../runtime
+ '@ice/app': 3.3.5
+ '@ice/runtime': 1.3.1
'@types/react': 18.0.28
'@types/react-dom': 18.0.11
@@ -1423,7 +1423,7 @@ importers:
babel-plugin-transform-jsx-slot: 0.1.2
babel-runtime-jsx-plus: 0.1.5
devDependencies:
- '@ice/app': link:../ice
+ '@ice/app': 3.3.5
'@types/react': 18.0.28
'@types/react-dom': 18.0.11
@@ -1458,15 +1458,15 @@ importers:
regenerator-runtime: 0.11.1
sax: 1.2.4
devDependencies:
- '@ice/app': link:../ice
- '@ice/runtime': link:../runtime
+ '@ice/app': 3.3.5_webpack@5.88.2
+ '@ice/runtime': 1.3.1
webpack: 5.88.2
packages/plugin-moment-locales:
specifiers:
'@ice/app': ^3.3.2
devDependencies:
- '@ice/app': link:../ice
+ '@ice/app': 3.3.5
packages/plugin-pha:
specifiers:
@@ -1489,7 +1489,7 @@ importers:
humps: 2.0.1
lodash.clonedeep: 4.5.0
devDependencies:
- '@ice/app': link:../ice
+ '@ice/app': 3.3.5_ls5vlc7kphql6b6gtepk5p7cmu
build-scripts: 2.1.2-0
esbuild: 0.17.16
webpack: 5.88.2_esbuild@0.17.16
@@ -1522,7 +1522,7 @@ importers:
style-unit: 3.0.5
stylesheet-loader: 0.9.1
devDependencies:
- '@ice/app': link:../ice
+ '@ice/app': 3.3.5_webpack@5.88.2
'@types/lodash-es': 4.17.7
webpack: 5.88.2
@@ -1539,8 +1539,8 @@ importers:
ahooks: 3.7.5
axios: 0.27.2
devDependencies:
- '@ice/app': link:../ice
- '@ice/runtime': link:../runtime
+ '@ice/app': 3.3.5
+ '@ice/runtime': 1.3.1
'@types/react': 18.0.28
'@types/react-dom': 18.0.11
regenerator-runtime: 0.13.11
@@ -1638,7 +1638,7 @@ importers:
react: ^18.2.0
react-dom: ^18.2.0
react-router-dom: 6.14.2
- react-server-dom-webpack: canary
+ react-server-dom-webpack: 18.3.0-canary-dd480ef92-20230822
regenerator-runtime: ^0.13.9
semver: ^7.4.0
source-map: ^0.7.4
@@ -1660,7 +1660,7 @@ importers:
'@types/react-dom': 18.0.11
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
- react-server-dom-webpack: 18.3.0-canary-e61a60fac-20231011_biqbaboplfbrettd7655fr4n2y
+ react-server-dom-webpack: 18.3.0-canary-dd480ef92-20230822_biqbaboplfbrettd7655fr4n2y
regenerator-runtime: 0.13.11
packages/shared:
@@ -5487,174 +5487,774 @@ packages:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
dev: true
- /@ice/css-modules-hash-darwin-arm64/0.0.6:
- resolution: {integrity: sha512-5QWZl3+biY5U/kRhymH+6X/kAk3Imvkqu9QpV+LTDxhoXEkdhzZd2sCO5ZNfrsODFuHy78iKzh6gEweADPwYkQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
-
- /@ice/css-modules-hash-darwin-universal/0.0.6:
- resolution: {integrity: sha512-PLmDCFZHvpNysvMhUa363QWvgCMIwr6vYwEkHkC/AF9NZvl25r2R9mfdExHw8sZHu9fMHVINwWEBcMiYbZd/cg==}
- engines: {node: '>= 10'}
- os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
-
- /@ice/css-modules-hash-darwin-x64/0.0.6:
- resolution: {integrity: sha512-HOmh+Yiw6rH9VJD2XBN7sZmigo+jwi7qAD/J12pbxVrMJ//aIsv3BwpgFhfGO8eqKeyVqNXac3S/vC2hq8t8jw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
-
- /@ice/css-modules-hash-linux-x64-gnu/0.0.6:
- resolution: {integrity: sha512-PS7lTINETFqzbU0nbgLgxXJOp+BU51VvNeNEF1h6Xz6soR23yqFht6d8xuNC1auBnPHZM+RDiQYzwi9MCBTvgA==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: false
- optional: true
-
- /@ice/css-modules-hash-linux-x64-musl/0.0.6:
- resolution: {integrity: sha512-UiDg8KpoDGmQrBt9z5lqjr+OAG2S2xQi00Unt2yali1dvhS1tpcN16isiBA2yO3JOy2b0Y0VtlmpJKxpMDsFcg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: false
- optional: true
-
- /@ice/css-modules-hash-win32-arm64-msvc/0.0.6:
- resolution: {integrity: sha512-7rF1gX9QyhhGUo4JKZUQ6DSJs/xJiJlrKC9D91dkTHs81e0G6IQLv9EnIaX2OPF3/SPnqp7CAGxr7TOtDYsyAw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: false
- optional: true
-
- /@ice/css-modules-hash-win32-x64-msvc/0.0.6:
- resolution: {integrity: sha512-on3tYfhvBW6XQ6tkE0KKZvFK0JB/iwBrvUiRo/Di3ceJPPwD619PJNNQnn78kqcrZIVdQZ41HMdyuEnz8UHVpQ==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: false
- optional: true
-
- /@ice/css-modules-hash/0.0.6:
- resolution: {integrity: sha512-UbYq2Ldw+hamc9HoIfKTZORmmYCaGnP6f361XdB/7PQZHZ5hAak6TePdcVQekLHGEg/+zIccN33mflJqucC1Aw==}
- engines: {node: '>= 10'}
- optionalDependencies:
- '@ice/css-modules-hash-darwin-arm64': 0.0.6
- '@ice/css-modules-hash-darwin-universal': 0.0.6
- '@ice/css-modules-hash-darwin-x64': 0.0.6
- '@ice/css-modules-hash-linux-x64-gnu': 0.0.6
- '@ice/css-modules-hash-linux-x64-musl': 0.0.6
- '@ice/css-modules-hash-win32-arm64-msvc': 0.0.6
- '@ice/css-modules-hash-win32-x64-msvc': 0.0.6
- dev: false
-
- /@ice/pkg/1.5.5:
- resolution: {integrity: sha512-0BIfv6Uzs2wpHv7RmFwz+kWfoJLfx0yJrQyh3yqy+F6TZWxTwrqQmX+5yRmgqK5f7lGGhYfMMVNWjRSCw5MHPQ==}
- engines: {node: '>=16.14.0'}
+ /@ice/app/3.3.5:
+ resolution: {integrity: sha512-loVbr/CqH5suvWchw/mvbLS/yfO/qsxOx/KvcmdQYA8Unr0J1fYHrBFlYbKmpJe0aEDnSfSzDKebJsbyDTKGJQ==}
+ engines: {node: '>=14.19.0', npm: '>=3.0.0'}
hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ react: '>=18.0.0'
+ react-dom: '>=18.0.0'
dependencies:
- '@ampproject/remapping': 2.2.0
- '@babel/core': 7.21.0
- '@babel/parser': 7.21.2
- '@babel/preset-react': 7.18.6_@babel+core@7.21.0
- '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0
- '@rollup/plugin-commonjs': 21.1.0_rollup@2.79.1
- '@rollup/plugin-image': 3.0.2_rollup@2.79.1
- '@rollup/plugin-json': 4.1.0_rollup@2.79.1
- '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1
- '@rollup/plugin-replace': 5.0.2_rollup@2.79.1
- '@rollup/pluginutils': 4.2.1
- '@swc/core': 1.3.32
- acorn: 8.8.2
- autoprefixer: 10.4.13_postcss@8.4.31
- build-scripts: 2.1.0
- cac: 6.7.14
- chokidar: 3.5.3
+ '@ice/bundles': 0.1.16_oikrtulvecolg3hvcan4tch6ku
+ '@ice/route-manifest': 1.2.2
+ '@ice/rspack-config': 1.0.5_oikrtulvecolg3hvcan4tch6ku
+ '@ice/runtime': 1.3.1
+ '@ice/shared-config': 1.1.0_oikrtulvecolg3hvcan4tch6ku
+ '@ice/webpack-config': 1.1.4_oikrtulvecolg3hvcan4tch6ku
+ '@swc/helpers': 0.5.1
+ '@types/express': 4.17.17
+ address: 1.2.2
+ build-scripts: 2.1.2-0
+ chalk: 4.1.2
+ commander: 9.5.0
consola: 2.15.3
- debug: 4.3.4
- deepmerge: 4.3.0
- escape-string-regexp: 5.0.0
+ cross-spawn: 7.0.3
+ detect-port: 1.5.1
+ dotenv: 16.0.3
+ dotenv-expand: 8.0.3
+ ejs: 3.1.8
+ fast-glob: 3.3.0
+ find-up: 5.0.0
fs-extra: 10.1.0
- globby: 11.1.0
- gzip-size: 7.0.0
- lodash.merge: 4.6.2
- magic-string: 0.25.9
- picocolors: 1.0.0
- postcss: 8.4.31
- rollup: 2.79.1
- rollup-plugin-styles: 4.0.0_rollup@2.79.1
- rollup-plugin-visualizer: 5.9.0_rollup@2.79.1
- tsc-alias: 1.8.5
- typescript: 4.9.5
+ micromatch: 4.0.5
+ mlly: 1.1.1
+ mrmime: 1.0.1
+ open: 8.4.2
+ path-to-regexp: 6.2.1
+ regenerator-runtime: 0.13.11
+ resolve.exports: 1.1.1
+ semver: 7.4.0
+ source-map-support: 0.5.21
+ temp: 0.9.4
+ yargs-parser: 21.1.1
transitivePeerDependencies:
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
- supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
dev: true
- /@ice/sandbox/1.1.4:
- resolution: {integrity: sha512-MEVF0Ze3McKDutnFiUAhUoc+WwOFxITVBgSSHmbGpKtWbXJX9kUVlx3VsEVJvdqU3O1kiBNx6zE1sFMjKPRTIQ==}
- dev: false
-
- /@ice/stark-app/1.5.0:
- resolution: {integrity: sha512-9fuCri48eZj6TnfPkCju4vVLhGurz+mt6lFx4JQFHhnRBQ5MuiBqRZg5F/3vdnJ7dAYQJlCXmHlQtBHok82z+g==}
- dev: false
-
- /@ice/stark/2.7.5:
- resolution: {integrity: sha512-HyV3/6PtTfNiKBkncztunpjsWMBw/SyQ24TvrYLnpkuSmrlZ9t0/jkJWuaM6nGpAufyZ62YfQ2Tn032So9OeIg==}
+ /@ice/app/3.3.5_ls5vlc7kphql6b6gtepk5p7cmu:
+ resolution: {integrity: sha512-loVbr/CqH5suvWchw/mvbLS/yfO/qsxOx/KvcmdQYA8Unr0J1fYHrBFlYbKmpJe0aEDnSfSzDKebJsbyDTKGJQ==}
+ engines: {node: '>=14.19.0', npm: '>=3.0.0'}
+ hasBin: true
+ requiresBuild: true
peerDependencies:
- react: '>=15.0.0'
+ react: '>=18.0.0'
+ react-dom: '>=18.0.0'
dependencies:
- '@ice/sandbox': 1.1.4
- lodash.isempty: 4.4.0
- lodash.isequal: 4.5.0
- path-to-regexp: 1.8.0
- url-parse: 1.5.10
- dev: false
+ '@ice/bundles': 0.1.16_4mgkpocji6i4c7t543qhprlmp4
+ '@ice/route-manifest': 1.2.2
+ '@ice/rspack-config': 1.0.5_4mgkpocji6i4c7t543qhprlmp4
+ '@ice/runtime': 1.3.1
+ '@ice/shared-config': 1.1.0_4mgkpocji6i4c7t543qhprlmp4
+ '@ice/webpack-config': 1.1.4_4mgkpocji6i4c7t543qhprlmp4
+ '@swc/helpers': 0.5.1
+ '@types/express': 4.17.17
+ address: 1.2.2
+ build-scripts: 2.1.2-0
+ chalk: 4.1.2
+ commander: 9.5.0
+ consola: 2.15.3
+ cross-spawn: 7.0.3
+ detect-port: 1.5.1
+ dotenv: 16.0.3
+ dotenv-expand: 8.0.3
+ ejs: 3.1.8
+ fast-glob: 3.3.0
+ find-up: 5.0.0
+ fs-extra: 10.1.0
+ micromatch: 4.0.5
+ mlly: 1.1.1
+ mrmime: 1.0.1
+ open: 8.4.2
+ path-to-regexp: 6.2.1
+ regenerator-runtime: 0.13.11
+ resolve.exports: 1.1.1
+ semver: 7.4.0
+ source-map-support: 0.5.21
+ temp: 0.9.4
+ yargs-parser: 21.1.1
+ transitivePeerDependencies:
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
- /@ice/store/2.0.3_biqbaboplfbrettd7655fr4n2y:
- resolution: {integrity: sha512-U1YcY380bejqc3+WtkEqIwE6HnjBjSKd4IWFyq8gakPeAvA6fEJ58Qx9hzscYxlogWbiCb0Wm9kqkcDU+njx7g==}
+ /@ice/app/3.3.5_webpack@5.88.2:
+ resolution: {integrity: sha512-loVbr/CqH5suvWchw/mvbLS/yfO/qsxOx/KvcmdQYA8Unr0J1fYHrBFlYbKmpJe0aEDnSfSzDKebJsbyDTKGJQ==}
+ engines: {node: '>=14.19.0', npm: '>=3.0.0'}
+ hasBin: true
+ requiresBuild: true
peerDependencies:
- react: ^16.8 || ^17 || ^18
+ react: '>=18.0.0'
+ react-dom: '>=18.0.0'
dependencies:
- immer: 9.0.19
- lodash.isfunction: 3.0.9
- react: 18.2.0
- react-redux: 7.2.9_biqbaboplfbrettd7655fr4n2y
- redux: 4.2.1
- redux-thunk: 2.4.2_redux@4.2.1
- transitivePeerDependencies:
- - react-dom
- - react-native
- dev: false
-
- /@ice/swc-plugin-keep-export/0.2.0:
- resolution: {integrity: sha512-N3tg4BOV78jZSR/9CypJf5YzHxrNi40dNlUAwFjf7nr9pzMvVlo9bZM0I/A9l6J9vMff/5mgtkW5+JiMYdyjig==}
- dev: false
-
- /@ice/swc-plugin-node-transform/0.2.0:
- resolution: {integrity: sha512-06NtOUGVAUKP1eQXGMkaIZpNl9d5RK6SB6xQJsMY/DIso8WnwymyN7hmoFXPzX0eFkhmQEc7jzJ7NDBXaXRqWQ==}
- dev: false
-
- /@ice/swc-plugin-react-server-component/0.1.1:
- resolution: {integrity: sha512-3FdXOZ7HTBHY+DKQXDpzqV10ngfl0ifffc7HFV0P4YPLfvEJjT0RxIZJW1QwRZ3QeB2ph4zvXfdBG1lYTzT58Q==}
- dev: false
+ '@ice/bundles': 0.1.16_nybtr22olkopkms5hv7r5oud4i
+ '@ice/route-manifest': 1.2.2
+ '@ice/rspack-config': 1.0.5_nybtr22olkopkms5hv7r5oud4i
+ '@ice/runtime': 1.3.1
+ '@ice/shared-config': 1.1.0_nybtr22olkopkms5hv7r5oud4i
+ '@ice/webpack-config': 1.1.4_nybtr22olkopkms5hv7r5oud4i
+ '@swc/helpers': 0.5.1
+ '@types/express': 4.17.17
+ address: 1.2.2
+ build-scripts: 2.1.2-0
+ chalk: 4.1.2
+ commander: 9.5.0
+ consola: 2.15.3
+ cross-spawn: 7.0.3
+ detect-port: 1.5.1
+ dotenv: 16.0.3
+ dotenv-expand: 8.0.3
+ ejs: 3.1.8
+ fast-glob: 3.3.0
+ find-up: 5.0.0
+ fs-extra: 10.1.0
+ micromatch: 4.0.5
+ mlly: 1.1.1
+ mrmime: 1.0.1
+ open: 8.4.2
+ path-to-regexp: 6.2.1
+ regenerator-runtime: 0.13.11
+ resolve.exports: 1.1.1
+ semver: 7.4.0
+ source-map-support: 0.5.21
+ temp: 0.9.4
+ yargs-parser: 21.1.1
+ transitivePeerDependencies:
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/bundles/0.1.16_4mgkpocji6i4c7t543qhprlmp4:
+ resolution: {integrity: sha512-1wpmStho4gUplggwERopzmIz2NkEaRwnzta7ZpoNBzCM/KaTI9FvbTGuty087kQq81uu4mFfozYS+Bw6kk6bVA==}
+ dependencies:
+ '@ice/css-modules-hash': 0.0.6
+ '@ice/swc-plugin-keep-export': 0.2.0
+ '@ice/swc-plugin-node-transform': 0.2.0
+ '@ice/swc-plugin-remove-export': 0.2.0
+ '@rspack/core': 0.3.0_ls5vlc7kphql6b6gtepk5p7cmu
+ '@rspack/dev-server': 0.3.0_xwlm2ukmbpiz7ykxwfclqtcmji
+ '@swc/core': 1.3.80_@swc+helpers@0.5.1
+ ansi-html-community: 0.0.8
+ caniuse-lite: 1.0.30001462
+ chokidar: 3.5.3
+ core-js: 3.32.0
+ core-js-pure: 3.29.0
+ error-stack-parser: 2.1.4
+ esbuild: 0.17.16
+ events: 3.3.0
+ html-entities: 2.3.3
+ jest-worker: 27.5.1
+ less: 4.1.2
+ postcss: 8.4.12
+ react-refresh: 0.14.0
+ sass: 1.50.0
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/bundles/0.1.16_nybtr22olkopkms5hv7r5oud4i:
+ resolution: {integrity: sha512-1wpmStho4gUplggwERopzmIz2NkEaRwnzta7ZpoNBzCM/KaTI9FvbTGuty087kQq81uu4mFfozYS+Bw6kk6bVA==}
+ dependencies:
+ '@ice/css-modules-hash': 0.0.6
+ '@ice/swc-plugin-keep-export': 0.2.0
+ '@ice/swc-plugin-node-transform': 0.2.0
+ '@ice/swc-plugin-remove-export': 0.2.0
+ '@rspack/core': 0.3.0_webpack@5.88.2
+ '@rspack/dev-server': 0.3.0_xwlm2ukmbpiz7ykxwfclqtcmji
+ '@swc/core': 1.3.80_@swc+helpers@0.5.1
+ ansi-html-community: 0.0.8
+ caniuse-lite: 1.0.30001462
+ chokidar: 3.5.3
+ core-js: 3.32.0
+ core-js-pure: 3.29.0
+ error-stack-parser: 2.1.4
+ esbuild: 0.17.16
+ events: 3.3.0
+ html-entities: 2.3.3
+ jest-worker: 27.5.1
+ less: 4.1.2
+ postcss: 8.4.12
+ react-refresh: 0.14.0
+ sass: 1.50.0
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/bundles/0.1.16_oikrtulvecolg3hvcan4tch6ku:
+ resolution: {integrity: sha512-1wpmStho4gUplggwERopzmIz2NkEaRwnzta7ZpoNBzCM/KaTI9FvbTGuty087kQq81uu4mFfozYS+Bw6kk6bVA==}
+ dependencies:
+ '@ice/css-modules-hash': 0.0.6
+ '@ice/swc-plugin-keep-export': 0.2.0
+ '@ice/swc-plugin-node-transform': 0.2.0
+ '@ice/swc-plugin-remove-export': 0.2.0
+ '@rspack/core': 0.3.0
+ '@rspack/dev-server': 0.3.0_xwlm2ukmbpiz7ykxwfclqtcmji
+ '@swc/core': 1.3.80_@swc+helpers@0.5.1
+ ansi-html-community: 0.0.8
+ caniuse-lite: 1.0.30001462
+ chokidar: 3.5.3
+ core-js: 3.32.0
+ core-js-pure: 3.29.0
+ error-stack-parser: 2.1.4
+ esbuild: 0.17.16
+ events: 3.3.0
+ html-entities: 2.3.3
+ jest-worker: 27.5.1
+ less: 4.1.2
+ postcss: 8.4.12
+ react-refresh: 0.14.0
+ sass: 1.50.0
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/css-modules-hash-darwin-arm64/0.0.6:
+ resolution: {integrity: sha512-5QWZl3+biY5U/kRhymH+6X/kAk3Imvkqu9QpV+LTDxhoXEkdhzZd2sCO5ZNfrsODFuHy78iKzh6gEweADPwYkQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ optional: true
+
+ /@ice/css-modules-hash-darwin-universal/0.0.6:
+ resolution: {integrity: sha512-PLmDCFZHvpNysvMhUa363QWvgCMIwr6vYwEkHkC/AF9NZvl25r2R9mfdExHw8sZHu9fMHVINwWEBcMiYbZd/cg==}
+ engines: {node: '>= 10'}
+ os: [darwin]
+ requiresBuild: true
+ optional: true
+
+ /@ice/css-modules-hash-darwin-x64/0.0.6:
+ resolution: {integrity: sha512-HOmh+Yiw6rH9VJD2XBN7sZmigo+jwi7qAD/J12pbxVrMJ//aIsv3BwpgFhfGO8eqKeyVqNXac3S/vC2hq8t8jw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ optional: true
+
+ /@ice/css-modules-hash-linux-x64-gnu/0.0.6:
+ resolution: {integrity: sha512-PS7lTINETFqzbU0nbgLgxXJOp+BU51VvNeNEF1h6Xz6soR23yqFht6d8xuNC1auBnPHZM+RDiQYzwi9MCBTvgA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@ice/css-modules-hash-linux-x64-musl/0.0.6:
+ resolution: {integrity: sha512-UiDg8KpoDGmQrBt9z5lqjr+OAG2S2xQi00Unt2yali1dvhS1tpcN16isiBA2yO3JOy2b0Y0VtlmpJKxpMDsFcg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ optional: true
+
+ /@ice/css-modules-hash-win32-arm64-msvc/0.0.6:
+ resolution: {integrity: sha512-7rF1gX9QyhhGUo4JKZUQ6DSJs/xJiJlrKC9D91dkTHs81e0G6IQLv9EnIaX2OPF3/SPnqp7CAGxr7TOtDYsyAw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ optional: true
+
+ /@ice/css-modules-hash-win32-x64-msvc/0.0.6:
+ resolution: {integrity: sha512-on3tYfhvBW6XQ6tkE0KKZvFK0JB/iwBrvUiRo/Di3ceJPPwD619PJNNQnn78kqcrZIVdQZ41HMdyuEnz8UHVpQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ optional: true
+
+ /@ice/css-modules-hash/0.0.6:
+ resolution: {integrity: sha512-UbYq2Ldw+hamc9HoIfKTZORmmYCaGnP6f361XdB/7PQZHZ5hAak6TePdcVQekLHGEg/+zIccN33mflJqucC1Aw==}
+ engines: {node: '>= 10'}
+ optionalDependencies:
+ '@ice/css-modules-hash-darwin-arm64': 0.0.6
+ '@ice/css-modules-hash-darwin-universal': 0.0.6
+ '@ice/css-modules-hash-darwin-x64': 0.0.6
+ '@ice/css-modules-hash-linux-x64-gnu': 0.0.6
+ '@ice/css-modules-hash-linux-x64-musl': 0.0.6
+ '@ice/css-modules-hash-win32-arm64-msvc': 0.0.6
+ '@ice/css-modules-hash-win32-x64-msvc': 0.0.6
+
+ /@ice/jsx-runtime/0.2.2:
+ resolution: {integrity: sha512-RKwn3QgqualrWz+HxGZh7gS5lmCHIwvF6oVRsZbUI6Ekll98RrgGGvUvkn1SdSF7fYqWOG4ZA4neplBCJqf4NA==}
+ peerDependencies:
+ react: ^16 || ^17 || ^18
+ dependencies:
+ style-unit: 3.0.5
+ dev: true
+
+ /@ice/jsx-runtime/0.2.2_react@18.2.0:
+ resolution: {integrity: sha512-RKwn3QgqualrWz+HxGZh7gS5lmCHIwvF6oVRsZbUI6Ekll98RrgGGvUvkn1SdSF7fYqWOG4ZA4neplBCJqf4NA==}
+ peerDependencies:
+ react: ^16 || ^17 || ^18
+ dependencies:
+ react: 18.2.0
+ style-unit: 3.0.5
+ dev: false
+
+ /@ice/pkg/1.5.5:
+ resolution: {integrity: sha512-0BIfv6Uzs2wpHv7RmFwz+kWfoJLfx0yJrQyh3yqy+F6TZWxTwrqQmX+5yRmgqK5f7lGGhYfMMVNWjRSCw5MHPQ==}
+ engines: {node: '>=16.14.0'}
+ hasBin: true
+ dependencies:
+ '@ampproject/remapping': 2.2.0
+ '@babel/core': 7.21.0
+ '@babel/parser': 7.21.2
+ '@babel/preset-react': 7.18.6_@babel+core@7.21.0
+ '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0
+ '@rollup/plugin-commonjs': 21.1.0_rollup@2.79.1
+ '@rollup/plugin-image': 3.0.2_rollup@2.79.1
+ '@rollup/plugin-json': 4.1.0_rollup@2.79.1
+ '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1
+ '@rollup/plugin-replace': 5.0.2_rollup@2.79.1
+ '@rollup/pluginutils': 4.2.1
+ '@swc/core': 1.3.32
+ acorn: 8.8.2
+ autoprefixer: 10.4.13_postcss@8.4.25
+ build-scripts: 2.1.0
+ cac: 6.7.14
+ chokidar: 3.5.3
+ consola: 2.15.3
+ debug: 4.3.4
+ deepmerge: 4.3.0
+ escape-string-regexp: 5.0.0
+ fs-extra: 10.1.0
+ globby: 11.1.0
+ gzip-size: 7.0.0
+ lodash.merge: 4.6.2
+ magic-string: 0.25.9
+ picocolors: 1.0.0
+ postcss: 8.4.25
+ rollup: 2.79.1
+ rollup-plugin-styles: 4.0.0_rollup@2.79.1
+ rollup-plugin-visualizer: 5.9.0_rollup@2.79.1
+ tsc-alias: 1.8.5
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@ice/route-manifest/1.2.2:
+ resolution: {integrity: sha512-wu8qg/3MKnUkldOIq8fJYwnMoc2YmtQ/ry2OeQdnrHK8S+H4gbwR3uRseioKfoUhpMw0Ds7bjVDLX3ucGY078Q==}
+ dependencies:
+ minimatch: 5.1.6
+ dev: true
+
+ /@ice/rspack-config/1.0.5_4mgkpocji6i4c7t543qhprlmp4:
+ resolution: {integrity: sha512-dMvsK36Q3IzQGyT32b6fGpg7Rwla57jvo/gaQoQ8N5Zg+hnnTgSbfSj23/QaN82CxxnnSKCjsFlXeBA4tcDeBA==}
+ dependencies:
+ '@ice/bundles': 0.1.16_4mgkpocji6i4c7t543qhprlmp4
+ '@ice/shared-config': 1.1.0_4mgkpocji6i4c7t543qhprlmp4
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/rspack-config/1.0.5_nybtr22olkopkms5hv7r5oud4i:
+ resolution: {integrity: sha512-dMvsK36Q3IzQGyT32b6fGpg7Rwla57jvo/gaQoQ8N5Zg+hnnTgSbfSj23/QaN82CxxnnSKCjsFlXeBA4tcDeBA==}
+ dependencies:
+ '@ice/bundles': 0.1.16_nybtr22olkopkms5hv7r5oud4i
+ '@ice/shared-config': 1.1.0_nybtr22olkopkms5hv7r5oud4i
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/rspack-config/1.0.5_oikrtulvecolg3hvcan4tch6ku:
+ resolution: {integrity: sha512-dMvsK36Q3IzQGyT32b6fGpg7Rwla57jvo/gaQoQ8N5Zg+hnnTgSbfSj23/QaN82CxxnnSKCjsFlXeBA4tcDeBA==}
+ dependencies:
+ '@ice/bundles': 0.1.16_oikrtulvecolg3hvcan4tch6ku
+ '@ice/shared-config': 1.1.0_oikrtulvecolg3hvcan4tch6ku
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/runtime/1.3.1:
+ resolution: {integrity: sha512-Bil7i9KQF1Mu8BaT9eHvSEDk36/eYvhKQ16L6QEfiEu/rKB7AjcV38RK5q1RH8SYRQP6rdqH9z7OLsVxZjqOVA==}
+ requiresBuild: true
+ peerDependencies:
+ react: ^18.1.0
+ react-dom: ^18.1.0
+ dependencies:
+ '@ice/jsx-runtime': 0.2.2
+ '@ice/shared': 1.0.2
+ '@remix-run/router': 1.7.2
+ abortcontroller-polyfill: 1.7.5
+ ejs: 3.1.8
+ fs-extra: 10.1.0
+ history: 5.3.0
+ htmlparser2: 8.0.1
+ react-router-dom: 6.14.2
+ semver: 7.4.0
+ source-map: 0.7.4
+ dev: true
+
+ /@ice/runtime/1.3.1_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-Bil7i9KQF1Mu8BaT9eHvSEDk36/eYvhKQ16L6QEfiEu/rKB7AjcV38RK5q1RH8SYRQP6rdqH9z7OLsVxZjqOVA==}
+ requiresBuild: true
+ peerDependencies:
+ react: ^18.1.0
+ react-dom: ^18.1.0
+ dependencies:
+ '@ice/jsx-runtime': 0.2.2_react@18.2.0
+ '@ice/shared': 1.0.2
+ '@remix-run/router': 1.7.2
+ abortcontroller-polyfill: 1.7.5
+ ejs: 3.1.8
+ fs-extra: 10.1.0
+ history: 5.3.0
+ htmlparser2: 8.0.1
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ react-router-dom: 6.14.2_biqbaboplfbrettd7655fr4n2y
+ semver: 7.4.0
+ source-map: 0.7.4
+ dev: false
+
+ /@ice/runtime/1.3.1_react@18.2.0:
+ resolution: {integrity: sha512-Bil7i9KQF1Mu8BaT9eHvSEDk36/eYvhKQ16L6QEfiEu/rKB7AjcV38RK5q1RH8SYRQP6rdqH9z7OLsVxZjqOVA==}
+ requiresBuild: true
+ peerDependencies:
+ react: ^18.1.0
+ react-dom: ^18.1.0
+ dependencies:
+ '@ice/jsx-runtime': 0.2.2_react@18.2.0
+ '@ice/shared': 1.0.2
+ '@remix-run/router': 1.7.2
+ abortcontroller-polyfill: 1.7.5
+ ejs: 3.1.8
+ fs-extra: 10.1.0
+ history: 5.3.0
+ htmlparser2: 8.0.1
+ react: 18.2.0
+ react-router-dom: 6.14.2_react@18.2.0
+ semver: 7.4.0
+ source-map: 0.7.4
+ dev: false
+
+ /@ice/sandbox/1.1.4:
+ resolution: {integrity: sha512-MEVF0Ze3McKDutnFiUAhUoc+WwOFxITVBgSSHmbGpKtWbXJX9kUVlx3VsEVJvdqU3O1kiBNx6zE1sFMjKPRTIQ==}
+ dev: false
+
+ /@ice/shared-config/1.1.0_4mgkpocji6i4c7t543qhprlmp4:
+ resolution: {integrity: sha512-5llovTXzFFPyCZNVV+i1LcC6M8FLjNK3v8Y9DmeL2jtOyB+jBMlkCWRALPE6qsSoeJG1T41MfrDyaeIs8CY2kA==}
+ dependencies:
+ '@ice/bundles': 0.1.16_4mgkpocji6i4c7t543qhprlmp4
+ '@rollup/pluginutils': 4.2.1
+ browserslist: 4.21.5
+ consola: 2.15.3
+ fast-glob: 3.3.0
+ process: 0.11.10
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/shared-config/1.1.0_nybtr22olkopkms5hv7r5oud4i:
+ resolution: {integrity: sha512-5llovTXzFFPyCZNVV+i1LcC6M8FLjNK3v8Y9DmeL2jtOyB+jBMlkCWRALPE6qsSoeJG1T41MfrDyaeIs8CY2kA==}
+ dependencies:
+ '@ice/bundles': 0.1.16_nybtr22olkopkms5hv7r5oud4i
+ '@rollup/pluginutils': 4.2.1
+ browserslist: 4.21.5
+ consola: 2.15.3
+ fast-glob: 3.3.0
+ process: 0.11.10
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/shared-config/1.1.0_oikrtulvecolg3hvcan4tch6ku:
+ resolution: {integrity: sha512-5llovTXzFFPyCZNVV+i1LcC6M8FLjNK3v8Y9DmeL2jtOyB+jBMlkCWRALPE6qsSoeJG1T41MfrDyaeIs8CY2kA==}
+ dependencies:
+ '@ice/bundles': 0.1.16_oikrtulvecolg3hvcan4tch6ku
+ '@rollup/pluginutils': 4.2.1
+ browserslist: 4.21.5
+ consola: 2.15.3
+ fast-glob: 3.3.0
+ process: 0.11.10
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/shared/1.0.2:
+ resolution: {integrity: sha512-fSSTUzQEqodKsnvIFShJujp8qljCd88QjfEDJ9JIGgeHQfanMjZeL8s+jwI4o6L0oYl6Xg0hh/3UTIJ1Xar7KQ==}
+
+ /@ice/stark-app/1.5.0:
+ resolution: {integrity: sha512-9fuCri48eZj6TnfPkCju4vVLhGurz+mt6lFx4JQFHhnRBQ5MuiBqRZg5F/3vdnJ7dAYQJlCXmHlQtBHok82z+g==}
+ dev: false
+
+ /@ice/stark/2.7.5:
+ resolution: {integrity: sha512-HyV3/6PtTfNiKBkncztunpjsWMBw/SyQ24TvrYLnpkuSmrlZ9t0/jkJWuaM6nGpAufyZ62YfQ2Tn032So9OeIg==}
+ peerDependencies:
+ react: '>=15.0.0'
+ dependencies:
+ '@ice/sandbox': 1.1.4
+ lodash.isempty: 4.4.0
+ lodash.isequal: 4.5.0
+ path-to-regexp: 1.8.0
+ url-parse: 1.5.10
+ dev: false
+
+ /@ice/store/2.0.3_biqbaboplfbrettd7655fr4n2y:
+ resolution: {integrity: sha512-U1YcY380bejqc3+WtkEqIwE6HnjBjSKd4IWFyq8gakPeAvA6fEJ58Qx9hzscYxlogWbiCb0Wm9kqkcDU+njx7g==}
+ peerDependencies:
+ react: ^16.8 || ^17 || ^18
+ dependencies:
+ immer: 9.0.19
+ lodash.isfunction: 3.0.9
+ react: 18.2.0
+ react-redux: 7.2.9_biqbaboplfbrettd7655fr4n2y
+ redux: 4.2.1
+ redux-thunk: 2.4.2_redux@4.2.1
+ transitivePeerDependencies:
+ - react-dom
+ - react-native
+ dev: false
+
+ /@ice/swc-plugin-keep-export/0.2.0:
+ resolution: {integrity: sha512-N3tg4BOV78jZSR/9CypJf5YzHxrNi40dNlUAwFjf7nr9pzMvVlo9bZM0I/A9l6J9vMff/5mgtkW5+JiMYdyjig==}
+
+ /@ice/swc-plugin-node-transform/0.2.0:
+ resolution: {integrity: sha512-06NtOUGVAUKP1eQXGMkaIZpNl9d5RK6SB6xQJsMY/DIso8WnwymyN7hmoFXPzX0eFkhmQEc7jzJ7NDBXaXRqWQ==}
+
+ /@ice/swc-plugin-react-server-component/0.1.1:
+ resolution: {integrity: sha512-3FdXOZ7HTBHY+DKQXDpzqV10ngfl0ifffc7HFV0P4YPLfvEJjT0RxIZJW1QwRZ3QeB2ph4zvXfdBG1lYTzT58Q==}
+ dev: false
/@ice/swc-plugin-remove-export/0.2.0:
resolution: {integrity: sha512-kmyrCMtuEsS7J3rpENT5qUhhbuu3eldsN1WpJjtXX4rgogJ1+QmnAPjnhB0SWzr0/b5ArGfz83O6M+5NNGRd+A==}
- dev: false
+
+ /@ice/webpack-config/1.1.4_4mgkpocji6i4c7t543qhprlmp4:
+ resolution: {integrity: sha512-h+ckjRPEPVydvFyca7Mkc6I+mexR+A+1p+QBYK3CfJ2MBEpbZx2t8E6XfaOBes8BZ3ag7yBQDeGrpu9J7Ad+oQ==}
+ dependencies:
+ '@ice/bundles': 0.1.16_4mgkpocji6i4c7t543qhprlmp4
+ '@ice/shared-config': 1.1.0_4mgkpocji6i4c7t543qhprlmp4
+ fast-glob: 3.3.0
+ process: 0.11.10
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/webpack-config/1.1.4_nybtr22olkopkms5hv7r5oud4i:
+ resolution: {integrity: sha512-h+ckjRPEPVydvFyca7Mkc6I+mexR+A+1p+QBYK3CfJ2MBEpbZx2t8E6XfaOBes8BZ3ag7yBQDeGrpu9J7Ad+oQ==}
+ dependencies:
+ '@ice/bundles': 0.1.16_nybtr22olkopkms5hv7r5oud4i
+ '@ice/shared-config': 1.1.0_nybtr22olkopkms5hv7r5oud4i
+ fast-glob: 3.3.0
+ process: 0.11.10
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
+ /@ice/webpack-config/1.1.4_oikrtulvecolg3hvcan4tch6ku:
+ resolution: {integrity: sha512-h+ckjRPEPVydvFyca7Mkc6I+mexR+A+1p+QBYK3CfJ2MBEpbZx2t8E6XfaOBes8BZ3ag7yBQDeGrpu9J7Ad+oQ==}
+ dependencies:
+ '@ice/bundles': 0.1.16_oikrtulvecolg3hvcan4tch6ku
+ '@ice/shared-config': 1.1.0_oikrtulvecolg3hvcan4tch6ku
+ fast-glob: 3.3.0
+ process: 0.11.10
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack
+ - webpack-cli
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
/@iceworks/generate-project/2.0.2:
resolution: {integrity: sha512-t7/uHl5kM71o+xyR+FnaPsgyFqhFQm89TdqPahM4Kv/ubdKDknFVUYLio1khMDGY8Ops0ahn/+KM+gFnHEKSQw==}
@@ -6421,7 +7021,6 @@ packages:
source-map: 0.7.4
webpack: 5.76.0_pur5qe7dhbhqwjtj2daaog4n7u
webpack-dev-server: 4.13.1_webpack@5.76.0
- dev: false
/@pmmmwh/react-refresh-webpack-plugin/0.5.10_p44l2xjftguod6ctnkuod3jp7e:
resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==}
@@ -6540,6 +7139,45 @@ packages:
webpack-dev-server: 4.11.1_webpack@5.88.2
dev: true
+ /@pmmmwh/react-refresh-webpack-plugin/0.5.10_wrxi7ct7dz7g7lwv6srrq7wgqy:
+ resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==}
+ engines: {node: '>= 10.13'}
+ peerDependencies:
+ '@types/webpack': 4.x || 5.x
+ react-refresh: '>=0.10.0 <1.0.0'
+ sockjs-client: ^1.4.0
+ type-fest: '>=0.17.0 <4.0.0'
+ webpack: '>=4.43.0 <6.0.0'
+ webpack-dev-server: 3.x || 4.x
+ webpack-hot-middleware: 2.x
+ webpack-plugin-serve: 0.x || 1.x
+ peerDependenciesMeta:
+ '@types/webpack':
+ optional: true
+ sockjs-client:
+ optional: true
+ type-fest:
+ optional: true
+ webpack-dev-server:
+ optional: true
+ webpack-hot-middleware:
+ optional: true
+ webpack-plugin-serve:
+ optional: true
+ dependencies:
+ ansi-html-community: 0.0.8
+ common-path-prefix: 3.0.0
+ core-js-pure: 3.29.0
+ error-stack-parser: 2.1.4
+ find-up: 5.0.0
+ html-entities: 2.3.3
+ loader-utils: 2.0.4
+ react-refresh: 0.14.0
+ schema-utils: 3.1.1
+ source-map: 0.7.4
+ webpack: 5.88.2
+ dev: true
+
/@pmmmwh/react-refresh-webpack-plugin/0.5.10_ynqbgb5bmgbvx2am6mt2h3lxsq:
resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==}
engines: {node: '>= 10.13'}
@@ -6993,6 +7631,35 @@ packages:
- webpack-plugin-serve
dev: true
+ /@rspack/core/0.3.0_webpack@5.88.2:
+ resolution: {integrity: sha512-YltE0AQimUMOSTIFuDP+BW2GoJsabrig/GmgCR1eDWlVeKlmGJ6wd2GdYjmW5TWdH6FBQPQ3YfU8GOB4XWsvgQ==}
+ dependencies:
+ '@rspack/binding': 0.3.0
+ '@rspack/dev-client': 0.3.0_wrxi7ct7dz7g7lwv6srrq7wgqy
+ '@swc/helpers': 0.5.1
+ browserslist: 4.21.5
+ compare-versions: 6.0.0-rc.1
+ enhanced-resolve: 5.12.0
+ graceful-fs: 4.2.10
+ neo-async: 2.6.2
+ react-refresh: 0.14.0
+ schema-utils: 4.0.0
+ tapable: 2.2.1
+ util: 0.12.5
+ watchpack: 2.4.0
+ webpack-sources: 3.2.3
+ zod: 3.21.4
+ zod-validation-error: 1.2.0_zod@3.21.4
+ transitivePeerDependencies:
+ - '@types/webpack'
+ - sockjs-client
+ - type-fest
+ - webpack
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
/@rspack/core/0.3.0_zur76qpjdwubwowmoyfe2ntqhe:
resolution: {integrity: sha512-YltE0AQimUMOSTIFuDP+BW2GoJsabrig/GmgCR1eDWlVeKlmGJ6wd2GdYjmW5TWdH6FBQPQ3YfU8GOB4XWsvgQ==}
dependencies:
@@ -7040,7 +7707,6 @@ packages:
- webpack-dev-server
- webpack-hot-middleware
- webpack-plugin-serve
- dev: false
/@rspack/dev-client/0.3.0_p44l2xjftguod6ctnkuod3jp7e:
resolution: {integrity: sha512-nttTUBVctbh9auvPq91ThmjNDcBLj3kfLDjM/O1jBYA3xTz9MNsTN3rInLOb4S2fWEsSBLz7CVsNLP7LWtUecA==}
@@ -7101,6 +7767,26 @@ packages:
- webpack-plugin-serve
dev: true
+ /@rspack/dev-client/0.3.0_wrxi7ct7dz7g7lwv6srrq7wgqy:
+ resolution: {integrity: sha512-nttTUBVctbh9auvPq91ThmjNDcBLj3kfLDjM/O1jBYA3xTz9MNsTN3rInLOb4S2fWEsSBLz7CVsNLP7LWtUecA==}
+ peerDependencies:
+ react-refresh: '>=0.10.0 <1.0.0'
+ peerDependenciesMeta:
+ react-refresh:
+ optional: true
+ dependencies:
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.10_wrxi7ct7dz7g7lwv6srrq7wgqy
+ react-refresh: 0.14.0
+ transitivePeerDependencies:
+ - '@types/webpack'
+ - sockjs-client
+ - type-fest
+ - webpack
+ - webpack-dev-server
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
+
/@rspack/dev-client/0.3.0_ynqbgb5bmgbvx2am6mt2h3lxsq:
resolution: {integrity: sha512-nttTUBVctbh9auvPq91ThmjNDcBLj3kfLDjM/O1jBYA3xTz9MNsTN3rInLOb4S2fWEsSBLz7CVsNLP7LWtUecA==}
peerDependencies:
@@ -7153,21 +7839,55 @@ packages:
- webpack-cli
- webpack-hot-middleware
- webpack-plugin-serve
- dev: false
+ dev: false
+
+ /@rspack/dev-server/0.3.0_saarlyqjwgcwik7cbeuxgtrvdm:
+ resolution: {integrity: sha512-aKY1mUP1PdOWXDvxpUA14mEE7p+IFYnU67i7cAUh361z2/v5KbCTngt521ly8H1LqJv3SJIoEXqSqNc8c62Dsg==}
+ peerDependencies:
+ '@rspack/core': '*'
+ dependencies:
+ '@rspack/core': 0.3.0_ls5vlc7kphql6b6gtepk5p7cmu
+ '@rspack/dev-client': 0.3.0_p44l2xjftguod6ctnkuod3jp7e
+ chokidar: 3.5.3
+ connect-history-api-fallback: 2.0.0
+ express: 4.18.1
+ http-proxy-middleware: 2.0.6_@types+express@4.17.17
+ mime-types: 2.1.35
+ webpack: 5.76.0_esbuild@0.17.16
+ webpack-dev-middleware: 6.0.2_webpack@5.76.0
+ webpack-dev-server: 4.13.1_webpack@5.76.0
+ ws: 8.8.1
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@types/express'
+ - '@types/webpack'
+ - bufferutil
+ - debug
+ - esbuild
+ - react-refresh
+ - sockjs-client
+ - supports-color
+ - type-fest
+ - uglify-js
+ - utf-8-validate
+ - webpack-cli
+ - webpack-hot-middleware
+ - webpack-plugin-serve
+ dev: true
- /@rspack/dev-server/0.3.0_saarlyqjwgcwik7cbeuxgtrvdm:
+ /@rspack/dev-server/0.3.0_xwlm2ukmbpiz7ykxwfclqtcmji:
resolution: {integrity: sha512-aKY1mUP1PdOWXDvxpUA14mEE7p+IFYnU67i7cAUh361z2/v5KbCTngt521ly8H1LqJv3SJIoEXqSqNc8c62Dsg==}
peerDependencies:
'@rspack/core': '*'
dependencies:
- '@rspack/core': 0.3.0_ls5vlc7kphql6b6gtepk5p7cmu
- '@rspack/dev-client': 0.3.0_p44l2xjftguod6ctnkuod3jp7e
+ '@rspack/core': 0.3.0
+ '@rspack/dev-client': 0.3.0_4p7fys4vpjth4wnvvzaxfza3hm
chokidar: 3.5.3
connect-history-api-fallback: 2.0.0
express: 4.18.1
http-proxy-middleware: 2.0.6_@types+express@4.17.17
mime-types: 2.1.35
- webpack: 5.76.0_esbuild@0.17.16
+ webpack: 5.76.0_yt3h3qjhcnsf3663codtuni62a
webpack-dev-middleware: 6.0.2_webpack@5.76.0
webpack-dev-server: 4.13.1_webpack@5.76.0
ws: 8.8.1
@@ -7500,6 +8220,15 @@ packages:
dev: true
optional: true
+ /@swc/core-darwin-arm64/1.3.80:
+ resolution: {integrity: sha512-rhoFTcQMUGfO7IkfOnopPSF6O0/aVJ58B7KueIKbvrMe6YvSfFj9QfObELFjYCcrJZTvUWBhig0QrsfPIiUphA==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-darwin-arm64/1.3.85:
resolution: {integrity: sha512-jTikp+i4nO4Ofe6qGm4I3sFeebD1OvueBCHITux5tQKD6umN1c2z4CRGv6K49NIz/qEpUcdr6Qny6K+3yibVFQ==}
engines: {node: '>=10'}
@@ -7517,6 +8246,15 @@ packages:
dev: true
optional: true
+ /@swc/core-darwin-x64/1.3.80:
+ resolution: {integrity: sha512-0dOLedFpVXe+ugkKHXsqSxMKqvQYfFtibWbrZ7j8wOaErzSGPr0VpyWvepNVb9s046725kPXSw+fsGhqZR8wrw==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-darwin-x64/1.3.85:
resolution: {integrity: sha512-3uHYkjVU+2F+YbVYtq5rH0uCJIztFTALaS3mQEfQUZKXZ5/8jD5titTCRqFKtSlQg0CzaFZgsYsuqwYBmgN0mA==}
engines: {node: '>=10'}
@@ -7534,6 +8272,15 @@ packages:
dev: true
optional: true
+ /@swc/core-linux-arm-gnueabihf/1.3.80:
+ resolution: {integrity: sha512-QIjwP3PtDeHBDkwF6+ZZqdUsqAhORbMpxrw2jq3mHe4lQrxBttSFTq018vlMRo2mFEorOvXdadzaD9m+NymPrw==}
+ engines: {node: '>=10'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-linux-arm-gnueabihf/1.3.85:
resolution: {integrity: sha512-ouHzAHsFaEOkRuoTAOI/8n2m8BQAAnb4vr/xbMhhDOmix0lp5eNsW5Iac/EcJ2uG6B3n7P2K8oycj9SWkj+pfw==}
engines: {node: '>=10'}
@@ -7551,6 +8298,15 @@ packages:
dev: true
optional: true
+ /@swc/core-linux-arm64-gnu/1.3.80:
+ resolution: {integrity: sha512-cg8WriIueab58ZwkzXmIACnjSzFLzOBwxlC9k65gPXMNgCjab2YbqEYvAbjBqneuqaao02gW6tad2uhjgYaExw==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-linux-arm64-gnu/1.3.85:
resolution: {integrity: sha512-/Z1CZOWiO+NqJEh1J20PIxQFHMH43upQJ1l7FJ5Z7+MyuYF8WkeJ7OSovau729pBR+38vvvccEJrMZIztfv7hQ==}
engines: {node: '>=10'}
@@ -7568,6 +8324,15 @@ packages:
dev: true
optional: true
+ /@swc/core-linux-arm64-musl/1.3.80:
+ resolution: {integrity: sha512-AhdCQ7QKx5mWrtpaOA1mFRiWWvuiiUtspvo0QSpspDetRKTND1rlf/3UB5+gp0kCeCNUTsVmJWU7fIA9ICZtXA==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-linux-arm64-musl/1.3.85:
resolution: {integrity: sha512-gfh7CfKavi076dbMBTzfdawSGcYfZ4+1Q+8aRkSesqepKHcIWIJti8Cf3zB4a6CHNhJe+VN0Gb7DEfumydAm1w==}
engines: {node: '>=10'}
@@ -7585,6 +8350,15 @@ packages:
dev: true
optional: true
+ /@swc/core-linux-x64-gnu/1.3.80:
+ resolution: {integrity: sha512-+2e5oni1vOrLIjM5Q2/GIzK/uS2YEtuJqnjPvCK8SciRJsSl8OgVsRvyCDbmKeZNtJ2Q+o/O2AQ2w1qpAJG6jg==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-linux-x64-gnu/1.3.85:
resolution: {integrity: sha512-lWVqjHKzofb9q1qrBM4dLqO7CIisp08/xMS5Hz9DWex1gTc5F2b6yJO6Ceqwa256GMweJcdP6A5EvEFQAiZ5dg==}
engines: {node: '>=10'}
@@ -7602,6 +8376,15 @@ packages:
dev: true
optional: true
+ /@swc/core-linux-x64-musl/1.3.80:
+ resolution: {integrity: sha512-8OK9IlI1zpWOm7vIp1iXmZSEzLAwFpqhsGSEhxPavpOx2m54kLFdPcw/Uv3n461f6TCtszIxkGq1kSqBUdfUBA==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-linux-x64-musl/1.3.85:
resolution: {integrity: sha512-EPJmlfqC05TUetnlErxNRyIp7Nc3B2w9abET6oQ/EgldeAeQnZ3M6svMViET/c2QSomgrU3rdP+Qcozkt62/4A==}
engines: {node: '>=10'}
@@ -7619,6 +8402,15 @@ packages:
dev: true
optional: true
+ /@swc/core-win32-arm64-msvc/1.3.80:
+ resolution: {integrity: sha512-RKhatwiAGlffnF6z2Mm3Ddid0v3KB+uf5m/Gc7N9zO/EUAV0PnHRuYuZSGyqodHmGFC+mK8YrCooFCEmHL9n+w==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-win32-arm64-msvc/1.3.85:
resolution: {integrity: sha512-ibckJDZw8kNosciMexwk0z75ZyUhwtiFMV9rSBpup0opa7NNCUCoERCJ1e9LRyMdhsVUoLpZg/KZiHCdTw96hQ==}
engines: {node: '>=10'}
@@ -7636,6 +8428,15 @@ packages:
dev: true
optional: true
+ /@swc/core-win32-ia32-msvc/1.3.80:
+ resolution: {integrity: sha512-3jiiZzU/kaw7k4zUp1yMq1QiUe4wJVtCEXIhf+fKuBsIwm7rdvyK/+PIx5KHnZy4TGQnYczKBRhJA5nuBcrUCQ==}
+ engines: {node: '>=10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-win32-ia32-msvc/1.3.85:
resolution: {integrity: sha512-hY4MpHGUVQHL1T2kgRXOigDho4DTIpVPYzJ4uyy8VQRbS7GzN5XtvdGP/fA4zp8+2BQjcig+6J7Y92SY15ouNQ==}
engines: {node: '>=10'}
@@ -7653,6 +8454,15 @@ packages:
dev: true
optional: true
+ /@swc/core-win32-x64-msvc/1.3.80:
+ resolution: {integrity: sha512-2eZtIoIWQBWqykfms92Zd37lveYOBWQTZjdooBGlsLHtcoQLkNpf1NXmR6TKY0yy8q6Yl3OhPvY+izjmO08MSg==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@swc/core-win32-x64-msvc/1.3.85:
resolution: {integrity: sha512-ktxWOMFJ0iqKn6WUHtXqi4CS7xkyHmrRtjllGRuGqxmLmDX/HSOfuQ55Tm1KXKk5oHLacJkUbOSF2kBrpZ8dpg==}
engines: {node: '>=10'}
@@ -7678,6 +8488,31 @@ packages:
'@swc/core-win32-x64-msvc': 1.3.32
dev: true
+ /@swc/core/1.3.80_@swc+helpers@0.5.1:
+ resolution: {integrity: sha512-yX2xV5I/lYswHHR+44TPvzBgq3/Y8N1YWpTQADYuvSiX3Jxyvemk5Jpx3rRtigYb8WBkWAAf2i5d5ZJ2M7hhgw==}
+ engines: {node: '>=10'}
+ requiresBuild: true
+ peerDependencies:
+ '@swc/helpers': ^0.5.0
+ peerDependenciesMeta:
+ '@swc/helpers':
+ optional: true
+ dependencies:
+ '@swc/helpers': 0.5.1
+ '@swc/types': 0.1.4
+ optionalDependencies:
+ '@swc/core-darwin-arm64': 1.3.80
+ '@swc/core-darwin-x64': 1.3.80
+ '@swc/core-linux-arm-gnueabihf': 1.3.80
+ '@swc/core-linux-arm64-gnu': 1.3.80
+ '@swc/core-linux-arm64-musl': 1.3.80
+ '@swc/core-linux-x64-gnu': 1.3.80
+ '@swc/core-linux-x64-musl': 1.3.80
+ '@swc/core-win32-arm64-msvc': 1.3.80
+ '@swc/core-win32-ia32-msvc': 1.3.80
+ '@swc/core-win32-x64-msvc': 1.3.80
+ dev: true
+
/@swc/core/1.3.85:
resolution: {integrity: sha512-qnoxp+2O0GtvRdYnXgR1v8J7iymGGYpx6f6yCK9KxipOZOjrlKILFANYlghQxZyPUfXwK++TFxfSlX4r9wK+kg==}
engines: {node: '>=10'}
@@ -8432,7 +9267,6 @@ packages:
/@uni/env/1.1.0:
resolution: {integrity: sha512-2GVgUzxIaO2vGElXEuc45+I7L6Jbw8inLDDFuC0K4htjKtPmYywKSE6oDhvmdAXb4GCOH8hmxECYtAh1rjsgoQ==}
- dev: false
/@use-gesture/core/10.2.20:
resolution: {integrity: sha512-4lFhHc8so4yIHkBEs641DnEsBxPyhJ5GEjB4PURFDH4p/FcZriH6w99knZgI63zN/MBFfylMyb8+PDuj6RIXKQ==}
@@ -8706,7 +9540,6 @@ packages:
/abortcontroller-polyfill/1.7.5:
resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==}
- dev: false
/accept-language-parser/1.5.0:
resolution: {integrity: sha512-QhyTbMLYo0BBGg1aWbeMG4ekWtds/31BrEU+DONOg/7ax23vxpL03Pb7/zBmha2v7vdD3AyzZVWBVGEZxKOXWw==}
@@ -9275,7 +10108,6 @@ packages:
/async/3.2.4:
resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
- dev: false
/asynckit/0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
@@ -9290,6 +10122,22 @@ packages:
hasBin: true
dev: false
+ /autoprefixer/10.4.13_postcss@8.4.25:
+ resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ browserslist: 4.21.5
+ caniuse-lite: 1.0.30001462
+ fraction.js: 4.2.0
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.25
+ postcss-value-parser: 4.2.0
+ dev: true
+
/autoprefixer/10.4.13_postcss@8.4.31:
resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==}
engines: {node: ^10 || ^12 || >=14}
@@ -11407,12 +12255,10 @@ packages:
/dotenv-expand/8.0.3:
resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==}
engines: {node: '>=12'}
- dev: false
/dotenv/16.0.3:
resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==}
engines: {node: '>=12'}
- dev: false
/dts-bundle/0.7.3:
resolution: {integrity: sha512-EEAEuPRk8QyKhoN90NHTh+spSQujkkvOnKWUfuzpmC/fgryiWopL1SegSktx0UsoPfNidIGVDN7/AXpBDBv0WQ==}
@@ -11454,7 +12300,6 @@ packages:
hasBin: true
dependencies:
jake: 10.8.5
- dev: false
/electron-to-chromium/1.4.322:
resolution: {integrity: sha512-KovjizNC9XB7dno/2GjxX8VS0SlfPpCjtyoKft+bCO+UfD8bFy16hY4Sh9s0h9BDxbRH2U0zX5VBjpM1LTcNlg==}
@@ -12829,7 +13674,6 @@ packages:
resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
dependencies:
minimatch: 5.1.6
- dev: false
/filesize/8.0.7:
resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==}
@@ -14498,7 +15342,6 @@ packages:
chalk: 4.1.2
filelist: 1.0.4
minimatch: 3.1.2
- dev: false
/jest-changed-files/28.1.3:
resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==}
@@ -15553,7 +16396,6 @@ packages:
/jsonc-parser/3.2.0:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
- dev: false
/jsonfile/4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
@@ -16318,7 +17160,6 @@ packages:
pathe: 1.1.0
pkg-types: 1.0.2
ufo: 1.1.1
- dev: false
/moment/2.29.4:
resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==}
@@ -16351,6 +17192,12 @@ packages:
engines: {node: '>=12.0.0'}
dev: true
+ /nanoid/3.3.4:
+ resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
/nanoid/3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -16895,7 +17742,6 @@ packages:
/path-to-regexp/6.2.1:
resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
- dev: false
/path-type/4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
@@ -16903,7 +17749,6 @@ packages:
/pathe/1.1.0:
resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==}
- dev: false
/pathval/1.1.1:
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
@@ -16960,7 +17805,6 @@ packages:
jsonc-parser: 3.2.0
mlly: 1.1.1
pathe: 1.1.0
- dev: false
/pkg-up/3.1.0:
resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
@@ -17815,9 +18659,27 @@ packages:
source-map: 0.6.1
dev: false
+ /postcss/8.4.12:
+ resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.6
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: true
+
/postcss/8.4.21:
resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==}
engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.4
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: true
+
+ /postcss/8.4.25:
+ resolution: {integrity: sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==}
+ engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.6
picocolors: 1.0.0
@@ -17917,7 +18779,6 @@ packages:
/process/0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
- dev: false
/progress/2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
@@ -19327,6 +20188,17 @@ packages:
tiny-invariant: 1.3.1
tiny-warning: 1.0.3
+ /react-router-dom/6.14.2:
+ resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ react: '>=16.8'
+ react-dom: '>=16.8'
+ dependencies:
+ '@remix-run/router': 1.7.2
+ react-router: 6.14.2
+ dev: true
+
/react-router-dom/6.14.2_biqbaboplfbrettd7655fr4n2y:
resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==}
engines: {node: '>=14'}
@@ -19340,6 +20212,18 @@ packages:
react-router: 6.14.2_react@18.2.0
dev: false
+ /react-router-dom/6.14.2_react@18.2.0:
+ resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ react: '>=16.8'
+ react-dom: '>=16.8'
+ dependencies:
+ '@remix-run/router': 1.7.2
+ react: 18.2.0
+ react-router: 6.14.2_react@18.2.0
+ dev: false
+
/react-router/5.3.4_react@17.0.2:
resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==}
peerDependencies:
@@ -19356,6 +20240,15 @@ packages:
tiny-invariant: 1.3.1
tiny-warning: 1.0.3
+ /react-router/6.14.2:
+ resolution: {integrity: sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ react: '>=16.8'
+ dependencies:
+ '@remix-run/router': 1.7.2
+ dev: true
+
/react-router/6.14.2_react@18.2.0:
resolution: {integrity: sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==}
engines: {node: '>=14'}
@@ -19365,7 +20258,7 @@ packages:
'@remix-run/router': 1.7.2
react: 18.2.0
- /react-server-dom-webpack/18.3.0-canary-dd480ef92-20230822_webpack@5.88.2:
+ /react-server-dom-webpack/18.3.0-canary-dd480ef92-20230822_biqbaboplfbrettd7655fr4n2y:
resolution: {integrity: sha512-vBIBAkrOMrqZZGKgjSY9ly82YgZrmQgK4OOMBfMD5ZpAl58eifQFF18ZtVYNX9sLdPPi4MrizYfGjMaS9fP2VQ==}
engines: {node: '>=0.10.0'}
peerDependencies:
@@ -19376,22 +20269,22 @@ packages:
acorn-loose: 8.3.0
loose-envify: 1.4.0
neo-async: 2.6.2
- webpack: 5.88.2_pur5qe7dhbhqwjtj2daaog4n7u
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
dev: true
- /react-server-dom-webpack/18.3.0-canary-e61a60fac-20231011_biqbaboplfbrettd7655fr4n2y:
- resolution: {integrity: sha512-5QrTDm7L1wJulbQm05JcAw0TYM5zR2MHNEt/7jDRyL15S0/06G032QahaN1qcbUW29Shv0LTZq82jrA7aH+/dg==}
+ /react-server-dom-webpack/18.3.0-canary-dd480ef92-20230822_webpack@5.88.2:
+ resolution: {integrity: sha512-vBIBAkrOMrqZZGKgjSY9ly82YgZrmQgK4OOMBfMD5ZpAl58eifQFF18ZtVYNX9sLdPPi4MrizYfGjMaS9fP2VQ==}
engines: {node: '>=0.10.0'}
peerDependencies:
- react: 18.3.0-canary-e61a60fac-20231011
- react-dom: 18.3.0-canary-e61a60fac-20231011
+ react: 18.3.0-canary-dd480ef92-20230822
+ react-dom: 18.3.0-canary-dd480ef92-20230822
webpack: ^5.59.0
dependencies:
acorn-loose: 8.3.0
loose-envify: 1.4.0
neo-async: 2.6.2
- react: 18.2.0
- react-dom: 18.2.0_react@18.2.0
+ webpack: 5.88.2_pur5qe7dhbhqwjtj2daaog4n7u
dev: true
/react-textarea-autosize/8.4.0_h7fc2el62uaa77gho3xhys6ola:
@@ -19887,7 +20780,6 @@ packages:
hasBin: true
dependencies:
glob: 7.2.3
- dev: false
/rimraf/3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
@@ -20815,7 +21707,6 @@ packages:
dependencies:
'@babel/runtime': 7.21.0
universal-env: 3.3.3
- dev: false
/stylehacks/5.1.1_postcss@8.4.31:
resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
@@ -21078,7 +21969,6 @@ packages:
dependencies:
mkdirp: 0.5.6
rimraf: 2.6.3
- dev: false
/term-size/2.2.1:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
@@ -21093,6 +21983,32 @@ packages:
supports-hyperlinks: 2.3.0
dev: true
+ /terser-webpack-plugin/5.3.5_c2jhsnh755mj2bl6newvfwu7wy:
+ resolution: {integrity: sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ '@swc/core': '*'
+ esbuild: '*'
+ uglify-js: '*'
+ webpack: ^5.1.0
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ esbuild:
+ optional: true
+ uglify-js:
+ optional: true
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.17
+ '@swc/core': 1.3.80_@swc+helpers@0.5.1
+ esbuild: 0.17.16
+ jest-worker: 27.5.1
+ schema-utils: 3.1.1
+ serialize-javascript: 6.0.1
+ terser: 5.14.2
+ webpack: 5.76.0_yt3h3qjhcnsf3663codtuni62a
+ dev: true
+
/terser-webpack-plugin/5.3.5_ghmre4bibzh3hfhoafsn4shpjy:
resolution: {integrity: sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==}
engines: {node: '>= 10.13.0'}
@@ -21167,7 +22083,6 @@ packages:
serialize-javascript: 6.0.1
terser: 5.14.2
webpack: 5.76.0_esbuild@0.17.16
- dev: true
/terser-webpack-plugin/5.3.6_webpack@5.88.2:
resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==}
@@ -21240,7 +22155,6 @@ packages:
serialize-javascript: 6.0.1
terser: 5.16.5
webpack: 5.88.2_esbuild@0.17.16
- dev: true
/terser-webpack-plugin/5.3.7_ghmre4bibzh3hfhoafsn4shpjy:
resolution: {integrity: sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==}
@@ -21712,7 +22626,6 @@ packages:
/ufo/1.1.1:
resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==}
- dev: false
/uglify-js/3.17.4:
resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
@@ -21859,7 +22772,6 @@ packages:
engines: {npm: '>=3.0.0'}
dependencies:
'@uni/env': 1.1.0
- dev: false
/universalify/0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
@@ -21898,7 +22810,7 @@ packages:
acorn: 8.8.2
chokidar: 3.5.3
esbuild: 0.17.16
- webpack: 5.88.2_pur5qe7dhbhqwjtj2daaog4n7u
+ webpack: 5.88.2_esbuild@0.17.16
webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.6
dev: true
@@ -22470,7 +23382,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.0.0
- webpack: 5.76.0_pur5qe7dhbhqwjtj2daaog4n7u
+ webpack: 5.76.0_esbuild@0.17.16
/webpack-dev-middleware/5.3.3_webpack@5.86.0:
resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==}
@@ -22497,7 +23409,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.0.0
- webpack: 5.88.2_pur5qe7dhbhqwjtj2daaog4n7u
+ webpack: 5.88.2_esbuild@0.17.16
/webpack-dev-middleware/6.0.2_webpack@5.76.0:
resolution: {integrity: sha512-iOddiJzPcQC6lwOIu60vscbGWth8PCRcWRCwoQcTQf9RMoOWBHg5EyzpGdtSmGMrSPd5vHEfFXmVErQEmkRngQ==}
@@ -22513,7 +23425,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.0.0
- webpack: 5.76.0_pur5qe7dhbhqwjtj2daaog4n7u
+ webpack: 5.76.0_esbuild@0.17.16
/webpack-dev-server/4.11.1_webpack@5.88.2:
resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==}
@@ -22604,7 +23516,7 @@ packages:
serve-index: 1.9.1
sockjs: 0.3.24
spdy: 4.0.2
- webpack: 5.76.0_pur5qe7dhbhqwjtj2daaog4n7u
+ webpack: 5.76.0_esbuild@0.17.16
webpack-dev-middleware: 5.3.3_webpack@5.76.0
ws: 8.13.0
transitivePeerDependencies:
@@ -22876,7 +23788,6 @@ packages:
- '@swc/core'
- esbuild
- uglify-js
- dev: true
/webpack/5.76.0_pur5qe7dhbhqwjtj2daaog4n7u:
resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==}
@@ -22917,6 +23828,46 @@ packages:
- esbuild
- uglify-js
+ /webpack/5.76.0_yt3h3qjhcnsf3663codtuni62a:
+ resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ peerDependencies:
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+ dependencies:
+ '@types/eslint-scope': 3.7.4
+ '@types/estree': 0.0.51
+ '@webassemblyjs/ast': 1.11.1
+ '@webassemblyjs/wasm-edit': 1.11.1
+ '@webassemblyjs/wasm-parser': 1.11.1
+ acorn: 8.8.2
+ acorn-import-assertions: 1.9.0_acorn@8.8.2
+ browserslist: 4.21.5
+ chrome-trace-event: 1.0.3
+ enhanced-resolve: 5.15.0
+ es-module-lexer: 0.9.3
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.10
+ json-parse-even-better-errors: 2.3.1
+ loader-runner: 4.3.0
+ mime-types: 2.1.35
+ neo-async: 2.6.2
+ schema-utils: 3.3.0
+ tapable: 2.2.1
+ terser-webpack-plugin: 5.3.5_c2jhsnh755mj2bl6newvfwu7wy
+ watchpack: 2.4.0
+ webpack-sources: 3.2.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+ dev: true
+
/webpack/5.86.0_esbuild@0.17.16:
resolution: {integrity: sha512-3BOvworZ8SO/D4GVP+GoRC3fVeg5MO4vzmq8TJJEkdmopxyazGDxN8ClqN12uzrZW9Tv8EED8v5VSb6Sqyi0pg==}
engines: {node: '>=10.13.0'}
@@ -23034,7 +23985,6 @@ packages:
- '@swc/core'
- esbuild
- uglify-js
- dev: true
/webpack/5.88.2_pur5qe7dhbhqwjtj2daaog4n7u:
resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}