@modern-js/prod-server 2.40.0 → 2.42.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/dist/cjs/libs/hook-api/index.js +2 -1
- package/dist/cjs/libs/hook-api/index.worker.js +2 -1
- package/dist/cjs/server/modernServer.js +1 -1
- package/dist/cjs/workerServer.js +34 -10
- package/dist/esm/libs/hook-api/index.js +2 -1
- package/dist/esm/libs/hook-api/index.worker.js +2 -1
- package/dist/esm/server/modernServer.js +1 -1
- package/dist/esm/workerServer.js +75 -13
- package/dist/esm-node/libs/hook-api/index.js +2 -1
- package/dist/esm-node/libs/hook-api/index.worker.js +2 -1
- package/dist/esm-node/server/modernServer.js +1 -1
- package/dist/esm-node/workerServer.js +34 -10
- package/dist/types/constants.d.ts +20 -20
- package/dist/types/index.d.ts +1 -1
- package/dist/types/libs/context/context.d.ts +50 -50
- package/dist/types/libs/context/index.d.ts +1 -1
- package/dist/types/libs/hook-api/base.d.ts +43 -43
- package/dist/types/libs/hook-api/index.d.ts +3 -3
- package/dist/types/libs/hook-api/index.worker.d.ts +13 -13
- package/dist/types/libs/hook-api/route.d.ts +8 -8
- package/dist/types/libs/hook-api/template.d.ts +18 -18
- package/dist/types/libs/hook-api/templateForStream.d.ts +6 -11
- package/dist/types/libs/loadConfig.d.ts +5 -9
- package/dist/types/libs/metrics.d.ts +1 -1
- package/dist/types/libs/preload/flushServerHeader.d.ts +6 -12
- package/dist/types/libs/preload/index.d.ts +1 -1
- package/dist/types/libs/preload/parseLinks.d.ts +9 -13
- package/dist/types/libs/preload/shouldFlushServerHeader.d.ts +1 -1
- package/dist/types/libs/preload/transformLinks2String.d.ts +1 -1
- package/dist/types/libs/proxy.d.ts +3 -3
- package/dist/types/libs/render/cache/__tests__/cache.fun.test.d.ts +1 -1
- package/dist/types/libs/render/cache/__tests__/cache.test.d.ts +1 -1
- package/dist/types/libs/render/cache/__tests__/cacheable.d.ts +58 -58
- package/dist/types/libs/render/cache/__tests__/error-configuration.d.ts +23 -23
- package/dist/types/libs/render/cache/__tests__/matched-cache.d.ts +101 -101
- package/dist/types/libs/render/cache/index.d.ts +1 -1
- package/dist/types/libs/render/cache/page-caches/index.d.ts +1 -1
- package/dist/types/libs/render/cache/page-caches/lru.d.ts +12 -12
- package/dist/types/libs/render/cache/spr.d.ts +16 -16
- package/dist/types/libs/render/cache/type.d.ts +33 -33
- package/dist/types/libs/render/cache/util.d.ts +3 -3
- package/dist/types/libs/render/index.d.ts +11 -11
- package/dist/types/libs/render/measure.d.ts +6 -6
- package/dist/types/libs/render/reader.d.ts +13 -13
- package/dist/types/libs/render/ssr.d.ts +9 -9
- package/dist/types/libs/render/static.d.ts +1 -1
- package/dist/types/libs/render/type.d.ts +18 -18
- package/dist/types/libs/render/utils.d.ts +1 -1
- package/dist/types/libs/reporter.d.ts +1 -1
- package/dist/types/libs/route/index.d.ts +10 -10
- package/dist/types/libs/route/matcher.d.ts +12 -12
- package/dist/types/libs/route/route.d.ts +11 -11
- package/dist/types/libs/serveFile.d.ts +3 -3
- package/dist/types/libs/serverTiming.d.ts +8 -8
- package/dist/types/renderHtml.d.ts +15 -15
- package/dist/types/server/index.d.ts +46 -48
- package/dist/types/server/modernServer.d.ts +57 -69
- package/dist/types/server/modernServerSplit.d.ts +1 -1
- package/dist/types/type.d.ts +48 -48
- package/dist/types/utils.d.ts +8 -8
- package/dist/types/workerServer.d.ts +45 -44
- package/package.json +14 -14
|
@@ -1,53 +1,53 @@
|
|
|
1
1
|
import { CookieAPI, Metrics, ModernRequest, ModernResponse, Logger } from '@modern-js/types/server';
|
|
2
2
|
export interface ServerResponseLike {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
statusCode?: number;
|
|
4
|
+
locals?: Record<string, any>;
|
|
5
|
+
getHeader: (key: string) => string | undefined | string[] | number;
|
|
6
|
+
setHeader: (key: string, value: string | number | string[]) => this | void;
|
|
7
|
+
removeHeader: (key: string) => void;
|
|
8
|
+
end: (body: string) => this | void;
|
|
9
9
|
}
|
|
10
10
|
export declare class BaseResponse implements ModernResponse {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
cookies: CookieAPI;
|
|
12
|
+
private res;
|
|
13
|
+
constructor(res: ServerResponseLike);
|
|
14
|
+
get(key: string): string | number | string[] | undefined;
|
|
15
|
+
set(key: string, value: string | number): void | ServerResponseLike;
|
|
16
|
+
status(code: number): void;
|
|
17
|
+
private setCookie;
|
|
18
|
+
private clearCookie;
|
|
19
|
+
raw(body: string, options?: {
|
|
20
|
+
status?: number;
|
|
21
|
+
headers?: Record<string, any>;
|
|
22
|
+
}): void;
|
|
23
23
|
}
|
|
24
24
|
export interface ServerRequestLike {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
url: string;
|
|
26
|
+
host: string;
|
|
27
|
+
path: string;
|
|
28
|
+
query: Record<string, any>;
|
|
29
|
+
headers: Record<string, any>;
|
|
30
30
|
}
|
|
31
31
|
export declare class BaseRequest implements ModernRequest {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
readonly url: string;
|
|
33
|
+
readonly host: string;
|
|
34
|
+
readonly pathname: string;
|
|
35
|
+
readonly query: Record<string, any>;
|
|
36
|
+
readonly headers: Record<string, any>;
|
|
37
|
+
readonly cookie: string;
|
|
38
|
+
cookies: Pick<CookieAPI, 'get'>;
|
|
39
|
+
private _cookie;
|
|
40
|
+
constructor(request: ServerRequestLike);
|
|
41
|
+
private getCookie;
|
|
42
42
|
}
|
|
43
43
|
export interface ServerContextLike {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
44
|
+
res: ServerResponseLike;
|
|
45
|
+
req: any;
|
|
46
|
+
metrics: Metrics;
|
|
47
|
+
logger: Logger;
|
|
48
|
+
url: string;
|
|
49
|
+
host: string;
|
|
50
|
+
path: string;
|
|
51
|
+
query: Record<string, any>;
|
|
52
|
+
headers: Record<string, any>;
|
|
53
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ModernServerContext, HookContext, AfterMatchContext, AfterRenderContext, MiddlewareContext } from '@modern-js/types';
|
|
1
|
+
import type { ModernServerContext, HookContext, AfterMatchContext, AfterRenderContext, MiddlewareContext, ServerRoute } from '@modern-js/types';
|
|
2
2
|
export declare const base: (context: ModernServerContext) => HookContext;
|
|
3
3
|
export declare const createAfterMatchContext: (context: ModernServerContext, entryName: string) => AfterMatchContext;
|
|
4
|
-
export declare const createAfterRenderContext: (context: ModernServerContext, content: string) => AfterRenderContext;
|
|
5
|
-
export declare const createMiddlewareContext: (context: ModernServerContext) => MiddlewareContext;
|
|
4
|
+
export declare const createAfterRenderContext: (context: ModernServerContext, route: Partial<ServerRoute>, content: string) => AfterRenderContext;
|
|
5
|
+
export declare const createMiddlewareContext: (context: ModernServerContext) => MiddlewareContext;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { AfterMatchContext, AfterRenderContext, HookContext, Logger, Metrics, MiddlewareContext, Reporter } from '@modern-js/types/server';
|
|
1
|
+
import { AfterMatchContext, AfterRenderContext, HookContext, Logger, Metrics, MiddlewareContext, Reporter, ServerRoute } from '@modern-js/types/server';
|
|
2
2
|
export interface WorkerResponse {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
headers: Headers;
|
|
4
|
+
status: number;
|
|
5
|
+
isSent: boolean;
|
|
6
|
+
locals?: Record<string, any>;
|
|
7
|
+
body?: string;
|
|
8
8
|
}
|
|
9
9
|
export interface WorkerServerContext {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
res: WorkerResponse;
|
|
11
|
+
req: Request;
|
|
12
|
+
logger: Logger;
|
|
13
|
+
reporter: Reporter;
|
|
14
|
+
metrics: Metrics;
|
|
15
15
|
}
|
|
16
16
|
export declare const base: (context: WorkerServerContext) => HookContext;
|
|
17
17
|
export declare const createAfterMatchContext: (context: WorkerServerContext, entryName: string) => AfterMatchContext;
|
|
18
|
-
export declare const createAfterRenderContext: (context: WorkerServerContext, content: string) => AfterRenderContext;
|
|
19
|
-
export declare const createMiddlewareContext: (context: WorkerServerContext) => MiddlewareContext<'worker'>;
|
|
18
|
+
export declare const createAfterRenderContext: (context: WorkerServerContext, route: Partial<ServerRoute>, content: string) => AfterRenderContext;
|
|
19
|
+
export declare const createMiddlewareContext: (context: WorkerServerContext) => MiddlewareContext<'worker'>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export declare class RouteAPI {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
2
|
+
current: string;
|
|
3
|
+
status: number;
|
|
4
|
+
url: string;
|
|
5
|
+
constructor(entryName: string);
|
|
6
|
+
redirect(url: string, status?: number): void;
|
|
7
|
+
rewrite(entryName: string): void;
|
|
8
|
+
use(entryName: string): void;
|
|
9
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
export declare const RegList: {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
before: {
|
|
3
|
+
head: string;
|
|
4
|
+
body: string;
|
|
5
|
+
};
|
|
6
|
+
after: {
|
|
7
|
+
head: string;
|
|
8
|
+
body: string;
|
|
9
|
+
};
|
|
10
10
|
};
|
|
11
11
|
export declare class TemplateAPI {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
12
|
+
private content;
|
|
13
|
+
constructor(content: string);
|
|
14
|
+
get(): string;
|
|
15
|
+
set(content: string): void;
|
|
16
|
+
prependHead(fragment: string): void;
|
|
17
|
+
appendHead(fragment: string): void;
|
|
18
|
+
prependBody(fragment: string): void;
|
|
19
|
+
appendBody(fragment: string): void;
|
|
20
|
+
private replace;
|
|
21
|
+
}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Transform } from 'stream';
|
|
3
|
-
export declare const templateInjectableStream: ({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
prependHead?: string | undefined;
|
|
10
|
-
appendHead?: string | undefined;
|
|
11
|
-
prependBody?: string | undefined;
|
|
12
|
-
appendBody?: string | undefined;
|
|
13
|
-
}) => Transform;
|
|
3
|
+
export declare const templateInjectableStream: ({ prependHead, appendHead, prependBody, appendBody, }: {
|
|
4
|
+
prependHead?: string | undefined;
|
|
5
|
+
appendHead?: string | undefined;
|
|
6
|
+
prependBody?: string | undefined;
|
|
7
|
+
appendBody?: string | undefined;
|
|
8
|
+
}) => Transform;
|
|
@@ -6,12 +6,8 @@ export declare const requireConfig: (serverConfigPath: string) => any;
|
|
|
6
6
|
* 生产环境下,resolvedConfig 与 serverConfig 进行深合并
|
|
7
7
|
* resolvedConfigPath: 构建序列化后的 modern.config.js 文件路径
|
|
8
8
|
*/
|
|
9
|
-
export declare const loadConfig: ({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
cliConfig: ServerOptions;
|
|
15
|
-
serverConfig: ServerConfig;
|
|
16
|
-
resolvedConfigPath: string;
|
|
17
|
-
}) => any;
|
|
9
|
+
export declare const loadConfig: ({ cliConfig, serverConfig, resolvedConfigPath, }: {
|
|
10
|
+
cliConfig: ServerOptions;
|
|
11
|
+
serverConfig: ServerConfig;
|
|
12
|
+
resolvedConfigPath: string;
|
|
13
|
+
}) => any;
|
|
@@ -3,16 +3,10 @@ import { OutgoingHttpHeaders } from 'http';
|
|
|
3
3
|
import { ServerOptions } from '@modern-js/server-core';
|
|
4
4
|
import { ModernServerContext } from '@modern-js/types';
|
|
5
5
|
export interface FlushServerHeaderOptions {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
ctx: ModernServerContext;
|
|
7
|
+
distDir: string;
|
|
8
|
+
template: string;
|
|
9
|
+
serverConf: ServerOptions['server'];
|
|
10
|
+
headers?: OutgoingHttpHeaders;
|
|
11
11
|
}
|
|
12
|
-
export declare function flushServerHeader({
|
|
13
|
-
serverConf,
|
|
14
|
-
ctx,
|
|
15
|
-
distDir,
|
|
16
|
-
template,
|
|
17
|
-
headers
|
|
18
|
-
}: FlushServerHeaderOptions): Promise<void>;
|
|
12
|
+
export declare function flushServerHeader({ serverConf, ctx, distDir, template, headers, }: FlushServerHeaderOptions): Promise<void>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './parseLinks';
|
|
2
|
-
export * from './flushServerHeader';
|
|
2
|
+
export * from './flushServerHeader';
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
export interface Link {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
uri: string;
|
|
3
|
+
rel?: string;
|
|
4
|
+
as?: 'script' | 'style' | 'image' | 'video' | 'font' | string;
|
|
5
|
+
/** rest str(like attributes) that need add to link */
|
|
6
|
+
rest?: string;
|
|
7
7
|
}
|
|
8
8
|
export interface ParseLinksOptions {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
distDir: string;
|
|
10
|
+
pathname: string;
|
|
11
|
+
template: string;
|
|
12
12
|
}
|
|
13
|
-
export declare function parseLinks({
|
|
14
|
-
pathname,
|
|
15
|
-
distDir,
|
|
16
|
-
template
|
|
17
|
-
}: ParseLinksOptions): Promise<Link[]>;
|
|
13
|
+
export declare function parseLinks({ pathname, distDir, template, }: ParseLinksOptions): Promise<Link[]>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { ServerOptions } from '@modern-js/server-core';
|
|
2
2
|
export declare function transformToRegExp(input: string | RegExp): RegExp;
|
|
3
|
-
export declare function shouldFlushServerHeader(serverConf: ServerOptions['server'], userAgent?: string, disablePreload?: boolean): boolean;
|
|
3
|
+
export declare function shouldFlushServerHeader(serverConf: ServerOptions['server'], userAgent?: string, disablePreload?: boolean): boolean;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { SSRPreload } from '@modern-js/server-core';
|
|
2
2
|
import { Link } from './parseLinks';
|
|
3
|
-
export declare function transformLinks2String(links: Link[], preload: SSRPreload | boolean): string;
|
|
3
|
+
export declare function transformLinks2String(links: Link[], preload: SSRPreload | boolean): string;
|
|
@@ -6,6 +6,6 @@ export type { BffProxyOptions };
|
|
|
6
6
|
export declare function formatProxyOptions(proxyOptions: BffProxyOptions): ProxyDetail[];
|
|
7
7
|
export type HttpUpgradeHandler = NonNullable<RequestHandler['upgrade']>;
|
|
8
8
|
export declare const createProxyHandler: (proxyOptions: BffProxyOptions) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
9
|
+
handlers: ModernServerHandler[];
|
|
10
|
+
handleUpgrade: (server: http.Server) => void;
|
|
11
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1,62 +1,62 @@
|
|
|
1
1
|
export declare const cacheabelAry: ({
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
requestOpt: {
|
|
3
|
+
url: string;
|
|
4
|
+
query?: undefined;
|
|
5
|
+
headers?: undefined;
|
|
6
|
+
};
|
|
7
|
+
cacheConfig: {
|
|
8
|
+
level?: undefined;
|
|
9
|
+
includes?: undefined;
|
|
10
|
+
};
|
|
11
|
+
content: string;
|
|
12
12
|
} | {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
13
|
+
requestOpt: {
|
|
14
|
+
url: string;
|
|
15
|
+
query: {
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
headers?: undefined;
|
|
19
|
+
};
|
|
20
|
+
cacheConfig: {
|
|
21
|
+
level: number;
|
|
22
|
+
includes: {
|
|
23
|
+
query: string[];
|
|
24
|
+
header?: undefined;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
content: string;
|
|
28
28
|
} | {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
29
|
+
requestOpt: {
|
|
30
|
+
url: string;
|
|
31
|
+
headers: {
|
|
32
|
+
age: string;
|
|
33
|
+
};
|
|
34
|
+
query?: undefined;
|
|
35
|
+
};
|
|
36
|
+
cacheConfig: {
|
|
37
|
+
level: number;
|
|
38
|
+
includes: {
|
|
39
|
+
header: string[];
|
|
40
|
+
query?: undefined;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
content: string;
|
|
44
44
|
} | {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
})[];
|
|
45
|
+
requestOpt: {
|
|
46
|
+
url: string;
|
|
47
|
+
query: {
|
|
48
|
+
name: string;
|
|
49
|
+
};
|
|
50
|
+
headers: {
|
|
51
|
+
age: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
cacheConfig: {
|
|
55
|
+
level: number;
|
|
56
|
+
includes: {
|
|
57
|
+
query: string[];
|
|
58
|
+
header: string[];
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
content: string;
|
|
62
|
+
})[];
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
export declare const errorConfiguration: ({
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
level: number;
|
|
3
|
+
includes?: undefined;
|
|
4
4
|
} | {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
level: number;
|
|
6
|
+
includes: {
|
|
7
|
+
query?: undefined;
|
|
8
|
+
header?: undefined;
|
|
9
|
+
};
|
|
10
10
|
} | {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
level: number;
|
|
12
|
+
includes: {
|
|
13
|
+
query: never[];
|
|
14
|
+
header?: undefined;
|
|
15
|
+
};
|
|
16
16
|
} | {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
level: number;
|
|
18
|
+
includes: {
|
|
19
|
+
header: never[];
|
|
20
|
+
query?: undefined;
|
|
21
|
+
};
|
|
22
22
|
} | {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
})[];
|
|
23
|
+
level: number;
|
|
24
|
+
includes: {
|
|
25
|
+
query: never[];
|
|
26
|
+
header: never[];
|
|
27
|
+
};
|
|
28
|
+
})[];
|