openfoodfac-ts
Open Food Facts Api written in TypeScript 🥫🍕🍼
Features 🚀
- Complete TypeScript support with type-safe responses 💪
- Clean API ✨
- Mock testing ready ✔
Getting started 🐾
Installation 💿
npm i openfoodfac-ts
Usage 🛠️
import { OpenFoodFactsApi } from 'openfoodfac-ts';
const openFoodFactsApi = new OpenFoodFactsApi();
const product = await openFoodFactsApi.findProductByBarcode('58918274712');
const countries = await openFoodFactsApi.findCountries();
Usage with config 🛠️
import { OpenFoodFactsApi } from 'openfoodfac-ts';
const openFoodFactsApi = new OpenFoodFactsApi({
country: 'pl'
userAgent: 'Mozilla/5.0 ...'
abortController: new AbortController()
});
const products = await openFoodFactsApi.findProductsByCategory('vegetables');
Setting abort controller dynamically
const abortController = new AbortController();
const tomatoeProducts = await openFoodFactsApi
.setAbortController(abortController)
.findProductsBySearchTerm('Tomatoes');
API 🗺
class OpenFoodFactsApi {
findProductByBarcode(barcode: string): Promise<ApiTypes.Product | null>;
findProductsBySearchTerm(searchTerm: string, page?: number): Promise<ApiTypes.ProductsResponse>;
findProductsByBrand(brandName: string, page?: number): Promise<ApiTypes.ProductsResponse>;
findProductsByCategory(category: string, page?: number): Promise<ApiTypes.ProductsResponse>;
findCategories(): Promise<ApiTypes.TagsResponse>;
findCountries(): Promise<ApiTypes.TagsResponse>;
findIngredients(): Promise<ApiTypes.TagsResponse>;
findPackagings(): Promise<ApiTypes.TagsResponse>;
findPackagingCodes(): Promise<ApiTypes.TagsResponse>;
findPurchasePlaces(): Promise<ApiTypes.TagsResponse>;
findStates(): Promise<ApiTypes.TagsResponse>;
findTraces(): Promise<ApiTypes.TagsResponse>;
findEntryDates(): Promise<ApiTypes.TagsResponse>;
findAllergens(): Promise<ApiTypes.TagsResponse>;
findAdditives(): Promise<ApiTypes.TagsResponse>;
findLanguages(): Promise<ApiTypes.TagsResponse>;
findBrands(): Promise<ApiTypes.TagsResponse>;
setController(abortController?: AbortController): this;
setUserAgent(userAgent?: string): this;
}
Testing 🧰
Usage with Jest
There is a mock version available that uses mocked json response instead of making real API calls.
To make jest use mocked version, paste below code in your jest.setup.*
file.
jest.mock('openfoodfac-ts/OpenFoodFactsApi');
License ⚖️
MIT