@spree/storefront-api-v2-sdk
Version:
Node module to easily integrate your JavaScript or TypeScript application with Spree API V2. You can create an entirely custom Storefront in JS/TS with this package including one page checkout, Single Page Apps, PWAs and so on
48 lines (44 loc) • 1.86 kB
text/typescript
import type { DeepAnyObject } from './DeepAnyObject'
import type { IQuery } from './Query'
import type { OptionalAccountToken, OptionalAnyToken, RequiredAccountToken, RequiredAnyToken } from './Token'
export type AllowedCustomizations = {
suggestToken: boolean
suggestQuery: boolean
optionalToken: boolean
onlyAccountToken: boolean
}
export type DefaultCustomizations = AllowedCustomizations & {
suggestToken: false
suggestQuery: false
optionalToken: false
onlyAccountToken: false
}
export type WithCommonOptions<
CustomizationsOrNull extends Partial<AllowedCustomizations> | null = Partial<AllowedCustomizations> | null,
CustomOptions extends Record<string, any> = Record<string, any>,
Customizations extends CustomizationsOrNull extends null
? Record<string, unknown>
: CustomizationsOrNull = CustomizationsOrNull extends null ? Record<string, unknown> : CustomizationsOrNull,
IntersectedCustomizations extends Customizations & DefaultCustomizations = Customizations & DefaultCustomizations,
FinalCustomizations extends {
[P in keyof AllowedCustomizations]: IntersectedCustomizations[P] extends never
? Customizations[P]
: DefaultCustomizations[P]
} = {
[P in keyof AllowedCustomizations]: IntersectedCustomizations[P] extends never
? Customizations[P]
: DefaultCustomizations[P]
}
> = DeepAnyObject<
((FinalCustomizations['suggestToken'] extends true
? FinalCustomizations['onlyAccountToken'] extends true
? FinalCustomizations['optionalToken'] extends true
? OptionalAccountToken
: RequiredAccountToken
: FinalCustomizations['optionalToken'] extends true
? OptionalAnyToken
: RequiredAnyToken
: Record<string, unknown>) &
(FinalCustomizations['suggestQuery'] extends true ? IQuery : Record<string, unknown>)) &
CustomOptions
>