@typespec/http 0.57.0-dev.4 → 0.57.0-dev.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.
Files changed (55) hide show
  1. package/README.md +34 -2
  2. package/dist/generated-defs/TypeSpec.Http.Private.d.ts +3 -1
  3. package/dist/generated-defs/TypeSpec.Http.Private.d.ts.map +1 -1
  4. package/dist/generated-defs/TypeSpec.Http.d.ts +23 -2
  5. package/dist/generated-defs/TypeSpec.Http.d.ts.map +1 -1
  6. package/dist/generated-defs/TypeSpec.Http.ts-test.js +2 -1
  7. package/dist/generated-defs/TypeSpec.Http.ts-test.js.map +1 -1
  8. package/dist/src/content-types.d.ts +1 -0
  9. package/dist/src/content-types.d.ts.map +1 -1
  10. package/dist/src/content-types.js +4 -0
  11. package/dist/src/content-types.js.map +1 -1
  12. package/dist/src/decorators.d.ts +3 -3
  13. package/dist/src/decorators.d.ts.map +1 -1
  14. package/dist/src/decorators.js +7 -24
  15. package/dist/src/decorators.js.map +1 -1
  16. package/dist/src/http-property.d.ts +52 -0
  17. package/dist/src/http-property.d.ts.map +1 -0
  18. package/dist/src/http-property.js +129 -0
  19. package/dist/src/http-property.js.map +1 -0
  20. package/dist/src/index.d.ts +1 -0
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/index.js +1 -0
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/lib.d.ts +64 -4
  25. package/dist/src/lib.d.ts.map +1 -1
  26. package/dist/src/lib.js +28 -0
  27. package/dist/src/lib.js.map +1 -1
  28. package/dist/src/metadata.d.ts +1 -10
  29. package/dist/src/metadata.d.ts.map +1 -1
  30. package/dist/src/metadata.js +8 -53
  31. package/dist/src/metadata.js.map +1 -1
  32. package/dist/src/parameters.d.ts.map +1 -1
  33. package/dist/src/parameters.js +33 -87
  34. package/dist/src/parameters.js.map +1 -1
  35. package/dist/src/payload.d.ts +12 -0
  36. package/dist/src/payload.d.ts.map +1 -0
  37. package/dist/src/payload.js +301 -0
  38. package/dist/src/payload.js.map +1 -0
  39. package/dist/src/private.decorators.d.ts +28 -0
  40. package/dist/src/private.decorators.d.ts.map +1 -0
  41. package/dist/src/private.decorators.js +64 -0
  42. package/dist/src/private.decorators.js.map +1 -0
  43. package/dist/src/responses.d.ts.map +1 -1
  44. package/dist/src/responses.js +11 -44
  45. package/dist/src/responses.js.map +1 -1
  46. package/dist/src/types.d.ts +48 -27
  47. package/dist/src/types.d.ts.map +1 -1
  48. package/lib/{http-decorators.tsp → decorators.tsp} +22 -9
  49. package/lib/http.tsp +17 -1
  50. package/lib/private.decorators.tsp +14 -0
  51. package/package.json +1 -1
  52. package/dist/src/body.d.ts +0 -15
  53. package/dist/src/body.d.ts.map +0 -1
  54. package/dist/src/body.js +0 -112
  55. package/dist/src/body.js.map +0 -1
@@ -0,0 +1,301 @@
1
+ import { createDiagnosticCollector, filterModelProperties, getDiscriminator, getEncode, ignoreDiagnostics, isArrayModelType, navigateType, } from "@typespec/compiler";
2
+ import { DuplicateTracker } from "@typespec/compiler/utils";
3
+ import { getContentTypes } from "./content-types.js";
4
+ import { isHeader, isPathParam, isQueryParam, isStatusCode } from "./decorators.js";
5
+ import { resolvePayloadProperties, } from "./http-property.js";
6
+ import { createDiagnostic } from "./lib.js";
7
+ import { getHttpFileModel, getHttpPart } from "./private.decorators.js";
8
+ export function resolveHttpPayload(program, type, visibility, usedIn, options = {}) {
9
+ const diagnostics = createDiagnosticCollector();
10
+ const metadata = diagnostics.pipe(resolvePayloadProperties(program, type, visibility, options));
11
+ const body = diagnostics.pipe(resolveBody(program, type, metadata, visibility, usedIn));
12
+ if (body) {
13
+ if (body.contentTypes.includes("multipart/form-data") &&
14
+ body.bodyKind === "single" &&
15
+ body.type.kind !== "Model") {
16
+ diagnostics.add(createDiagnostic({
17
+ code: "multipart-model",
18
+ target: body.property ?? type,
19
+ }));
20
+ return diagnostics.wrap({ body: undefined, metadata });
21
+ }
22
+ }
23
+ return diagnostics.wrap({ body, metadata });
24
+ }
25
+ function resolveBody(program, requestOrResponseType, metadata, visibility, usedIn) {
26
+ const diagnostics = createDiagnosticCollector();
27
+ const { contentTypes, contentTypeProperty } = diagnostics.pipe(resolveContentTypes(program, metadata, usedIn));
28
+ const file = getHttpFileModel(program, requestOrResponseType);
29
+ if (file !== undefined) {
30
+ const file = getHttpFileModel(program, requestOrResponseType);
31
+ return diagnostics.wrap({
32
+ bodyKind: "single",
33
+ contentTypes: diagnostics.pipe(getContentTypes(file.contentType)),
34
+ type: file.contents.type,
35
+ isExplicit: false,
36
+ containsMetadataAnnotations: false,
37
+ });
38
+ }
39
+ // non-model or intrinsic/array model -> response body is response type
40
+ if (requestOrResponseType.kind !== "Model" || isArrayModelType(program, requestOrResponseType)) {
41
+ return diagnostics.wrap({
42
+ bodyKind: "single",
43
+ contentTypes,
44
+ type: requestOrResponseType,
45
+ isExplicit: false,
46
+ containsMetadataAnnotations: false,
47
+ });
48
+ }
49
+ // look for explicit body
50
+ const resolvedBody = diagnostics.pipe(resolveExplicitBodyProperty(program, metadata, contentTypes, visibility, usedIn));
51
+ if (resolvedBody === undefined) {
52
+ // Special case if the model as a parent model then we'll return an empty object as this is assumed to be a nominal type.
53
+ // Special Case if the model has an indexer then it means it can return props so cannot be void.
54
+ if (requestOrResponseType.baseModel || requestOrResponseType.indexer) {
55
+ return diagnostics.wrap({
56
+ bodyKind: "single",
57
+ contentTypes,
58
+ type: requestOrResponseType,
59
+ isExplicit: false,
60
+ containsMetadataAnnotations: false,
61
+ });
62
+ }
63
+ // Special case for legacy purposes if the return type is an empty model with only @discriminator("xyz")
64
+ // Then we still want to return that object as it technically always has a body with that implicit property.
65
+ if (requestOrResponseType.derivedModels.length > 0 &&
66
+ getDiscriminator(program, requestOrResponseType)) {
67
+ return diagnostics.wrap({
68
+ bodyKind: "single",
69
+ contentTypes,
70
+ type: requestOrResponseType,
71
+ isExplicit: false,
72
+ containsMetadataAnnotations: false,
73
+ });
74
+ }
75
+ }
76
+ const unannotatedProperties = filterModelProperties(program, requestOrResponseType, (p) => metadata.some((x) => x.property === p && x.kind === "bodyProperty"));
77
+ if (unannotatedProperties.properties.size > 0) {
78
+ if (resolvedBody === undefined) {
79
+ return diagnostics.wrap({
80
+ bodyKind: "single",
81
+ contentTypes,
82
+ type: unannotatedProperties,
83
+ isExplicit: false,
84
+ containsMetadataAnnotations: false,
85
+ });
86
+ }
87
+ else {
88
+ diagnostics.add(createDiagnostic({
89
+ code: "duplicate-body",
90
+ messageId: "bodyAndUnannotated",
91
+ target: requestOrResponseType,
92
+ }));
93
+ }
94
+ }
95
+ if (resolvedBody === undefined && contentTypeProperty) {
96
+ diagnostics.add(createDiagnostic({
97
+ code: "content-type-ignored",
98
+ target: contentTypeProperty,
99
+ }));
100
+ }
101
+ return diagnostics.wrap(resolvedBody);
102
+ }
103
+ function resolveContentTypes(program, metadata, usedIn) {
104
+ for (const prop of metadata) {
105
+ if (prop.kind === "contentType") {
106
+ const [contentTypes, diagnostics] = getContentTypes(prop.property);
107
+ return [{ contentTypes, contentTypeProperty: prop.property }, diagnostics];
108
+ }
109
+ }
110
+ switch (usedIn) {
111
+ case "multipart":
112
+ // Figure this out later
113
+ return [{ contentTypes: [] }, []];
114
+ default:
115
+ return [{ contentTypes: ["application/json"] }, []];
116
+ }
117
+ }
118
+ function resolveExplicitBodyProperty(program, metadata, contentTypes, visibility, usedIn) {
119
+ const diagnostics = createDiagnosticCollector();
120
+ let resolvedBody;
121
+ const duplicateTracker = new DuplicateTracker();
122
+ for (const item of metadata) {
123
+ if (item.kind === "body" || item.kind === "bodyRoot" || item.kind === "multipartBody") {
124
+ duplicateTracker.track("body", item.property);
125
+ }
126
+ switch (item.kind) {
127
+ case "body":
128
+ case "bodyRoot":
129
+ let containsMetadataAnnotations = false;
130
+ if (item.kind === "body") {
131
+ const valid = diagnostics.pipe(validateBodyProperty(program, item.property, usedIn));
132
+ containsMetadataAnnotations = !valid;
133
+ }
134
+ if (resolvedBody === undefined) {
135
+ resolvedBody = {
136
+ bodyKind: "single",
137
+ contentTypes,
138
+ type: item.property.type,
139
+ isExplicit: item.kind === "body",
140
+ containsMetadataAnnotations,
141
+ property: item.property,
142
+ parameter: item.property,
143
+ };
144
+ }
145
+ break;
146
+ case "multipartBody":
147
+ resolvedBody = diagnostics.pipe(resolveMultiPartBody(program, item.property, contentTypes, visibility));
148
+ break;
149
+ }
150
+ }
151
+ for (const [_, items] of duplicateTracker.entries()) {
152
+ for (const prop of items) {
153
+ diagnostics.add(createDiagnostic({
154
+ code: "duplicate-body",
155
+ target: prop,
156
+ }));
157
+ }
158
+ }
159
+ return diagnostics.wrap(resolvedBody);
160
+ }
161
+ /** Validate a property marked with `@body` */
162
+ function validateBodyProperty(program, property, usedIn) {
163
+ const diagnostics = createDiagnosticCollector();
164
+ navigateType(property.type, {
165
+ modelProperty: (prop) => {
166
+ const kind = isHeader(program, prop)
167
+ ? "header"
168
+ : (usedIn === "request" || usedIn === "multipart") && isQueryParam(program, prop)
169
+ ? "query"
170
+ : usedIn === "request" && isPathParam(program, prop)
171
+ ? "path"
172
+ : usedIn === "response" && isStatusCode(program, prop)
173
+ ? "statusCode"
174
+ : undefined;
175
+ if (kind) {
176
+ diagnostics.add(createDiagnostic({
177
+ code: "metadata-ignored",
178
+ format: { kind },
179
+ target: prop,
180
+ }));
181
+ }
182
+ },
183
+ }, {});
184
+ return diagnostics.wrap(diagnostics.diagnostics.length === 0);
185
+ }
186
+ function resolveMultiPartBody(program, property, contentTypes, visibility) {
187
+ const type = property.type;
188
+ if (type.kind === "Model") {
189
+ return resolveMultiPartBodyFromModel(program, property, type, contentTypes, visibility);
190
+ }
191
+ else if (type.kind === "Tuple") {
192
+ return resolveMultiPartBodyFromTuple(program, property, type, contentTypes, visibility);
193
+ }
194
+ else {
195
+ return [undefined, [createDiagnostic({ code: "multipart-model", target: property })]];
196
+ }
197
+ }
198
+ function resolveMultiPartBodyFromModel(program, property, type, contentTypes, visibility) {
199
+ const diagnostics = createDiagnosticCollector();
200
+ const parts = [];
201
+ for (const item of type.properties.values()) {
202
+ const part = diagnostics.pipe(resolvePartOrParts(program, item.type, visibility));
203
+ if (part) {
204
+ parts.push({ ...part, name: item.name, optional: item.optional });
205
+ }
206
+ }
207
+ return diagnostics.wrap({ bodyKind: "multipart", contentTypes, parts, property, type });
208
+ }
209
+ const multipartContentTypes = {
210
+ formData: "multipart/form-data",
211
+ mixed: "multipart/mixed",
212
+ };
213
+ const multipartContentTypesValues = Object.values(multipartContentTypes);
214
+ function resolveMultiPartBodyFromTuple(program, property, type, contentTypes, visibility) {
215
+ const diagnostics = createDiagnosticCollector();
216
+ const parts = [];
217
+ for (const contentType of contentTypes) {
218
+ if (!multipartContentTypesValues.includes(contentType)) {
219
+ diagnostics.add(createDiagnostic({
220
+ code: "multipart-invalid-content-type",
221
+ format: { contentType, valid: multipartContentTypesValues.join(", ") },
222
+ target: type,
223
+ }));
224
+ }
225
+ }
226
+ for (const [index, item] of type.values.entries()) {
227
+ const part = diagnostics.pipe(resolvePartOrParts(program, item, visibility));
228
+ if (part?.name === undefined && contentTypes.includes(multipartContentTypes.formData)) {
229
+ diagnostics.add(createDiagnostic({
230
+ code: "formdata-no-part-name",
231
+ target: type.node.values[index],
232
+ }));
233
+ }
234
+ if (part) {
235
+ parts.push(part);
236
+ }
237
+ }
238
+ return diagnostics.wrap({ bodyKind: "multipart", contentTypes, parts, property, type });
239
+ }
240
+ function resolvePartOrParts(program, type, visibility) {
241
+ if (type.kind === "Model" && isArrayModelType(program, type)) {
242
+ const [part, diagnostics] = resolvePart(program, type.indexer.value, visibility);
243
+ if (part) {
244
+ return [{ ...part, multi: true }, diagnostics];
245
+ }
246
+ return [part, diagnostics];
247
+ }
248
+ else {
249
+ return resolvePart(program, type, visibility);
250
+ }
251
+ }
252
+ function resolvePart(program, type, visibility) {
253
+ const part = getHttpPart(program, type);
254
+ if (part) {
255
+ let [{ body, metadata }, diagnostics] = resolveHttpPayload(program, part.type, visibility, "multipart");
256
+ if (body === undefined) {
257
+ return [undefined, diagnostics];
258
+ }
259
+ else if (body.bodyKind === "multipart") {
260
+ return [undefined, [createDiagnostic({ code: "multipart-nested", target: type })]];
261
+ }
262
+ if (body.contentTypes.length === 0) {
263
+ body = { ...body, contentTypes: resolveDefaultContentTypeForPart(program, body.type) };
264
+ }
265
+ return [
266
+ {
267
+ multi: false,
268
+ name: part.options.name,
269
+ body,
270
+ optional: false,
271
+ headers: metadata.filter((x) => x.kind === "header"),
272
+ },
273
+ diagnostics,
274
+ ];
275
+ }
276
+ return [undefined, [createDiagnostic({ code: "multipart-part", target: type })]];
277
+ }
278
+ function resolveDefaultContentTypeForPart(program, type) {
279
+ function resolve(type) {
280
+ if (type.kind === "Scalar") {
281
+ const encodedAs = getEncode(program, type);
282
+ if (encodedAs) {
283
+ type = encodedAs.type;
284
+ }
285
+ if (ignoreDiagnostics(program.checker.isTypeAssignableTo(type.projectionBase ?? type, program.checker.getStdType("bytes"), type))) {
286
+ return ["application/octet-stream"];
287
+ }
288
+ else {
289
+ return ["text/plain"];
290
+ }
291
+ }
292
+ else if (type.kind === "Union") {
293
+ return [...type.variants.values()].flatMap((x) => resolve(x.type));
294
+ }
295
+ else {
296
+ return ["application/json"];
297
+ }
298
+ }
299
+ return [...new Set(resolve(type))];
300
+ }
301
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/payload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { ModelProperty, Program, Type } from "@typespec/compiler";
2
+ import { HttpFileDecorator, HttpPartDecorator, PlainDataDecorator } from "../generated-defs/TypeSpec.Http.Private.js";
3
+ export declare const namespace = "TypeSpec.Http.Private";
4
+ export declare const $plainData: PlainDataDecorator;
5
+ export declare const $httpFile: HttpFileDecorator;
6
+ /**
7
+ * Check if the given type is an `HttpFile`
8
+ */
9
+ export declare function isHttpFile(program: Program, type: Type): boolean;
10
+ export declare function isOrExtendsHttpFile(program: Program, type: Type): boolean;
11
+ export interface HttpFileModel {
12
+ readonly type: Type;
13
+ readonly contentType: ModelProperty;
14
+ readonly filename: ModelProperty;
15
+ readonly contents: ModelProperty;
16
+ }
17
+ export declare function getHttpFileModel(program: Program, type: Type): HttpFileModel | undefined;
18
+ export interface HttpPartOptions {
19
+ readonly name?: string;
20
+ }
21
+ export declare const $httpPart: HttpPartDecorator;
22
+ export interface HttpPart {
23
+ readonly type: Type;
24
+ readonly options: HttpPartOptions;
25
+ }
26
+ /** Return the http part information on a model that is an `HttpPart` */
27
+ export declare function getHttpPart(program: Program, target: Type): HttpPart | undefined;
28
+ //# sourceMappingURL=private.decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private.decorators.d.ts","sourceRoot":"","sources":["../../src/private.decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACb,OAAO,EACP,IAAI,EAEL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,4CAA4C,CAAC;AAGpD,eAAO,MAAM,SAAS,0BAA0B,CAAC;AAEjD,eAAO,MAAM,UAAU,EAAE,kBA0BxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,iBAEvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,WAEtD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,WAgB/D;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,aAAa,GAAG,SAAS,CAUxF;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,SAAS,EAAE,iBAOvB,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACnC;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,QAAQ,GAAG,SAAS,CAEhF"}
@@ -0,0 +1,64 @@
1
+ import { getProperty, } from "@typespec/compiler";
2
+ import { HttpStateKeys } from "./lib.js";
3
+ export const namespace = "TypeSpec.Http.Private";
4
+ export const $plainData = (context, entity) => {
5
+ const { program } = context;
6
+ const decoratorsToRemove = ["$header", "$body", "$query", "$path", "$statusCode"];
7
+ const [headers, bodies, queries, paths, statusCodes] = [
8
+ program.stateMap(HttpStateKeys.header),
9
+ program.stateSet(HttpStateKeys.body),
10
+ program.stateMap(HttpStateKeys.query),
11
+ program.stateMap(HttpStateKeys.path),
12
+ program.stateMap(HttpStateKeys.statusCode),
13
+ ];
14
+ for (const property of entity.properties.values()) {
15
+ // Remove the decorators so that they do not run in the future, for example,
16
+ // if this model is later spread into another.
17
+ property.decorators = property.decorators.filter((d) => !decoratorsToRemove.includes(d.decorator.name));
18
+ // Remove the impact the decorators already had on this model.
19
+ headers.delete(property);
20
+ bodies.delete(property);
21
+ queries.delete(property);
22
+ paths.delete(property);
23
+ statusCodes.delete(property);
24
+ }
25
+ };
26
+ export const $httpFile = (context, target) => {
27
+ context.program.stateSet(HttpStateKeys.file).add(target);
28
+ };
29
+ /**
30
+ * Check if the given type is an `HttpFile`
31
+ */
32
+ export function isHttpFile(program, type) {
33
+ return program.stateSet(HttpStateKeys.file).has(type);
34
+ }
35
+ export function isOrExtendsHttpFile(program, type) {
36
+ if (type.kind !== "Model") {
37
+ return false;
38
+ }
39
+ let current = type;
40
+ while (current) {
41
+ if (isHttpFile(program, current)) {
42
+ return true;
43
+ }
44
+ current = current.baseModel;
45
+ }
46
+ return false;
47
+ }
48
+ export function getHttpFileModel(program, type) {
49
+ if (type.kind !== "Model" || !isOrExtendsHttpFile(program, type)) {
50
+ return undefined;
51
+ }
52
+ const contentType = getProperty(type, "contentType");
53
+ const filename = getProperty(type, "filename");
54
+ const contents = getProperty(type, "contents");
55
+ return { contents, contentType, filename, type };
56
+ }
57
+ export const $httpPart = (context, target, type, options) => {
58
+ context.program.stateMap(HttpStateKeys.file).set(target, { type, options });
59
+ };
60
+ /** Return the http part information on a model that is an `HttpPart` */
61
+ export function getHttpPart(program, target) {
62
+ return program.stateMap(HttpStateKeys.file).get(target);
63
+ }
64
+ //# sourceMappingURL=private.decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private.decorators.js","sourceRoot":"","sources":["../../src/private.decorators.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAUV,SAAS,EACT,OAAO,EAER,MAAM,oBAAoB,CAAC;AAY5B,OAAO,EAAE,qBAAqB,EAAyC,MAAM,YAAY,CAAC;AAE1F;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,GACnB,CAAC,qBAAqB,EAAE,EAAE,SAAS,UAAU,EAAE,CAAC,CAiBlD"}
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAUV,SAAS,EACT,OAAO,EAER,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAGL,qBAAqB,EAGtB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,GACnB,CAAC,qBAAqB,EAAE,EAAE,SAAS,UAAU,EAAE,CAAC,CAiBlD"}
@@ -1,9 +1,8 @@
1
1
  import { createDiagnosticCollector, getDoc, getErrorsDoc, getReturnsDoc, isErrorModel, isNullType, isVoidType, } from "@typespec/compiler";
2
- import { resolveBody } from "./body.js";
3
- import { getContentTypes, isContentTypeHeader } from "./content-types.js";
4
- import { getHeaderFieldName, getStatusCodeDescription, getStatusCodesWithDiagnostics, isHeader, isStatusCode, } from "./decorators.js";
5
- import { createDiagnostic, HttpStateKeys, reportDiagnostic } from "./lib.js";
6
- import { gatherMetadata, Visibility } from "./metadata.js";
2
+ import { getStatusCodeDescription, getStatusCodesWithDiagnostics } from "./decorators.js";
3
+ import { HttpStateKeys, reportDiagnostic } from "./lib.js";
4
+ import { Visibility } from "./metadata.js";
5
+ import { resolveHttpPayload } from "./payload.js";
7
6
  /**
8
7
  * Get the responses for a given operation.
9
8
  */
@@ -49,16 +48,12 @@ class ResponseIndex {
49
48
  }
50
49
  }
51
50
  function processResponseType(program, diagnostics, operation, responses, responseType) {
52
- const rootPropertyMap = new Map();
53
- const metadata = gatherMetadata(program, diagnostics, responseType, Visibility.Read, undefined, rootPropertyMap);
51
+ // Get body
52
+ let { body: resolvedBody, metadata } = diagnostics.pipe(resolveHttpPayload(program, responseType, Visibility.Read, "response"));
54
53
  // Get explicity defined status codes
55
54
  const statusCodes = diagnostics.pipe(getResponseStatusCodes(program, responseType, metadata));
56
- // Get explicitly defined content types
57
- const contentTypes = getResponseContentTypes(program, diagnostics, metadata);
58
55
  // Get response headers
59
56
  const headers = getResponseHeaders(program, metadata);
60
- // Get body
61
- let resolvedBody = diagnostics.pipe(resolveBody(program, responseType, metadata, rootPropertyMap, Visibility.Read, "response"));
62
57
  // If there is no explicit status code, check if it should be 204
63
58
  if (statusCodes.length === 0) {
64
59
  if (isErrorModel(program, responseType)) {
@@ -76,10 +71,6 @@ function processResponseType(program, diagnostics, operation, responses, respons
76
71
  statusCodes.push(200);
77
72
  }
78
73
  }
79
- // If there is a body but no explicit content types, use application/json
80
- if (resolvedBody && contentTypes.length === 0) {
81
- contentTypes.push("application/json");
82
- }
83
74
  // Put them into currentEndpoint.responses
84
75
  for (const statusCode of statusCodes) {
85
76
  // the first model for this statusCode/content type pair carries the
@@ -93,19 +84,10 @@ function processResponseType(program, diagnostics, operation, responses, respons
93
84
  };
94
85
  if (resolvedBody !== undefined) {
95
86
  response.responses.push({
96
- body: {
97
- contentTypes: contentTypes,
98
- ...resolvedBody,
99
- },
87
+ body: resolvedBody,
100
88
  headers,
101
89
  });
102
90
  }
103
- else if (contentTypes.length > 0) {
104
- diagnostics.add(createDiagnostic({
105
- code: "content-type-ignored",
106
- target: responseType,
107
- }));
108
- }
109
91
  else {
110
92
  response.responses.push({ headers });
111
93
  }
@@ -122,7 +104,7 @@ function getResponseStatusCodes(program, responseType, metadata) {
122
104
  const diagnostics = createDiagnosticCollector();
123
105
  let statusFound = false;
124
106
  for (const prop of metadata) {
125
- if (isStatusCode(program, prop)) {
107
+ if (prop.kind === "statusCode") {
126
108
  if (statusFound) {
127
109
  reportDiagnostic(program, {
128
110
  code: "multiple-status-codes",
@@ -130,7 +112,7 @@ function getResponseStatusCodes(program, responseType, metadata) {
130
112
  });
131
113
  }
132
114
  statusFound = true;
133
- codes.push(...diagnostics.pipe(getStatusCodesWithDiagnostics(program, prop)));
115
+ codes.push(...diagnostics.pipe(getStatusCodesWithDiagnostics(program, prop.property)));
134
116
  }
135
117
  }
136
118
  // This is only needed to retrieve the * status code set by @defaultResponse.
@@ -145,29 +127,14 @@ function getResponseStatusCodes(program, responseType, metadata) {
145
127
  function getExplicitSetStatusCode(program, entity) {
146
128
  return program.stateMap(HttpStateKeys.statusCode).get(entity) ?? [];
147
129
  }
148
- /**
149
- * Get explicity defined content-types from response metadata
150
- * Return is an array of strings, possibly empty, which indicates no explicitly defined content-type.
151
- * We do not check for duplicates here -- that will be done by the caller.
152
- */
153
- function getResponseContentTypes(program, diagnostics, metadata) {
154
- const contentTypes = [];
155
- for (const prop of metadata) {
156
- if (isHeader(program, prop) && isContentTypeHeader(program, prop)) {
157
- contentTypes.push(...diagnostics.pipe(getContentTypes(prop)));
158
- }
159
- }
160
- return contentTypes;
161
- }
162
130
  /**
163
131
  * Get response headers from response metadata
164
132
  */
165
133
  function getResponseHeaders(program, metadata) {
166
134
  const responseHeaders = {};
167
135
  for (const prop of metadata) {
168
- const headerName = getHeaderFieldName(program, prop);
169
- if (isHeader(program, prop) && headerName !== "content-type") {
170
- responseHeaders[headerName] = prop;
136
+ if (prop.kind === "header") {
137
+ responseHeaders[prop.options.name] = prop.property;
171
138
  }
172
139
  }
173
140
  return responseHeaders;
@@ -1 +1 @@
1
- {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAGzB,MAAM,EACN,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,GAMX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAE1F,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AASlD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAgB,EAChB,SAAoB;IAEpB,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,kFAAkF;gBAClF,SAAS;YACX,CAAC;YACD,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,aAAa;IACR,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;IAEpD,GAAG,CAAC,UAAgC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,CAAC;IAEM,GAAG,CAAC,UAAgC,EAAE,QAA+B;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEM,MAAM;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,UAAgC;QACxC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAED,SAAS,mBAAmB,CAC1B,OAAgB,EAChB,WAAgC,EAChC,SAAoB,EACpB,SAAwB,EACxB,YAAkB;IAElB,WAAW;IACX,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,IAAI,CACrD,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CACvE,CAAC;IACF,qCAAqC;IACrC,MAAM,WAAW,GAAoB,WAAW,CAAC,IAAI,CACnD,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CACxD,CAAC;IAEF,uBAAuB;IACvB,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEtD,iEAAiE;IACjE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,IAAI,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;YACxC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,YAAY,GAAG,SAAS,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gDAAgD;QACzE,CAAC;aAAM,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACvE,YAAY,GAAG,SAAS,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,oEAAoE;QACpE,iEAAiE;QACjE,MAAM,QAAQ,GAA0B,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI;YACnE,UAAU,EAAE,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,MAAM,CAAC,UAAU,CAAS;YAC9E,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,sBAAsB,CACjC,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,YAAY,CACb;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,YAAY;gBAClB,OAAO;aACR,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAC7B,OAAgB,EAChB,YAAkB,EAClB,QAAwB;IAExB,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAEhD,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,IAAI,WAAW,EAAE,CAAC;gBAChB,gBAAgB,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,uBAAuB;oBAC7B,MAAM,EAAE,YAAY;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,WAAW,GAAG,IAAI,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,oDAAoD;IACpD,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAsB,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAgB,EAAE,MAA6B;IAC/E,OAAO,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,OAAgB,EAChB,QAAwB;IAExB,MAAM,eAAe,GAAkC,EAAE,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAgB,EAChB,SAAoB,EACpB,YAAkB,EAClB,UAAmC,EACnC,IAAgE;IAEhE,yEAAyE;IACzE,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,sEAAsE;IACtE,wEAAwE;IACxE,sCAAsC;IACtC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC;QAC9C,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC;QAClC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC"}