@mittwald/api-client-commons 4.1.0 → 4.2.0-alpha.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.
@@ -1,6 +1,3 @@
1
- import { InferredResponseType, OpenAPIOperation, RequestObject } from "../types/index.js";
1
+ import { OpenAPIOperation, RequestObject, ResponseData } from "../types/index.js";
2
2
  import { AsyncResource } from "@mittwald/react-use-promise";
3
- export type Inferred200ResponseData<TOp> = Extract<InferredResponseType<TOp>, {
4
- status: 200;
5
- }>["data"];
6
- export type GetApiResourceFn<TOp extends OpenAPIOperation> = null extends RequestObject<TOp> ? (conf?: RequestObject<TOp>) => AsyncResource<Inferred200ResponseData<TOp>> : (conf: RequestObject<TOp>) => AsyncResource<Inferred200ResponseData<TOp>>;
3
+ export type GetApiResourceFn<TOp extends OpenAPIOperation> = null extends RequestObject<TOp> ? (conf?: RequestObject<TOp>) => AsyncResource<ResponseData<TOp>> : (conf: RequestObject<TOp>) => AsyncResource<ResponseData<TOp>>;
@@ -1,6 +1,6 @@
1
1
  import { AnyResponse, Response } from "./Response.js";
2
2
  import { AnyRequest, RequestType } from "./RequestType.js";
3
- import { HttpMethod } from "./http.js";
3
+ import { HttpMethod, HttpStatus } from "./http.js";
4
4
  export interface OpenAPIOperation<TIgnoredRequest extends AnyRequest = RequestType, IgnoredResponse extends AnyResponse = Response> {
5
5
  operationId: string;
6
6
  path: string;
@@ -8,3 +8,9 @@ export interface OpenAPIOperation<TIgnoredRequest extends AnyRequest = RequestTy
8
8
  }
9
9
  export type InferredRequestType<TOp> = TOp extends OpenAPIOperation<infer TReq> ? TReq : never;
10
10
  export type InferredResponseType<TOp> = TOp extends OpenAPIOperation<RequestType, infer TRes> ? TRes : never;
11
+ export type ResponseData<TOp, TStatus extends HttpStatus = 200> = Extract<InferredResponseType<TOp>, {
12
+ status: TStatus;
13
+ }>["data"];
14
+ export type RequestData<TOp> = TOp extends OpenAPIOperation ? InferredRequestType<TOp> extends {
15
+ data: infer TData;
16
+ } ? TData : never : never;
@@ -0,0 +1,4 @@
1
+ import { Response } from "./Response.js";
2
+ export declare function assertOneOfStatus<T extends Response, S extends T["status"]>(response: T, expectedStatus: S[]): asserts response is T & {
3
+ status: S;
4
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.assertOneOfStatus = void 0;
7
+ const ApiClientError_js_1 = __importDefault(require("../core/ApiClientError.js"));
8
+ function assertOneOfStatus(response, expectedStatus) {
9
+ if (!expectedStatus.includes(response.status)) {
10
+ throw ApiClientError_js_1.default.fromResponse(`Unexpected response status (expected ${expectedStatus}, got: ${response.status})`, response);
11
+ }
12
+ }
13
+ exports.assertOneOfStatus = assertOneOfStatus;
@@ -3,6 +3,6 @@ export * from "./RequestFunction.js";
3
3
  export * from "./Response.js";
4
4
  export * from "./OpenAPIOperation.js";
5
5
  export * from "./http.js";
6
- export * from "./assertStatus.js";
7
6
  export * from "./simplify.js";
8
7
  export * from "./assertStatus.js";
8
+ export * from "./assertOneOfStatus.js";
@@ -19,6 +19,6 @@ __exportStar(require("./RequestFunction.js"), exports);
19
19
  __exportStar(require("./Response.js"), exports);
20
20
  __exportStar(require("./OpenAPIOperation.js"), exports);
21
21
  __exportStar(require("./http.js"), exports);
22
- __exportStar(require("./assertStatus.js"), exports);
23
22
  __exportStar(require("./simplify.js"), exports);
24
23
  __exportStar(require("./assertStatus.js"), exports);
24
+ __exportStar(require("./assertOneOfStatus.js"), exports);
@@ -1,6 +1,3 @@
1
- import { InferredResponseType, OpenAPIOperation, RequestObject } from "../types/index.js";
1
+ import { OpenAPIOperation, RequestObject, ResponseData } from "../types/index.js";
2
2
  import { AsyncResource } from "@mittwald/react-use-promise";
3
- export type Inferred200ResponseData<TOp> = Extract<InferredResponseType<TOp>, {
4
- status: 200;
5
- }>["data"];
6
- export type GetApiResourceFn<TOp extends OpenAPIOperation> = null extends RequestObject<TOp> ? (conf?: RequestObject<TOp>) => AsyncResource<Inferred200ResponseData<TOp>> : (conf: RequestObject<TOp>) => AsyncResource<Inferred200ResponseData<TOp>>;
3
+ export type GetApiResourceFn<TOp extends OpenAPIOperation> = null extends RequestObject<TOp> ? (conf?: RequestObject<TOp>) => AsyncResource<ResponseData<TOp>> : (conf: RequestObject<TOp>) => AsyncResource<ResponseData<TOp>>;
@@ -1,6 +1,6 @@
1
1
  import { AnyResponse, Response } from "./Response.js";
2
2
  import { AnyRequest, RequestType } from "./RequestType.js";
3
- import { HttpMethod } from "./http.js";
3
+ import { HttpMethod, HttpStatus } from "./http.js";
4
4
  export interface OpenAPIOperation<TIgnoredRequest extends AnyRequest = RequestType, IgnoredResponse extends AnyResponse = Response> {
5
5
  operationId: string;
6
6
  path: string;
@@ -8,3 +8,9 @@ export interface OpenAPIOperation<TIgnoredRequest extends AnyRequest = RequestTy
8
8
  }
9
9
  export type InferredRequestType<TOp> = TOp extends OpenAPIOperation<infer TReq> ? TReq : never;
10
10
  export type InferredResponseType<TOp> = TOp extends OpenAPIOperation<RequestType, infer TRes> ? TRes : never;
11
+ export type ResponseData<TOp, TStatus extends HttpStatus = 200> = Extract<InferredResponseType<TOp>, {
12
+ status: TStatus;
13
+ }>["data"];
14
+ export type RequestData<TOp> = TOp extends OpenAPIOperation ? InferredRequestType<TOp> extends {
15
+ data: infer TData;
16
+ } ? TData : never : never;
@@ -0,0 +1,4 @@
1
+ import { Response } from "./Response.js";
2
+ export declare function assertOneOfStatus<T extends Response, S extends T["status"]>(response: T, expectedStatus: S[]): asserts response is T & {
3
+ status: S;
4
+ };
@@ -0,0 +1,6 @@
1
+ import ApiClientError from "../core/ApiClientError.js";
2
+ export function assertOneOfStatus(response, expectedStatus) {
3
+ if (!expectedStatus.includes(response.status)) {
4
+ throw ApiClientError.fromResponse(`Unexpected response status (expected ${expectedStatus}, got: ${response.status})`, response);
5
+ }
6
+ }
@@ -3,6 +3,6 @@ export * from "./RequestFunction.js";
3
3
  export * from "./Response.js";
4
4
  export * from "./OpenAPIOperation.js";
5
5
  export * from "./http.js";
6
- export * from "./assertStatus.js";
7
6
  export * from "./simplify.js";
8
7
  export * from "./assertStatus.js";
8
+ export * from "./assertOneOfStatus.js";
@@ -3,6 +3,6 @@ export * from "./RequestFunction.js";
3
3
  export * from "./Response.js";
4
4
  export * from "./OpenAPIOperation.js";
5
5
  export * from "./http.js";
6
- export * from "./assertStatus.js";
7
6
  export * from "./simplify.js";
8
7
  export * from "./assertStatus.js";
8
+ export * from "./assertOneOfStatus.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/api-client-commons",
3
- "version": "4.1.0",
3
+ "version": "4.2.0-alpha.1",
4
4
  "description": "Common types and utilities for mittwald API clients",
5
5
  "license": "MIT",
6
6
  "repository": "https://github.com/mittwald/api-client-js.git",
@@ -64,7 +64,7 @@
64
64
  },
65
65
  "devDependencies": {
66
66
  "@jest/globals": "^29.6.0",
67
- "@mittwald/react-use-promise": "^1.3.2",
67
+ "@mittwald/react-use-promise": "^1.3.3",
68
68
  "@types/jest": "^29.5.2",
69
69
  "@yarnpkg/pnpify": "^4.0.0-rc.48",
70
70
  "jest": "^29.6.1",