mirror of
https://github.com/vercel/commerce.git
synced 2025-06-19 05:31:22 +00:00
Moved method
This commit is contained in:
parent
beccca8eaf
commit
722f4cee23
@ -1,19 +1,15 @@
|
|||||||
import type { NextApiHandler } from 'next'
|
import type { NextApiHandler } from 'next'
|
||||||
import type { RequestInit } from '@vercel/fetch'
|
import type { RequestInit } from '@vercel/fetch'
|
||||||
import { CommerceAPI, CommerceAPIConfig } from '@commerce/api'
|
import {
|
||||||
|
CommerceAPIConfig,
|
||||||
|
getCommerceApi as commerceApi,
|
||||||
|
getEndpoint,
|
||||||
|
} from '@commerce/api'
|
||||||
import fetchGraphqlApi from './utils/fetch-graphql-api'
|
import fetchGraphqlApi from './utils/fetch-graphql-api'
|
||||||
import fetchStoreApi from './utils/fetch-store-api'
|
import fetchStoreApi from './utils/fetch-store-api'
|
||||||
|
|
||||||
import type { CartAPI } from './cart'
|
import type { CartAPI } from './cart'
|
||||||
import login from './operations/login'
|
import login from './operations/login'
|
||||||
import {
|
|
||||||
Operations,
|
|
||||||
defaultOperations,
|
|
||||||
AllowedOperations,
|
|
||||||
OPERATIONS,
|
|
||||||
getOperations,
|
|
||||||
APIOperations,
|
|
||||||
} from '@commerce/api/operations'
|
|
||||||
|
|
||||||
export interface BigcommerceConfig extends CommerceAPIConfig {
|
export interface BigcommerceConfig extends CommerceAPIConfig {
|
||||||
// Indicates if the returned metadata with translations should be applied to the
|
// Indicates if the returned metadata with translations should be applied to the
|
||||||
@ -119,17 +115,16 @@ export type APIs = CartAPI
|
|||||||
export function getCommerceApi<P extends Provider>(
|
export function getCommerceApi<P extends Provider>(
|
||||||
customProvider: P = provider as any
|
customProvider: P = provider as any
|
||||||
) {
|
) {
|
||||||
const commerce = new CommerceAPI(customProvider)
|
const api = commerceApi(customProvider)
|
||||||
const operations = getOperations(customProvider.operations, { commerce })
|
|
||||||
|
|
||||||
return Object.assign(commerce, operations, {
|
return Object.assign(api, {
|
||||||
endpoint<E extends APIs>(
|
endpoint<E extends APIs>(
|
||||||
context: E['endpoint'] & {
|
context: E['endpoint'] & {
|
||||||
config?: P['config']
|
config?: P['config']
|
||||||
options?: E['schema']['endpoint']['options']
|
options?: E['schema']['endpoint']['options']
|
||||||
}
|
}
|
||||||
): NextApiHandler {
|
): NextApiHandler {
|
||||||
return super.endpoint(context)
|
return getEndpoint(api, context)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import type { NextApiHandler } from 'next'
|
|||||||
import type { RequestInit, Response } from '@vercel/fetch'
|
import type { RequestInit, Response } from '@vercel/fetch'
|
||||||
import type { APIEndpoint, APIHandler } from './utils/types'
|
import type { APIEndpoint, APIHandler } from './utils/types'
|
||||||
import type { CartSchema } from '../types/cart'
|
import type { CartSchema } from '../types/cart'
|
||||||
import { APIOperations } from './operations'
|
import { APIOperations, getOperations } from './operations'
|
||||||
|
|
||||||
export type APISchemas = CartSchema
|
export type APISchemas = CartSchema
|
||||||
|
|
||||||
@ -65,15 +65,26 @@ export class CommerceAPI<P extends APIProvider = APIProvider> {
|
|||||||
setConfig(newConfig: Partial<P['config']>) {
|
setConfig(newConfig: Partial<P['config']>) {
|
||||||
Object.assign(this.provider.config, newConfig)
|
Object.assign(this.provider.config, newConfig)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
endpoint<T extends GetAPISchema<any, any>>(
|
export function getCommerceApi<P extends APIProvider>(customProvider: P) {
|
||||||
|
const commerce = new CommerceAPI(customProvider)
|
||||||
|
const operations = getOperations(customProvider.operations, { commerce })
|
||||||
|
|
||||||
|
return Object.assign(commerce, operations)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getEndpoint<
|
||||||
|
P extends APIProvider,
|
||||||
|
T extends GetAPISchema<any, any>
|
||||||
|
>(
|
||||||
|
commerce: CommerceAPI<P>,
|
||||||
context: T['endpoint'] & {
|
context: T['endpoint'] & {
|
||||||
config?: P['config']
|
config?: P['config']
|
||||||
options?: T['schema']['endpoint']['options']
|
options?: T['schema']['endpoint']['options']
|
||||||
}
|
}
|
||||||
): NextApiHandler {
|
): NextApiHandler {
|
||||||
const commerce = this
|
const cfg = commerce.getConfig(context.config)
|
||||||
const cfg = this.getConfig(context.config)
|
|
||||||
|
|
||||||
return function apiHandler(req, res) {
|
return function apiHandler(req, res) {
|
||||||
return context.handler({
|
return context.handler({
|
||||||
@ -86,7 +97,6 @@ export class CommerceAPI<P extends APIProvider = APIProvider> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
export interface CommerceAPIConfig {
|
export interface CommerceAPIConfig {
|
||||||
locale?: string
|
locale?: string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user