Releases: christoph-fricke/openapi-msw
v0.7.1
v0.7.0
Minor Changes
- #58
f08acf1
Thanks @christoph-fricke! - Added "content-length" header forresponse(...).empty()
. If no "content-length" header is provided in the response init, the "content-length" header is now set with the value "0". See #56 for more details.
v0.6.1
Patch Changes
- #54
6793dcc
Thanks @christoph-fricke! - Fixed type-exports for CommonJS refer to a non-existing file.
v0.6.0
Minor Changes
-
#50
37da681
Thanks @christoph-fricke! - Added compilation and exports for CommonJS modules. This makes OpenAPI-MSW usable in projects that still use CommonJS as their module system. -
#52
88ca9da
Thanks @christoph-fricke! - Added enhanced typing for therequest
object. Now,request.json()
andrequest.text()
infer their return type from the given OpenAPI request-body content schema. Previously, onlyrequest.json()
has been inferred without considering the content-type.
v0.5.0
Minor Changes
-
#41
fe70d20
Thanks @christoph-fricke! - Addedresponse
helper to the resolver-info argument. It provides an granular type-safety when creating HTTP responses. Instead of being able to return any status code,response
limits status codes, content types, and their response bodies to the combinations defined by the given OpenAPI spec./* Imagine this endpoint specification for the following example: /response-example: get: summary: Get Resource operationId: getResource responses: 200: description: Success content: application/json: schema: $ref: "#/components/schemas/Resource" text/plain: schema: type: string enum: ["Hello", "Goodbye"] 204: description: NoContent "5XX": description: Error content: text/plain: schema: type: string */ const handler = http.get("/response-example", ({ response }) => { // Error: Status Code 204 only allows empty responses const invalidRes = response(204).text("Hello"); // Error: Status Code 200 only allows "Hello" as text const invalidRes = response(200).text("Some other string"); // No Error: This combination is part of the defined OpenAPI spec const validRes = response(204).empty(); // No Error: This combination is part of the defined OpenAPI spec const validRes = response(200).text("Hello"); // Using a wildcard requires you to provide a matching status code for the response const validRes = response("5XX").text("Fatal Error", { status: 503 }); });
v0.4.0
Minor Changes
-
#42
c466bbc
Thanks @christoph-fricke! - Changed response body types to be a union of all response bodies for all status codes and media types. This makes it possible to return responses for specified error codes without requiring a type cast. Imagine the following endpoint. Its response body is now typed asStrictResponse<{ id: string, value: number } | string | null>
./resource: get: summary: Get Resource operationId: getResource responses: 200: description: Success content: application/json: schema: type: object required: [id, value] properties: id: type: string value: type: integer 202: description: Accepted content: text/plain: schema: type: string 418: description: NoContent
Patch Changes
- #44
a9338b5
Thanks @christoph-fricke! - Fixed endpoints with no specified query params allow any query key in thequery
helper methods. Now, providing any query key causes a type error.
v0.3.0
Minor Changes
-
#33
1f3958d
Thanks @christoph-fricke! - Addedquery
helper to resolver-info argument. It provides a type-safe wrapper aroundURLSearchParams
for reading search parameters. As usual, the information about available parameters is inferred from your OpenAPI spec./* Imagine this endpoint specification for the following example: /query-example: get: summary: Query Example operationId: getQueryExample parameters: - name: filter in: query required: true schema: type: string - name: page in: query schema: type: number - name: sort in: query required: false schema: type: string enum: ["asc", "desc"] - name: sortBy in: query schema: type: array items: type: string */ const handler = http.get("/query-example", ({ query }) => { const filter = query.get("filter"); // Typed as string const page = query.get("page"); // Typed as string | null since it is not required const sort = query.get("sort"); // Typed as "asc" | "desc" | null const sortBy = query.getAll("sortBy"); // Typed as string[] // Supported methods from URLSearchParams: get(), getAll(), has(), size if (query.has("sort", "asc")) { /* ... */ } return HttpResponse.json({ /* ... */ }); });
-
#35
07fa9b0
Thanks @christoph-fricke! - Restructured the library to add support for additional response resolver info. The enhancedResponseResolver
type andResponseResolverInfo
are available as exports.
v0.2.2
Patch Changes
-
#31
556dfca
Thanks @christoph-fricke! - Fixed a type mismatch between path fragment types and the values provided at runtime, which are always strings. Now all path-fragments are typed as string. If a fragment's schema is a string constrained by an enum, the resulting string literals are preserved. This fixes bug #22.const handler = http.get("/resource/{id}", ({ params }) => { // Previously calling "parseInt(...)" caused a type error // when the schema type for "id" is defined as number. const id = parseInt(params.id); return HttpResponse.json({ id }); });
v0.2.1
Patch Changes
- #27
232ae11
Thanks @luchsamapparat! - Fixed a compilation warning in projects using OpenAPI-MSW, which was caused by missing sources in source maps.
v0.2.0
Minor Changes
- #24
bfd7a99
Thanks @christoph-fricke! - Added JSDoc comments to public API for improved DX.
Patch Changes
- #23
29ecb9c
Thanks @christoph-fricke! - Fixed a small naming mistake in the "Getting Started" code example.