UNPKG

@hipay/hipay-enterprise-sdk-nodejs

Version:

The HiPay Enterprise SDK for NodeJS is a library for developers who want to integrate HiPay Enterprise payment methods to any NodeJS platform.

264 lines (249 loc) 5.96 kB
'use strict'; class ProductCategory { static DEFAULT_LANG_ISO_CODE = 'EN'; static PREDEFINED_CATEGORIES = [ { code: 1, name: 'Home & Gardening', locals: { EN: 'Home & Gardening' } }, { code: 2, name: 'Clothing & Accessories', locals: { EN: 'Clothing & Accessories' } }, { code: 3, name: 'Home appliances', locals: { EN: 'Home appliances' } }, { code: 4, name: 'Sports & Recreations', locals: { EN: 'Sports & Recreations' } }, { code: 5, name: 'Babies & Children', locals: { EN: 'Babies & Children' } }, { code: 6, name: 'Hi-Fi, Photo & Video equipment', locals: { EN: 'Hi-Fi, Photo & Video equipment' } }, { code: 7, name: 'IT equipment', locals: { EN: 'IT equipment' } }, { code: 8, name: 'Phone & Internet services', locals: { EN: 'Phone & Internet services' } }, { code: 9, name: 'Physical goods : Books, Media, Music & Movies', locals: { EN: 'Physical goods : Books, Media, Music & Movies' } }, { code: 10, name: 'Digital goods : Books, Media, Music & Movies', locals: { EN: 'Digital goods : Books, Media, Music & Movies' } }, { code: 11, name: 'Consoles & Video games', locals: { EN: 'Consoles & Video games' } }, { code: 12, name: 'Gifts & Flowers', locals: { EN: 'Gifts & Flowers' } }, { code: 13, name: 'Health & Beauty', locals: { EN: 'Health & Beauty' } }, { code: 14, name: 'Car & Motorcycle', locals: { EN: 'Car & Motorcycle' } }, { code: 15, name: 'Traveling', locals: { EN: 'Traveling' } }, { code: 16, name: 'Food & Gastronomy', locals: { EN: 'Food & Gastronomy' } }, { code: 17, name: 'Auctions & Group buying', locals: { EN: 'Auctions & Group buying' } }, { code: 18, name: 'Services to professionals', locals: { EN: 'Services to professionals' } }, { code: 19, name: 'Services to individuals', locals: { EN: 'Services to individuals' } }, { code: 20, name: 'Culture & Entertainment', locals: { EN: 'Culture & Entertainment' } }, { code: 21, name: 'Games (digital goods)', locals: { EN: 'Games (digital goods)' } }, { code: 22, name: 'Games (physical goods)', locals: { EN: 'Games (physical goods)' } }, { code: 23, name: 'Ticketing', locals: { EN: 'Ticketing' } }, { code: 24, name: 'Opticians, Opticians Goods and Eyeglasses', locals: { EN: 'Opticians, Opticians Goods and Eyeglasses' } } ]; /** * Category technical code * @type {Number} * @private */ _code; /** * Human readable name * @type {String} * @private */ _name; /** * Translations * @template {String} ISO the ISO code of a language * @type {Object<ISO, String>} * @private */ _locals; /** * Creates a new Category instance with the provided data * @param {Object} [categoryData = {}] */ constructor(categoryData = {}) { for (let prop in categoryData) { if (Object.hasOwn(this, `_${prop}`)) { this[`_${prop}`] = categoryData[prop]; } } } /** * Category technical code * @returns {Number} */ get code() { return this._code; } /** * Human readable name * @returns {String} */ get name() { return this._name; } /** * Translations * @template {String} ISO the ISO code of a language * @returns {Object<ISO, String>} */ get locals() { return this._locals; } /** * Sets translations * @param {{isoCode: String}}value */ set locals(value) { this._locals = value; } /** * Get all predefined product categories * @returns {ProductCategory[]} */ static getProductCategories() { return this.PREDEFINED_CATEGORIES.map((elt) => new ProductCategory(elt)); } /** * Gets localized name * @param {String} langIsoCode the two letter iso code * @returns {String} */ getLocal(langIsoCode = ProductCategory.DEFAULT_LANG_ISO_CODE) { return this.locals[langIsoCode] ?? this.locals[ProductCategory.DEFAULT_LANG_ISO_CODE]; } } module.exports = ProductCategory;