@modern-js/devtools-client 2.34.0 → 2.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +133 -17
- package/CHANGELOG.md +9 -0
- package/build.sh +5 -0
- package/dist/html/main/index.html +5 -0
- package/dist/modern.config.json +30 -10
- package/dist/nestedRoutes.json +1 -1
- package/dist/route.json +3 -3
- package/dist/routes-manifest.json +198 -16
- package/dist/static/css/main.d8cf90b5.css +1 -0
- package/dist/static/css/vendors~node_modules_pnpm_emotion_styled_11_11_0__emotion_react_11_11_1__types_react_18_0_21_~8b4e97.f2739ed5.css +51 -0
- package/dist/static/js/async/config/builder/resolved/page.5c4715c4.js +1 -0
- package/dist/static/js/async/config/builder/resolved/page.5c4715c4.js.map +1 -0
- package/dist/static/js/async/config/builder/transformed/page.a05d2c7f.js +1 -0
- package/dist/static/js/async/config/builder/transformed/page.a05d2c7f.js.map +1 -0
- package/dist/static/js/async/config/bundler/resolved/page.2bc07a42.js +1 -0
- package/dist/static/js/async/config/bundler/resolved/page.2bc07a42.js.map +1 -0
- package/dist/static/js/async/config/bundler/transformed/page.704303d4.js +1 -0
- package/dist/static/js/async/config/bundler/transformed/page.704303d4.js.map +1 -0
- package/dist/static/js/async/config/framework/resolved/page.c78a652b.js +1 -0
- package/dist/static/js/async/config/framework/resolved/page.c78a652b.js.map +1 -0
- package/dist/static/js/async/config/framework/transformed/page.acd03a20.js +1 -0
- package/dist/static/js/async/config/framework/transformed/page.acd03a20.js.map +1 -0
- package/dist/static/js/async/config/layout.c988e6cc.js +1 -0
- package/dist/static/js/async/config/layout.c988e6cc.js.map +1 -0
- package/dist/static/js/async/config/page.6183831d.js +1 -0
- package/dist/static/js/async/config/page.6183831d.js.map +1 -0
- package/dist/static/js/async/context/builder/page.af1058db.js +1 -0
- package/dist/static/js/async/context/builder/page.af1058db.js.map +1 -0
- package/dist/static/js/async/context/framework/page.65d0c64b.js +1 -0
- package/dist/static/js/async/context/framework/page.65d0c64b.js.map +1 -0
- package/dist/static/js/async/context/layout.69e165a7.js +1 -0
- package/dist/static/js/async/context/layout.69e165a7.js.map +1 -0
- package/dist/static/js/async/context/page.d7bb42e1.js +1 -0
- package/dist/static/js/async/context/page.d7bb42e1.js.map +1 -0
- package/dist/static/js/async/overview/page.d26d09d5.js +1 -0
- package/dist/static/js/async/overview/page.d26d09d5.js.map +1 -0
- package/dist/static/js/async/page.3a64325e.js +1 -0
- package/dist/static/js/async/page.3a64325e.js.map +1 -0
- package/dist/static/js/async/pages/layout.45470473.js +1 -0
- package/dist/static/js/async/pages/layout.45470473.js.map +1 -0
- package/dist/static/js/async/pages/page.27267daf.js +1 -0
- package/dist/static/js/async/pages/page.27267daf.js.map +1 -0
- package/dist/static/js/lib-lodash.d4590abd.js +1 -0
- package/dist/static/js/lib-lodash.d4590abd.js.map +1 -0
- package/dist/static/js/lib-polyfill.6e913595.js +1 -0
- package/dist/static/js/lib-polyfill.6e913595.js.map +1 -0
- package/dist/static/js/lib-react.e7e80806.js +1 -0
- package/dist/static/js/{lib-react.be1fdbe9.js.LICENSE.txt → lib-react.e7e80806.js.LICENSE.txt} +11 -1
- package/dist/static/js/lib-react.e7e80806.js.map +1 -0
- package/dist/static/js/lib-router.a49a7033.js +1 -0
- package/dist/static/js/{lib-router.7b48a0f0.js.LICENSE.txt → lib-router.a49a7033.js.LICENSE.txt} +3 -3
- package/dist/static/js/{lib-router.7b48a0f0.js.map → lib-router.a49a7033.js.map} +1 -1
- package/dist/static/js/main.31be2b44.js +1 -0
- package/dist/static/js/main.31be2b44.js.map +1 -0
- package/dist/static/js/vendors~node_modules_pnpm_emotion_styled_11_11_0__emotion_react_11_11_1__types_react_18_0_21_~8b4e97.a3a62da9.js +1 -0
- package/dist/static/js/vendors~node_modules_pnpm_emotion_styled_11_11_0__emotion_react_11_11_1__types_react_18_0_21_~8b4e97.a3a62da9.js.LICENSE.txt +39 -0
- package/dist/static/js/vendors~node_modules_pnpm_emotion_styled_11_11_0__emotion_react_11_11_1__types_react_18_0_21_~8b4e97.a3a62da9.js.map +1 -0
- package/modern.config.ts +42 -3
- package/package.json +28 -8
- package/scripts/build-redirects.js +32 -0
- package/scripts/deploy-netlify.js +0 -0
- package/src/.eslintrc.js +4 -0
- package/src/components/Breadcrumbs.tsx +43 -0
- package/src/components/ObjectInspector.tsx +37 -0
- package/src/constants.tsx +34 -0
- package/src/routes/RootTabs.tsx +148 -0
- package/src/routes/config/builder/resolved/page.tsx +17 -0
- package/src/routes/config/builder/transformed/page.tsx +17 -0
- package/src/routes/config/bundler/resolved/page.tsx +17 -0
- package/src/routes/config/bundler/transformed/page.tsx +17 -0
- package/src/routes/config/framework/resolved/page.tsx +17 -0
- package/src/routes/config/framework/transformed/page.tsx +17 -0
- package/src/routes/config/layout.tsx +68 -0
- package/src/routes/config/page.loader.ts +7 -0
- package/src/routes/config/page.tsx +1 -0
- package/src/routes/context/builder/page.tsx +12 -0
- package/src/routes/context/framework/page.tsx +14 -0
- package/src/routes/context/layout.tsx +38 -0
- package/src/routes/context/page.loader.ts +7 -0
- package/src/routes/context/page.tsx +1 -0
- package/src/routes/layout.css +3 -0
- package/src/routes/layout.tsx +25 -0
- package/src/routes/overview/heading.svg +12 -0
- package/src/routes/overview/page.tsx +122 -0
- package/src/routes/page.loader.ts +7 -0
- package/src/routes/page.tsx +1 -0
- package/src/routes/pages/BaseRoute.tsx +87 -0
- package/src/routes/pages/EntryRoute/ClientRouteStats/ClientRouteStats.tsx +42 -0
- package/src/routes/pages/EntryRoute/ClientRouteStats/LegacyRouteStats.tsx +6 -0
- package/src/routes/pages/EntryRoute/ClientRouteStats/RemixRoute.tsx +85 -0
- package/src/routes/pages/EntryRoute/ClientRouteStats/RemixRouteStats.tsx +44 -0
- package/src/routes/pages/EntryRoute/ClientRouteStats/index.ts +1 -0
- package/src/routes/pages/EntryRoute/EntryRoute.tsx +25 -0
- package/src/routes/pages/EntryRoute/EntryStats.tsx +44 -0
- package/src/routes/pages/EntryRoute/MatchRemixRouteContext.ts +6 -0
- package/src/routes/pages/EntryRoute/index.ts +1 -0
- package/src/routes/pages/MatchUrl.tsx +3 -0
- package/src/routes/pages/ServerRoute.tsx +21 -0
- package/src/routes/pages/UnknownRoute.tsx +20 -0
- package/src/routes/pages/layout.tsx +13 -0
- package/src/routes/pages/page.tsx +54 -0
- package/src/rpc/index.ts +36 -0
- package/src/stores/index.tsx +141 -0
- package/src/types/index.ts +62 -0
- package/src/utils/context.tsx +22 -0
- package/src/utils/hooks.ts +23 -0
- package/src/utils/index.ts +1 -0
- package/dist/html/devtools/index.html +0 -5
- package/dist/static/css/async/devtools_page.215ea1d3.css +0 -1
- package/dist/static/js/async/devtools_page.8337a013.js +0 -1
- package/dist/static/js/async/devtools_page.8337a013.js.map +0 -1
- package/dist/static/js/devtools.56bf0fe9.js +0 -1
- package/dist/static/js/devtools.56bf0fe9.js.map +0 -1
- package/dist/static/js/lib-polyfill.db4711e8.js +0 -1
- package/dist/static/js/lib-polyfill.db4711e8.js.map +0 -1
- package/dist/static/js/lib-react.be1fdbe9.js +0 -1
- package/dist/static/js/lib-react.be1fdbe9.js.map +0 -1
- package/dist/static/js/lib-router.7b48a0f0.js +0 -1
- package/dist/static/js/vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe.2a50a754.js +0 -1
- package/dist/static/js/vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe.2a50a754.js.LICENSE.txt +0 -24
- package/dist/static/js/vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe.2a50a754.js.map +0 -1
- package/src/devtools/routes/index.css +0 -115
- package/src/devtools/routes/layout.tsx +0 -9
- package/src/devtools/routes/page.tsx +0 -19
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import styled from '@emotion/styled';
|
|
2
|
+
import { Box, Text, TextField } from '@radix-ui/themes';
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import { useSnapshot } from 'valtio';
|
|
5
|
+
import { MatchUrlContext } from './MatchUrl';
|
|
6
|
+
import { ServerRoute } from './ServerRoute';
|
|
7
|
+
import { useStore } from '@/stores';
|
|
8
|
+
|
|
9
|
+
const Page: React.FC = () => {
|
|
10
|
+
const $store = useStore();
|
|
11
|
+
const store = useSnapshot($store);
|
|
12
|
+
const { serverRoutes } = store.framework.context;
|
|
13
|
+
|
|
14
|
+
const [testingUrl, setTestingUrl] = useState<string>('');
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<MatchUrlContext.Provider value={testingUrl}>
|
|
18
|
+
<Container>
|
|
19
|
+
<Box>
|
|
20
|
+
<TextField.Root>
|
|
21
|
+
<TextField.Slot>
|
|
22
|
+
<Text size="2">test:</Text>
|
|
23
|
+
</TextField.Slot>
|
|
24
|
+
<TextField.Input
|
|
25
|
+
placeholder="/foo?bar#baz"
|
|
26
|
+
onChange={e => setTestingUrl(e.target.value)}
|
|
27
|
+
type="search"
|
|
28
|
+
autoComplete="false"
|
|
29
|
+
autoCapitalize="false"
|
|
30
|
+
autoCorrect="false"
|
|
31
|
+
/>
|
|
32
|
+
</TextField.Root>
|
|
33
|
+
</Box>
|
|
34
|
+
<Box height="2" />
|
|
35
|
+
<RoutesContainer>
|
|
36
|
+
{serverRoutes.map(route => (
|
|
37
|
+
<ServerRoute key={route.entryPath} route={route} />
|
|
38
|
+
))}
|
|
39
|
+
</RoutesContainer>
|
|
40
|
+
</Container>
|
|
41
|
+
</MatchUrlContext.Provider>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default Page;
|
|
46
|
+
|
|
47
|
+
const Container = styled(Box)({});
|
|
48
|
+
|
|
49
|
+
const RoutesContainer = styled(Box)({
|
|
50
|
+
display: 'flex',
|
|
51
|
+
flexDirection: 'column',
|
|
52
|
+
gap: 'var(--space-2)',
|
|
53
|
+
justifyContent: 'space-between',
|
|
54
|
+
});
|
package/src/rpc/index.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ClientFunctions, ServerFunctions } from '@modern-js/devtools-kit';
|
|
2
|
+
import { createBirpc } from 'birpc';
|
|
3
|
+
import { StoreContextValue } from '@/types';
|
|
4
|
+
|
|
5
|
+
export interface SetupOptions {
|
|
6
|
+
url: string;
|
|
7
|
+
$store: StoreContextValue;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const setupServerConnection = async (options: SetupOptions) => {
|
|
11
|
+
const { url, $store } = options;
|
|
12
|
+
const ws = new window.WebSocket(url);
|
|
13
|
+
|
|
14
|
+
const server = createBirpc<ServerFunctions, ClientFunctions>(
|
|
15
|
+
{
|
|
16
|
+
refresh: () => location.reload(),
|
|
17
|
+
updateFileSystemRoutes({ entrypoint, routes }) {
|
|
18
|
+
$store.framework.fileSystemRoutes[entrypoint.entryName] = routes;
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
post: data => ws.send(data),
|
|
23
|
+
on: cb => (ws.onmessage = cb),
|
|
24
|
+
serialize: v => JSON.stringify(v),
|
|
25
|
+
deserialize: v => JSON.parse(v.data.toString()),
|
|
26
|
+
},
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
await new Promise<void>((resolve, reject) => {
|
|
30
|
+
ws.onopen = () => resolve();
|
|
31
|
+
ws.onerror = () =>
|
|
32
|
+
reject(new Error(`Failed connect to WebSocket server: ${url}`));
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
return { server };
|
|
36
|
+
};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import { FC, ReactElement, createContext, useContext, useMemo } from 'react';
|
|
3
|
+
import { useAsync } from 'react-use';
|
|
4
|
+
import createDeferPromise from 'p-defer';
|
|
5
|
+
import { getQuery } from 'ufo';
|
|
6
|
+
import {
|
|
7
|
+
AppContext,
|
|
8
|
+
BuilderContext,
|
|
9
|
+
TransformedFrameworkConfig,
|
|
10
|
+
FrameworkConfig,
|
|
11
|
+
BuilderConfig,
|
|
12
|
+
NormalizedBuilderConfig,
|
|
13
|
+
BundlerConfig,
|
|
14
|
+
ClientDefinition,
|
|
15
|
+
} from '@modern-js/devtools-kit';
|
|
16
|
+
import { ref, useSnapshot } from 'valtio';
|
|
17
|
+
import { setupServerConnection } from '@/rpc';
|
|
18
|
+
import { useProxyFrom } from '@/utils/hooks';
|
|
19
|
+
import { StoreContextValue } from '@/types';
|
|
20
|
+
import { getDefaultTabs } from '@/constants';
|
|
21
|
+
|
|
22
|
+
const StoreContext = createContext<unknown>(null);
|
|
23
|
+
|
|
24
|
+
const getDataSource = () => {
|
|
25
|
+
const src =
|
|
26
|
+
getQuery(location.href).src ||
|
|
27
|
+
sessionStorage.getItem('devtools-data-source');
|
|
28
|
+
if (!_.isString(src)) {
|
|
29
|
+
throw new TypeError(`Can't connection to data source: ${src || '<EMPTY>'}`);
|
|
30
|
+
}
|
|
31
|
+
sessionStorage.setItem('devtools-data-source', src);
|
|
32
|
+
return src;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const createDeferredTasks = () => ({
|
|
36
|
+
framework: {
|
|
37
|
+
context: createDeferPromise<AppContext>(),
|
|
38
|
+
config: {
|
|
39
|
+
resolved: createDeferPromise<FrameworkConfig>(),
|
|
40
|
+
transformed: createDeferPromise<TransformedFrameworkConfig>(),
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
builder: {
|
|
44
|
+
context: createDeferPromise<BuilderContext>(),
|
|
45
|
+
config: {
|
|
46
|
+
resolved: createDeferPromise<BuilderConfig>(),
|
|
47
|
+
transformed: createDeferPromise<NormalizedBuilderConfig>(),
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
bundler: {
|
|
51
|
+
config: {
|
|
52
|
+
resolved: createDeferPromise<BundlerConfig[]>(),
|
|
53
|
+
transformed: createDeferPromise<BundlerConfig[]>(),
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
dependencies: createDeferPromise<Record<string, string>>(),
|
|
57
|
+
compileTimeCost: createDeferPromise<number>(),
|
|
58
|
+
clientDefinition: createDeferPromise<ClientDefinition>(),
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
export const StoreContextProvider: FC<{ children: ReactElement }> = ({
|
|
62
|
+
children,
|
|
63
|
+
}) => {
|
|
64
|
+
const dataSource = useMemo(getDataSource, []);
|
|
65
|
+
const deferred = useMemo(createDeferredTasks, []);
|
|
66
|
+
|
|
67
|
+
const $store = useProxyFrom<StoreContextValue>(() => ({
|
|
68
|
+
dataSource,
|
|
69
|
+
location: '/',
|
|
70
|
+
framework: {
|
|
71
|
+
context: deferred.framework.context.promise,
|
|
72
|
+
fileSystemRoutes: {},
|
|
73
|
+
config: {
|
|
74
|
+
resolved: deferred.framework.config.resolved.promise,
|
|
75
|
+
transformed: deferred.framework.config.transformed.promise,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
builder: {
|
|
79
|
+
context: deferred.builder.context.promise,
|
|
80
|
+
config: {
|
|
81
|
+
resolved: deferred.builder.config.resolved.promise,
|
|
82
|
+
transformed: deferred.builder.config.transformed.promise,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
bundler: {
|
|
86
|
+
config: {
|
|
87
|
+
resolved: deferred.bundler.config.resolved.promise,
|
|
88
|
+
transformed: deferred.bundler.config.transformed.promise,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
tabs: getDefaultTabs().map(tab => ref(tab)),
|
|
92
|
+
version: process.env.PKG_VERSION!,
|
|
93
|
+
dependencies: deferred.dependencies.promise,
|
|
94
|
+
compileTimeCost: deferred.compileTimeCost.promise,
|
|
95
|
+
name: deferred.clientDefinition.promise.then(def => def.name),
|
|
96
|
+
packages: deferred.clientDefinition.promise.then(def => def.packages),
|
|
97
|
+
assets: deferred.clientDefinition.promise.then(def => def.assets),
|
|
98
|
+
}));
|
|
99
|
+
|
|
100
|
+
useAsync(async () => {
|
|
101
|
+
const { server } = await setupServerConnection({ url: dataSource, $store });
|
|
102
|
+
|
|
103
|
+
deferred.framework.context.resolve(server.getAppContext());
|
|
104
|
+
deferred.framework.config.resolved.resolve(server.getFrameworkConfig());
|
|
105
|
+
deferred.framework.config.transformed.resolve(
|
|
106
|
+
server.getTransformedFrameworkConfig(),
|
|
107
|
+
);
|
|
108
|
+
deferred.builder.context.resolve(server.getBuilderContext());
|
|
109
|
+
deferred.builder.config.resolved.resolve(server.getBuilderConfig());
|
|
110
|
+
deferred.builder.config.transformed.resolve(
|
|
111
|
+
server.getTransformedBuilderConfig(),
|
|
112
|
+
);
|
|
113
|
+
deferred.bundler.config.resolved.resolve(server.getBundlerConfigs());
|
|
114
|
+
deferred.bundler.config.transformed.resolve(
|
|
115
|
+
server.getTransformedBundlerConfigs(),
|
|
116
|
+
);
|
|
117
|
+
deferred.dependencies.resolve(server.getDependencies());
|
|
118
|
+
deferred.compileTimeCost.resolve(server.getCompileTimeCost());
|
|
119
|
+
deferred.clientDefinition.resolve(server.getClientDefinition());
|
|
120
|
+
|
|
121
|
+
const ctx = await $store.framework.context;
|
|
122
|
+
for (const { entryName } of ctx.entrypoints) {
|
|
123
|
+
$store.framework.fileSystemRoutes[entryName] =
|
|
124
|
+
server.getFileSystemRoutes(entryName);
|
|
125
|
+
}
|
|
126
|
+
}, [dataSource, deferred]);
|
|
127
|
+
|
|
128
|
+
return (
|
|
129
|
+
<StoreContext.Provider value={$store}>{children}</StoreContext.Provider>
|
|
130
|
+
);
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export const useStore = () => {
|
|
134
|
+
const ctx = useContext(StoreContext);
|
|
135
|
+
if (!ctx) {
|
|
136
|
+
throw new Error("Can't resolve the context of global store.");
|
|
137
|
+
}
|
|
138
|
+
return ctx as StoreContextValue;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export const useStoreSnapshot = () => useSnapshot(useStore());
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AppContext,
|
|
3
|
+
AssetDefinition,
|
|
4
|
+
BuilderConfig,
|
|
5
|
+
BuilderContext,
|
|
6
|
+
BundlerConfig,
|
|
7
|
+
CustomTabView,
|
|
8
|
+
FileSystemRoutes,
|
|
9
|
+
NameDefinition,
|
|
10
|
+
NormalizedBuilderConfig,
|
|
11
|
+
PackageDefinition,
|
|
12
|
+
TransformedFrameworkConfig,
|
|
13
|
+
} from '@modern-js/devtools-kit';
|
|
14
|
+
import { FrameworkConfig } from '@modern-js/devtools-kit';
|
|
15
|
+
import { ReactElement } from 'react';
|
|
16
|
+
import { Promisable } from 'type-fest';
|
|
17
|
+
|
|
18
|
+
export interface StoreContextValue {
|
|
19
|
+
dataSource: string;
|
|
20
|
+
framework: {
|
|
21
|
+
context: Promise<AppContext>;
|
|
22
|
+
fileSystemRoutes: Record<string, Promisable<FileSystemRoutes>>;
|
|
23
|
+
config: {
|
|
24
|
+
resolved: Promise<FrameworkConfig>;
|
|
25
|
+
transformed: Promise<TransformedFrameworkConfig>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
builder: {
|
|
29
|
+
context: Promise<BuilderContext>;
|
|
30
|
+
config: {
|
|
31
|
+
resolved: Promise<BuilderConfig>;
|
|
32
|
+
transformed: Promise<NormalizedBuilderConfig>;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
bundler: {
|
|
36
|
+
config: {
|
|
37
|
+
resolved: Promise<BundlerConfig[]>;
|
|
38
|
+
transformed: Promise<BundlerConfig[]>;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
tabs: InternalTab[];
|
|
42
|
+
version: string;
|
|
43
|
+
dependencies: Promise<Record<string, string>>;
|
|
44
|
+
compileTimeCost: Promise<number>;
|
|
45
|
+
name: Promise<NameDefinition>;
|
|
46
|
+
packages: Promise<PackageDefinition>;
|
|
47
|
+
assets: Promise<AssetDefinition>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface BuiltinTabView {
|
|
51
|
+
type: 'builtin';
|
|
52
|
+
url: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type InternalTabView = CustomTabView | BuiltinTabView;
|
|
56
|
+
|
|
57
|
+
export interface InternalTab {
|
|
58
|
+
name: string;
|
|
59
|
+
title: string;
|
|
60
|
+
view: InternalTabView;
|
|
61
|
+
icon?: ReactElement;
|
|
62
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createContext, FC, useContext, useMemo } from 'react';
|
|
2
|
+
import { proxy } from 'valtio';
|
|
3
|
+
import { Promisable } from 'type-fest';
|
|
4
|
+
|
|
5
|
+
export function createStoreContext<T extends object>(
|
|
6
|
+
initializer: () => Promisable<T>,
|
|
7
|
+
) {
|
|
8
|
+
const InnerContext = createContext<unknown>(null);
|
|
9
|
+
const Provider: FC<{ children: React.ReactElement }> = ({ children }) => {
|
|
10
|
+
const _value = useMemo(() => initializer(), []);
|
|
11
|
+
return (
|
|
12
|
+
<InnerContext.Provider value={proxy(_value)}>
|
|
13
|
+
{children}
|
|
14
|
+
</InnerContext.Provider>
|
|
15
|
+
);
|
|
16
|
+
};
|
|
17
|
+
const _use = () => useContext(InnerContext) as T;
|
|
18
|
+
return {
|
|
19
|
+
Provider,
|
|
20
|
+
use: _use,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import React, { useMemo } from 'react';
|
|
3
|
+
import { proxy, useSnapshot } from 'valtio';
|
|
4
|
+
|
|
5
|
+
export const useProxyFrom = <T extends object>(initializer: () => T) => {
|
|
6
|
+
return useMemo(() => proxy(initializer()), []);
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const useStoreMap = <T extends object, P extends keyof T>(
|
|
10
|
+
arr: T[],
|
|
11
|
+
keyProp?: P,
|
|
12
|
+
): [React.Key, T][] => {
|
|
13
|
+
const prop = keyProp ?? 'key';
|
|
14
|
+
const pairs = useSnapshot(arr).map(i => {
|
|
15
|
+
const key = (i as any)[prop];
|
|
16
|
+
if (_.isString(key) || _.isNumber(key)) {
|
|
17
|
+
return [key, proxy(i)] as [React.Key, T];
|
|
18
|
+
} else {
|
|
19
|
+
throw new TypeError(`Can't found correct key field.`);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return pairs;
|
|
23
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './context';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no,viewport-fit=cover,minimum-scale=1,maximum-scale=1,user-scalable=no"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="renderer" content="webkit"><meta name="layoutmode" content="standard"><meta name="imagemode" content="force"><meta name="wap-font-scale" content="no"><meta name="format-detection" content="telephone=no"><title></title><script defer="defer">!function(){var e,t,r,n,o,i,a,u,l,s,c={},d={};function f(e){var t=d[e];if(void 0!==t)return t.exports;var r=d[e]={exports:{}};return c[e](r,r.exports,f),r.exports}f.m=c,f.es=function(e,t){return Object.keys(e).forEach((function(r){"default"!==r&&!Object.prototype.hasOwnProperty.call(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})})),e},e={30251:["devtools_page","vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe"]},f.el=function(t){var r=e[t];return void 0===r?Promise.resolve():r.length>1?Promise.all(r.map(f.e)):f.e(r[0])},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,r){return f.f[r](e,t),t}),[]))},f.p="/",f.u=function(e){return{devtools_page:"static/js/async/devtools_page.8337a013.js"}[e]},f.k=function(e){return{devtools_page:"static/css/async/devtools_page.215ea1d3.css"}[e]},t={},f.l=function(e,r,n,o){if(t[e])t[e].push(r);else{if(void 0!==n)for(var i,a,u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var s=u[l];if(s.getAttribute("src")==e){i=s;break}}!i&&(a=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,i.src=e),t[e]=[r];var c=function(r,n){i.onerror=i.onload=null,clearTimeout(d);var o=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((function(e){return e(n)})),r)return r(n)},d=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),a&&document.head.appendChild(i)}},f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r=[],f.O=function(e,t,n,o){if(!t){var i=1/0;for(s=0;s<r.length;s++){t=r[s][0],n=r[s][1],o=r[s][2];for(var a=!0,u=0;u<t.length;u++)i>=o&&Object.keys(f.O).every((function(e){return f.O[e](t[u])}))?t.splice(u--,1):(a=!1,o<i&&(i=o));if(a){r.splice(s--,1);var l=n();void 0!==l&&(e=l)}}return e}o=o||0;for(var s=r.length;s>0&&r[s-1][2]>o;s--)r[s]=r[s-1];r[s]=[t,n,o]},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.d=function(e,t){for(var r in t)f.o(t,r)&&!f.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.n=function(e){return e&&e.__esModule?e.default:e},n={},o="webpack",i="data-webpack-loading",a=function(e,t,r,n){var a,u,l="chunk-"+e;if(!n){for(var s=document.getElementsByTagName("link"),c=0;c<s.length;c++){var d=s[c],p=d.getAttribute("href")||d.href;if(p&&!p.startsWith(f.p)&&(p=f.p+(p.startsWith("/")?p.slice(1):p)),"stylesheet"==d.rel&&(p&&p.startsWith(t)||d.getAttribute("data-webpack")==o+":"+l)){a=d;break}}if(!r)return a}!a&&(u=!0,(a=document.createElement("link")).setAttribute("data-webpack",o+":"+l),a.setAttribute(i,1),a.rel="stylesheet",a.href=t);var v=function(e,t){if(a.onerror=a.onload=null,a.removeAttribute(i),clearTimeout(m),t&&"load"!=t.type&&a.parentNode.removeChild(a),r(t),e)return e(t)};if(a.getAttribute(i)){var m=setTimeout(v.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=v.bind(null,a.onerror),a.onload=v.bind(null,a.onload)}else v(void 0,{type:"load",target:a});return n?n.parentNode.insertBefore(a,n):u&&document.head.appendChild(a),a},f.f.css=function(e,t){var r=f.o(n,e)?n[e]:void 0;if(0!==r)if(r)t.push(r[2]);else if(["devtools_page"].indexOf(e)>-1){var o=new Promise((function(t,o){r=n[e]=[t,o]}));t.push(r[2]=o);var i=f.p+f.k(e),u=Error();a(e,i,(function(t){if(f.o(n,e)&&(0!==(r=n[e])&&(n[e]=void 0),r))if("load"!==t.type){var o=t&&t.type,i=t&&t.target&&t.target.src;u.message="Loading css chunk "+e+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,r[1](u)}else r[0]()}))}else n[e]=0},u={"builder-runtime":0},f.f.j=function(e,t){var r=f.o(u,e)?u[e]:void 0;if(0!==r)if(r)t.push(r[2]);else if(e){var n=new Promise((function(t,n){r=u[e]=[t,n]}));t.push(r[2]=n);var o=f.p+f.u(e),i=Error();f.l(o,(function(t){if(f.o(u,e)&&(0!==(r=u[e])&&(u[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}}),"chunk-"+e,e)}else u[e]=0},f.O.j=function(e){return 0===u[e]},l=function(e,t){var r,n,o=t[0],i=t[1],a=t[2],l=0;if(o.some((function(e){return 0!==u[e]}))){for(r in i)f.o(i,r)&&(f.m[r]=i[r]);if(a)var s=a(f)}for(e&&e(t);l<o.length;l++)n=o[l],f.o(u,n)&&u[n]&&u[n][0](),u[n]=0;return f.O(s)},(s=self.webpackChunk_modern_js_devtools_client=self.webpackChunk_modern_js_devtools_client||[]).forEach(l.bind(null,0)),s.push=l.bind(null,s.push.bind(s))}()</script><script >
|
|
2
|
-
;(function(){
|
|
3
|
-
window._MODERNJS_ROUTE_MANIFEST = {"routeAssets":{"devtools":{"chunkIds":["builder-runtime","lib-react","lib-polyfill","lib-router","vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe","devtools"],"assets":["static/js/lib-react.be1fdbe9.js","static/js/lib-polyfill.db4711e8.js","static/js/lib-router.7b48a0f0.js","static/js/vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe.2a50a754.js","static/js/devtools.56bf0fe9.js"],"referenceCssAssets":[]},"devtools_page":{"chunkIds":["vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe","devtools_page"],"assets":["static/js/vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe.2a50a754.js","static/js/async/devtools_page.8337a013.js","static/css/async/devtools_page.215ea1d3.css"],"referenceCssAssets":["static/css/async/devtools_page.215ea1d3.css"]}}};
|
|
4
|
-
})();
|
|
5
|
-
</script><script defer="defer" src="/static/js/lib-react.be1fdbe9.js"></script><script defer="defer" src="/static/js/lib-polyfill.db4711e8.js"></script><script defer="defer" src="/static/js/lib-router.7b48a0f0.js"></script><script defer="defer" src="/static/js/vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe.2a50a754.js"></script><script defer="defer" src="/static/js/devtools.56bf0fe9.js"></script></head><body><div id="root"><!--<?- html ?>--></div><!--<?- chunksMap.js ?>--><!--<?- SSRDataScript ?>--></body></html>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
html,body{padding:0;margin:0;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;background:linear-gradient(to bottom,transparent,#fff)#eceeef}p{margin:0}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.container-box{min-height:100vh;max-width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;padding-top:10px}main{flex:1 1;display:flex;flex-direction:column;justify-content:center;align-items:center}.title{display:flex;margin:4rem 0;align-items:center;font-size:4rem;font-weight:600}.logo{width:6rem;margin:7px 0 0 1rem}.name{color:#4ecaff}.description{text-align:center;line-height:1.5;font-size:1.3rem;color:#1b3a42;margin-bottom:5rem}.code{background:#fafafa;border-radius:12px;padding:.6rem .9rem;font-size:1.05rem;font-family:Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace}.container-box .grid{display:flex;align-items:center;justify-content:center;width:1100px;margin-top:3rem}.card{padding:1.5rem;display:flex;flex-direction:column;justify-content:center;height:100px;color:inherit;text-decoration:none;transition:.15s ease;width:45%}.card:hover,.card:focus{transform:scale(1.05)}.card h2{display:flex;align-items:center;font-size:1.5rem;margin:0;padding:0}.card p{opacity:.6;font-size:.9rem;line-height:1.5;margin-top:1rem}.arrow-right{width:1.3rem;margin-left:.5rem;margin-top:3px}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_modern_js_devtools_client=self.webpackChunk_modern_js_devtools_client||[]).push([["devtools_page"],{38597:function(e,n,s){"use strict";s.r(n);var c=s("61741");s.es(c,n)},94439:function(e,n,s){},30251:function(e,n,s){"use strict";s.r(n),s.d(n,{default:function(){return i}});var c=s("9880"),t=s("38597");s("94439");var i=()=>(0,c.jsxs)("div",{className:"container-box",children:[(0,c.jsx)(t.Helmet,{children:(0,c.jsx)("link",{rel:"icon",type:"image/x-icon",href:"https://lf3-static.bytednsdoc.com/obj/eden-cn/uhbfnupenuhf/favicon.ico"})}),(0,c.jsx)("main",{children:(0,c.jsx)("div",{className:"title",children:"Hello DevTools!"})})]})}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/async/devtools_page.8337a013.js","sources":["./src/devtools/routes/page.tsx"],"sourcesContent":["import{Helmet}from'@modern-js/runtime/head';import'./index.css';const Index=()=><div className=\"container-box\">\n <Helmet>\n <link rel=\"icon\"type=\"image/x-icon\"href=\"https://lf3-static.bytednsdoc.com/obj/eden-cn/uhbfnupenuhf/favicon.ico\"/>\n </Helmet>\n <main>\n <div className=\"title\">Hello DevTools!</div>\n </main>\n </div>;export default Index;"],"names":["className","Helmet","rel","type","href"],"mappings":"6UAOS,MAPmE,IAAI,WAAC,OAAIA,UAAU,gB,UAC3F,UAAC,EAAAC,MAAM,E,SACL,UAAC,QAAKC,IAAI,OAAMC,KAAK,eAAcC,KAAK,wE,KAE1C,UAAC,Q,SACC,UAAC,OAAIJ,UAAU,Q,SAAQ,iB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_modern_js_devtools_client=self.webpackChunk_modern_js_devtools_client||[]).push([["devtools"],{67271:function(n,r,t){"use strict";t.r(r),t.d(r,{createApp:function(){return x},bootstrap:function(){return E}});var e,o=t("61078"),u=t("20891"),i=t("15169"),a=t("85056"),c=t("93160"),l=t("73706"),s=t("9880"),f=t("57814"),d=t.n(f),p=t("99428"),v=t.n(p),_=t("47328"),h=t("38338"),m=t("31971"),g=t("97511"),y=new WeakMap,R=function(n){return{loaderManager:(0,g.createLoaderManager)({}),runner:n,isBrowser:!0,routeManifest:"undefined"!=typeof window&&window[_.ROUTE_MANIFEST]}},x=function(n){var r=n.plugins,t=n.props,e=m.runtime.clone();return e.usePlugin.apply(e,(0,c._)(r)),function(n){var r=e.init(),o=function(t){var e,o=d.createElement(n||d.Fragment,n?(0,i._)({},t):null,n?t.children:d.cloneElement(t.children,(0,i._)({},null===(e=t.children)||void 0===e?void 0:e.props,t))),u=(0,f.useContext)(h.RuntimeReactContext);return r.provide({element:o,props:(0,i._)({},t),context:u},{onLast:function(n){return n.element}})};n&&v(o,n);var u=r.hoc({App:o},{onLast:function(n){var e=n.App;return v(function(n){var o,u=n.context,c=(0,a._)(n,["context"]),l=u;!(null===(o=l)||void 0===o?void 0:o.runner)&&(l=R(r),r.init({context:l},{onLast:function(n){var r,t=n.context;return null==e?void 0:null===(r=e.init)||void 0===r?void 0:r.call(e,t)}}));var f=(0,i._)({},c,t);return(0,s.jsx)(h.RuntimeReactContext.Provider,{value:l,children:(0,s.jsx)(e,(0,i._)({},f))})},e)}});return y.set(u,r),u}};var E=(e=(0,o._)(function(n,r,t,e){var o,a,c,s,f,p,v,_,h,m,E,b,w,A,j,O,L,M;return(0,l._)(this,function(l){switch(l.label){case 0:var S;if(o=n,!(a=y.get(o))&&(o=x({plugins:[]})(o),a=y.get(o)),c=R(a),s=function(n){return a.init({context:n},{onLast:function(n){var r,t,e=n.context;return null===(t=o)||void 0===t?void 0:null===(r=t.init)||void 0===r?void 0:r.call(t,e)}})},!r)return[2,d.createElement(o,{context:c})];if(!("undefined"!=typeof window&&"nodejs"!==window.name))return[3,4];if(!("string"==typeof(S=r)||"undefined"!=typeof HTMLElement&&(0,u._)(S,HTMLElement)))return[3,2];return b=Object.keys(E=(null===(p=m=window._SSR_DATA)||void 0===p?void 0:null===(f=p.data)||void 0===f?void 0:f.loadersData)||{}).reduce(function(n,r){var t=E[r];return!1!==t.loading?n:(n[r]=t,n)},{}),Object.assign(c,(0,i._)({loaderManager:(0,g.createLoaderManager)(b,{skipStatic:!0})},m?{ssrContext:null===(v=m)||void 0===v?void 0:v.context}:{})),c.initialData=null===(h=m)||void 0===h?void 0:null===(_=h.data)||void 0===_?void 0:_.initialData,[4,s(c)];case 1:if((w=l.sent())&&(c.initialData=w),A="string"!=typeof r?r:document.getElementById(r||"root"),!e)throw Error("The `bootstrap` need provide `ReactDOM` parameter");return j=function(n){if(t)t.render(n);else if(e.createRoot)e.createRoot(A).render(n);else throw Error("The `bootstrap` `ReactDOM` parameter needs to provide the `createRoot` method")},O=function(n,r){if(!e.hydrateRoot)throw Error("The `bootstrap` `ReactDOM` parameter needs to provide the `hydrateRoot` method");e.hydrateRoot(A,n)},[2,a.client({App:o,context:c,ModernRender:j,ModernHydrate:O},{onLast:function(n){var r=n.App;j(d.createElement(r,{context:c}))}})];case 2:throw Error("`bootstrap` needs id in browser environment, it needs to be string or element");case 3:return[3,6];case 4:return Object.assign(c,{ssrContext:r,isBrowser:!1,loaderManager:(0,g.createLoaderManager)({},{skipNonStatic:r.staticGenerate,skipStatic:!r.staticGenerate})}),L=function(n){if("undefined"!=typeof Response&&(0,u._)(n,Response)&&n.status>=300&&n.status<=399){var r=n.status,t=n.headers.get("Location")||"/",e=c.ssrContext;return e&&(e.res.statusCode=r,e.res.setHeader("Location",t),e.redirection=e.redirection||{},e.redirection.status=r,e.redirection.url=t),!0}return!1},[4,s(c)];case 5:if(!L(M=l.sent()))return c.initialData=M,[2,a.server({App:o,context:c})];l.label=6;case 6:return[2]}})}),function(n,r,t,o){return e.apply(this,arguments)})},17500:function(n,r,t){"use strict";t.r(r),t.d(r,{RuntimeReactContext:function(){return o.RuntimeReactContext}});var e=t("67271");t.es(e,r);var o=t("38338"),u=t("89323");t.es(u,r)},97511:function(n,r,t){"use strict";t.r(r),t.d(r,{createLoaderManager:function(){return v}});var e,o,u=t("61078"),i=t("20891"),a=t("28003"),c=t("93160"),l=t("73706"),s=t("44463"),f=t.n(s),d=function(){var n=new Map;return function(r){var t=n.get(r);if(t)return t;var e=JSON.stringify(r);return f(e,"params should be not null value"),n.set(r,e),e}};(e=o||(o={}))[e.idle=0]="idle",e[e.loading=1]="loading",e[e.fulfilled=2]="fulfilled",e[e.rejected=3]="rejected";var p=function(n){var r,t,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{loading:!1,reloading:!1,data:void 0,error:void 0},a=arguments.length>2?arguments[2]:void 0,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],f=o.idle,d=e.data,p=e.error,v=!1,_=new Set;var h=(r=(0,u._)(function(){return(0,l._)(this,function(n){return s||f===o.loading?[2,t]:(f=o.loading,g(),[2,t=a().then(function(n){d=n,p=null,f=o.fulfilled}).catch(function(n){p=n,d=null,f=o.rejected}).finally(function(){t=null,v=!0,g()})])})}),function(){return r.apply(this,arguments)}),m=function(){return{loading:!v&&f===o.loading,reloading:v&&f===o.loading,data:d,error:(0,i._)(p,Error)?"".concat(p.message):p,_error:p}},g=function(){(0,c._)(_).forEach(function(n){n(f,m())})};return{get result(){return m()},get promise(){return t},onChange:function(n){return _.add(n),function(){_.delete(n)}},load:h}},v=function(n){var r,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=t.skipStatic,o=void 0!==e&&e,c=t.skipNonStatic,s=void 0!==c&&c,f=new Map,v=d();return{hasPendingLoaders:function(){var n=!0,r=!1,t=void 0;try{for(var e,o=f.values()[Symbol.iterator]();!(n=(e=o.next()).done);n=!0){var u=e.value.promise;if((0,i._)(u,Promise))return!0}}catch(n){r=!0,t=n}finally{try{!n&&null!=o.return&&o.return()}finally{if(r)throw t}}return!1},awaitPendingLoaders:(r=(0,u._)(function(){var n,r,t,e,o,u,c,s,d,p;return(0,l._)(this,function(l){switch(l.label){case 0:n=[],r=!0,t=!1,e=void 0;try{for(o=f[Symbol.iterator]();!(r=(u=o.next()).done);r=!0)s=(c=(0,a._)(u.value,2))[0],p=(d=c[1]).promise,(0,i._)(p,Promise)&&n.push([s,d])}catch(n){t=!0,e=n}finally{try{!r&&null!=o.return&&o.return()}finally{if(t)throw e}}return[4,Promise.all(n.map(function(n){return n[1].promise}))];case 1:return l.sent(),[2,n.reduce(function(n,r){var t=(0,a._)(r,2),e=t[0],o=t[1];return n[e]=o.result,n},{})]}})}),function(){return r.apply(this,arguments)}),add:function(r,t){var e=v(t.params),u=f.get(e),i=t._cache;if(!u||!1===i){var a=s&&!t.static,c=o&&t.static,l=a||c;u=p(e,void 0!==n[e]?n[e]:{data:t.initialData},r,l),f.set(e,u)}return e},get:function(n){return f.get(n)}}}},31971:function(n,r,t){"use strict";t.r(r),t.d(r,{runtime:function(){return u}});var e=t("89323"),o={hoc:(0,e.createPipeline)(),provide:(0,e.createPipeline)(),client:(0,e.createAsyncPipeline)(),server:(0,e.createAsyncPipeline)(),init:(0,e.createAsyncPipeline)(),pickContext:(0,e.createPipeline)()},u=(0,e.createManager)(o);u.createPlugin},71300:function(n,r,t){"use strict";t.r(r),t.d(r,{createApp:function(){return e.createApp},bootstrap:function(){return e.bootstrap}});var e=t("17500")},71593:function(n,r,t){"use strict";t.r(r),t.d(r,{default:function(){return e.default}});var e=t("94552");t.es(e,r)},75949:function(n,r,t){"use strict";t.r(r),t.d(r,{DefaultNotFound:function(){return o}});var e=t("9880"),o=function(){return(0,e.jsx)("div",{style:{margin:"150px auto",textAlign:"center",display:"flex",alignItems:"center",justifyContent:"center"},children:"404"})}},90208:function(n,r,t){"use strict";function e(){return null}t.r(r),t.d(r,{default:function(){return e}})},87872:function(n,r,t){"use strict";t.r(r),t.d(r,{modifyRoutes:function(){return e}});var e=(0,t("89323").createWaterfall)()},94552:function(n,r,t){"use strict";t.r(r),t.d(r,{Outlet:function(){return o.Outlet}}),t.d(r,{default:function(){return u}});var e=t("96856"),o=t("11275"),u=e.routerPlugin},96856:function(n,r,t){"use strict";t.r(r),t.d(r,{routerPlugin:function(){return m}});var e=t("15169"),o=t("43932"),u=t("93160"),i=t("9880"),a=t("57814"),c=t("11275"),l=t("99428"),s=t.n(l),f=t("58579"),d=t("17500"),p=t("87872"),v=t("40318"),_={routes:[]},h=!0,m=function(n){var r=n.serverBase,t=void 0===r?[]:r,l=n.supportHtml5History,h=void 0===l||l,m=n.basename,g=void 0===m?"":m,y=n.routesConfig,R=n.createRoutes,x=[];return _=y,window._SERVER_DATA=(0,f.parsedJSONFromElement)("__MODERN_SERVER_DATA__"),{name:"@modern-js/plugin-router",registerHook:{modifyRoutes:p.modifyRoutes},setup:function(n){return{init:function(n,r){var t=n.context;return t.router={useMatches:c.useMatches,useLocation:c.useLocation},Object.defineProperty(t,"routes",{get:function(){return x}}),r({context:t})},hoc:function(r,l){var f,p=r.App;if(!_&&!R)return l({App:p});var m=(f=function(r){var i,l,s=(null===(l=window._SERVER_DATA)||void 0===l?void 0:l.router.baseUrl)||(i=location.pathname,t.find(function(n){return 0===i.search(n)})||"/"),f="/"===s?(0,v.urlJoin)(s,g):s,p=window._ROUTER_DATA,m=(0,a.useContext)(d.RuntimeReactContext),y=m.unstable_getBlockNavState;return(0,a.useMemo)(function(){(null===(t=p)||void 0===t?void 0:t.errors)&&(p=(0,o._)((0,e._)({},p),{errors:(0,v.deserializeErrors)(p.errors)})),x=R?R():(0,c.createRoutesFromElements)((0,v.renderRoutes)({routesConfig:_,props:r})),x=n.useHookRunners().modifyRoutes(x);var t,i=h?(0,c.createBrowserRouter)(x,{basename:f,hydrationData:p}):(0,c.createHashRouter)(x,{basename:f,hydrationData:p}),a=i.subscribe;return i.subscribe=function(n){return a(function(){for(var r=arguments.length,t=Array(r),e=0;e<r;e++)t[e]=arguments[e];if(!(y&&y()))return n.apply(void 0,(0,u._)(t))})},Object.defineProperty(m,"remixRouter",{get:function(){return i},configurable:!0}),i},[_,r,f,p,y])},function(n){var r=f(n);return(0,i.jsx)(p,(0,o._)((0,e._)({},n),{children:(0,i.jsx)(c.RouterProvider,{router:r})}))});return(p&&(m=s(m,p)),null==y?void 0:y.globalApp)?l({App:s(m,y.globalApp)}):l({App:m})},pickContext:function(n,r){var t=n.context,u=n.pickedContext,i=t.remixRouter;if(!i)return r({context:t,pickedContext:u});var a={navigate:i.navigate,get location(){return i.state.location}};return r({context:t,pickedContext:(0,o._)((0,e._)({},u),{router:a})})}}}}}},40318:function(n,r,t){"use strict";t.r(r),t.d(r,{renderRoutes:function(){return d},urlJoin:function(){return p},deserializeErrors:function(){return v}});var e=t("15169"),o=t("85056"),u=t("28003"),i=t("9880"),a=t("11275"),c=t("54700"),l=t("53405"),s=t("75949"),f=t("90208");function d(n){var r=n.routesConfig,t=n.props,u=n.ssrMode,c=n.reporter;if(!r)return null;var d=r.routes,p=r.globalApp;return d?function(n,r){var t=r.globalApp,u=r.ssrMode,c=r.props,d=r.reporter,p=function(n){var r=n.Component,u=(0,o._)(n,["Component"]);return t?(0,i.jsx)(t,(0,e._)({Component:r},u)):(0,i.jsx)(r,(0,e._)({},u))},v=[],_=!0,h=!1,m=void 0;try{for(var g,y=n[Symbol.iterator]();!(_=(g=y.next()).done);_=!0){var R=g.value;if("nested"===R.type){var x=(0,l.renderNestedRoute)(R,{DeferredDataComponent:"stream"===u?f.default:void 0,props:c,reporter:d});v.push(x)}else{var E=(0,i.jsx)(a.Route,{path:R.path,element:(0,i.jsx)(p,{Component:R.component})},R.path);v.push(E)}}}catch(n){h=!0,m=n}finally{try{!_&&null!=y.return&&y.return()}finally{if(h)throw m}}return v.push((0,i.jsx)(a.Route,{path:"*",element:(0,i.jsx)(s.DefaultNotFound,{})},"*")),v}(d,{globalApp:p,ssrMode:u,props:t,reporter:c}):null}var p=function(){for(var n=arguments.length,r=Array(n),t=0;t<n;t++)r[t]=arguments[t];var e=RegExp("".concat("/","{1,}"),"g");return function(n){var r=n;return r&&"string"==typeof r?(r.startsWith(".")&&(r=r.slice(1)),!r.startsWith("/")&&(r="/".concat(r)),r.endsWith("/")&&"/"!==r&&(r=r.slice(0,r.length-1)),r):r}(r.join("/").replace(e,"/"))};function v(n){if(!n)return null;var r=Object.entries(n),t={},e=!0,o=!1,i=void 0;try{for(var a,l=r[Symbol.iterator]();!(e=(a=l.next()).done);e=!0){var s=(0,u._)(a.value,2),f=s[0],d=s[1];if(d&&"RouteErrorResponse"===d.__type)t[f]=new c.ErrorResponse(d.status,d.statusText,d.data,!0===d.internal);else if(d&&"Error"===d.__type){var p=Error(d.message);p.stack=d.stack,t[f]=p}else t[f]=d}}catch(n){o=!0,i=n}finally{try{!e&&null!=l.return&&l.return()}finally{if(o)throw i}}return t}},38338:function(n,r,t){"use strict";t.r(r),t.d(r,{RuntimeReactContext:function(){return o}});var e=t("57814"),o=(0,e.createContext)({});(0,e.createContext)({})},89323:function(n,r,t){"use strict";t.r(r),t.d(r,{createAsyncPipeline:function(){return p},createManager:function(){return I},createPipeline:function(){return d},createWaterfall:function(){return h}});var e=t("37599"),o=t("15169"),u=t("93160"),i=t("43932"),a=t("16584"),c=function(n){var r=function(t,e){return n(t,e,function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e;return r(t+1,n)})};return{start:function(n){return r(0,n)},dispatch:r}},l=function(n){return!!(null==n?void 0:n[s])},s=Symbol.for("MODERN_PIPELINE"),f=function(n){if("function"==typeof n)return n;if(n&&"function"==typeof n.middleware)return n.middleware;throw Error("".concat(n," is not a Middleware"))},d=function(){var n,r=[],t=function(n){return c(function(t,e,o){if(t>=r.length){if(n)return n(e);throw Error("Expect returning a value, but all middlewares just calling next()")}return r[t](e,o)})},o=t(),i=function(n){return n?t(null==n?void 0:n.onLast):o},a=function(n,r){return i(r).start(n)},l=(n={},(0,e._)(n,s,!0),(0,e._)(n,"use",function(){for(var n=arguments.length,t=Array(n),e=0;e<n;e++)t[e]=arguments[e];return r.push.apply(r,(0,u._)(t.map(f))),l}),(0,e._)(n,"run",a),(0,e._)(n,"middleware",function(n,r){return a(n,{onLast:r})}),n);return l},p=function(){var n=d();return(0,o._)({},n)},v=Symbol.for("MODERN_WATERFALL"),_=function(n){if("function"==typeof n)return n;if(n&&"function"==typeof n.middleware)return n.middleware;throw Error("".concat(n," is not a Brook or { brook: Brook }"))},h=function(){var n=d(),r=(0,i._)((0,o._)({},n),(0,e._)({use:function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];return n.use.apply(n,(0,u._)(e.map(_).map(g))),r},run:function(r,t){return n.run(r,(0,i._)((0,o._)({},t),{onLast:function(n){return n}}))},middleware:function(r){return n.run(r,{onLast:function(n){return n}})}},v,!0));return r},m=function(n){return!!(null==n?void 0:n[v])},g=function(n){return function(r,t){return t(n(r))}},y=Symbol.for("MODERN_ASYNC_WATERFALL"),R=function(n){if("function"==typeof n)return n;if(n&&"function"==typeof n.middleware)return n.middleware;throw Error("".concat(n," is not a AsyncBrook or { brook: AsyncBrook }"))},x=function(){var n=p(),r=(0,i._)((0,o._)({},n),(0,e._)({use:function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];return n.use.apply(n,(0,u._)(e.map(R).map(b))),r},run:function(r,t){return n.run(r,(0,i._)((0,o._)({},t),{onLast:function(n){return n}}))},middleware:function(r){return n.run(r,{onLast:function(n){return n}})}},y,!0));return r},E=function(n){return!!(null==n?void 0:n[y])},b=function(n){return function(r,t){return Promise.resolve(n(r)).then(function(n){return t(n)})}},w=Symbol.for("MODERN_WORKFLOW"),A=function(){var n=d(),r=(0,i._)((0,o._)({},n),(0,e._)({use:function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];return n.use.apply(n,(0,u._)(e.map(O))),r},run:function(r){return n.run(r,{onLast:function(){return[]}}).filter(Boolean)}},w,!0));return r},j=function(n){return!!(null==n?void 0:n[w])},O=function(n){return function(r,t){return[n(r)].concat((0,u._)(t(r)))}},L=Symbol.for("MODERN_PARALLEL_WORKFLOW"),M=function(n){return!!(null==n?void 0:n[L])},S=function(){var n=d(),r=(0,i._)((0,o._)({},n),(0,e._)({run:function(r){return Promise.all(n.run(r,{onLast:function(){return[]}})).then(function(n){return n.filter(Boolean)})},use:function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];return n.use.apply(n,(0,u._)(e.map(P))),r}},L,!0));return r},P=function(n){return function(r,t){return[n(r)].concat((0,u._)(t(r)))}},k=Symbol.for("MODERN_ASYNC_WORKFLOW"),C=function(n){return!!(null==n?void 0:n[k])},D=function(){var n=p(),r=(0,i._)((0,o._)({},n),(0,e._)({use:function(){for(var t=arguments.length,e=Array(t),o=0;o<t;o++)e[o]=arguments[o];return n.use.apply(n,(0,u._)(e.map(N))),r},run:function(r){var t=n.run(r,{onLast:function(){return[]}});return function(n){return n&&"function"==typeof n.then}(t)?t.then(function(n){return n.filter(Boolean)}):t.filter(Boolean)}},k,!0));return r},N=function(n){return function(r,t){return Promise.resolve(n(r)).then(function(n){return Promise.resolve(t(r)).then(function(r){return[n].concat((0,u._)(r))})})}},T=function(n){},B=function(n){return null!==n&&"object"==typeof n},F="SYNC_PLUGIN_SYMBOL",H={name:"untitled",pre:[],post:[],rivals:[],required:[],usePlugins:[],registerHook:{}},I=function(n,r){var t,e=0,u=(0,o._)({},n),c=function(){return t},l=function(n){u=(0,o._)({},n,u)},s=function(n){var r,t;return B(n)&&(r=n,t=F,r.hasOwnProperty(t))&&n[F]===F},f=(0,i._)((0,o._)({},r),{useHookRunners:c}),d=function(n){var r=[],p=function(n){var t,e;if(t=r,e=n,!t.some(function(n){return n.name===e.name}))r.push((0,o._)({},n))},v=function(){for(var n=arguments.length,r=Array(n),t=0;t<n;t++)r[t]=arguments[t];return r.forEach(function(n){if(s(n))p(n);else if("function"==typeof n){var r=n();p(_(r.setup,r))}else B(n)&&p(_(n.setup,n))}),h},_=function(){var n,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(null===(n=t.usePlugins)||void 0===n?void 0:n.length)&&t.usePlugins.forEach(function(n){v(_(n.setup,n))}),t.registerHook&&l(t.registerHook),(0,i._)((0,o._)((0,i._)((0,o._)({},H),{name:"No.".concat(e++," plugin")}),t),{SYNC_PLUGIN_SYMBOL:F,setup:r})},h={createPlugin:_,isPlugin:s,usePlugin:v,init:function(){var e,i=(e=r,(0,a.pluginDagSort)(e.slice())),c=(0,o._)({},f,n);return T(i),t=W(i.map(function(n){return n.setup(c)}),u)},clear:function(){r=[]},run:function(n){return n()},registerHook:l,useRunner:c,clone:d};return h};return d()},W=function(n,r){var t={},e=z(r);if(r){var u=function(r){n.forEach(function(n){(null==n?void 0:n[r])&&e[r].use(n[r])}),t[r]=function(n,t){return e[r].run(n,(0,o._)({},t))}};for(var i in e)u(i)}return t},U=function(n){if(m(n))return h();if(E(n))return x();if(j(n))return A();if(C(n))return D();if(M(n))return S();if(l(n))return d();throw Error("Unknown hook: ".concat(n))},z=function(n){if(!n)return n;var r={};for(var t in n)r[t]=U(n[t]);return r}},58579:function(n,r,t){"use strict";t.r(r);var e=t("58759");t.es(e,r)},58759:function(n,r,t){"use strict";t.r(r),t.d(r,{parsedJSONFromElement:function(){return e}});var e=function(n){var r=document.querySelectorAll("#".concat(n));if(0!==r.length){var t=r[r.length-1];if(t)try{return JSON.parse((null==t?void 0:t.textContent)||"")}catch(r){console.error("parse ".concat(n," error"),r)}}}},53405:function(n,r,t){"use strict";t.r(r),t.d(r,{renderNestedRoute:function(){return d}});var e=t("61078"),o=t("15169"),u=t("43932"),i=t("73706"),a=t("9880"),c=t("57814"),l=t("13721"),s=t("47328"),f=t("35005"),d=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.children,v=n.index,_=n.id,h=n.component,m=n.isRoot,g=n.lazyImport,y=n.config,R=n.handle,x=r.parent,E=r.DeferredDataComponent,b=r.props,w=void 0===b?{}:b,A=r.reporter,j={caseSensitive:n.caseSensitive,path:n.path,id:n.id,loader:function(n,r){var t,o=n.loader;if(!o)return function(){return"function"==typeof n.lazyImport&&n.lazyImport(),null};return t=(0,e._)(function(t){var e,u,a,c;return(0,i._)(this,function(i){switch(i.label){case 0:return"function"==typeof n.lazyImport&&n.lazyImport(),e=(0,f.time)(),[4,o(t)];case 1:return u=i.sent(),a=e(),"undefined"==typeof document&&r&&(null===(c=r)||void 0===c||c.reportTiming("".concat(s.LOADER_REPORTER_NAME,"-").concat(n.id),a)),[2,u]}})}),function(n){return t.apply(this,arguments)}}(n,A),action:n.action,hasErrorBoundary:n.hasErrorBoundary,shouldRevalidate:n.shouldRevalidate,handle:(0,o._)({},R,"object"==typeof y?null==y?void 0:y.handle:{}),index:n.index,element:n.element,errorElement:n.errorElement};if(n.error){var O=(0,a.jsx)(n.error,{});j.errorElement=O}if(h){if((null==x?void 0:x.loading)&&g){var L,M=x.loading;L=p(h)?(0,a.jsx)(h,{fallback:(0,a.jsx)(M,{})}):(0,a.jsx)(c.Suspense,{fallback:(0,a.jsx)(M,{}),children:(0,a.jsx)(h,{})})}else L=p(h)&&g?(0,a.jsx)(h,{}):m?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h,(0,o._)({},w)),"undefined"==typeof document&&E&&(0,a.jsx)(E,{nonce:null==w?void 0:w.nonce})]}):g?(0,a.jsx)(c.Suspense,{fallback:null,children:(0,a.jsx)(h,{})}):(0,a.jsx)(h,{})}else n.loading=null==x?void 0:x.loading,j.element=(0,a.jsx)(l.Outlet,{});L&&(j.element=L);var S=null==t?void 0:t.map(function(r){return d(r,{parent:n,reporter:A})});return v?(0,a.jsx)(l.Route,(0,u._)((0,o._)({},j),{index:!0}),_):(0,a.jsx)(l.Route,(0,u._)((0,o._)({},j),{index:!1,children:S}),_)};function p(n){return n&&"Loadable"===n.displayName&&n.preload&&"function"==typeof n.preload}},54700:function(n,r,t){"use strict";t.r(r);var e=t("15239");t.es(e,r)},11275:function(n,r,t){"use strict";t.r(r);var e=t("13721");t.es(e,r)},47328:function(n,r,t){"use strict";t.r(r),t.d(r,{ROUTE_MANIFEST:function(){return e},LOADER_REPORTER_NAME:function(){return o}});var e="_MODERNJS_ROUTE_MANIFEST",o="server-loader"},16584:function(n,r,t){"use strict";t.r(r),t.d(r,{pluginDagSort:function(){return e}});var e=function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"name",t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"pre",e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"post",o=function(t){var e=n.find(function(n){return"string"==typeof t?n[r]===t:n[r]===t[r]});if(!e)throw Error("plugin ".concat(t," not existed"));return e},u=[];n.forEach(function(i){var a,c;null===(a=i[t])||void 0===a||a.forEach(function(t){n.find(function(n){return n.name===t})&&u.push([o(t)[r],o(i)[r]])}),null===(c=i[e])||void 0===c||c.forEach(function(t){n.find(function(n){return n.name===t})&&u.push([o(i)[r],o(t)[r]])})});for(var i=n.filter(function(n){return!u.find(function(t){return t[1]===n[r]})}),a=[];i.length;)!function(){var t=i.shift();a.push(o(t)),u=u.filter(function(n){return n[0]!==o(t)[r]}),i=n.filter(function(n){return!a.find(function(t){return t[r]===n[r]})}).filter(function(n){return!u.find(function(t){return t[1]===n[r]})})}();if(u.length){var c={};throw u.forEach(function(n){c[n[0]]=!0,c[n[1]]=!0}),Error("plugins dependences has loop: ".concat(Object.keys(c).join(",")))}return a}},35005:function(n,r,t){"use strict";t.r(r),t.d(r,{time:function(){return i}});var e=t("28003");function o(n){var r=.001*new Date().getTime(),t=Math.floor(r),e=Math.floor(r%1*1e9);return n&&(t-=n[0],(e-=n[1])<0&&(t--,e+=1e9)),[t,e]}var u=function(n){var r=(0,e._)(o(n),2);return 1e3*r[0]+r[1]/1e6},i=function(){var n=o();return function(){return u(n)}}},61568:function(n,r,t){"use strict";t.r(r),t.d(r,{default:function(){return u}});var e=t("9880"),o=t("71593");function u(){return(0,e.jsx)("div",{children:(0,e.jsx)(o.Outlet,{})})}}},function(n){var r=function(r){return n(n.s=r)};n.O(0,["lib-polyfill","lib-react","lib-router","vendors~node_modules_pnpm_loadable_component_5_15_3_react_18_2_0_node_modules_loadable_compon~2b20fe"],function(){return r("33802"),r("29051"),r("68924")}),n.O()}]);
|