@nestia/sdk 13.0.4 → 14.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 (186) hide show
  1. package/README.md +1 -1
  2. package/assets/bundle/distribute/package.json +2 -2
  3. package/assets/bundle/distribute/tsconfig.json +15 -105
  4. package/lib/INestiaConfig.d.ts +19 -10
  5. package/lib/NestiaSdkApplication.js +58 -27
  6. package/lib/NestiaSdkApplication.js.map +1 -1
  7. package/lib/NestiaSwaggerComposer.js +11 -10
  8. package/lib/NestiaSwaggerComposer.js.map +1 -1
  9. package/lib/analyses/ConfigAnalyzer.js +4 -4
  10. package/lib/analyses/ConfigAnalyzer.js.map +1 -1
  11. package/lib/analyses/ParameterNameAnalyzer.d.ts +20 -0
  12. package/lib/analyses/ParameterNameAnalyzer.js +48 -0
  13. package/lib/analyses/ParameterNameAnalyzer.js.map +1 -0
  14. package/lib/analyses/PathAnalyzer.d.ts +30 -0
  15. package/lib/analyses/PathAnalyzer.js +108 -16
  16. package/lib/analyses/PathAnalyzer.js.map +1 -1
  17. package/lib/analyses/ReflectControllerAnalyzer.js +2 -1
  18. package/lib/analyses/ReflectControllerAnalyzer.js.map +1 -1
  19. package/lib/analyses/ReflectHttpOperationAnalyzer.js +7 -7
  20. package/lib/analyses/ReflectHttpOperationAnalyzer.js.map +1 -1
  21. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js +122 -23
  22. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js.map +1 -1
  23. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js +5 -2
  24. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js.map +1 -1
  25. package/lib/analyses/ReflectMcpOperationAnalyzer.js +5 -2
  26. package/lib/analyses/ReflectMcpOperationAnalyzer.js.map +1 -1
  27. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js +6 -3
  28. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js.map +1 -1
  29. package/lib/analyses/SecurityAnalyzer.d.ts +10 -0
  30. package/lib/analyses/SecurityAnalyzer.js +24 -19
  31. package/lib/analyses/SecurityAnalyzer.js.map +1 -1
  32. package/lib/analyses/SwaggerExampleAnalyzer.d.ts +15 -0
  33. package/lib/analyses/SwaggerExampleAnalyzer.js +20 -0
  34. package/lib/analyses/SwaggerExampleAnalyzer.js.map +1 -0
  35. package/lib/analyses/TypedHttpRouteAnalyzer.js +30 -21
  36. package/lib/analyses/TypedHttpRouteAnalyzer.js.map +1 -1
  37. package/lib/analyses/TypedWebSocketRouteAnalyzer.js +1 -1
  38. package/lib/analyses/TypedWebSocketRouteAnalyzer.js.map +1 -1
  39. package/lib/executable/internal/NestiaSdkWatcher.js +3 -3
  40. package/lib/executable/internal/NestiaSdkWatcher.js.map +1 -1
  41. package/lib/executable/sdk.js +16 -1
  42. package/lib/executable/sdk.js.map +1 -1
  43. package/lib/factories/ExpressionFactory.d.ts +3 -0
  44. package/lib/factories/ExpressionFactory.js +6 -2
  45. package/lib/factories/ExpressionFactory.js.map +1 -1
  46. package/lib/factories/LiteralFactory.js +3 -1
  47. package/lib/factories/LiteralFactory.js.map +1 -1
  48. package/lib/generates/SdkGenerator.js +3 -3
  49. package/lib/generates/SdkGenerator.js.map +1 -1
  50. package/lib/generates/SwaggerGenerator.js +135 -27
  51. package/lib/generates/SwaggerGenerator.js.map +1 -1
  52. package/lib/generates/internal/FilePrinter.d.ts +14 -0
  53. package/lib/generates/internal/FilePrinter.js +31 -0
  54. package/lib/generates/internal/FilePrinter.js.map +1 -1
  55. package/lib/generates/internal/ImportDictionary.d.ts +2 -0
  56. package/lib/generates/internal/ImportDictionary.js +13 -0
  57. package/lib/generates/internal/ImportDictionary.js.map +1 -1
  58. package/lib/generates/internal/SdkAliasCollection.d.ts +2 -1
  59. package/lib/generates/internal/SdkAliasCollection.js +8 -4
  60. package/lib/generates/internal/SdkAliasCollection.js.map +1 -1
  61. package/lib/generates/internal/SdkDistributionComposer.js +72 -14
  62. package/lib/generates/internal/SdkDistributionComposer.js.map +1 -1
  63. package/lib/generates/internal/SdkFileProgrammer.js +83 -12
  64. package/lib/generates/internal/SdkFileProgrammer.js.map +1 -1
  65. package/lib/generates/internal/SdkHttpFunctionProgrammer.js +21 -23
  66. package/lib/generates/internal/SdkHttpFunctionProgrammer.js.map +1 -1
  67. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js +27 -34
  68. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js.map +1 -1
  69. package/lib/generates/internal/SdkHttpParameterProgrammer.d.ts +40 -1
  70. package/lib/generates/internal/SdkHttpParameterProgrammer.js +105 -6
  71. package/lib/generates/internal/SdkHttpParameterProgrammer.js.map +1 -1
  72. package/lib/generates/internal/SdkHttpRouteProgrammer.js +16 -32
  73. package/lib/generates/internal/SdkHttpRouteProgrammer.js.map +1 -1
  74. package/lib/generates/internal/SdkHttpSimulationProgrammer.js +18 -14
  75. package/lib/generates/internal/SdkHttpSimulationProgrammer.js.map +1 -1
  76. package/lib/generates/internal/SdkMcpRouteProgrammer.js +39 -11
  77. package/lib/generates/internal/SdkMcpRouteProgrammer.js.map +1 -1
  78. package/lib/generates/internal/SdkPathTemplate.d.ts +21 -0
  79. package/lib/generates/internal/SdkPathTemplate.js +50 -0
  80. package/lib/generates/internal/SdkPathTemplate.js.map +1 -0
  81. package/lib/generates/internal/SdkTypeProgrammer.js +15 -15
  82. package/lib/generates/internal/SdkTypeProgrammer.js.map +1 -1
  83. package/lib/generates/internal/SdkTypeTagProgrammer.d.ts +20 -1
  84. package/lib/generates/internal/SdkTypeTagProgrammer.js +386 -67
  85. package/lib/generates/internal/SdkTypeTagProgrammer.js.map +1 -1
  86. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js +27 -36
  87. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js.map +1 -1
  88. package/lib/generates/internal/SdkWebSocketParameterProgrammer.d.ts +35 -1
  89. package/lib/generates/internal/SdkWebSocketParameterProgrammer.js +72 -5
  90. package/lib/generates/internal/SdkWebSocketParameterProgrammer.js.map +1 -1
  91. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js +57 -33
  92. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js.map +1 -1
  93. package/lib/generates/internal/SwaggerOperationComposer.js +19 -8
  94. package/lib/generates/internal/SwaggerOperationComposer.js.map +1 -1
  95. package/lib/generates/internal/SwaggerOperationParameterComposer.d.ts +1 -1
  96. package/lib/generates/internal/SwaggerOperationParameterComposer.js +201 -19
  97. package/lib/generates/internal/SwaggerOperationParameterComposer.js.map +1 -1
  98. package/lib/generates/internal/SwaggerOperationResponseComposer.d.ts +2 -0
  99. package/lib/generates/internal/SwaggerOperationResponseComposer.js +39 -7
  100. package/lib/generates/internal/SwaggerOperationResponseComposer.js.map +1 -1
  101. package/lib/internal/legacy.d.ts +49 -18
  102. package/lib/internal/legacy.js +84 -25
  103. package/lib/internal/legacy.js.map +1 -1
  104. package/lib/structures/IOperationMetadata.d.ts +22 -0
  105. package/lib/structures/IReflectHttpOperationException.d.ts +3 -2
  106. package/lib/structures/IReflectHttpOperationParameter.d.ts +8 -3
  107. package/lib/structures/IReflectHttpOperationSuccess.d.ts +4 -3
  108. package/lib/structures/ITypedHttpRoute.d.ts +8 -0
  109. package/lib/structures/ITypedHttpRouteException.d.ts +3 -1
  110. package/lib/structures/ITypedHttpRouteParameter.d.ts +3 -1
  111. package/lib/structures/ITypedHttpRouteSuccess.d.ts +3 -1
  112. package/lib/structures/ITypedWebSocketRoute.d.ts +8 -0
  113. package/lib/utils/SourceFinder.d.ts +10 -0
  114. package/lib/utils/SourceFinder.js +27 -4
  115. package/lib/utils/SourceFinder.js.map +1 -1
  116. package/lib/utils/VersioningStrategy.d.ts +13 -1
  117. package/lib/utils/VersioningStrategy.js +24 -12
  118. package/lib/utils/VersioningStrategy.js.map +1 -1
  119. package/native/go.mod +1 -1
  120. package/native/go.sum +2 -2
  121. package/native/sdk/sdk_http_rules.go +210 -0
  122. package/native/sdk/sdk_metadata_json.go +73 -3
  123. package/native/sdk/sdk_transform.go +801 -49
  124. package/package.json +8 -8
  125. package/src/INestiaConfig.ts +19 -10
  126. package/src/NestiaSdkApplication.ts +63 -34
  127. package/src/NestiaSwaggerComposer.ts +11 -8
  128. package/src/analyses/ConfigAnalyzer.ts +3 -3
  129. package/src/analyses/ParameterNameAnalyzer.ts +51 -0
  130. package/src/analyses/PathAnalyzer.ts +106 -14
  131. package/src/analyses/ReflectControllerAnalyzer.ts +2 -1
  132. package/src/analyses/ReflectHttpOperationAnalyzer.ts +4 -4
  133. package/src/analyses/ReflectHttpOperationParameterAnalyzer.ts +122 -39
  134. package/src/analyses/ReflectHttpOperationResponseAnalyzer.ts +6 -7
  135. package/src/analyses/ReflectMcpOperationAnalyzer.ts +6 -2
  136. package/src/analyses/ReflectWebSocketOperationAnalyzer.ts +7 -3
  137. package/src/analyses/SecurityAnalyzer.ts +30 -20
  138. package/src/analyses/SwaggerExampleAnalyzer.ts +23 -0
  139. package/src/analyses/TypedHttpRouteAnalyzer.ts +29 -20
  140. package/src/analyses/TypedWebSocketRouteAnalyzer.ts +1 -0
  141. package/src/executable/internal/NestiaSdkWatcher.ts +2 -2
  142. package/src/executable/sdk.ts +24 -1
  143. package/src/factories/ExpressionFactory.ts +8 -2
  144. package/src/factories/LiteralFactory.ts +7 -2
  145. package/src/generates/SdkGenerator.ts +3 -3
  146. package/src/generates/SwaggerGenerator.ts +173 -32
  147. package/src/generates/internal/FilePrinter.ts +28 -0
  148. package/src/generates/internal/ImportDictionary.ts +11 -0
  149. package/src/generates/internal/SdkAliasCollection.ts +11 -4
  150. package/src/generates/internal/SdkDistributionComposer.ts +89 -15
  151. package/src/generates/internal/SdkFileProgrammer.ts +108 -16
  152. package/src/generates/internal/SdkHttpFunctionProgrammer.ts +28 -30
  153. package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +34 -64
  154. package/src/generates/internal/SdkHttpParameterProgrammer.ts +193 -13
  155. package/src/generates/internal/SdkHttpRouteProgrammer.ts +17 -31
  156. package/src/generates/internal/SdkHttpSimulationProgrammer.ts +51 -14
  157. package/src/generates/internal/SdkMcpRouteProgrammer.ts +112 -15
  158. package/src/generates/internal/SdkPathTemplate.ts +73 -0
  159. package/src/generates/internal/SdkTypeProgrammer.ts +19 -22
  160. package/src/generates/internal/SdkTypeTagProgrammer.ts +506 -78
  161. package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +43 -68
  162. package/src/generates/internal/SdkWebSocketParameterProgrammer.ts +126 -5
  163. package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +71 -48
  164. package/src/generates/internal/SwaggerOperationComposer.ts +20 -6
  165. package/src/generates/internal/SwaggerOperationParameterComposer.ts +279 -30
  166. package/src/generates/internal/SwaggerOperationResponseComposer.ts +55 -11
  167. package/src/internal/legacy.ts +114 -26
  168. package/src/structures/IOperationMetadata.ts +28 -0
  169. package/src/structures/IReflectHttpOperationException.ts +7 -2
  170. package/src/structures/IReflectHttpOperationParameter.ts +9 -2
  171. package/src/structures/IReflectHttpOperationSuccess.ts +8 -3
  172. package/src/structures/ITypedHttpRoute.ts +8 -0
  173. package/src/structures/ITypedHttpRouteException.ts +4 -1
  174. package/src/structures/ITypedHttpRouteParameter.ts +3 -1
  175. package/src/structures/ITypedHttpRouteSuccess.ts +4 -1
  176. package/src/structures/ITypedWebSocketRoute.ts +8 -0
  177. package/src/utils/SourceFinder.ts +25 -4
  178. package/src/utils/VersioningStrategy.ts +28 -13
  179. package/lib/validators/HttpHeadersValidator.d.ts +0 -11
  180. package/lib/validators/HttpHeadersValidator.js +0 -15
  181. package/lib/validators/HttpHeadersValidator.js.map +0 -1
  182. package/lib/validators/HttpQueryValidator.d.ts +0 -10
  183. package/lib/validators/HttpQueryValidator.js +0 -14
  184. package/lib/validators/HttpQueryValidator.js.map +0 -1
  185. package/src/validators/HttpHeadersValidator.ts +0 -12
  186. package/src/validators/HttpQueryValidator.ts +0 -11
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SwaggerOperationParameterComposer = void 0;
4
+ const utils_1 = require("@typia/utils");
4
5
  const tstl_1 = require("tstl");
5
6
  const legacy_1 = require("../../internal/legacy");
6
7
  const SwaggerDescriptionComposer_1 = require("./SwaggerDescriptionComposer");
@@ -21,7 +22,7 @@ var SwaggerOperationParameterComposer;
21
22
  tag: "param",
22
23
  parameter: props.parameter.name,
23
24
  });
24
- return Object.assign({ description: props.parameter.encrypted
25
+ const output = Object.assign({ description: props.parameter.encrypted
25
26
  ? `${warning.get(!!description)}${description !== null && description !== void 0 ? description : ""}`
26
27
  : description, content: {
27
28
  [props.parameter.contentType]: {
@@ -30,6 +31,52 @@ var SwaggerOperationParameterComposer;
30
31
  examples: props.parameter.examples,
31
32
  },
32
33
  }, required: props.parameter.metadata.required }, (props.parameter.encrypted ? { "x-nestia-encrypted": true } : {}));
34
+ return props.config.openapi === "2.0"
35
+ ? swaggerV2Body(props, output)
36
+ : output;
37
+ };
38
+ /**
39
+ * The request body a Swagger 2.0 document can hold.
40
+ *
41
+ * Typia's downgrader refuses what 2.0 has no place for rather than lose it,
42
+ * so one route used to fail the whole document (#1649). A 2.0 body parameter
43
+ * holds only a schema: no example, and no `x-nestia-encrypted` flag, whose
44
+ * warning the description keeps. A form becomes one `formData` parameter per
45
+ * field, which carry neither the body's description nor the form object's own
46
+ * attributes, and are each required or not; so a form keeps only its fields,
47
+ * is required when one of them is, and without fields has no body to list. A
48
+ * `formData` file is one file, never an array, a union, or null, so a field
49
+ * taking several files, or none, is listed as one file, optional unless it
50
+ * requires one ({@link swaggerV2FormField}).
51
+ */
52
+ const swaggerV2Body = (props, body) => {
53
+ var _a, _b, _c;
54
+ const contentType = props.parameter.contentType;
55
+ if (contentType !== "multipart/form-data" &&
56
+ contentType !== "application/x-www-form-urlencoded")
57
+ return {
58
+ description: body.description,
59
+ content: { [contentType]: { schema: props.schema } },
60
+ required: body.required,
61
+ };
62
+ const object = resolveObject(props.document, props.schema);
63
+ if (object === undefined ||
64
+ Object.keys((_a = object.properties) !== null && _a !== void 0 ? _a : {}).length === 0)
65
+ return undefined;
66
+ const fields = Object.entries((_b = object.properties) !== null && _b !== void 0 ? _b : {}).map(([key, value]) => [key, swaggerV2FormField(value)]);
67
+ const required = ((_c = object.required) !== null && _c !== void 0 ? _c : []).filter((key) => { var _a; return ((_a = fields.find(([name]) => name === key)) === null || _a === void 0 ? void 0 : _a[1].optional) !== true; });
68
+ return {
69
+ content: {
70
+ [contentType]: {
71
+ schema: {
72
+ type: "object",
73
+ properties: Object.fromEntries(fields.map(([key, field]) => [key, field.schema])),
74
+ required,
75
+ },
76
+ },
77
+ },
78
+ required: required.length !== 0,
79
+ };
33
80
  };
34
81
  const path = (props) => ({
35
82
  name: props.parameter.field,
@@ -51,51 +98,186 @@ var SwaggerOperationParameterComposer;
51
98
  };
52
99
  const decomposible = (props) => {
53
100
  var _a;
101
+ var _b, _c;
102
+ const object = (_a = props.parameter.metadata
103
+ .objects[0]) === null || _a === void 0 ? void 0 : _a.type;
54
104
  const param = {
55
- name: (_a = props.parameter.field) !== null && _a !== void 0 ? _a : props.parameter.name,
105
+ name: (_b = props.parameter.field) !== null && _b !== void 0 ? _b : props.parameter.name,
56
106
  in: props.parameter.category === "query" ? "query" : "header",
57
107
  schema: props.schema,
58
108
  description: parameterDescription(props),
59
- required: props.parameter.metadata.required,
109
+ // An unnamed object's keys are the request's own query keys or headers,
110
+ // so it is mandatory only when one of the keys the document describes
111
+ // is; an object whose described properties are all optional is satisfied
112
+ // when the request sends none of them. A field-named parameter is one
113
+ // key, required as declared.
114
+ required: props.parameter.metadata.required &&
115
+ (props.parameter.field !== null ||
116
+ ((_c = object === null || object === void 0 ? void 0 : object.properties.some((p) => isDescribed(p) && (0, legacy_1.isRequiredOf)(p.value))) !== null && _c !== void 0 ? _c : true)),
60
117
  example: props.parameter.example,
61
118
  examples: props.parameter.examples,
62
119
  };
63
- if (props.config.decompose === false ||
64
- props.parameter.metadata.objects.length === 0)
120
+ // A field-named parameter is one key, which typia's HTTP rules (#1648)
121
+ // keep atomic, and a query or headers object passed them: one object of
122
+ // statically named atomic or array-of-atomic properties, so each has a
123
+ // name to give its parameter.
124
+ if (props.parameter.field !== null || object === undefined)
65
125
  return [param];
66
- return props.parameter.metadata.objects[0].type.properties
67
- .filter((p) => p.jsDocTags.every((tag) => tag.name !== "hidden" && tag.name !== "ignore"))
126
+ // `decompose: false` keeps a query object one parameter where the format
127
+ // can say so: OpenAPI 3.x spreads it into its keys with `style: form` and
128
+ // `explode: true`. Swagger 2.0 has no object query parameter, and no
129
+ // format spreads an object into headers, so one parameter would be a key
130
+ // or header no request carries (#1653); those are always decomposed.
131
+ if (props.config.decompose === false &&
132
+ props.parameter.category === "query" &&
133
+ props.config.openapi !== "2.0")
134
+ return [Object.assign(Object.assign({}, param), { style: "form", explode: true })];
135
+ // One parameter per property typia's object schema describes, so the
136
+ // decomposed form says what `decompose: false` would say about the object:
137
+ // the property's schema, and in the parameter's own fields its
138
+ // description, deprecation, and share of the object's examples.
139
+ return object.properties
140
+ .filter(isDescribed)
68
141
  .map((p) => {
69
- var _a, _b, _c, _d;
70
- var _e, _f;
71
- const json = legacy_1.JsonSchemasProgrammer.writeSchemas({
142
+ var _a, _b, _c, _d, _e;
143
+ var _f, _g, _h;
144
+ const key = String(p.key.constants[0].values[0].value);
145
+ const json = legacy_1.JsonSchemasProgrammer.writeProperty({
72
146
  version: "3.1",
73
- metadatas: [p.value],
147
+ metadata: props.parameter.metadata,
148
+ key,
149
+ value: p.value,
74
150
  });
151
+ if (json === null)
152
+ return null;
75
153
  SwaggerReadonlyArrayEmender_1.SwaggerReadonlyArrayEmender.emend({
76
154
  components: json.components,
77
155
  schema: json.schemas[0],
78
156
  metadata: p.value,
79
157
  });
80
- if (Object.keys((_a = json.components.schemas) !== null && _a !== void 0 ? _a : {}).length !== 0) {
81
- (_b = (_e = props.document).components) !== null && _b !== void 0 ? _b : (_e.components = {});
82
- (_c = (_f = props.document.components).schemas) !== null && _c !== void 0 ? _c : (_f.schemas = {});
83
- Object.assign(props.document.components.schemas, json.components.schemas);
84
- }
158
+ // Only what the document lacks: the parameter's own schema already
159
+ // brought every component its properties reach, emended for readonly
160
+ // arrays, and this copy is not.
161
+ (_a = (_f = props.document).components) !== null && _a !== void 0 ? _a : (_f.components = {});
162
+ (_b = (_g = props.document.components).schemas) !== null && _b !== void 0 ? _b : (_g.schemas = {});
163
+ for (const [name, schema] of Object.entries((_c = json.components.schemas) !== null && _c !== void 0 ? _c : {}))
164
+ (_d = (_h = props.document.components.schemas)[name]) !== null && _d !== void 0 ? _d : (_h[name] = schema);
85
165
  return {
86
- name: p.key.constants[0].values[0].value,
166
+ name: key,
87
167
  in: props.parameter.category === "query" ? "query" : "header",
88
168
  schema: json.schemas[0],
89
169
  required: (0, legacy_1.isRequiredOf)(p.value),
90
170
  description: SwaggerDescriptionComposer_1.SwaggerDescriptionComposer.compose({
91
- description: (_d = p.description) !== null && _d !== void 0 ? _d : null,
171
+ description: (_e = p.description) !== null && _e !== void 0 ? _e : null,
92
172
  jsDocTags: p.jsDocTags,
93
173
  kind: "title",
94
174
  }).description,
175
+ // Swagger 2.0 defines no `deprecated` on a parameter, and the
176
+ // downgrader copies the field through rather than refusing it.
177
+ deprecated: props.config.openapi !== "2.0" &&
178
+ p.jsDocTags.some((tag) => tag.name === "deprecated")
179
+ ? true
180
+ : undefined,
181
+ example: memberOf(props.parameter.example, key),
182
+ examples: membersOf(props.parameter.examples, key),
95
183
  };
96
- });
184
+ })
185
+ .filter((p) => p !== null);
97
186
  };
98
187
  })(SwaggerOperationParameterComposer || (exports.SwaggerOperationParameterComposer = SwaggerOperationParameterComposer = {}));
188
+ /**
189
+ * Whether the document can describe a property on its own: it has a literal key
190
+ * to name it, and none of the `@hidden`, `@ignore`, and `@internal` tags
191
+ * typia's object schema drops it for.
192
+ */
193
+ const isDescribed = (p) => (0, legacy_1.isSoleLiteralOf)(p.key) &&
194
+ p.jsDocTags.every((tag) => tag.name !== "hidden" && tag.name !== "ignore" && tag.name !== "internal");
195
+ /**
196
+ * A form field as a Swagger 2.0 `formData` parameter can hold it.
197
+ *
198
+ * A 2.0 file is one file: never an array, a union, or null. A field whose value
199
+ * is made of files, a union of files or one of them or null, or an array of
200
+ * those, becomes the one file a request may carry, keeping the field's title,
201
+ * description, and deprecation. A request may then carry none, since the server
202
+ * reads a missing field as null or an empty array, so such a field is not
203
+ * required unless its array requires an item; a plain file is kept as it is.
204
+ */
205
+ const swaggerV2FormField = (schema) => {
206
+ const file = fileOf(schema, true);
207
+ if (file === undefined || file.binary === schema)
208
+ return { schema, optional: false };
209
+ const attributes = schema;
210
+ return {
211
+ schema: Object.assign(Object.assign(Object.assign(Object.assign({}, file.binary), (attributes.title !== undefined ? { title: attributes.title } : {})), (attributes.description !== undefined
212
+ ? { description: attributes.description }
213
+ : {})), (attributes.deprecated !== undefined
214
+ ? { deprecated: attributes.deprecated }
215
+ : {})),
216
+ optional: file.optional,
217
+ };
218
+ };
219
+ /** The file a field's value is made of, if it is made of files only. */
220
+ const fileOf = (schema, top) => {
221
+ var _a;
222
+ if (isBinary(schema))
223
+ return { binary: schema, optional: false };
224
+ if (utils_1.OpenApiTypeChecker.isOneOf(schema)) {
225
+ const members = schema.oneOf.filter((s) => utils_1.OpenApiTypeChecker.isNull(s) === false);
226
+ const files = members.map((s) => fileOf(s, top));
227
+ if (files.length === 0 || files.some((f) => f === undefined))
228
+ return undefined;
229
+ return {
230
+ binary: files[0].binary,
231
+ optional: members.length !== schema.oneOf.length ||
232
+ files.some((f) => f.optional),
233
+ };
234
+ }
235
+ if (top && utils_1.OpenApiTypeChecker.isArray(schema)) {
236
+ const item = fileOf(schema.items, false);
237
+ // an empty array is a request without the field, unless one file is due
238
+ return item === undefined
239
+ ? undefined
240
+ : { binary: item.binary, optional: ((_a = schema.minItems) !== null && _a !== void 0 ? _a : 0) === 0 };
241
+ }
242
+ return undefined;
243
+ };
244
+ const isBinary = (schema) => utils_1.OpenApiTypeChecker.isString(schema) && schema.format === "binary";
245
+ /** The object schema `schema` is or refers to, if it is one. */
246
+ const resolveObject = (document, schema) => {
247
+ var _a, _b;
248
+ const visited = new Set();
249
+ while (utils_1.OpenApiTypeChecker.isReference(schema)) {
250
+ if (visited.has(schema.$ref))
251
+ return undefined;
252
+ visited.add(schema.$ref);
253
+ const next = (_b = (_a = document.components) === null || _a === void 0 ? void 0 : _a.schemas) === null || _b === void 0 ? void 0 : _b[schema.$ref.substring("#/components/schemas/".length)];
254
+ if (next === undefined)
255
+ return undefined;
256
+ schema = next;
257
+ }
258
+ return utils_1.OpenApiTypeChecker.isObject(schema) ? schema : undefined;
259
+ };
260
+ /** The `key` member of an object example, if the example has one. */
261
+ const memberOf = (example, key) => typeof example === "object" &&
262
+ example !== null &&
263
+ Object.prototype.hasOwnProperty.call(example, key)
264
+ ? example[key]
265
+ : undefined;
266
+ /**
267
+ * Named object examples narrowed to the ones whose value has a `key` member,
268
+ * each an Example Object of that member.
269
+ */
270
+ const membersOf = (examples, key) => {
271
+ if (examples === undefined)
272
+ return undefined;
273
+ const entries = Object.entries(examples)
274
+ .map(([name, example]) => [
275
+ name,
276
+ Object.assign(Object.assign({}, example), { value: memberOf(example.value, key) }),
277
+ ])
278
+ .filter(([, example]) => example.value !== undefined);
279
+ return entries.length !== 0 ? Object.fromEntries(entries) : undefined;
280
+ };
99
281
  const warning = new tstl_1.VariadicSingleton((described) => {
100
282
  const summary = "Request body must be encrypted.";
101
283
  const component = "[EncryptedBody](https://github.com/samchon/@nestia/core#encryptedbody)";
@@ -1 +1 @@
1
- {"version":3,"file":"SwaggerOperationParameterComposer.js","sourceRoot":"","sources":["../../../src/generates/internal/SwaggerOperationParameterComposer.ts"],"names":[],"mappings":";;;AACA,+BAAyC;AAIzC,kDAI+B;AAE/B,6EAA0E;AAC1E,+EAA4E;AAE5E,IAAiB,iCAAiC,CAgJjD;AAhJD,WAAiB,iCAAiC;IASnC,yCAAO,GAAG,CACrB,KAAuC,EACN,EAAE,CACnC,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,MAAM;QACjC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO;YACpC,CAAC,CAAC,CAAC,IAAI,iCAAM,KAAK,KAAE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAG,CAAC;YAClD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO;gBACpC,CAAC,CAAC,KAAK,iCAAM,KAAK,KAAE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAG;gBACjD,CAAC,CAAC,MAAM,iCAAM,KAAK,KAAE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAG,CAAC;IAE9C,sCAAI,GAAG,CAClB,KAA0E,EACzC,EAAE;;QACnC,MAAM,WAAW,SACf,KAAK,CAAC,SAAS,CAAC,WAAW,mCAC3B,uDAA0B,CAAC,uBAAuB,CAAC;YACjD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,GAAG,EAAE,OAAO;YACZ,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QACL,uBACE,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS;gBACpC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,EAAE;gBACrD,CAAC,CAAC,WAAW,EACf,OAAO,EAAE;gBACP,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;oBAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;oBAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;iBACnC;aACF,EACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,IACxC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACpE;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CACX,KAA0E,EAC3C,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;QAC3B,EAAE,EAAE,MAAM;QACV,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ;QAC3C,WAAW,EAAE,oBAAoB,CAAC,KAAK,CAAC;QACxC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;QAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;KACnC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CACZ,KAA8C,EACb,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,CACb,KAAgD,EACf,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,oBAAoB,GAAG,CAC3B,KAAwE,EACpD,EAAE;;;QACtB,OAAO,aACL,KAAK,CAAC,SAAS,CAAC,WAAW,mCAC3B,MAAA,MAAA,MAAA,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,0CAC/D,IAAI,0CAAG,CAAC,CAAC,0CAAE,IAAI,mCACnB,MAAA,MAAA,KAAK,CAAC,SAAS;aACZ,IAAI,CACH,CAAC,GAAG,EAAE,EAAE,sBACN,GAAG,CAAC,IAAI,KAAK,OAAO;YACpB,CAAA,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAG,CAAC,CAAC,0CAAE,IAAI,MAAK,KAAK,CAAC,SAAS,CAAC,IAAI,GAAA,CAC/C,0CACC,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EACxB,IAAI,CAAC,EAAE,EACP,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EACrC,IAAI,EAAE,CACV,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CACnB,KAEC,EACgC,EAAE;;QACnC,MAAM,KAAK,GAAkC;YAC3C,IAAI,QAAE,KAAK,CAAC,SAAS,CAAC,KAAK,mCAAI,KAAK,CAAC,SAAS,CAAC,IAAI;YACnD,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;YAC7D,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW,EAAE,oBAAoB,CAAC,KAAK,CAAC;YACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ;YAC3C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;YAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;SACnC,CAAC;QACF,IACE,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK;YAChC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAE7C,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,OACE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IACtC,CAAC,UAAU;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,SAAS,CAAC,KAAK,CACf,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,CACxD,CACF;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;;YACT,MAAM,IAAI,GAA0B,8BAAqB,CAAC,YAAY,CAAC;gBACrE,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACrB,CAA0B,CAAC;YAC5B,yDAA2B,CAAC,KAAK,CAAC;gBAChC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvB,QAAQ,EAAE,CAAC,CAAC,KAAK;aAClB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,OAAC,IAAI,CAAC,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5D,YAAA,KAAK,CAAC,QAAQ,EAAC,UAAU,uCAAV,UAAU,GAAK,EAAE,EAAC;gBACjC,YAAA,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAC,OAAO,uCAAP,OAAO,GAAK,EAAE,EAAC;gBACzC,MAAM,CAAC,MAAM,CACX,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EACjC,IAAI,CAAC,UAAU,CAAC,OAAO,CACxB,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,KAAe;gBACpD,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;gBAC7D,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE;gBACxB,QAAQ,EAAE,IAAA,qBAAY,EAAC,CAAC,CAAC,KAAK,CAAC;gBAC/B,WAAW,EAAE,uDAA0B,CAAC,OAAO,CAAC;oBAC9C,WAAW,QAAE,CAAC,CAAC,WAAW,mCAAI,IAAI;oBAClC,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC,WAAW;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACJ,CAAC,EAhJgB,iCAAiC,aAAjC,iCAAiC,GAAjC,iCAAiC,QAgJjD;AAED,MAAM,OAAO,GAAG,IAAI,wBAAiB,CAAC,CAAC,SAAkB,EAAU,EAAE;IACnE,MAAM,OAAO,GAAG,iCAAiC,CAAC;IAClD,MAAM,SAAS,GACb,wEAAwE,CAAC;IAC3E,MAAM,OAAO,GAAa;QACxB,YAAY;QACZ,EAAE;QACF,OAAO;QACP,EAAE;QACF,yHAAyH,SAAS,aAAa;QAC/I,EAAE;QACF,mMAAmM;KACpM,CAAC;IACF,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"SwaggerOperationParameterComposer.js","sourceRoot":"","sources":["../../../src/generates/internal/SwaggerOperationParameterComposer.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { OpenApi } from "@typia/interface";
2
+ import { INestiaConfig } from "../../INestiaConfig";
2
3
  import { MetadataSchema } from "../../internal/legacy";
3
4
  import { ITypedHttpRoute } from "../../structures/ITypedHttpRoute";
4
5
  export declare namespace SwaggerOperationResponseComposer {
5
6
  const compose: (props: {
7
+ config: Omit<INestiaConfig.ISwaggerConfig, "output">;
6
8
  schema: (metadata: MetadataSchema) => OpenApi.IJsonSchema | undefined;
7
9
  route: ITypedHttpRoute;
8
10
  }) => Record<string, OpenApi.IOperation.IResponse>;
@@ -9,6 +9,10 @@ var SwaggerOperationResponseComposer;
9
9
  SwaggerOperationResponseComposer.compose = (props) => {
10
10
  var _a, _b;
11
11
  var _c, _d, _e, _f;
12
+ // Swagger 2.0 keys a response's examples by MIME type, one each, so it has
13
+ // no named examples; the downgrader refuses the whole document rather than
14
+ // lose them (#1649). The single example still fits.
15
+ const named = (examples) => props.config.openapi === "2.0" ? undefined : examples;
12
16
  const output = {};
13
17
  // FROM DECORATOR
14
18
  for (const [status, error] of Object.entries(props.route.exceptions))
@@ -18,7 +22,7 @@ var SwaggerOperationResponseComposer;
18
22
  contentType: "application/json",
19
23
  schema: props.schema(error.metadata),
20
24
  example: error.example,
21
- examples: error.examples,
25
+ examples: named(error.examples),
22
26
  }),
23
27
  };
24
28
  // FROM COMMENTS
@@ -28,15 +32,16 @@ var SwaggerOperationResponseComposer;
28
32
  const text = (_b = (_a = tag.text) === null || _a === void 0 ? void 0 : _a.find((elem) => elem.kind === "text")) === null || _b === void 0 ? void 0 : _b.text;
29
33
  if (text === undefined)
30
34
  continue;
31
- const elements = text.split(" ").map((str) => str.trim());
32
- const status = elements[0];
35
+ // the status is the first word; a tag's text may run over lines
36
+ const status = text.trim().split(/\s+/)[0];
33
37
  if (isNaN(Number(status)) &&
34
38
  status !== "2XX" &&
35
39
  status !== "3XX" &&
36
40
  status !== "4XX" &&
37
41
  status !== "5XX")
38
42
  continue;
39
- const description = elements.length === 1 ? undefined : elements.slice(1).join(" ");
43
+ const rest = text.trim().substring(status.length).trim();
44
+ const description = rest.length ? rest : undefined;
40
45
  const oldbie = output[status];
41
46
  if (description && oldbie !== undefined)
42
47
  (_d = oldbie.description) !== null && _d !== void 0 ? _d : (oldbie.description = description);
@@ -64,7 +69,8 @@ var SwaggerOperationResponseComposer;
64
69
  jsDocTags: props.route.jsDocTags,
65
70
  tag: "return",
66
71
  });
67
- output[(_f = props.route.success.status) !== null && _f !== void 0 ? _f : (props.route.method.toLowerCase() === "post" ? 201 : 200)] = Object.assign({ description: props.route.success.encrypted
72
+ const status = String((_f = props.route.success.status) !== null && _f !== void 0 ? _f : (props.route.method.toLowerCase() === "post" ? 201 : 200));
73
+ output[status] = Object.assign({ description: props.route.success.encrypted
68
74
  ? `${warning.get(!!description, props.route.method)}${description !== null && description !== void 0 ? description : ""}`
69
75
  : (description !== null && description !== void 0 ? description : ""), content: composeContent({
70
76
  contentType: props.route.success.contentType,
@@ -75,10 +81,36 @@ var SwaggerOperationResponseComposer;
75
81
  }
76
82
  : props.schema(props.route.success.metadata),
77
83
  example: props.route.success.example,
78
- examples: props.route.success.examples,
79
- }) }, (props.route.success.encrypted ? { "x-nestia-encrypted": true } : {}));
84
+ examples: named(props.route.success.examples),
85
+ }) }, (props.route.success.encrypted && props.config.openapi !== "2.0"
86
+ ? { "x-nestia-encrypted": true }
87
+ : {}));
88
+ if (props.config.openapi === "2.0")
89
+ swaggerV2Produces(output, status);
80
90
  return output;
81
91
  };
92
+ /**
93
+ * Makes every response body of a Swagger 2.0 operation share one media type.
94
+ *
95
+ * 2.0 declares the media types an operation `produces` once for all of its
96
+ * responses, and the downgrader refuses an operation whose responses disagree
97
+ * rather than list a type a response does not use (#1649). A route whose
98
+ * success body is not JSON, such as an encrypted or a query-string one, still
99
+ * documents its exceptions as JSON, so where the success body has another
100
+ * type, the exceptions keep their status and description without a body.
101
+ */
102
+ const swaggerV2Produces = (output, success) => {
103
+ const kept = mediaOf(output[success]);
104
+ if (kept === undefined)
105
+ return;
106
+ for (const [status, response] of Object.entries(output))
107
+ if (status !== success && mediaOf(response) !== kept)
108
+ delete response.content;
109
+ };
110
+ /** The media types of a response body, or `undefined` without one. */
111
+ const mediaOf = (response) => response.content === undefined
112
+ ? undefined
113
+ : Object.keys(response.content).sort().join(" ");
82
114
  })(SwaggerOperationResponseComposer || (exports.SwaggerOperationResponseComposer = SwaggerOperationResponseComposer = {}));
83
115
  /**
84
116
  * Compose a response's `content`, or omit it when the response has no body.
@@ -1 +1 @@
1
- {"version":3,"file":"SwaggerOperationResponseComposer.js","sourceRoot":"","sources":["../../../src/generates/internal/SwaggerOperationResponseComposer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SwaggerOperationResponseComposer.js","sourceRoot":"","sources":["../../../src/generates/internal/SwaggerOperationResponseComposer.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,27 @@ export declare const nameOf: (m: IMetadataSchema) => string;
89
89
  export declare const emptyOf: (m: IMetadataSchema) => boolean;
90
90
  /** A property is required only when neither omission nor undefined is allowed. */
91
91
  export declare const isRequiredOf: (m: IMetadataSchema) => boolean;
92
+ /**
93
+ * Reads a constant's value as the SDK's Go contributor writes it.
94
+ *
95
+ * JSON holds neither a bigint nor NaN or ±Infinity, so the metadata carries a
96
+ * bigint value as its decimal digits and a non-finite number by its name
97
+ * (`"Infinity"`), both as strings. `type` is the constant's type, which is its
98
+ * value's own, so a bigint or number constant's string is always one of those;
99
+ * every other value is returned as it is.
100
+ */
101
+ export declare const decodeMetadataValue: (type: string, value: unknown) => unknown;
102
+ /**
103
+ * Reads a type tag's value as the SDK's Go contributor writes it.
104
+ *
105
+ * A tag's `target` is the type it tags, not its value's: `tags.Sequence<1>` on
106
+ * a bigint holds a number, and `tags.Example<"Infinity">` on a number holds a
107
+ * string. So a value encoded as a string, a bigint's digits or a non-finite
108
+ * number's name, arrives with the type it stands for in `encoding`.
109
+ */
110
+ export declare const decodeTagValue: (tag: IMetadataTypeTag & {
111
+ encoding?: "bigint" | "number";
112
+ }) => unknown;
92
113
  /**
93
114
  * Equivalent of the legacy `MetadataSchema.isSoleLiteral()` method: `true` when
94
115
  * the schema represents exactly one constant literal value and nothing else.
@@ -150,31 +171,41 @@ export declare namespace JsonMetadataFactory {
150
171
  */
151
172
  const validate: MetadataFactory.Validator;
152
173
  }
153
- export declare namespace HttpQueryProgrammer {
154
- const validate: MetadataFactory.Validator;
155
- }
156
- export declare namespace HttpHeadersProgrammer {
157
- const validate: MetadataFactory.Validator;
158
- }
159
- export declare namespace HttpParameterProgrammer {
160
- const validate: MetadataFactory.Validator;
161
- }
162
- export declare namespace HttpFormDataProgrammer {
163
- const validate: MetadataFactory.Validator;
164
- }
165
174
  export declare namespace JsonSchemasProgrammer {
166
175
  /**
167
176
  * Consumes the per-metadata `jsonSchema` field the nestia transform
168
177
  * pre-bakes. Top-level route metadata (success / parameter / exception)
169
- * always carries a baked schema; for nested metadata (object property values
170
- * reached by the decomposed-query path), the bake is absent and this function
171
- * falls back to a minimal JS-side converter that handles the schema shapes
172
- * decompose actually emits — atomics, constants, templates, arrays of those,
173
- * named references — without re-implementing the typia native programmer
174
- * wholesale.
178
+ * carries a baked schema whenever typia can describe the type. Metadata
179
+ * without one falls back to a minimal JS-side converter that reads only the
180
+ * atomic kinds — no type tags, template patterns, or constant annotations —
181
+ * so it is no substitute for the bake.
182
+ *
183
+ * The schemas and components are copies. The bake belongs to the route
184
+ * metadata, which every composition in the process reads, while the composer
185
+ * edits what it is given in place (the readonly-array emender), and so can a
186
+ * `SwaggerCustomizer`; handing the bake out by reference let each document
187
+ * inherit the previous one's edits.
175
188
  */
176
189
  const writeSchemas: (props: {
177
190
  version: "3.0" | "3.1";
178
191
  metadatas: readonly IMetadataSchema[];
179
192
  }) => IJsonSchemaCollection;
193
+ /**
194
+ * Writes the schema of one property of `metadata`'s first object type, for a
195
+ * decomposed query or headers parameter.
196
+ *
197
+ * Reads the schema baked beside `metadata`'s own schema (see
198
+ * {@link IReflectJsonSchema.properties}), resolved against the same
199
+ * components. The schema and components are copies, for the reason
200
+ * {@link writeSchemas} gives. Returns `null` when that bake exists but has no
201
+ * entry for the property, because typia's object schema omits it, so no
202
+ * parameter describes it either. Only metadata the transform did not bake
203
+ * falls back to {@link writeSchemas} over the property value.
204
+ */
205
+ const writeProperty: (props: {
206
+ version: "3.0" | "3.1";
207
+ metadata: IMetadataSchema;
208
+ key: string;
209
+ value: IMetadataSchema;
210
+ }) => IJsonSchemaCollection | null;
180
211
  }