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,31 +49,49 @@ if (!API_TOKEN) {
); );
} }
const config: BigcommerceConfig = { export class Config {
private config: BigcommerceConfig;
constructor(config: BigcommerceConfigOptions) {
this.config = {
...config,
get imageVariables() {
const { images } = this;
return images
? {
imgSmallWidth: images.small?.width,
imgSmallHeight: images.small?.height,
imgMediumWidth: images.medium?.height,
imgMediumHeight: images.medium?.height,
imgLargeWidth: images.large?.height,
imgLargeHeight: images.large?.height,
imgXLWidth: images.xl?.height,
imgXLHeight: images.xl?.height,
}
: undefined;
},
};
}
getConfig() {
return this.config;
}
setConfig(newConfig: Partial<BigcommerceConfig>) {
Object.assign(this.config, newConfig);
}
}
const config = new Config({
commerceUrl: API_URL, commerceUrl: API_URL,
apiToken: API_TOKEN, apiToken: API_TOKEN,
fetch: fetchAPI, fetch: fetchAPI,
get imageVariables() { });
const { images } = this;
return images
? {
imgSmallWidth: images.small?.width,
imgSmallHeight: images.small?.height,
imgMediumWidth: images.medium?.height,
imgMediumHeight: images.medium?.height,
imgLargeWidth: images.large?.height,
imgLargeHeight: images.large?.height,
imgXLWidth: images.xl?.height,
imgXLHeight: images.xl?.height,
}
: undefined;
},
};
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,
});