4
0
forked from crowetic/commerce

Updated config

This commit is contained in:
Luis Alvarez 2020-10-01 15:16:23 -05:00
parent 35ac41e04d
commit 5bd31d254d
2 changed files with 41 additions and 29 deletions

View File

@ -26,8 +26,11 @@ export type ProductImageVariables = Pick<
| 'imgXLHeight' | 'imgXLHeight'
>; >;
export interface BigcommerceConfig extends CommerceAPIConfig { export interface BigcommerceConfigOptions extends CommerceAPIConfig {
images?: Images; images?: Images;
}
export interface BigcommerceConfig extends BigcommerceConfigOptions {
readonly imageVariables?: ProductImageVariables; readonly imageVariables?: ProductImageVariables;
} }
@ -46,10 +49,12 @@ if (!API_TOKEN) {
); );
} }
const config: BigcommerceConfig = { export class Config {
commerceUrl: API_URL, private config: BigcommerceConfig;
apiToken: API_TOKEN,
fetch: fetchAPI, constructor(config: BigcommerceConfigOptions) {
this.config = {
...config,
get imageVariables() { get imageVariables() {
const { images } = this; const { images } = this;
return images return images
@ -66,11 +71,27 @@ const config: BigcommerceConfig = {
: undefined; : undefined;
}, },
}; };
}
getConfig() {
return this.config;
}
setConfig(newConfig: Partial<BigcommerceConfig>) {
Object.assign(this.config, newConfig);
}
}
const config = new Config({
commerceUrl: API_URL,
apiToken: API_TOKEN,
fetch: fetchAPI,
});
export function getConfig() { export function getConfig() {
return config; return config.getConfig();
} }
export function setConfig(newConfig: Partial<BigcommerceConfig>) { export function setConfig(newConfig: Partial<BigcommerceConfig>) {
Object.assign(config, newConfig); return config.setConfig(newConfig);
} }

View File

@ -1,9 +0,0 @@
import BigcommerceAPI from "./bigcommerce/api";
const API_URL = process.env.NEXT_EXAMPLE_BIGCOMMERCE_STOREFRONT_API_URL!;
const API_TOKEN = process.env.NEXT_EXAMPLE_BIGCOMMERCE_STOREFRONT_API_TOKEN!;
export const commerce = new BigcommerceAPI({
commerceUrl: API_URL,
apiToken: API_TOKEN,
});