@nestia/sdk 11.0.0-dev.20260316 → 11.0.1

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.
Files changed (65) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +93 -93
  3. package/assets/bundle/api/HttpError.ts +1 -1
  4. package/assets/bundle/api/IConnection.ts +1 -1
  5. package/assets/bundle/api/Primitive.ts +1 -1
  6. package/assets/bundle/api/Resolved.ts +1 -1
  7. package/assets/bundle/api/index.ts +4 -4
  8. package/assets/bundle/api/module.ts +6 -6
  9. package/assets/bundle/distribute/README.md +37 -37
  10. package/assets/bundle/distribute/package.json +28 -28
  11. package/assets/bundle/distribute/tsconfig.json +109 -109
  12. package/assets/bundle/e2e/index.ts +42 -42
  13. package/assets/config/nestia.config.ts +97 -97
  14. package/lib/executable/internal/NestiaConfigLoader.js +5 -5
  15. package/lib/executable/internal/NestiaConfigLoader.js.map +1 -1
  16. package/package.json +8 -8
  17. package/src/INestiaConfig.ts +267 -267
  18. package/src/NestiaSdkApplication.ts +307 -307
  19. package/src/NestiaSwaggerComposer.ts +143 -143
  20. package/src/analyses/AccessorAnalyzer.ts +67 -67
  21. package/src/analyses/DtoAnalyzer.ts +260 -260
  22. package/src/analyses/ImportAnalyzer.ts +126 -126
  23. package/src/analyses/ReflectHttpOperationAnalyzer.ts +183 -183
  24. package/src/analyses/ReflectHttpOperationExceptionAnalyzer.ts +72 -72
  25. package/src/analyses/ReflectHttpOperationParameterAnalyzer.ts +350 -350
  26. package/src/analyses/ReflectHttpOperationResponseAnalyzer.ts +126 -126
  27. package/src/analyses/TypedHttpRouteAnalyzer.ts +208 -208
  28. package/src/executable/internal/NestiaConfigLoader.ts +85 -85
  29. package/src/executable/internal/NestiaSdkCommand.ts +107 -107
  30. package/src/generates/SwaggerGenerator.ts +291 -291
  31. package/src/generates/internal/E2eFileProgrammer.ts +196 -196
  32. package/src/generates/internal/FilePrinter.ts +64 -64
  33. package/src/generates/internal/ImportDictionary.ts +192 -192
  34. package/src/generates/internal/SdkAliasCollection.ts +260 -260
  35. package/src/generates/internal/SdkFileProgrammer.ts +110 -110
  36. package/src/generates/internal/SdkHttpCloneProgrammer.ts +126 -126
  37. package/src/generates/internal/SdkHttpCloneReferencer.ts +77 -77
  38. package/src/generates/internal/SdkHttpFunctionProgrammer.ts +278 -278
  39. package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +502 -502
  40. package/src/generates/internal/SdkHttpRouteProgrammer.ts +109 -109
  41. package/src/generates/internal/SdkHttpSimulationProgrammer.ts +312 -312
  42. package/src/generates/internal/SdkImportWizard.ts +62 -62
  43. package/src/generates/internal/SdkTypeProgrammer.ts +388 -388
  44. package/src/generates/internal/SdkTypeTagProgrammer.ts +114 -114
  45. package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +379 -379
  46. package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +302 -302
  47. package/src/generates/internal/SwaggerOperationComposer.ts +119 -119
  48. package/src/generates/internal/SwaggerOperationParameterComposer.ts +161 -161
  49. package/src/generates/internal/SwaggerOperationResponseComposer.ts +110 -110
  50. package/src/module.ts +4 -4
  51. package/src/structures/IReflectHttpOperationException.ts +18 -18
  52. package/src/structures/IReflectHttpOperationParameter.ts +79 -79
  53. package/src/structures/IReflectHttpOperationSuccess.ts +21 -21
  54. package/src/structures/ITypedApplication.ts +11 -11
  55. package/src/structures/ITypedHttpRouteException.ts +15 -15
  56. package/src/structures/ITypedHttpRouteParameter.ts +41 -41
  57. package/src/structures/ITypedHttpRouteSuccess.ts +22 -22
  58. package/src/transformers/IOperationMetadata.ts +46 -46
  59. package/src/transformers/ISdkOperationTransformerContext.ts +8 -8
  60. package/src/transformers/SdkOperationProgrammer.ts +240 -240
  61. package/src/transformers/SdkOperationTransformer.ts +248 -248
  62. package/src/transformers/TextPlainValidator.ts +17 -17
  63. package/src/utils/MetadataUtil.ts +26 -26
  64. package/src/validators/HttpHeadersValidator.ts +40 -40
  65. package/src/validators/HttpQueryValidator.ts +40 -40
@@ -1,110 +1,110 @@
1
- import { MetadataSchema } from "@typia/core";
2
- import { OpenApi } from "@typia/interface";
3
- import { VariadicSingleton } from "tstl";
4
-
5
- import { ITypedHttpRoute } from "../../structures/ITypedHttpRoute";
6
- import { StringUtil } from "../../utils/StringUtil";
7
- import { SwaggerDescriptionComposer } from "./SwaggerDescriptionComposer";
8
-
9
- export namespace SwaggerOperationResponseComposer {
10
- export const compose = (props: {
11
- schema: (metadata: MetadataSchema) => OpenApi.IJsonSchema | undefined;
12
- route: ITypedHttpRoute;
13
- }): Record<string, OpenApi.IOperation.IResponse> => {
14
- const output: Record<string, OpenApi.IOperation.IResponse> = {};
15
- // FROM DECORATOR
16
- for (const [status, error] of Object.entries(props.route.exceptions))
17
- output[status] = {
18
- description: error.description ?? undefined,
19
- content: {
20
- "application/json": {
21
- schema: props.schema(error.metadata),
22
- example: error.example,
23
- examples: error.examples,
24
- },
25
- },
26
- };
27
-
28
- // FROM COMMENTS
29
- for (const tag of props.route.jsDocTags) {
30
- if (tag.name !== "throw" && tag.name !== "throws") continue;
31
- const text: string | undefined = tag.text?.find(
32
- (elem) => elem.kind === "text",
33
- )?.text;
34
- if (text === undefined) continue;
35
-
36
- const elements: string[] = text.split(" ").map((str) => str.trim());
37
- const status: string = elements[0]!;
38
- if (
39
- isNaN(Number(status)) &&
40
- status !== "2XX" &&
41
- status !== "3XX" &&
42
- status !== "4XX" &&
43
- status !== "5XX"
44
- )
45
- continue;
46
-
47
- const description: string | undefined =
48
- elements.length === 1 ? undefined : elements.slice(1).join(" ");
49
- const oldbie = output[status];
50
- if (description && oldbie !== undefined)
51
- oldbie.description ??= description;
52
- else if (oldbie === undefined)
53
- output[status] = {
54
- description: description,
55
- content: {
56
- "application/json": {
57
- schema: {},
58
- },
59
- },
60
- };
61
- }
62
-
63
- // SUCCESS
64
- const description: string | undefined =
65
- SwaggerDescriptionComposer.descriptionFromJsDocTag({
66
- jsDocTags: props.route.jsDocTags,
67
- tag: "returns",
68
- }) ??
69
- SwaggerDescriptionComposer.descriptionFromJsDocTag({
70
- jsDocTags: props.route.jsDocTags,
71
- tag: "return",
72
- });
73
- output[
74
- props.route.success.status ??
75
- (props.route.method.toLowerCase() === "post" ? 201 : 200)
76
- ] = {
77
- description: props.route.success.encrypted
78
- ? `${warning.get(!!description, props.route.method)}${description ?? ""}`
79
- : (description ?? ""),
80
- content: props.route.success.contentType
81
- ? {
82
- [props.route.success.contentType]: {
83
- schema: props.schema(props.route.success.metadata),
84
- example: props.route.success.example,
85
- examples: props.route.success.examples,
86
- },
87
- }
88
- : undefined,
89
- ...(props.route.success.encrypted ? { "x-nestia-encrypted": true } : {}),
90
- };
91
- return output;
92
- };
93
- }
94
-
95
- const warning = new VariadicSingleton((described: boolean, method: string) => {
96
- const summary: string = "Response data have been encrypted.";
97
- const component: string = `[EncryptedRoute.${StringUtil.capitalize(method)}](https://github.com/samchon/@nestia/core#encryptedroute)`;
98
-
99
- const content: string[] = [
100
- "## Warning",
101
- "",
102
- summary,
103
- "",
104
- `The response body data would be encrypted as "AES-128(256) / CBC mode / PKCS#5 Padding / Base64 Encoding", through the ${component} component.`,
105
- "",
106
- `Therefore, just utilize this swagger editor only for referencing. If you need to call the real API, using [SDK](https://github.com/samchon/nestia#software-development-kit) would be much better.`,
107
- ];
108
- if (described === true) content.push("", "----------------", "", "");
109
- return content.join("\n");
110
- });
1
+ import { MetadataSchema } from "@typia/core";
2
+ import { OpenApi } from "@typia/interface";
3
+ import { VariadicSingleton } from "tstl";
4
+
5
+ import { ITypedHttpRoute } from "../../structures/ITypedHttpRoute";
6
+ import { StringUtil } from "../../utils/StringUtil";
7
+ import { SwaggerDescriptionComposer } from "./SwaggerDescriptionComposer";
8
+
9
+ export namespace SwaggerOperationResponseComposer {
10
+ export const compose = (props: {
11
+ schema: (metadata: MetadataSchema) => OpenApi.IJsonSchema | undefined;
12
+ route: ITypedHttpRoute;
13
+ }): Record<string, OpenApi.IOperation.IResponse> => {
14
+ const output: Record<string, OpenApi.IOperation.IResponse> = {};
15
+ // FROM DECORATOR
16
+ for (const [status, error] of Object.entries(props.route.exceptions))
17
+ output[status] = {
18
+ description: error.description ?? undefined,
19
+ content: {
20
+ "application/json": {
21
+ schema: props.schema(error.metadata),
22
+ example: error.example,
23
+ examples: error.examples,
24
+ },
25
+ },
26
+ };
27
+
28
+ // FROM COMMENTS
29
+ for (const tag of props.route.jsDocTags) {
30
+ if (tag.name !== "throw" && tag.name !== "throws") continue;
31
+ const text: string | undefined = tag.text?.find(
32
+ (elem) => elem.kind === "text",
33
+ )?.text;
34
+ if (text === undefined) continue;
35
+
36
+ const elements: string[] = text.split(" ").map((str) => str.trim());
37
+ const status: string = elements[0]!;
38
+ if (
39
+ isNaN(Number(status)) &&
40
+ status !== "2XX" &&
41
+ status !== "3XX" &&
42
+ status !== "4XX" &&
43
+ status !== "5XX"
44
+ )
45
+ continue;
46
+
47
+ const description: string | undefined =
48
+ elements.length === 1 ? undefined : elements.slice(1).join(" ");
49
+ const oldbie = output[status];
50
+ if (description && oldbie !== undefined)
51
+ oldbie.description ??= description;
52
+ else if (oldbie === undefined)
53
+ output[status] = {
54
+ description: description,
55
+ content: {
56
+ "application/json": {
57
+ schema: {},
58
+ },
59
+ },
60
+ };
61
+ }
62
+
63
+ // SUCCESS
64
+ const description: string | undefined =
65
+ SwaggerDescriptionComposer.descriptionFromJsDocTag({
66
+ jsDocTags: props.route.jsDocTags,
67
+ tag: "returns",
68
+ }) ??
69
+ SwaggerDescriptionComposer.descriptionFromJsDocTag({
70
+ jsDocTags: props.route.jsDocTags,
71
+ tag: "return",
72
+ });
73
+ output[
74
+ props.route.success.status ??
75
+ (props.route.method.toLowerCase() === "post" ? 201 : 200)
76
+ ] = {
77
+ description: props.route.success.encrypted
78
+ ? `${warning.get(!!description, props.route.method)}${description ?? ""}`
79
+ : (description ?? ""),
80
+ content: props.route.success.contentType
81
+ ? {
82
+ [props.route.success.contentType]: {
83
+ schema: props.schema(props.route.success.metadata),
84
+ example: props.route.success.example,
85
+ examples: props.route.success.examples,
86
+ },
87
+ }
88
+ : undefined,
89
+ ...(props.route.success.encrypted ? { "x-nestia-encrypted": true } : {}),
90
+ };
91
+ return output;
92
+ };
93
+ }
94
+
95
+ const warning = new VariadicSingleton((described: boolean, method: string) => {
96
+ const summary: string = "Response data have been encrypted.";
97
+ const component: string = `[EncryptedRoute.${StringUtil.capitalize(method)}](https://github.com/samchon/@nestia/core#encryptedroute)`;
98
+
99
+ const content: string[] = [
100
+ "## Warning",
101
+ "",
102
+ summary,
103
+ "",
104
+ `The response body data would be encrypted as "AES-128(256) / CBC mode / PKCS#5 Padding / Base64 Encoding", through the ${component} component.`,
105
+ "",
106
+ `Therefore, just utilize this swagger editor only for referencing. If you need to call the real API, using [SDK](https://github.com/samchon/nestia#software-development-kit) would be much better.`,
107
+ ];
108
+ if (described === true) content.push("", "----------------", "", "");
109
+ return content.join("\n");
110
+ });
package/src/module.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from "./INestiaConfig";
2
- export * from "./NestiaSdkApplication";
3
- export * from "./NestiaSwaggerComposer";
4
- export * from "./decorators/OperationMetadata";
1
+ export * from "./INestiaConfig";
2
+ export * from "./NestiaSdkApplication";
3
+ export * from "./NestiaSwaggerComposer";
4
+ export * from "./decorators/OperationMetadata";
@@ -1,18 +1,18 @@
1
- import { MetadataFactory } from "@typia/core";
2
- import { IMetadataComponents, IMetadataSchema } from "@typia/interface";
3
-
4
- import { IReflectType } from "./IReflectType";
5
-
6
- export interface IReflectHttpOperationException {
7
- // BASIC PROPERTIES
8
- status: number | "2XX" | "3XX" | "4XX" | "5XX";
9
- description: string | null;
10
- example?: any;
11
- examples?: Record<string, any>;
12
-
13
- // REFLECTED PROPERTIES
14
- type: IReflectType;
15
- metadata: IMetadataSchema;
16
- components: IMetadataComponents;
17
- validate: MetadataFactory.Validator;
18
- }
1
+ import { MetadataFactory } from "@typia/core";
2
+ import { IMetadataComponents, IMetadataSchema } from "@typia/interface";
3
+
4
+ import { IReflectType } from "./IReflectType";
5
+
6
+ export interface IReflectHttpOperationException {
7
+ // BASIC PROPERTIES
8
+ status: number | "2XX" | "3XX" | "4XX" | "5XX";
9
+ description: string | null;
10
+ example?: any;
11
+ examples?: Record<string, any>;
12
+
13
+ // REFLECTED PROPERTIES
14
+ type: IReflectType;
15
+ metadata: IMetadataSchema;
16
+ components: IMetadataComponents;
17
+ validate: MetadataFactory.Validator;
18
+ }
@@ -1,79 +1,79 @@
1
- import { MetadataFactory } from "@typia/core";
2
- import {
3
- IJsDocTagInfo,
4
- IMetadataComponents,
5
- IMetadataSchema,
6
- } from "@typia/interface";
7
-
8
- import { IReflectType } from "./IReflectType";
9
-
10
- export type IReflectHttpOperationParameter =
11
- | IReflectHttpOperationParameter.IBody
12
- | IReflectHttpOperationParameter.IHeaders
13
- | IReflectHttpOperationParameter.IParam
14
- | IReflectHttpOperationParameter.IQuery;
15
- export namespace IReflectHttpOperationParameter {
16
- export interface IBody extends IBase<"body"> {
17
- contentType:
18
- | "application/json"
19
- | "application/x-www-form-urlencoded"
20
- | "multipart/form-data"
21
- | "text/plain";
22
- encrypted: boolean;
23
- }
24
- export interface IHeaders extends IBase<"headers"> {
25
- field: string | null;
26
- }
27
- export interface IParam extends IBase<"param"> {
28
- field: string;
29
- }
30
- export interface IQuery extends IBase<"query"> {
31
- field: string | null;
32
- }
33
- interface IBase<Category extends string> {
34
- category: Category;
35
- name: string;
36
- index: number;
37
- type: IReflectType;
38
- metadata: IMetadataSchema;
39
- components: IMetadataComponents;
40
- validate: MetadataFactory.Validator;
41
- example?: any;
42
- examples?: Record<string, any>;
43
- description: string | null;
44
- jsDocTags: IJsDocTagInfo[];
45
- }
46
-
47
- /** @internal */
48
- export type IPreconfigured =
49
- | IPreconfigured.IBody
50
- | IPreconfigured.IHeaders
51
- | IPreconfigured.IParam
52
- | IPreconfigured.IQuery;
53
-
54
- /** @internal */
55
- export namespace IPreconfigured {
56
- export interface IBody extends IBase<"body"> {
57
- field?: string;
58
- encrypted?: boolean;
59
- contentType:
60
- | "application/json"
61
- | "application/x-www-form-urlencoded"
62
- | "multipart/form-data"
63
- | "text/plain";
64
- }
65
- export interface IHeaders extends IBase<"headers"> {
66
- field?: string;
67
- }
68
- export interface IParam extends IBase<"param"> {
69
- field?: string;
70
- }
71
- export interface IQuery extends IBase<"query"> {
72
- field?: string;
73
- }
74
- interface IBase<Category extends string> {
75
- category: Category;
76
- index: number;
77
- }
78
- }
79
- }
1
+ import { MetadataFactory } from "@typia/core";
2
+ import {
3
+ IJsDocTagInfo,
4
+ IMetadataComponents,
5
+ IMetadataSchema,
6
+ } from "@typia/interface";
7
+
8
+ import { IReflectType } from "./IReflectType";
9
+
10
+ export type IReflectHttpOperationParameter =
11
+ | IReflectHttpOperationParameter.IBody
12
+ | IReflectHttpOperationParameter.IHeaders
13
+ | IReflectHttpOperationParameter.IParam
14
+ | IReflectHttpOperationParameter.IQuery;
15
+ export namespace IReflectHttpOperationParameter {
16
+ export interface IBody extends IBase<"body"> {
17
+ contentType:
18
+ | "application/json"
19
+ | "application/x-www-form-urlencoded"
20
+ | "multipart/form-data"
21
+ | "text/plain";
22
+ encrypted: boolean;
23
+ }
24
+ export interface IHeaders extends IBase<"headers"> {
25
+ field: string | null;
26
+ }
27
+ export interface IParam extends IBase<"param"> {
28
+ field: string;
29
+ }
30
+ export interface IQuery extends IBase<"query"> {
31
+ field: string | null;
32
+ }
33
+ interface IBase<Category extends string> {
34
+ category: Category;
35
+ name: string;
36
+ index: number;
37
+ type: IReflectType;
38
+ metadata: IMetadataSchema;
39
+ components: IMetadataComponents;
40
+ validate: MetadataFactory.Validator;
41
+ example?: any;
42
+ examples?: Record<string, any>;
43
+ description: string | null;
44
+ jsDocTags: IJsDocTagInfo[];
45
+ }
46
+
47
+ /** @internal */
48
+ export type IPreconfigured =
49
+ | IPreconfigured.IBody
50
+ | IPreconfigured.IHeaders
51
+ | IPreconfigured.IParam
52
+ | IPreconfigured.IQuery;
53
+
54
+ /** @internal */
55
+ export namespace IPreconfigured {
56
+ export interface IBody extends IBase<"body"> {
57
+ field?: string;
58
+ encrypted?: boolean;
59
+ contentType:
60
+ | "application/json"
61
+ | "application/x-www-form-urlencoded"
62
+ | "multipart/form-data"
63
+ | "text/plain";
64
+ }
65
+ export interface IHeaders extends IBase<"headers"> {
66
+ field?: string;
67
+ }
68
+ export interface IParam extends IBase<"param"> {
69
+ field?: string;
70
+ }
71
+ export interface IQuery extends IBase<"query"> {
72
+ field?: string;
73
+ }
74
+ interface IBase<Category extends string> {
75
+ category: Category;
76
+ index: number;
77
+ }
78
+ }
79
+ }
@@ -1,21 +1,21 @@
1
- import { MetadataFactory } from "@typia/core";
2
- import { IMetadataComponents, IMetadataSchema } from "@typia/interface";
3
-
4
- import { IReflectType } from "./IReflectType";
5
-
6
- export interface IReflectHttpOperationSuccess {
7
- type: IReflectType;
8
- status: number;
9
- contentType:
10
- | "application/json"
11
- | "text/plain"
12
- | "application/x-www-form-urlencoded"
13
- | "application/json"
14
- | null;
15
- encrypted: boolean;
16
- components: IMetadataComponents;
17
- metadata: IMetadataSchema;
18
- validate: MetadataFactory.Validator;
19
- example?: any;
20
- examples?: Record<string, any>;
21
- }
1
+ import { MetadataFactory } from "@typia/core";
2
+ import { IMetadataComponents, IMetadataSchema } from "@typia/interface";
3
+
4
+ import { IReflectType } from "./IReflectType";
5
+
6
+ export interface IReflectHttpOperationSuccess {
7
+ type: IReflectType;
8
+ status: number;
9
+ contentType:
10
+ | "application/json"
11
+ | "text/plain"
12
+ | "application/x-www-form-urlencoded"
13
+ | "application/json"
14
+ | null;
15
+ encrypted: boolean;
16
+ components: IMetadataComponents;
17
+ metadata: IMetadataSchema;
18
+ validate: MetadataFactory.Validator;
19
+ example?: any;
20
+ examples?: Record<string, any>;
21
+ }
@@ -1,11 +1,11 @@
1
- import { IMetadataDictionary } from "@typia/core";
2
-
3
- import { INestiaProject } from "./INestiaProject";
4
- import { ITypedHttpRoute } from "./ITypedHttpRoute";
5
- import { ITypedWebSocketRoute } from "./ITypedWebSocketRoute";
6
-
7
- export interface ITypedApplication {
8
- project: INestiaProject;
9
- collection: IMetadataDictionary;
10
- routes: Array<ITypedHttpRoute | ITypedWebSocketRoute>;
11
- }
1
+ import { IMetadataDictionary } from "@typia/core";
2
+
3
+ import { INestiaProject } from "./INestiaProject";
4
+ import { ITypedHttpRoute } from "./ITypedHttpRoute";
5
+ import { ITypedWebSocketRoute } from "./ITypedWebSocketRoute";
6
+
7
+ export interface ITypedApplication {
8
+ project: INestiaProject;
9
+ collection: IMetadataDictionary;
10
+ routes: Array<ITypedHttpRoute | ITypedWebSocketRoute>;
11
+ }
@@ -1,15 +1,15 @@
1
- import { MetadataSchema } from "@typia/core";
2
-
3
- import { IReflectType } from "./IReflectType";
4
-
5
- export interface ITypedHttpRouteException {
6
- // BASIC PROPERTIES
7
- status: number | "2XX" | "3XX" | "4XX" | "5XX";
8
- description: string | null;
9
- example: any;
10
- examples: Record<string, any>;
11
-
12
- // REFLECTED PROPERTIES
13
- type: IReflectType;
14
- metadata: MetadataSchema;
15
- }
1
+ import { MetadataSchema } from "@typia/core";
2
+
3
+ import { IReflectType } from "./IReflectType";
4
+
5
+ export interface ITypedHttpRouteException {
6
+ // BASIC PROPERTIES
7
+ status: number | "2XX" | "3XX" | "4XX" | "5XX";
8
+ description: string | null;
9
+ example: any;
10
+ examples: Record<string, any>;
11
+
12
+ // REFLECTED PROPERTIES
13
+ type: IReflectType;
14
+ metadata: MetadataSchema;
15
+ }
@@ -1,41 +1,41 @@
1
- import { MetadataSchema } from "@typia/core";
2
- import { IJsDocTagInfo } from "typia";
3
-
4
- import { IReflectType } from "./IReflectType";
5
-
6
- export type ITypedHttpRouteParameter =
7
- | ITypedHttpRouteParameter.IBody
8
- | ITypedHttpRouteParameter.IHeaders
9
- | ITypedHttpRouteParameter.IPath
10
- | ITypedHttpRouteParameter.IQuery;
11
- export namespace ITypedHttpRouteParameter {
12
- export interface IBody extends IBase<"body"> {
13
- contentType:
14
- | "application/json"
15
- | "application/x-www-form-urlencoded"
16
- | "multipart/form-data"
17
- | "text/plain";
18
- encrypted: boolean;
19
- }
20
- export interface IHeaders extends IBase<"headers"> {
21
- field: string | null;
22
- }
23
- export interface IPath extends IBase<"param"> {
24
- field: string;
25
- }
26
- export interface IQuery extends IBase<"query"> {
27
- field: string | null;
28
- }
29
-
30
- interface IBase<Category extends string> {
31
- category: Category;
32
- name: string;
33
- index: number;
34
- type: IReflectType;
35
- metadata: MetadataSchema;
36
- example?: any;
37
- examples?: Record<string, any>;
38
- description: string | null;
39
- jsDocTags: IJsDocTagInfo[];
40
- }
41
- }
1
+ import { MetadataSchema } from "@typia/core";
2
+ import { IJsDocTagInfo } from "typia";
3
+
4
+ import { IReflectType } from "./IReflectType";
5
+
6
+ export type ITypedHttpRouteParameter =
7
+ | ITypedHttpRouteParameter.IBody
8
+ | ITypedHttpRouteParameter.IHeaders
9
+ | ITypedHttpRouteParameter.IPath
10
+ | ITypedHttpRouteParameter.IQuery;
11
+ export namespace ITypedHttpRouteParameter {
12
+ export interface IBody extends IBase<"body"> {
13
+ contentType:
14
+ | "application/json"
15
+ | "application/x-www-form-urlencoded"
16
+ | "multipart/form-data"
17
+ | "text/plain";
18
+ encrypted: boolean;
19
+ }
20
+ export interface IHeaders extends IBase<"headers"> {
21
+ field: string | null;
22
+ }
23
+ export interface IPath extends IBase<"param"> {
24
+ field: string;
25
+ }
26
+ export interface IQuery extends IBase<"query"> {
27
+ field: string | null;
28
+ }
29
+
30
+ interface IBase<Category extends string> {
31
+ category: Category;
32
+ name: string;
33
+ index: number;
34
+ type: IReflectType;
35
+ metadata: MetadataSchema;
36
+ example?: any;
37
+ examples?: Record<string, any>;
38
+ description: string | null;
39
+ jsDocTags: IJsDocTagInfo[];
40
+ }
41
+ }
@@ -1,22 +1,22 @@
1
- import { MetadataSchema } from "@typia/core";
2
-
3
- import { IReflectType } from "./IReflectType";
4
-
5
- export interface ITypedHttpRouteSuccess {
6
- type: IReflectType;
7
- status: number | null;
8
- contentType:
9
- | "application/json"
10
- | "text/plain"
11
- | "application/x-www-form-urlencoded"
12
- | "application/json"
13
- | null;
14
- encrypted: boolean;
15
- metadata: MetadataSchema;
16
- example?: any;
17
- examples?: Record<string, any>;
18
- setHeaders: Array<
19
- | { type: "setter"; source: string; target?: string }
20
- | { type: "assigner"; source: string }
21
- >;
22
- }
1
+ import { MetadataSchema } from "@typia/core";
2
+
3
+ import { IReflectType } from "./IReflectType";
4
+
5
+ export interface ITypedHttpRouteSuccess {
6
+ type: IReflectType;
7
+ status: number | null;
8
+ contentType:
9
+ | "application/json"
10
+ | "text/plain"
11
+ | "application/x-www-form-urlencoded"
12
+ | "application/json"
13
+ | null;
14
+ encrypted: boolean;
15
+ metadata: MetadataSchema;
16
+ example?: any;
17
+ examples?: Record<string, any>;
18
+ setHeaders: Array<
19
+ | { type: "setter"; source: string; target?: string }
20
+ | { type: "assigner"; source: string }
21
+ >;
22
+ }