openapi-typesafe-helpers 1.0.0-rc.0 → 1.0.0-rc.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.
package/dist/index.d.cts CHANGED
@@ -105,11 +105,19 @@ type FirstErrorStatus<T> = T extends {
105
105
  } ? T["4XX"] : T extends {
106
106
  default: any;
107
107
  } ? T["default"] : never;
108
- type PathsWithMethod<Paths extends {}, PathnameMethod extends HttpMethod> = {
108
+ type PathsWithEveryMethod<Paths extends {}, PathnameMethod extends HttpMethod> = {
109
109
  [Pathname in keyof Paths]: Paths[Pathname] extends {
110
110
  [K in PathnameMethod]: any;
111
111
  } ? Pathname : never;
112
112
  }[keyof Paths];
113
+ type PathsWithAnyMethod<Paths extends {}> = {
114
+ [Pathname in keyof Paths]: {
115
+ [Method in HttpMethod]: Paths[Pathname] extends {
116
+ [K in Method]: any;
117
+ } ? Pathname : never;
118
+ }[HttpMethod];
119
+ }[keyof Paths];
120
+ type PathsWithMethod<Paths extends {}, PathnameMethod extends HttpMethod> = PathsWithEveryMethod<Paths, PathnameMethod> | (HttpMethod extends PathnameMethod ? PathsWithAnyMethod<Paths> : never);
113
121
  interface OperationObject {
114
122
  parameters: any;
115
123
  requestBody: any;
@@ -131,7 +139,8 @@ type PickRequestBody<T> = "requestBody" extends keyof T ? Pick<T, "requestBody">
131
139
  type IsOperationRequestBodyOptional<T> = RequiredKeysOf<PickRequestBody<T>> extends never ? true : false;
132
140
  type OperationRequestBodyMediaContent<T> = IsOperationRequestBodyOptional<T> extends true ? ResponseContent<NonNullable<OperationRequestBody<T>>> | undefined : ResponseContent<OperationRequestBody<T>>;
133
141
  type OperationRequestBodyContent<T> = FilterKeys<OperationRequestBodyMediaContent<T>, MediaType> extends never ? FilterKeys<NonNullable<OperationRequestBodyMediaContent<T>>, MediaType> | undefined : FilterKeys<OperationRequestBodyMediaContent<T>, MediaType>;
134
- type SuccessResponse<T extends Record<string | number, any>, Media extends MediaType = MediaType> = GetResponseContent<T, Media, OkStatus>;
142
+ type SuccessStatus<T> = [Extract<keyof T, OkStatus>] extends [never] ? "default" : OkStatus;
143
+ type SuccessResponse<T extends Record<string | number, any>, Media extends MediaType = MediaType> = GetResponseContent<T, Media, SuccessStatus<T>>;
135
144
  type GetResponseContent<T extends Record<string | number, any>, Media extends MediaType = MediaType, ResponseCode extends keyof T = keyof T> = ResponseCode extends keyof T ? {
136
145
  [K in ResponseCode]: T[K]["content"] extends Record<string, any> ? FilterKeys<T[K]["content"], Media> extends never ? T[K]["content"] : FilterKeys<T[K]["content"], Media> : K extends keyof T ? T[K]["content"] : never;
137
146
  }[ResponseCode] : never;
package/dist/index.d.mts CHANGED
@@ -105,11 +105,19 @@ type FirstErrorStatus<T> = T extends {
105
105
  } ? T["4XX"] : T extends {
106
106
  default: any;
107
107
  } ? T["default"] : never;
108
- type PathsWithMethod<Paths extends {}, PathnameMethod extends HttpMethod> = {
108
+ type PathsWithEveryMethod<Paths extends {}, PathnameMethod extends HttpMethod> = {
109
109
  [Pathname in keyof Paths]: Paths[Pathname] extends {
110
110
  [K in PathnameMethod]: any;
111
111
  } ? Pathname : never;
112
112
  }[keyof Paths];
113
+ type PathsWithAnyMethod<Paths extends {}> = {
114
+ [Pathname in keyof Paths]: {
115
+ [Method in HttpMethod]: Paths[Pathname] extends {
116
+ [K in Method]: any;
117
+ } ? Pathname : never;
118
+ }[HttpMethod];
119
+ }[keyof Paths];
120
+ type PathsWithMethod<Paths extends {}, PathnameMethod extends HttpMethod> = PathsWithEveryMethod<Paths, PathnameMethod> | (HttpMethod extends PathnameMethod ? PathsWithAnyMethod<Paths> : never);
113
121
  interface OperationObject {
114
122
  parameters: any;
115
123
  requestBody: any;
@@ -131,7 +139,8 @@ type PickRequestBody<T> = "requestBody" extends keyof T ? Pick<T, "requestBody">
131
139
  type IsOperationRequestBodyOptional<T> = RequiredKeysOf<PickRequestBody<T>> extends never ? true : false;
132
140
  type OperationRequestBodyMediaContent<T> = IsOperationRequestBodyOptional<T> extends true ? ResponseContent<NonNullable<OperationRequestBody<T>>> | undefined : ResponseContent<OperationRequestBody<T>>;
133
141
  type OperationRequestBodyContent<T> = FilterKeys<OperationRequestBodyMediaContent<T>, MediaType> extends never ? FilterKeys<NonNullable<OperationRequestBodyMediaContent<T>>, MediaType> | undefined : FilterKeys<OperationRequestBodyMediaContent<T>, MediaType>;
134
- type SuccessResponse<T extends Record<string | number, any>, Media extends MediaType = MediaType> = GetResponseContent<T, Media, OkStatus>;
142
+ type SuccessStatus<T> = [Extract<keyof T, OkStatus>] extends [never] ? "default" : OkStatus;
143
+ type SuccessResponse<T extends Record<string | number, any>, Media extends MediaType = MediaType> = GetResponseContent<T, Media, SuccessStatus<T>>;
135
144
  type GetResponseContent<T extends Record<string | number, any>, Media extends MediaType = MediaType, ResponseCode extends keyof T = keyof T> = ResponseCode extends keyof T ? {
136
145
  [K in ResponseCode]: T[K]["content"] extends Record<string, any> ? FilterKeys<T[K]["content"], Media> extends never ? T[K]["content"] : FilterKeys<T[K]["content"], Media> : K extends keyof T ? T[K]["content"] : never;
137
146
  }[ResponseCode] : never;
package/dist/index.d.ts CHANGED
@@ -105,11 +105,19 @@ type FirstErrorStatus<T> = T extends {
105
105
  } ? T["4XX"] : T extends {
106
106
  default: any;
107
107
  } ? T["default"] : never;
108
- type PathsWithMethod<Paths extends {}, PathnameMethod extends HttpMethod> = {
108
+ type PathsWithEveryMethod<Paths extends {}, PathnameMethod extends HttpMethod> = {
109
109
  [Pathname in keyof Paths]: Paths[Pathname] extends {
110
110
  [K in PathnameMethod]: any;
111
111
  } ? Pathname : never;
112
112
  }[keyof Paths];
113
+ type PathsWithAnyMethod<Paths extends {}> = {
114
+ [Pathname in keyof Paths]: {
115
+ [Method in HttpMethod]: Paths[Pathname] extends {
116
+ [K in Method]: any;
117
+ } ? Pathname : never;
118
+ }[HttpMethod];
119
+ }[keyof Paths];
120
+ type PathsWithMethod<Paths extends {}, PathnameMethod extends HttpMethod> = PathsWithEveryMethod<Paths, PathnameMethod> | (HttpMethod extends PathnameMethod ? PathsWithAnyMethod<Paths> : never);
113
121
  interface OperationObject {
114
122
  parameters: any;
115
123
  requestBody: any;
@@ -131,7 +139,8 @@ type PickRequestBody<T> = "requestBody" extends keyof T ? Pick<T, "requestBody">
131
139
  type IsOperationRequestBodyOptional<T> = RequiredKeysOf<PickRequestBody<T>> extends never ? true : false;
132
140
  type OperationRequestBodyMediaContent<T> = IsOperationRequestBodyOptional<T> extends true ? ResponseContent<NonNullable<OperationRequestBody<T>>> | undefined : ResponseContent<OperationRequestBody<T>>;
133
141
  type OperationRequestBodyContent<T> = FilterKeys<OperationRequestBodyMediaContent<T>, MediaType> extends never ? FilterKeys<NonNullable<OperationRequestBodyMediaContent<T>>, MediaType> | undefined : FilterKeys<OperationRequestBodyMediaContent<T>, MediaType>;
134
- type SuccessResponse<T extends Record<string | number, any>, Media extends MediaType = MediaType> = GetResponseContent<T, Media, OkStatus>;
142
+ type SuccessStatus<T> = [Extract<keyof T, OkStatus>] extends [never] ? "default" : OkStatus;
143
+ type SuccessResponse<T extends Record<string | number, any>, Media extends MediaType = MediaType> = GetResponseContent<T, Media, SuccessStatus<T>>;
135
144
  type GetResponseContent<T extends Record<string | number, any>, Media extends MediaType = MediaType, ResponseCode extends keyof T = keyof T> = ResponseCode extends keyof T ? {
136
145
  [K in ResponseCode]: T[K]["content"] extends Record<string, any> ? FilterKeys<T[K]["content"], Media> extends never ? T[K]["content"] : FilterKeys<T[K]["content"], Media> : K extends keyof T ? T[K]["content"] : never;
137
146
  }[ResponseCode] : never;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "openapi-typesafe-helpers",
3
3
  "description": "TypeScript helpers for consuming openapi-typesafe types",
4
- "version": "1.0.0-rc.0",
4
+ "version": "1.0.0-rc.1",
5
5
  "author": {
6
6
  "name": "Fedor Chishchin",
7
7
  "url": "https://github.com/fedorello"