chore: Fix types errors

This commit is contained in:
Alessandro Casazza 2021-07-09 20:27:37 +02:00
parent d47908def5
commit 4adba68c4c
No known key found for this signature in database
GPG Key ID: 3AF41B06C6495D3D
3 changed files with 35 additions and 29 deletions

View File

@ -1,5 +1,5 @@
import type { CommerceAPI, CommerceAPIConfig } from '@commerce/api' import type { CommerceAPI, CommerceAPIConfig } from '@commerce/api'
import type { RequestInit } from '@vercel/fetch' import type { RequestInit, Response, Fetch } from '@vercel/fetch'
import { getCommerceApi as commerceApi } from '@commerce/api' import { getCommerceApi as commerceApi } from '@commerce/api'
import createFetcher from './utils/fetch-api' import createFetcher from './utils/fetch-api'
@ -12,15 +12,17 @@ import getAllProducts from './operations/get-all-products'
import getProduct from './operations/get-product' import getProduct from './operations/get-product'
import { getToken } from './utils/get-token' import { getToken } from './utils/get-token'
import fetch from './utils/fetch'
export interface CommercelayerConfig extends CommerceAPIConfig { export interface CommercelayerConfig extends Omit<CommerceAPIConfig, 'fetch'> {
apiClientId: string apiClientId: string
apiFetch<T>( apiToken: string
apiFetch(
query: string, query: string,
endpoint: string, endpoint: string,
fetchOptions?: RequestInit, fetchOptions?: RequestInit,
user?: UserCredentials user?: UserCredentials
): Promise<T> ): Promise<{ data: any; res: Response }>
} }
export type UserCredentials = { export type UserCredentials = {
@ -51,22 +53,21 @@ if (!MARKET_SCOPE) {
} }
export async function getAccessToken(user?: UserCredentials) { export async function getAccessToken(user?: UserCredentials) {
const token = await getToken({ return await getToken({
clientId: CLIENT_ID, clientId: CLIENT_ID,
endpoint: ENDPOINT, endpoint: ENDPOINT,
scope: MARKET_SCOPE, scope: MARKET_SCOPE,
user, user,
}) })
return token
} }
export interface CommercelayerConfig extends CommerceAPIConfig {}
const config: CommercelayerConfig = { const config: CommercelayerConfig = {
commerceUrl: ENDPOINT, commerceUrl: ENDPOINT,
apiClientId: CLIENT_ID, apiClientId: CLIENT_ID,
cartCookie: '', cartCookie: '',
customerCookie: '', customerCookie: '',
cartCookieMaxAge: 2592000, cartCookieMaxAge: 2592000,
apiToken: '',
apiFetch: createFetcher(() => getCommerceApi().getConfig()), apiFetch: createFetcher(() => getCommerceApi().getConfig()),
} }

View File

@ -3,7 +3,8 @@ import { FetcherError } from '@commerce/utils/errors'
import { CommercelayerConfig, getAccessToken, UserCredentials } from '../index' import { CommercelayerConfig, getAccessToken, UserCredentials } from '../index'
import fetch from './fetch' import fetch from './fetch'
const fetchApi = <T>(getConfig: () => CommercelayerConfig) => const fetchApi =
(getConfig: () => CommercelayerConfig) =>
async ( async (
query: string, query: string,
endpoint: string, endpoint: string,
@ -12,7 +13,7 @@ const fetchApi = <T>(getConfig: () => CommercelayerConfig) =>
) => { ) => {
const config = getConfig() const config = getConfig()
const getToken = await getAccessToken(user) const getToken = await getAccessToken(user)
const token = getToken.accessToken const token = getToken?.accessToken
const res = await fetch(config.commerceUrl + endpoint, { const res = await fetch(config.commerceUrl + endpoint, {
...fetchOptions, ...fetchOptions,
method: 'POST', method: 'POST',
@ -22,7 +23,7 @@ const fetchApi = <T>(getConfig: () => CommercelayerConfig) =>
Authorization: `Bearer ${token}`, Authorization: `Bearer ${token}`,
}, },
body: JSON.stringify({ body: JSON.stringify({
query query,
}), }),
}) })

View File

@ -1,36 +1,40 @@
import Cookies from "js-cookie"; import Cookies from 'js-cookie'
import { getSalesChannelToken } from "@commercelayer/js-auth"; import { getSalesChannelToken } from '@commercelayer/js-auth'
type GetTokenObj = { type GetTokenObj = {
clientId?: string; clientId?: string
endpoint?: string; endpoint?: string
scope?: string; scope?: string
user?: any; user?: any
}; }
export async function getToken({ export async function getToken({
clientId, clientId,
endpoint, endpoint,
scope = "market:all", scope = 'market:all',
user user,
}: GetTokenObj) { }: GetTokenObj) {
let token = "" as any; const getCookieToken = Cookies.get('clAccessToken')
const getCookieToken = Cookies.get("clAccessToken");
if (!getCookieToken && clientId && endpoint) { if (!getCookieToken && clientId && endpoint) {
const auth = await getSalesChannelToken( const auth = await getSalesChannelToken(
{ {
clientId, clientId,
endpoint, endpoint,
scope scope,
}, },
user user
); )
token = auth?.accessToken; Cookies.set('clAccessToken', auth?.accessToken as string, {
Cookies.set("clAccessToken", auth?.accessToken as string, {
// @ts-ignore // @ts-ignore
expires: auth?.expires expires: auth?.expires,
}); })
return auth ? { accessToken: auth.accessToken, customerId: auth.data.owner_id, ...auth.data } : null return auth
? {
accessToken: auth.accessToken,
customerId: auth.data.owner_id,
...auth.data,
}
: null
} }
return getCookieToken || ""; return { accessToken: getCookieToken }
} }