@tsed/platform-http 8.0.0-rc.4 → 8.0.0-rc.6
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/lib/esm/common/builder/PlatformBuilder.js +43 -33
- package/lib/esm/common/builder/PlatformBuilder.js.map +1 -1
- package/lib/esm/common/decorators/PlatformProvider.js +6 -2
- package/lib/esm/common/decorators/PlatformProvider.js.map +1 -1
- package/lib/esm/common/domain/PlatformContext.js +5 -4
- package/lib/esm/common/domain/PlatformContext.js.map +1 -1
- package/lib/esm/common/fn/adapter.js +15 -0
- package/lib/esm/common/fn/adapter.js.map +1 -0
- package/lib/esm/common/fn/application.js +9 -0
- package/lib/esm/common/fn/application.js.map +1 -0
- package/lib/esm/common/index.js +3 -1
- package/lib/esm/common/index.js.map +1 -1
- package/lib/esm/common/middlewares/PlatformAcceptMimesMiddleware.js +7 -14
- package/lib/esm/common/middlewares/PlatformAcceptMimesMiddleware.js.map +1 -1
- package/lib/esm/common/middlewares/PlatformMulterMiddleware.js +9 -22
- package/lib/esm/common/middlewares/PlatformMulterMiddleware.js.map +1 -1
- package/lib/esm/common/services/Platform.js +13 -25
- package/lib/esm/common/services/Platform.js.map +1 -1
- package/lib/esm/common/services/PlatformAdapter.js +6 -11
- package/lib/esm/common/services/PlatformAdapter.js.map +1 -1
- package/lib/esm/common/services/PlatformApplication.js +8 -18
- package/lib/esm/common/services/PlatformApplication.js.map +1 -1
- package/lib/esm/common/services/PlatformHandler.js +12 -34
- package/lib/esm/common/services/PlatformHandler.js.map +1 -1
- package/lib/esm/common/services/PlatformMiddlewaresChain.js +8 -20
- package/lib/esm/common/services/PlatformMiddlewaresChain.js.map +1 -1
- package/lib/esm/common/services/PlatformRequest.js +4 -10
- package/lib/esm/common/services/PlatformRequest.js.map +1 -1
- package/lib/esm/common/services/PlatformResponse.js +4 -10
- package/lib/esm/common/services/PlatformResponse.js.map +1 -1
- package/lib/esm/common/utils/createContext.js +5 -5
- package/lib/esm/common/utils/createContext.js.map +1 -1
- package/lib/esm/common/utils/createHttpServer.js +5 -5
- package/lib/esm/common/utils/createHttpServer.js.map +1 -1
- package/lib/esm/common/utils/createHttpsServer.js +5 -5
- package/lib/esm/common/utils/createHttpsServer.js.map +1 -1
- package/lib/esm/common/utils/createInjector.js +2 -2
- package/lib/esm/common/utils/createInjector.js.map +1 -1
- package/lib/esm/common/utils/createServer.js +7 -8
- package/lib/esm/common/utils/createServer.js.map +1 -1
- package/lib/esm/common/utils/resolveControllers.js +48 -0
- package/lib/esm/common/utils/resolveControllers.js.map +1 -0
- package/lib/esm/testing/PlatformTest.js +4 -5
- package/lib/esm/testing/PlatformTest.js.map +1 -1
- package/lib/types/common/builder/PlatformBuilder.d.ts +6 -3
- package/lib/types/common/decorators/PlatformProvider.d.ts +4 -0
- package/lib/types/common/fn/adapter.d.ts +12 -0
- package/lib/types/common/fn/application.d.ts +6 -0
- package/lib/types/common/index.d.ts +3 -1
- package/lib/types/common/middlewares/PlatformMulterMiddleware.d.ts +2 -3
- package/lib/types/common/services/Platform.d.ts +3 -6
- package/lib/types/common/services/PlatformAdapter.d.ts +1 -3
- package/lib/types/common/services/PlatformApplication.d.ts +1 -3
- package/lib/types/common/services/PlatformHandler.d.ts +3 -3
- package/lib/types/common/services/PlatformMiddlewaresChain.d.ts +1 -3
- package/lib/types/common/utils/createContext.d.ts +1 -3
- package/lib/types/common/utils/createHttpServer.d.ts +1 -2
- package/lib/types/common/utils/createHttpsServer.d.ts +1 -2
- package/lib/types/common/utils/createServer.d.ts +3 -3
- package/lib/types/common/utils/resolveControllers.d.ts +8 -0
- package/lib/types/testing/PlatformTest.d.ts +1 -3
- package/package.json +16 -15
- package/vitest.config.mts +4 -4
- package/lib/esm/common/utils/registerPlatformAdapter.js +0 -7
- package/lib/esm/common/utils/registerPlatformAdapter.js.map +0 -1
- package/lib/types/common/utils/registerPlatformAdapter.d.ts +0 -3
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Type } from "@tsed/core";
|
|
2
|
+
import { PlatformAdapter } from "../services/PlatformAdapter.js";
|
|
3
|
+
/**
|
|
4
|
+
* Set or Get the registered platform adapter.
|
|
5
|
+
* Ensure that the adapter is registered before using the platform.
|
|
6
|
+
*/
|
|
7
|
+
export declare function adapter(): Type<PlatformAdapter<any>> & {
|
|
8
|
+
NAME: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function adapter(adapter: Type<PlatformAdapter<any>>): Type<PlatformAdapter<any>> & {
|
|
11
|
+
NAME: string;
|
|
12
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PlatformApplication } from "../services/PlatformApplication.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return the injectable Application instance.
|
|
4
|
+
* @note Application is only available after PlatformExpress/PlatformKoa instance creation.
|
|
5
|
+
*/
|
|
6
|
+
export declare function application<App = TsED.Application>(): PlatformApplication<App>;
|
|
@@ -21,6 +21,8 @@ export * from "./domain/EndpointMetadata.js";
|
|
|
21
21
|
export * from "./domain/PlatformContext.js";
|
|
22
22
|
export * from "./domain/PlatformRouteDetails.js";
|
|
23
23
|
export * from "./exports.js";
|
|
24
|
+
export * from "./fn/adapter.js";
|
|
25
|
+
export * from "./fn/application.js";
|
|
24
26
|
export * from "./interfaces/AfterInit.js";
|
|
25
27
|
export * from "./interfaces/AfterListen.js";
|
|
26
28
|
export * from "./interfaces/AfterRoutesInit.js";
|
|
@@ -56,5 +58,5 @@ export * from "./utils/getStaticsOptions.js";
|
|
|
56
58
|
export * from "./utils/listenServer.js";
|
|
57
59
|
export * from "./utils/mapReturnedResponse.js";
|
|
58
60
|
export * from "./utils/printRoutes.js";
|
|
59
|
-
export * from "./utils/
|
|
61
|
+
export * from "./utils/resolveControllers.js";
|
|
60
62
|
export * from "./utils/setResponseHeaders.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BadRequest } from "@tsed/exceptions";
|
|
2
2
|
import { MiddlewareMethods } from "@tsed/platform-middlewares";
|
|
3
3
|
import type { MulterError } from "multer";
|
|
4
|
-
import { PlatformMulterField
|
|
4
|
+
import { PlatformMulterField } from "../config/interfaces/PlatformMulterSettings.js";
|
|
5
5
|
import { PlatformContext } from "../domain/PlatformContext.js";
|
|
6
6
|
import { PlatformApplication } from "../services/PlatformApplication.js";
|
|
7
7
|
export interface MulterInputOptions {
|
|
@@ -14,8 +14,7 @@ export declare class MulterException extends BadRequest {
|
|
|
14
14
|
* @middleware
|
|
15
15
|
*/
|
|
16
16
|
export declare class PlatformMulterMiddleware implements MiddlewareMethods {
|
|
17
|
-
protected
|
|
18
|
-
protected app: PlatformApplication;
|
|
17
|
+
protected app: PlatformApplication<any>;
|
|
19
18
|
use(ctx: PlatformContext): Promise<any>;
|
|
20
19
|
protected getFields(conf: MulterInputOptions): {
|
|
21
20
|
name: string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TokenProvider } from "@tsed/di";
|
|
2
2
|
import { PlatformLayer, PlatformRouters } from "@tsed/platform-router";
|
|
3
3
|
import { Route, RouteController } from "../interfaces/Route.js";
|
|
4
|
-
import { PlatformApplication } from "./PlatformApplication.js";
|
|
5
4
|
/**
|
|
6
5
|
* `Platform` is used to provide all routes collected by annotation `@Controller`.
|
|
7
6
|
*
|
|
@@ -9,11 +8,9 @@ import { PlatformApplication } from "./PlatformApplication.js";
|
|
|
9
8
|
*/
|
|
10
9
|
export declare class Platform {
|
|
11
10
|
#private;
|
|
12
|
-
readonly injector: InjectorService;
|
|
13
|
-
readonly platformApplication: PlatformApplication;
|
|
14
11
|
readonly platformRouters: PlatformRouters;
|
|
15
|
-
constructor(
|
|
16
|
-
get app(): PlatformApplication<TsED.Application>;
|
|
12
|
+
constructor();
|
|
13
|
+
get app(): import("./PlatformApplication.js").PlatformApplication<TsED.Application>;
|
|
17
14
|
addRoutes(routes: Route[]): void;
|
|
18
15
|
addRoute(route: string, token: TokenProvider): this;
|
|
19
16
|
getLayers(): PlatformLayer[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { Type } from "@tsed/core";
|
|
3
|
-
import {
|
|
3
|
+
import { ProviderOpts } from "@tsed/di";
|
|
4
4
|
import { PlatformContextHandler, PlatformHandlerMetadata, PlatformLayer } from "@tsed/platform-router";
|
|
5
5
|
import { IncomingMessage, ServerResponse } from "http";
|
|
6
6
|
import { PlatformMulter, PlatformMulterSettings } from "../config/interfaces/PlatformMulterSettings.js";
|
|
@@ -9,13 +9,11 @@ import { PlatformContext } from "../domain/PlatformContext.js";
|
|
|
9
9
|
import { CreateServerReturn } from "../utils/createServer.js";
|
|
10
10
|
import type { PlatformApplication } from "./PlatformApplication.js";
|
|
11
11
|
export declare abstract class PlatformAdapter<App = TsED.Application> {
|
|
12
|
-
protected injector: InjectorService;
|
|
13
12
|
static readonly NAME: string;
|
|
14
13
|
/**
|
|
15
14
|
* Load providers in top priority
|
|
16
15
|
*/
|
|
17
16
|
providers: ProviderOpts[];
|
|
18
|
-
constructor(injector: InjectorService);
|
|
19
17
|
get app(): PlatformApplication<App>;
|
|
20
18
|
getServers(): CreateServerReturn[];
|
|
21
19
|
onInit(): Promise<void> | void;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="multer" />
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import { InjectorService } from "@tsed/di";
|
|
4
3
|
import { PlatformRouter } from "@tsed/platform-router";
|
|
5
4
|
import { IncomingMessage, ServerResponse } from "http";
|
|
6
5
|
import { PlatformMulterSettings } from "../config/interfaces/PlatformMulterSettings.js";
|
|
@@ -18,10 +17,9 @@ declare global {
|
|
|
18
17
|
*/
|
|
19
18
|
export declare class PlatformApplication<App = TsED.Application> extends PlatformRouter {
|
|
20
19
|
adapter: PlatformAdapter<App>;
|
|
21
|
-
injector: InjectorService;
|
|
22
20
|
rawApp: App;
|
|
23
21
|
rawCallback: () => any;
|
|
24
|
-
constructor(
|
|
22
|
+
constructor();
|
|
25
23
|
getApp(): App;
|
|
26
24
|
multer(options: PlatformMulterSettings): import("multer").Multer;
|
|
27
25
|
callback(): (req: IncomingMessage, res: ServerResponse) => any;
|
|
@@ -12,13 +12,13 @@ import { PlatformMiddlewaresChain } from "./PlatformMiddlewaresChain.js";
|
|
|
12
12
|
* @platform
|
|
13
13
|
*/
|
|
14
14
|
export declare class PlatformHandler {
|
|
15
|
-
protected platformRouters: PlatformRouters;
|
|
16
15
|
protected responseFilter: PlatformResponseFilter;
|
|
17
16
|
protected platformParams: PlatformParams;
|
|
18
17
|
protected platformExceptions: PlatformExceptions;
|
|
19
|
-
protected platformApplication: PlatformApplication
|
|
18
|
+
protected platformApplication: PlatformApplication<any>;
|
|
20
19
|
protected platformMiddlewaresChain: PlatformMiddlewaresChain;
|
|
21
|
-
|
|
20
|
+
protected platformRouters: PlatformRouters;
|
|
21
|
+
constructor();
|
|
22
22
|
createHandler(handlerMetadata: PlatformHandlerMetadata): any;
|
|
23
23
|
/**
|
|
24
24
|
* @param provider
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { InjectorService } from "@tsed/di";
|
|
2
1
|
import { AlterEndpointHandlersArg } from "@tsed/platform-router";
|
|
3
2
|
import { JsonOperationRoute } from "@tsed/schema";
|
|
4
3
|
import { PlatformAdapter } from "./PlatformAdapter.js";
|
|
5
4
|
export declare class PlatformMiddlewaresChain {
|
|
6
5
|
protected acceptMimes: string[];
|
|
7
|
-
protected adapter: PlatformAdapter
|
|
8
|
-
protected injector: InjectorService;
|
|
6
|
+
protected adapter: PlatformAdapter<any>;
|
|
9
7
|
get(handlers: AlterEndpointHandlersArg, operationRoute: JsonOperationRoute): AlterEndpointHandlersArg;
|
|
10
8
|
protected hasAcceptMimes(operationRoute: JsonOperationRoute): number;
|
|
11
9
|
protected getParamTypes(middlewares: AlterEndpointHandlersArg, operationRoute: JsonOperationRoute): {
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { InjectorService } from "@tsed/di";
|
|
2
1
|
import { PlatformContext } from "../domain/PlatformContext.js";
|
|
3
2
|
import { IncomingEvent } from "../interfaces/IncomingEvent.js";
|
|
4
3
|
export declare function buildIgnoreLog(ignoreUrlPatterns: any[] | undefined): ((ignore: boolean, data: any, url: string) => any) | undefined;
|
|
5
4
|
/**
|
|
6
5
|
* Create the TsED context to wrap request, response, injector, etc...
|
|
7
|
-
* @param injector
|
|
8
6
|
* @ignore
|
|
9
7
|
*/
|
|
10
|
-
export declare function createContext(
|
|
8
|
+
export declare function createContext(): (event: IncomingEvent) => PlatformContext;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { InjectorService } from "@tsed/di";
|
|
3
2
|
import Http from "http";
|
|
4
|
-
export declare function createHttpServer(
|
|
3
|
+
export declare function createHttpServer(requestListener: Http.RequestListener): import("./createServer.js").CreateServerReturn | undefined;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { InjectorService } from "@tsed/di";
|
|
3
2
|
import Http from "http";
|
|
4
|
-
export declare function createHttpsServer(
|
|
3
|
+
export declare function createHttpsServer(requestListener?: Http.RequestListener): import("./createServer.js").CreateServerReturn | undefined;
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
3
|
/// <reference types="node" resolution-mode="require"/>
|
|
4
4
|
import { ReturnHostInfoFromPort } from "@tsed/core";
|
|
5
|
-
import {
|
|
5
|
+
import { TokenProvider } from "@tsed/di";
|
|
6
6
|
import Http from "http";
|
|
7
7
|
import Http2 from "http2";
|
|
8
8
|
import Https from "https";
|
|
9
9
|
export interface CreateServerOptions {
|
|
10
10
|
token: TokenProvider;
|
|
11
11
|
type: "http" | "https";
|
|
12
|
-
port: string | false;
|
|
12
|
+
port: string | false | undefined;
|
|
13
13
|
listen?: (hostInfo: ReturnHostInfoFromPort) => Promise<any>;
|
|
14
14
|
server: () => Http.Server | Https.Server | Http2.Http2Server;
|
|
15
15
|
}
|
|
16
16
|
export type CreateServerReturn = () => Promise<Http.Server | Https.Server | Http2.Http2Server>;
|
|
17
|
-
export declare function createServer(
|
|
17
|
+
export declare function createServer({ token, type, port, server: get, listen }: CreateServerOptions): undefined | CreateServerReturn;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type TokenRoute } from "@tsed/di";
|
|
2
|
+
/**
|
|
3
|
+
* Return controllers and is base route according to his configuration in module configuration.
|
|
4
|
+
*
|
|
5
|
+
* @param settings
|
|
6
|
+
* @ignore
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveControllers(settings: Partial<TsED.Configuration>): TokenRoute[];
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { Type } from "@tsed/core";
|
|
3
2
|
import { DITest, InjectorService } from "@tsed/di";
|
|
4
3
|
import type { IncomingMessage, RequestListener, ServerResponse } from "http";
|
|
5
4
|
import { PlatformContext, PlatformContextOptions } from "../common/domain/PlatformContext.js";
|
|
6
|
-
import {
|
|
5
|
+
import { PlatformBuilderSettings } from "../common/services/PlatformAdapter.js";
|
|
7
6
|
/**
|
|
8
7
|
* @platform
|
|
9
8
|
*/
|
|
10
9
|
export declare class PlatformTest extends DITest {
|
|
11
|
-
static adapter: Type<PlatformAdapter>;
|
|
12
10
|
static create(settings?: Partial<TsED.Configuration>): Promise<void>;
|
|
13
11
|
/**
|
|
14
12
|
* Create a new injector with the right default services
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@tsed/platform-http",
|
|
3
3
|
"description": "A TypeScript Framework on top of Express",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "8.0.0-rc.
|
|
5
|
+
"version": "8.0.0-rc.6",
|
|
6
6
|
"source": "./src/common/index.ts",
|
|
7
7
|
"main": "./lib/esm/common/index.js",
|
|
8
8
|
"module": "./lib/esm/common/index.js",
|
|
@@ -68,28 +68,29 @@
|
|
|
68
68
|
}
|
|
69
69
|
],
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@tsed/core": "8.0.0-rc.
|
|
72
|
-
"@tsed/di": "8.0.0-rc.
|
|
73
|
-
"@tsed/exceptions": "8.0.0-rc.
|
|
74
|
-
"@tsed/
|
|
71
|
+
"@tsed/core": "8.0.0-rc.6",
|
|
72
|
+
"@tsed/di": "8.0.0-rc.6",
|
|
73
|
+
"@tsed/exceptions": "8.0.0-rc.6",
|
|
74
|
+
"@tsed/hooks": "8.0.0-rc.6",
|
|
75
|
+
"@tsed/json-mapper": "8.0.0-rc.6",
|
|
75
76
|
"@tsed/logger": "^6.7.8",
|
|
76
77
|
"@tsed/logger-file": "^6.7.8",
|
|
77
|
-
"@tsed/platform-exceptions": "8.0.0-rc.
|
|
78
|
-
"@tsed/platform-middlewares": "8.0.0-rc.
|
|
79
|
-
"@tsed/platform-params": "8.0.0-rc.
|
|
80
|
-
"@tsed/platform-response-filter": "8.0.0-rc.
|
|
81
|
-
"@tsed/platform-router": "8.0.0-rc.
|
|
82
|
-
"@tsed/platform-views": "8.0.0-rc.
|
|
83
|
-
"@tsed/schema": "8.0.0-rc.
|
|
78
|
+
"@tsed/platform-exceptions": "8.0.0-rc.6",
|
|
79
|
+
"@tsed/platform-middlewares": "8.0.0-rc.6",
|
|
80
|
+
"@tsed/platform-params": "8.0.0-rc.6",
|
|
81
|
+
"@tsed/platform-response-filter": "8.0.0-rc.6",
|
|
82
|
+
"@tsed/platform-router": "8.0.0-rc.6",
|
|
83
|
+
"@tsed/platform-views": "8.0.0-rc.6",
|
|
84
|
+
"@tsed/schema": "8.0.0-rc.6",
|
|
84
85
|
"@types/json-schema": "7.0.15",
|
|
85
86
|
"accepts": "^1.3.8",
|
|
86
87
|
"tslib": "2.7.0",
|
|
87
88
|
"uuid": "10.0.0"
|
|
88
89
|
},
|
|
89
90
|
"devDependencies": {
|
|
90
|
-
"@tsed/barrels": "8.0.0-rc.
|
|
91
|
-
"@tsed/engines": "8.0.0-rc.
|
|
92
|
-
"@tsed/typescript": "8.0.0-rc.
|
|
91
|
+
"@tsed/barrels": "8.0.0-rc.6",
|
|
92
|
+
"@tsed/engines": "8.0.0-rc.6",
|
|
93
|
+
"@tsed/typescript": "8.0.0-rc.6",
|
|
93
94
|
"cross-env": "7.0.3",
|
|
94
95
|
"eslint": "9.12.0",
|
|
95
96
|
"typescript": "5.4.5",
|
package/vitest.config.mts
CHANGED
|
@@ -10,10 +10,10 @@ export default defineConfig(
|
|
|
10
10
|
coverage: {
|
|
11
11
|
...presets.test.coverage,
|
|
12
12
|
thresholds: {
|
|
13
|
-
statements:
|
|
14
|
-
branches:
|
|
15
|
-
functions:
|
|
16
|
-
lines:
|
|
13
|
+
statements: 96.88,
|
|
14
|
+
branches: 95.5,
|
|
15
|
+
functions: 94.11,
|
|
16
|
+
lines: 96.88
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { PlatformTest } from "../../testing/PlatformTest.js";
|
|
2
|
-
import { PlatformBuilder } from "../builder/PlatformBuilder.js";
|
|
3
|
-
export function registerPlatformAdapter(adapter) {
|
|
4
|
-
PlatformTest.adapter = adapter;
|
|
5
|
-
PlatformBuilder.adapter = adapter;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=registerPlatformAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registerPlatformAdapter.js","sourceRoot":"","sources":["../../../../src/common/utils/registerPlatformAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAG9D,MAAM,UAAU,uBAAuB,CAAC,OAAmC;IACzE,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC;AACpC,CAAC"}
|