UNPKG

@trap_stevo/merchtide

Version:

Empowering the future of digital commerce, this API delivers the ultimate solution for building and managing online superstores. Seamlessly integrating product management, payment processing, and order tracking, it offers unmatched flexibility and scalabi

113 lines (107 loc) 6.56 kB
"use strict"; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } var EventEmitter = require("events"); var ProductManager = /*#__PURE__*/function (_EventEmitter) { function ProductManager() { var _this; _classCallCheck(this, ProductManager); _this = _callSuper(this, ProductManager); _this.products = []; return _this; } /** * Adds a new product to the collection. * @param {object} product - The product details. * @returns {object} The added product. */ _inherits(ProductManager, _EventEmitter); return _createClass(ProductManager, [{ key: "addProduct", value: function addProduct(product) { if (!product || _typeof(product) !== "object") { throw new Error("Invalid product data."); } var newProduct = _objectSpread({ id: product.id !== undefined && product.id !== null ? product.id : this.products.length + 1 }, product); this.products.push(newProduct); this.emit("product-added", newProduct); return newProduct; } /** * Retrieves a product by its ID. * @param {number} id - The product ID. * @returns {object|null} The product, or null if not found. */ }, { key: "getProductByID", value: function getProductByID(id) { return this.products.find(function (product) { return product.id === id; }) || null; } /** * Lists all products. * @returns {Array} The list of products. */ }, { key: "getAllProducts", value: function getAllProducts() { return this.products; } /** * Updates a product by ID. * @param {number} id - The product ID. * @param {object} updates - The updates to apply. * @returns {object|null} The updated product, or null if not found. */ }, { key: "updateProduct", value: function updateProduct(id, updates) { var index = this.products.findIndex(function (product) { return product.id === id; }); if (index === -1) { return null; } this.products[index] = _objectSpread(_objectSpread({}, this.products[index]), updates); this.emit("product-updated", this.products[index]); return this.products[index]; } /** * Deletes a product by ID. * @param {number} id - The product ID. * @returns {boolean} True if the product was deleted, false otherwise. */ }, { key: "deleteProduct", value: function deleteProduct(id) { var index = this.products.findIndex(function (product) { return product.id === id; }); if (index === -1) { return false; } var deletedProduct = this.products[index]; this.products.splice(index, 1); this.emit("product-deleted", deletedProduct); return true; } }]); }(EventEmitter); module.exports = new ProductManager();