@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
132 lines (125 loc) • 6.97 kB
JavaScript
;
function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); }
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 OrderManager = /*#__PURE__*/function (_EventEmitter) {
function OrderManager() {
var _this;
_classCallCheck(this, OrderManager);
_this = _callSuper(this, OrderManager);
_this.orders = [];
return _this;
}
/**
* Creates a new order.
* @param {object} order - The order details.
* @returns {object} The created order.
*/
_inherits(OrderManager, _EventEmitter);
return _createClass(OrderManager, [{
key: "createOrder",
value: function createOrder(order) {
if (!order || _typeof(order) !== "object") {
throw new Error("Invalid order data.");
}
var newOrder = _objectSpread(_objectSpread({
id: order.id !== undefined && order.id !== null ? order.id : this.orders.length + 1
}, order), {}, {
status: "pending"
});
this.orders.push(newOrder);
this.emit("order-created", newOrder);
return newOrder;
}
/**
* Retrieves an order by its ID.
* @param {number} id - The order ID.
* @returns {object|null} The order, or null if not found.
*/
}, {
key: "getOrderByID",
value: function getOrderByID(id) {
return this.orders.find(function (order) {
return order.id === id;
}) || null;
}
/**
* Updates the status of an order.
* @param {number} id - The order ID.
* @param {string} status - The new status.
* @returns {object|null} The updated order, or null if not found.
*/
}, {
key: "updateOrderStatus",
value: function updateOrderStatus(id, status) {
var order = this.getOrderByID(id);
if (!order) {
return null;
}
order.status = status;
this.emit("order-status-updated", order);
return order;
}
/**
* Updates the data of an order.
* @param {number} id - The order ID.
* @param {object} orderData - The updated order data.
* @returns {object|null} The updated order, or null if not found.
*/
}, {
key: "updateOrder",
value: function updateOrder(id, orderData) {
var order = this.getOrderByID(id);
if (!order) {
return null;
}
_objectSpread(_objectSpread({}, order), orderData), _readOnlyError("order");
this.emit("order-updated", order);
return order;
}
/**
* Deletes an order by ID.
* @param {number} id - The order ID.
* @returns {boolean} True if the order was deleted, false otherwise.
*/
}, {
key: "deleteOrder",
value: function deleteOrder(id) {
var index = this.orders.findIndex(function (order) {
return order.id === id;
});
if (index === -1) {
return false;
}
var deletedOrder = this.orders[index];
this.orders.splice(index, 1);
this.emit("order-deleted", deletedOrder);
return true;
}
/**
* Lists all orders.
* @returns {Array} The list of orders.
*/
}, {
key: "getAllOrders",
value: function getAllOrders() {
return this.orders;
}
}]);
}(EventEmitter);
module.exports = new OrderManager();