UNPKG

@fox-hound-tools/refine-library

Version:

Refine sdk library

21 lines (20 loc) 2.65 kB
import { AdditionalDataHolder, RequestConfiguration } from '@microsoft/kiota-abstractions'; import { SetNonNullable } from 'type-fest'; /** * BodyやResponseで使用されるAdditionalDataHolderを継承した型から、additionalData以外を必須とした型を取得する */ export type RequiredDeepWithoutAdditionalData<T extends AdditionalDataHolder> = T extends AdditionalDataHolder ? RequiredObjectDeep<SetNonNullable<Required<Omit<T, 'additionalData'>>>> & Pick<T, 'additionalData'> : never; type RequiredObjectDeep<ObjectType extends object> = { [KeyType in keyof ObjectType]-?: ObjectType[KeyType] extends AdditionalDataHolder ? RequiredDeepWithoutAdditionalData<ObjectType[KeyType]> : ObjectType[KeyType] extends Array<infer ArrayType> ? ArrayType extends AdditionalDataHolder ? RequiredDeepWithoutAdditionalData<ArrayType>[] : ArrayType[] : ObjectType[KeyType]; }; export type NonBodyApiFunction = (requestConfiguration?: RequestConfiguration<object>) => Promise<AdditionalDataHolder | undefined>; export type NonBodyFunctionRequest<T extends NonBodyApiFunction> = T extends (requestConfiguration: RequestConfiguration<infer U>) => Promise<object | undefined> ? U : never; export type NonBodyFunctionResponse<T extends NonBodyApiFunction> = T extends (requestConfiguration: RequestConfiguration<object>) => Promise<infer U | undefined> ? U : never; export type ApiFunction = (body: AdditionalDataHolder, requestConfiguration?: RequestConfiguration<object>) => Promise<AdditionalDataHolder | undefined>; export type ApiFunctionBody<T extends ApiFunction> = T extends (body: infer U, requestConfiguration: RequestConfiguration<object>) => Promise<AdditionalDataHolder | undefined> ? U : never; export type ApiFunctionRequest<T extends ApiFunction> = T extends (body: AdditionalDataHolder, requestConfiguration: RequestConfiguration<infer U>) => Promise<AdditionalDataHolder | undefined> ? U : never; export type ApiFunctionResponse<T extends ApiFunction> = T extends (body: AdditionalDataHolder, requestConfiguration: RequestConfiguration<object>) => Promise<infer U | undefined> ? U : never; export type ResponseVoidApiFunction = (body: AdditionalDataHolder, requestConfiguration?: RequestConfiguration<object>) => Promise<void>; export type ResponseVoidApiFunctionBody<T extends ResponseVoidApiFunction> = T extends (body: infer U, requestConfiguration: RequestConfiguration<object>) => Promise<void> ? U : never; export type ResponseVoidApiFunctionRequest<T extends ResponseVoidApiFunction> = T extends (body: AdditionalDataHolder, requestConfiguration: RequestConfiguration<infer U>) => Promise<void> ? U : never; export {};