@nestia/sdk 4.2.0 → 4.3.0-dev.20241215

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 (118) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +87 -87
  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 +4 -4
  15. package/lib/executable/sdk.js +12 -12
  16. package/lib/generates/internal/SdkTypeProgrammer.js +8 -27
  17. package/lib/generates/internal/SdkTypeProgrammer.js.map +1 -1
  18. package/lib/generates/internal/SdkTypeTagProgrammer.d.ts +6 -0
  19. package/lib/generates/internal/SdkTypeTagProgrammer.js +83 -0
  20. package/lib/generates/internal/SdkTypeTagProgrammer.js.map +1 -0
  21. package/lib/utils/TypeLiteralExpression.d.ts +0 -0
  22. package/lib/utils/TypeLiteralExpression.js +2 -0
  23. package/lib/utils/TypeLiteralExpression.js.map +1 -0
  24. package/package.json +6 -6
  25. package/src/INestiaConfig.ts +271 -271
  26. package/src/NestiaSdkApplication.ts +307 -307
  27. package/src/NestiaSwaggerComposer.ts +138 -138
  28. package/src/analyses/AccessorAnalyzer.ts +67 -67
  29. package/src/analyses/ConfigAnalyzer.ts +155 -155
  30. package/src/analyses/ExceptionAnalyzer.ts +154 -154
  31. package/src/analyses/GenericAnalyzer.ts +49 -49
  32. package/src/analyses/ImportAnalyzer.ts +171 -171
  33. package/src/analyses/PathAnalyzer.ts +69 -69
  34. package/src/analyses/ReflectControllerAnalyzer.ts +105 -105
  35. package/src/analyses/ReflectHttpOperationAnalyzer.ts +183 -183
  36. package/src/analyses/ReflectHttpOperationExceptionAnalyzer.ts +71 -71
  37. package/src/analyses/ReflectHttpOperationParameterAnalyzer.ts +348 -348
  38. package/src/analyses/ReflectHttpOperationResponseAnalyzer.ts +127 -127
  39. package/src/analyses/ReflectMetadataAnalyzer.ts +44 -44
  40. package/src/analyses/ReflectWebSocketOperationAnalyzer.ts +172 -172
  41. package/src/analyses/SecurityAnalyzer.ts +25 -25
  42. package/src/analyses/TypedHttpRouteAnalyzer.ts +186 -186
  43. package/src/analyses/TypedWebSocketRouteAnalyzer.ts +18 -18
  44. package/src/decorators/OperationMetadata.ts +15 -15
  45. package/src/executable/internal/CommandParser.ts +15 -15
  46. package/src/executable/internal/NestiaConfigLoader.ts +78 -78
  47. package/src/executable/internal/NestiaSdkCommand.ts +103 -103
  48. package/src/executable/sdk.ts +75 -75
  49. package/src/generates/CloneGenerator.ts +66 -66
  50. package/src/generates/E2eGenerator.ts +32 -32
  51. package/src/generates/SdkGenerator.ts +159 -159
  52. package/src/generates/SwaggerGenerator.ts +292 -292
  53. package/src/generates/internal/E2eFileProgrammer.ts +183 -183
  54. package/src/generates/internal/FilePrinter.ts +53 -53
  55. package/src/generates/internal/ImportDictionary.ts +147 -147
  56. package/src/generates/internal/SdkAliasCollection.ts +185 -185
  57. package/src/generates/internal/SdkDistributionComposer.ts +103 -103
  58. package/src/generates/internal/SdkFileProgrammer.ts +116 -116
  59. package/src/generates/internal/SdkHttpCloneProgrammer.ts +124 -124
  60. package/src/generates/internal/SdkHttpCloneReferencer.ts +71 -71
  61. package/src/generates/internal/SdkHttpFunctionProgrammer.ts +301 -301
  62. package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +529 -529
  63. package/src/generates/internal/SdkHttpRouteProgrammer.ts +117 -117
  64. package/src/generates/internal/SdkHttpSimulationProgrammer.ts +362 -362
  65. package/src/generates/internal/SdkImportWizard.ts +55 -55
  66. package/src/generates/internal/SdkRouteDirectory.ts +18 -18
  67. package/src/generates/internal/SdkTypeProgrammer.ts +377 -394
  68. package/src/generates/internal/SdkTypeTagProgrammer.ts +120 -0
  69. package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +363 -363
  70. package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +265 -265
  71. package/src/generates/internal/SwaggerDescriptionComposer.ts +64 -64
  72. package/src/generates/internal/SwaggerOperationComposer.ts +117 -117
  73. package/src/generates/internal/SwaggerOperationParameterComposer.ts +177 -177
  74. package/src/generates/internal/SwaggerOperationResponseComposer.ts +110 -110
  75. package/src/index.ts +4 -4
  76. package/src/module.ts +3 -3
  77. package/src/structures/INestiaProject.ts +13 -13
  78. package/src/structures/INestiaSdkInput.ts +20 -20
  79. package/src/structures/IReflectApplication.ts +8 -8
  80. package/src/structures/IReflectController.ts +15 -15
  81. package/src/structures/IReflectHttpOperation.ts +26 -26
  82. package/src/structures/IReflectHttpOperationException.ts +19 -19
  83. package/src/structures/IReflectHttpOperationParameter.ts +81 -81
  84. package/src/structures/IReflectHttpOperationSuccess.ts +22 -22
  85. package/src/structures/IReflectOperationError.ts +26 -26
  86. package/src/structures/IReflectType.ts +4 -4
  87. package/src/structures/IReflectTypeImport.ts +4 -4
  88. package/src/structures/IReflectWebSocketOperation.ts +17 -17
  89. package/src/structures/IReflectWebSocketOperationParameter.ts +38 -38
  90. package/src/structures/ITypedApplication.ts +11 -11
  91. package/src/structures/ITypedHttpRoute.ts +30 -30
  92. package/src/structures/ITypedHttpRouteException.ts +15 -15
  93. package/src/structures/ITypedHttpRouteParameter.ts +41 -41
  94. package/src/structures/ITypedHttpRouteSuccess.ts +22 -22
  95. package/src/structures/ITypedWebSocketRoute.ts +20 -20
  96. package/src/structures/ITypedWebSocketRouteParameter.ts +3 -3
  97. package/src/structures/MethodType.ts +5 -5
  98. package/src/structures/ParamCategory.ts +1 -1
  99. package/src/structures/TypeEntry.ts +22 -22
  100. package/src/transform.ts +9 -9
  101. package/src/transformers/IOperationMetadata.ts +44 -44
  102. package/src/transformers/ISdkOperationTransformerContext.ts +8 -8
  103. package/src/transformers/SdkOperationProgrammer.ts +209 -209
  104. package/src/transformers/SdkOperationTransformer.ts +253 -253
  105. package/src/transformers/TextPlainValidator.ts +17 -17
  106. package/src/typings/get-function-location.d.ts +7 -7
  107. package/src/utils/ArrayUtil.ts +26 -26
  108. package/src/utils/FileRetriever.ts +22 -22
  109. package/src/utils/MapUtil.ts +14 -14
  110. package/src/utils/MetadataUtil.ts +26 -26
  111. package/src/utils/PathUtil.ts +10 -10
  112. package/src/utils/SourceFinder.ts +66 -66
  113. package/src/utils/StringUtil.ts +17 -17
  114. package/src/utils/StripEnums.ts +5 -5
  115. package/src/utils/TypeLiteralExpression.ts +0 -0
  116. package/src/utils/VersioningStrategy.ts +28 -28
  117. package/src/validators/HttpHeadersValidator.ts +34 -34
  118. package/src/validators/HttpQueryValidator.ts +34 -34
@@ -0,0 +1,120 @@
1
+ import ts from "typescript";
2
+ import { ExpressionFactory } from "typia/lib/factories/ExpressionFactory";
3
+ import { LiteralFactory } from "typia/lib/factories/LiteralFactory";
4
+ import { IMetadataTypeTag } from "typia/lib/schemas/metadata/IMetadataTypeTag";
5
+
6
+ import { ImportDictionary } from "./ImportDictionary";
7
+
8
+ export namespace SdkTypeTagProgrammer {
9
+ export const write = (
10
+ importer: ImportDictionary,
11
+ from: "object" | "array" | "boolean" | "number" | "bigint" | "string",
12
+ tag: IMetadataTypeTag,
13
+ ) => {
14
+ const instance: string = tag.name.split("<")[0];
15
+ if (PREDEFINED[from]?.has(instance) === true)
16
+ return ts.factory.createTypeReferenceNode(
17
+ importer.external({
18
+ type: true,
19
+ library: `typia/lib/tags/${instance}`,
20
+ instance,
21
+ }),
22
+ instance === "Example"
23
+ ? []
24
+ : [
25
+ ts.factory.createLiteralTypeNode(
26
+ typeof tag.value === "boolean"
27
+ ? tag.value
28
+ ? ts.factory.createTrue()
29
+ : ts.factory.createFalse()
30
+ : typeof tag.value === "bigint"
31
+ ? tag.value < BigInt(0)
32
+ ? ts.factory.createPrefixUnaryExpression(
33
+ ts.SyntaxKind.MinusToken,
34
+ ts.factory.createBigIntLiteral(
35
+ (-tag.value).toString(),
36
+ ),
37
+ )
38
+ : ts.factory.createBigIntLiteral(tag.value.toString())
39
+ : typeof tag.value === "number"
40
+ ? ExpressionFactory.number(tag.value)
41
+ : ts.factory.createStringLiteral(tag.value),
42
+ ),
43
+ ],
44
+ );
45
+ return ts.factory.createTypeReferenceNode(
46
+ importer.external({
47
+ type: true,
48
+ library: `typia/lib/tags/TagBase`,
49
+ instance: "TagBase",
50
+ }),
51
+ [
52
+ ts.factory.createLiteralTypeNode(
53
+ LiteralFactory.write({
54
+ target: from,
55
+ kind: tag.kind,
56
+ value: tag.value,
57
+ validate: tag.validate,
58
+ exclusive: tag.exclusive,
59
+ schema: tag.schema,
60
+ }) as any,
61
+ ),
62
+ ],
63
+ );
64
+ };
65
+ }
66
+
67
+ const COMMON_KINDS = ["Default", "Example", "Examples", "Sequence"];
68
+ const PREDEFINED = {
69
+ object: new Set([...COMMON_KINDS]),
70
+ array: new Set([...COMMON_KINDS, "MinItems", "MaxItems", "UniqueItems"]),
71
+ boolean: new Set([...COMMON_KINDS]),
72
+ number: new Set([
73
+ ...COMMON_KINDS,
74
+ "Minimum",
75
+ "Maximum",
76
+ "ExclusiveMinimum",
77
+ "ExclusiveMaximum",
78
+ "MultipleOf",
79
+ "Type",
80
+ ]),
81
+ bigint: new Set([
82
+ ...COMMON_KINDS,
83
+ "Minimum",
84
+ "Maximum",
85
+ "ExclusiveMinimum",
86
+ "ExclusiveMaximum",
87
+ "MultipleOf",
88
+ "Type",
89
+ ]),
90
+ string: new Set([
91
+ ...COMMON_KINDS,
92
+ "ContentMediaType",
93
+ "Format",
94
+ "MaxLength",
95
+ "MinLength",
96
+ "Pattern",
97
+ ]),
98
+ };
99
+
100
+ // export * from "./Constant";
101
+ // export * from "./ContentMediaType";
102
+ // export * from "./Default";
103
+ // export * from "./Example";
104
+ // export * from "./Examples";
105
+ // export * from "./ExclusiveMaximum";
106
+ // export * from "./ExclusiveMinimum";
107
+ // export * from "./Format";
108
+ // export * from "./JsonSchemaPlugin";
109
+ // export * from "./Maximum";
110
+ // export * from "./MaxItems";
111
+ // export * from "./MaxLength";
112
+ // export * from "./Minimum";
113
+ // export * from "./MinItems";
114
+ // export * from "./MinLength";
115
+ // export * from "./MultipleOf";
116
+ // export * from "./Pattern";
117
+ // export * from "./Sequence";
118
+ // export * from "./TagBase";
119
+ // export * from "./Type";
120
+ // export * from "./UniqueItems";