@typespec/http 0.57.0-dev.5 → 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.
- package/README.md +27 -0
- package/dist/generated-defs/TypeSpec.Http.Private.d.ts +3 -1
- package/dist/generated-defs/TypeSpec.Http.Private.d.ts.map +1 -1
- package/dist/generated-defs/TypeSpec.Http.d.ts +16 -0
- package/dist/generated-defs/TypeSpec.Http.d.ts.map +1 -1
- package/dist/generated-defs/TypeSpec.Http.ts-test.js +2 -1
- package/dist/generated-defs/TypeSpec.Http.ts-test.js.map +1 -1
- package/dist/src/content-types.d.ts +1 -0
- package/dist/src/content-types.d.ts.map +1 -1
- package/dist/src/content-types.js +4 -0
- package/dist/src/content-types.js.map +1 -1
- package/dist/src/decorators.d.ts +3 -3
- package/dist/src/decorators.d.ts.map +1 -1
- package/dist/src/decorators.js +7 -24
- package/dist/src/decorators.js.map +1 -1
- package/dist/src/http-property.d.ts +52 -0
- package/dist/src/http-property.d.ts.map +1 -0
- package/dist/src/http-property.js +129 -0
- package/dist/src/http-property.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts +64 -4
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +28 -0
- package/dist/src/lib.js.map +1 -1
- package/dist/src/metadata.d.ts +1 -10
- package/dist/src/metadata.d.ts.map +1 -1
- package/dist/src/metadata.js +8 -53
- package/dist/src/metadata.js.map +1 -1
- package/dist/src/parameters.d.ts.map +1 -1
- package/dist/src/parameters.js +33 -87
- package/dist/src/parameters.js.map +1 -1
- package/dist/src/payload.d.ts +12 -0
- package/dist/src/payload.d.ts.map +1 -0
- package/dist/src/payload.js +301 -0
- package/dist/src/payload.js.map +1 -0
- package/dist/src/private.decorators.d.ts +28 -0
- package/dist/src/private.decorators.d.ts.map +1 -0
- package/dist/src/private.decorators.js +64 -0
- package/dist/src/private.decorators.js.map +1 -0
- package/dist/src/responses.d.ts.map +1 -1
- package/dist/src/responses.js +11 -44
- package/dist/src/responses.js.map +1 -1
- package/dist/src/types.d.ts +48 -27
- package/dist/src/types.d.ts.map +1 -1
- package/lib/{http-decorators.tsp → decorators.tsp} +15 -7
- package/lib/http.tsp +17 -1
- package/lib/private.decorators.tsp +14 -0
- package/package.json +1 -1
- package/dist/src/body.d.ts +0 -15
- package/dist/src/body.d.ts.map +0 -1
- package/dist/src/body.js +0 -112
- package/dist/src/body.js.map +0 -1
package/dist/src/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { DiagnosticResult, Interface, ListOperationOptions, ModelProperty, Namespace, Operation, Program, Type } from "@typespec/compiler";
|
|
1
|
+
import { DiagnosticResult, Interface, ListOperationOptions, Model, ModelProperty, Namespace, Operation, Program, Tuple, Type } from "@typespec/compiler";
|
|
2
|
+
import { HeaderProperty } from "./http-property.js";
|
|
2
3
|
/**
|
|
3
4
|
* @deprecated use `HttpOperation`. To remove in November 2022 release.
|
|
4
5
|
*/
|
|
@@ -237,25 +238,16 @@ export type HttpOperationParameter = (HeaderFieldOptions | QueryParameterOptions
|
|
|
237
238
|
param: ModelProperty;
|
|
238
239
|
};
|
|
239
240
|
/**
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
* @note the `type` must be a `Model` if the content type is multipart.
|
|
241
|
+
* @deprecated use {@link HttpOperationBody}
|
|
243
242
|
*/
|
|
244
|
-
export
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
250
|
-
export interface HttpOperationResponseBody extends HttpOperationBody {
|
|
251
|
-
/**
|
|
252
|
-
* If the body was explicitly set as a property. Correspond to the property with `@body` or `@bodyRoot`
|
|
253
|
-
*/
|
|
254
|
-
readonly property?: ModelProperty;
|
|
255
|
-
}
|
|
243
|
+
export type HttpOperationRequestBody = HttpOperationBody;
|
|
244
|
+
/**
|
|
245
|
+
* @deprecated use {@link HttpOperationBody}
|
|
246
|
+
*/
|
|
247
|
+
export type HttpOperationResponseBody = HttpOperationBody;
|
|
256
248
|
export interface HttpOperationParameters {
|
|
257
249
|
parameters: HttpOperationParameter[];
|
|
258
|
-
body?:
|
|
250
|
+
body?: HttpOperationBody | HttpOperationMultipartBody;
|
|
259
251
|
/** @deprecated use {@link body.type} */
|
|
260
252
|
bodyType?: Type;
|
|
261
253
|
/** @deprecated use {@link body.parameter} */
|
|
@@ -334,21 +326,50 @@ export interface HttpOperationResponse {
|
|
|
334
326
|
}
|
|
335
327
|
export interface HttpOperationResponseContent {
|
|
336
328
|
headers?: Record<string, ModelProperty>;
|
|
337
|
-
body?:
|
|
329
|
+
body?: HttpOperationBody | HttpOperationMultipartBody;
|
|
338
330
|
}
|
|
339
|
-
export interface
|
|
340
|
-
/**
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
* Type of the operation body.
|
|
346
|
-
*/
|
|
347
|
-
type: Type;
|
|
331
|
+
export interface HttpOperationBodyBase {
|
|
332
|
+
/** Content types. */
|
|
333
|
+
readonly contentTypes: string[];
|
|
334
|
+
}
|
|
335
|
+
export interface HttpBody {
|
|
336
|
+
readonly type: Type;
|
|
348
337
|
/** If the body was explicitly set with `@body`. */
|
|
349
338
|
readonly isExplicit: boolean;
|
|
350
339
|
/** If the body contains metadata annotations to ignore. For example `@header`. */
|
|
351
340
|
readonly containsMetadataAnnotations: boolean;
|
|
341
|
+
/**
|
|
342
|
+
* @deprecated use {@link property}
|
|
343
|
+
*/
|
|
344
|
+
parameter?: ModelProperty;
|
|
345
|
+
/**
|
|
346
|
+
* If the body was explicitly set as a property. Correspond to the property with `@body` or `@bodyRoot`
|
|
347
|
+
*/
|
|
348
|
+
readonly property?: ModelProperty;
|
|
349
|
+
}
|
|
350
|
+
export interface HttpOperationBody extends HttpOperationBodyBase, HttpBody {
|
|
351
|
+
readonly bodyKind: "single";
|
|
352
|
+
}
|
|
353
|
+
/** Body marked with `@multipartBody` */
|
|
354
|
+
export interface HttpOperationMultipartBody extends HttpOperationBodyBase {
|
|
355
|
+
readonly bodyKind: "multipart";
|
|
356
|
+
readonly type: Model | Tuple;
|
|
357
|
+
/** Property annotated with `@multipartBody` */
|
|
358
|
+
readonly property: ModelProperty;
|
|
359
|
+
readonly parts: HttpOperationPart[];
|
|
360
|
+
}
|
|
361
|
+
/** Represent an part in a multipart body. */
|
|
362
|
+
export interface HttpOperationPart {
|
|
363
|
+
/** Part name */
|
|
364
|
+
readonly name?: string;
|
|
365
|
+
/** If the part is optional */
|
|
366
|
+
readonly optional: boolean;
|
|
367
|
+
/** Part body */
|
|
368
|
+
readonly body: HttpOperationBody;
|
|
369
|
+
/** Part headers */
|
|
370
|
+
readonly headers: HeaderProperty[];
|
|
371
|
+
/** If there can be multiple of that part */
|
|
372
|
+
readonly multi: boolean;
|
|
352
373
|
}
|
|
353
374
|
export interface HttpStatusCodeRange {
|
|
354
375
|
start: number;
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EACP,IAAI,EACL,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -122,6 +122,21 @@ extern dec bodyRoot(target: ModelProperty);
|
|
|
122
122
|
*/
|
|
123
123
|
extern dec bodyIgnore(target: ModelProperty);
|
|
124
124
|
|
|
125
|
+
/**
|
|
126
|
+
* @example
|
|
127
|
+
*
|
|
128
|
+
* ```tsp
|
|
129
|
+
* op upload(
|
|
130
|
+
* @header `content-type`: "multipart/form-data",
|
|
131
|
+
* @multipartBody body: {
|
|
132
|
+
* fullName: HttpPart<string>,
|
|
133
|
+
* headShots: HttpPart<Image>[]
|
|
134
|
+
* }
|
|
135
|
+
* ): void;
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
extern dec multipartBody(target: ModelProperty);
|
|
139
|
+
|
|
125
140
|
/**
|
|
126
141
|
* Specify the status code for this response. Property type must be a status code integer or a union of status code integer.
|
|
127
142
|
*
|
|
@@ -296,10 +311,3 @@ extern dec route(
|
|
|
296
311
|
* ```
|
|
297
312
|
*/
|
|
298
313
|
extern dec sharedRoute(target: Operation);
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Private decorators. Those are meant for internal use inside Http types only.
|
|
302
|
-
*/
|
|
303
|
-
namespace Private {
|
|
304
|
-
extern dec plainData(target: TypeSpec.Reflection.Model);
|
|
305
|
-
}
|
package/lib/http.tsp
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import "../dist/src/index.js";
|
|
2
|
-
import "./
|
|
2
|
+
import "./decorators.tsp";
|
|
3
|
+
import "./private.decorators.tsp";
|
|
3
4
|
import "./auth.tsp";
|
|
4
5
|
|
|
5
6
|
namespace TypeSpec.Http;
|
|
@@ -104,3 +105,18 @@ model ConflictResponse is Response<409>;
|
|
|
104
105
|
model PlainData<Data> {
|
|
105
106
|
...Data;
|
|
106
107
|
}
|
|
108
|
+
|
|
109
|
+
@Private.httpFile
|
|
110
|
+
model File {
|
|
111
|
+
contentType?: string;
|
|
112
|
+
filename?: string;
|
|
113
|
+
contents: bytes;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
model HttpPartOptions {
|
|
117
|
+
/** Name of the part when using the array form. */
|
|
118
|
+
name?: string;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@Private.httpPart(Type, Options)
|
|
122
|
+
model HttpPart<Type, Options extends valueof HttpPartOptions = #{}> {}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import "../dist/src/private.decorators.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Private decorators. Those are meant for internal use inside Http types only.
|
|
5
|
+
*/
|
|
6
|
+
namespace TypeSpec.Http.Private;
|
|
7
|
+
|
|
8
|
+
extern dec plainData(target: TypeSpec.Reflection.Model);
|
|
9
|
+
extern dec httpFile(target: TypeSpec.Reflection.Model);
|
|
10
|
+
extern dec httpPart(
|
|
11
|
+
target: TypeSpec.Reflection.Model,
|
|
12
|
+
type: unknown,
|
|
13
|
+
options: valueof HttpPartOptions
|
|
14
|
+
);
|
package/package.json
CHANGED
package/dist/src/body.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Diagnostic, ModelProperty, Program, Type } from "@typespec/compiler";
|
|
2
|
-
import { Visibility } from "./metadata.js";
|
|
3
|
-
export interface ResolvedBody {
|
|
4
|
-
readonly type: Type;
|
|
5
|
-
/** `true` if the body was specified with `@body` */
|
|
6
|
-
readonly isExplicit: boolean;
|
|
7
|
-
/** If the body original model contained property annotated with metadata properties. */
|
|
8
|
-
readonly containsMetadataAnnotations: boolean;
|
|
9
|
-
/** If body is defined with `@body` or `@bodyRoot` this is the property */
|
|
10
|
-
readonly property?: ModelProperty;
|
|
11
|
-
}
|
|
12
|
-
export declare function resolveBody(program: Program, requestOrResponseType: Type, metadata: Set<ModelProperty>, rootPropertyMap: Map<ModelProperty, ModelProperty>, visibility: Visibility, usedIn: "request" | "response"): [ResolvedBody | undefined, readonly Diagnostic[]];
|
|
13
|
-
/** Validate a property marked with `@body` */
|
|
14
|
-
export declare function validateBodyProperty(program: Program, property: ModelProperty, usedIn: "request" | "response"): [boolean, readonly Diagnostic[]];
|
|
15
|
-
//# sourceMappingURL=body.d.ts.map
|
package/dist/src/body.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../src/body.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,aAAa,EACb,OAAO,EACP,IAAI,EAML,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAC;IAC9C,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;CACnC;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE,IAAI,EAC3B,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,EAC5B,eAAe,EAAE,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,EAClD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,SAAS,GAAG,UAAU,GAC7B,CAAC,YAAY,GAAG,SAAS,EAAE,SAAS,UAAU,EAAE,CAAC,CAgGnD;AAED,8CAA8C;AAC9C,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,SAAS,GAAG,UAAU,GAC7B,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC,CA8BlC"}
|
package/dist/src/body.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { DuplicateTracker, createDiagnosticCollector, filterModelProperties, getDiscriminator, isArrayModelType, navigateType, } from "@typespec/compiler";
|
|
2
|
-
import { isBody, isBodyRoot, isHeader, isPathParam, isQueryParam, isStatusCode, } from "./decorators.js";
|
|
3
|
-
import { createDiagnostic } from "./lib.js";
|
|
4
|
-
import { isVisible } from "./metadata.js";
|
|
5
|
-
export function resolveBody(program, requestOrResponseType, metadata, rootPropertyMap, visibility, usedIn) {
|
|
6
|
-
const diagnostics = createDiagnosticCollector();
|
|
7
|
-
// non-model or intrinsic/array model -> response body is response type
|
|
8
|
-
if (requestOrResponseType.kind !== "Model" || isArrayModelType(program, requestOrResponseType)) {
|
|
9
|
-
return diagnostics.wrap({
|
|
10
|
-
type: requestOrResponseType,
|
|
11
|
-
isExplicit: false,
|
|
12
|
-
containsMetadataAnnotations: false,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
const duplicateTracker = new DuplicateTracker();
|
|
16
|
-
// look for explicit body
|
|
17
|
-
let resolvedBody;
|
|
18
|
-
for (const property of metadata) {
|
|
19
|
-
const isBodyVal = isBody(program, property);
|
|
20
|
-
const isBodyRootVal = isBodyRoot(program, property);
|
|
21
|
-
if (isBodyVal || isBodyRootVal) {
|
|
22
|
-
duplicateTracker.track("body", property);
|
|
23
|
-
let containsMetadataAnnotations = false;
|
|
24
|
-
if (isBodyVal) {
|
|
25
|
-
const valid = diagnostics.pipe(validateBodyProperty(program, property, usedIn));
|
|
26
|
-
containsMetadataAnnotations = !valid;
|
|
27
|
-
}
|
|
28
|
-
if (resolvedBody === undefined) {
|
|
29
|
-
resolvedBody = {
|
|
30
|
-
type: property.type,
|
|
31
|
-
isExplicit: isBodyVal,
|
|
32
|
-
containsMetadataAnnotations,
|
|
33
|
-
property,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
for (const [_, items] of duplicateTracker.entries()) {
|
|
39
|
-
for (const prop of items) {
|
|
40
|
-
diagnostics.add(createDiagnostic({
|
|
41
|
-
code: "duplicate-body",
|
|
42
|
-
target: prop,
|
|
43
|
-
}));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (resolvedBody === undefined) {
|
|
47
|
-
// 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.
|
|
48
|
-
// Special Case if the model has an indexer then it means it can return props so cannot be void.
|
|
49
|
-
if (requestOrResponseType.baseModel || requestOrResponseType.indexer) {
|
|
50
|
-
return diagnostics.wrap({
|
|
51
|
-
type: requestOrResponseType,
|
|
52
|
-
isExplicit: false,
|
|
53
|
-
containsMetadataAnnotations: false,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
// Special case for legacy purposes if the return type is an empty model with only @discriminator("xyz")
|
|
57
|
-
// Then we still want to return that object as it technically always has a body with that implicit property.
|
|
58
|
-
if (requestOrResponseType.derivedModels.length > 0 &&
|
|
59
|
-
getDiscriminator(program, requestOrResponseType)) {
|
|
60
|
-
return diagnostics.wrap({
|
|
61
|
-
type: requestOrResponseType,
|
|
62
|
-
isExplicit: false,
|
|
63
|
-
containsMetadataAnnotations: false,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
const bodyRoot = resolvedBody?.property ? rootPropertyMap.get(resolvedBody.property) : undefined;
|
|
68
|
-
const unannotatedProperties = filterModelProperties(program, requestOrResponseType, (p) => !metadata.has(p) && p !== bodyRoot && isVisible(program, p, visibility));
|
|
69
|
-
if (unannotatedProperties.properties.size > 0) {
|
|
70
|
-
if (resolvedBody === undefined) {
|
|
71
|
-
return diagnostics.wrap({
|
|
72
|
-
type: unannotatedProperties,
|
|
73
|
-
isExplicit: false,
|
|
74
|
-
containsMetadataAnnotations: false,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
diagnostics.add(createDiagnostic({
|
|
79
|
-
code: "duplicate-body",
|
|
80
|
-
messageId: "bodyAndUnannotated",
|
|
81
|
-
target: requestOrResponseType,
|
|
82
|
-
}));
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return diagnostics.wrap(resolvedBody);
|
|
86
|
-
}
|
|
87
|
-
/** Validate a property marked with `@body` */
|
|
88
|
-
export function validateBodyProperty(program, property, usedIn) {
|
|
89
|
-
const diagnostics = createDiagnosticCollector();
|
|
90
|
-
navigateType(property.type, {
|
|
91
|
-
modelProperty: (prop) => {
|
|
92
|
-
const kind = isHeader(program, prop)
|
|
93
|
-
? "header"
|
|
94
|
-
: usedIn === "request" && isQueryParam(program, prop)
|
|
95
|
-
? "query"
|
|
96
|
-
: usedIn === "request" && isPathParam(program, prop)
|
|
97
|
-
? "path"
|
|
98
|
-
: usedIn === "response" && isStatusCode(program, prop)
|
|
99
|
-
? "statusCode"
|
|
100
|
-
: undefined;
|
|
101
|
-
if (kind) {
|
|
102
|
-
diagnostics.add(createDiagnostic({
|
|
103
|
-
code: "metadata-ignored",
|
|
104
|
-
format: { kind },
|
|
105
|
-
target: prop,
|
|
106
|
-
}));
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
}, {});
|
|
110
|
-
return diagnostics.wrap(diagnostics.diagnostics.length === 0);
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=body.js.map
|
package/dist/src/body.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../src/body.ts"],"names":[],"mappings":"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"}
|