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
lib

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

@ -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,
});