@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
176 lines (152 loc) • 7.76 kB
text/typescript
import squashAndPreparePositionalArguments from '../helpers/squashAndPreparePositionalArguments'
import Http from '../Http'
import type {
CreateStripeSessionOptions,
OrderUpdate,
AddStoreCredit,
AddPayment,
NestedAttributes,
SelectShippingMethod,
AddPaymentOptions,
SelectShippingMethodOptions,
ShippingRatesOptions,
PaymentMethodsOptions,
RemoveStoreCreditsOptions,
AddStoreCreditOptions,
CompleteOptions,
AdvanceOptions,
OrderUpdateOptions,
OrderNextOptions
} from '../interfaces/Checkout'
import type { IOrder, IOrderResult } from '../interfaces/Order'
import type { IPaymentMethods, IPaymentMethodsResult } from '../interfaces/PaymentMethod'
import type { IQuery } from '../interfaces/Query'
import type {
IShippingMethods,
IShippingMethodsResult,
ShippingRates,
ShippingRatesResult
} from '../interfaces/ShippingMethod'
import {
StripeCheckoutSessionSummary,
StripeCheckoutSessionSummaryResult
} from '../interfaces/StripeCheckoutSessionSummary'
import type { IToken } from '../interfaces/Token'
import routes from '../routes'
export default class Checkout extends Http {
public async orderNext(options: OrderNextOptions): Promise<IOrderResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async orderNext(token: IToken, params?: IQuery): Promise<IOrderResult>
public async orderNext(...allArguments: any[]): Promise<IOrderResult> {
const [tokenOrOptions, positionalParams = {}] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<IOrder>('patch', routes.checkoutNextPath(), token, params)
}
public async orderUpdate(options: OrderUpdateOptions): Promise<IOrderResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async orderUpdate(token: IToken, params: OrderUpdate | NestedAttributes): Promise<IOrderResult>
public async orderUpdate(...allArguments: any[]): Promise<IOrderResult> {
const [tokenOrOptions, positionalParams] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<IOrder>('patch', routes.checkoutPath(), token, params)
}
public async advance(options: AdvanceOptions): Promise<IOrderResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async advance(token: IToken, params?: IQuery): Promise<IOrderResult>
public async advance(...allArguments: any[]): Promise<IOrderResult> {
const [tokenOrOptions, positionalParams = {}] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<IOrder>('patch', routes.checkoutAdvancePath(), token, params)
}
public async complete(options: CompleteOptions): Promise<IOrderResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async complete(token: IToken, params?: IQuery): Promise<IOrderResult>
public async complete(...allArguments: any[]): Promise<IOrderResult> {
const [tokenOrOptions, positionalParams = {}] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<IOrder>('patch', routes.checkoutCompletePath(), token, params)
}
public async addStoreCredits(options: AddStoreCreditOptions): Promise<IOrderResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async addStoreCredits(token: IToken, params: AddStoreCredit): Promise<IOrderResult>
public async addStoreCredits(...allArguments: any[]): Promise<IOrderResult> {
const [tokenOrOptions, positionalParams] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<IOrder>('post', routes.checkoutAddStoreCreditsPath(), token, params)
}
public async removeStoreCredits(options: RemoveStoreCreditsOptions): Promise<IOrderResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async removeStoreCredits(token: IToken, params?: IQuery): Promise<IOrderResult>
public async removeStoreCredits(...allArguments: any[]): Promise<IOrderResult> {
const [tokenOrOptions, positionalParams = {}] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<IOrder>('post', routes.checkoutRemoveStoreCreditsPath(), token, params)
}
public async paymentMethods(options: PaymentMethodsOptions): Promise<IPaymentMethodsResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async paymentMethods(token: IToken): Promise<IPaymentMethodsResult>
public async paymentMethods(...allArguments: any[]): Promise<IPaymentMethodsResult> {
const [tokenOrOptions] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions], [])
return await this.spreeResponse<IPaymentMethods>('get', routes.checkoutPaymentMethodsPath(), token, params)
}
/**
* @deprecated Use {@link shippingRates} instead.
*/
public async shippingMethods(token: IToken, params: IQuery = {}): Promise<IShippingMethodsResult> {
return await this.spreeResponse<IShippingMethods>('get', routes.checkoutShippingMethodsPath(), token, params)
}
public async shippingRates(options: ShippingRatesOptions): Promise<ShippingRatesResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async shippingRates(token: IToken, params?: IQuery): Promise<ShippingRatesResult>
public async shippingRates(...allArguments: any[]): Promise<ShippingRatesResult> {
const [tokenOrOptions, positionalParams = {}] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<ShippingRates>('get', routes.checkoutShippingRatesPath(), token, params)
}
public async selectShippingMethod(options: SelectShippingMethodOptions): Promise<IOrderResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async selectShippingMethod(token: IToken, params: SelectShippingMethod): Promise<IOrderResult>
public async selectShippingMethod(...allArguments: any[]): Promise<IOrderResult> {
const [tokenOrOptions, positionalParams] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<IOrder>('patch', routes.checkoutSelectShippingMethodPath(), token, params)
}
public async addPayment(options: AddPaymentOptions): Promise<IOrderResult>
/**
* @deprecated Use the combined options signature instead.
*/
public async addPayment(token: IToken, addPaymentParams: AddPayment): Promise<IOrderResult>
public async addPayment(...allArguments: any[]): Promise<IOrderResult> {
const [tokenOrOptions, positionalParams] = allArguments
const { token, params } = squashAndPreparePositionalArguments([tokenOrOptions, positionalParams], [])
return await this.spreeResponse<IOrder>('post', routes.checkoutAddPaymentPath(), token, params)
}
public async createStripeSession(options: CreateStripeSessionOptions): Promise<StripeCheckoutSessionSummaryResult> {
const { token, params } = squashAndPreparePositionalArguments([options], [])
return await this.spreeResponse<StripeCheckoutSessionSummary>(
'patch',
routes.checkoutCreateStripeSessionPath(),
token,
params
)
}
}