smolcart.js
Version:
a teeny tiny wrapper for Shopify's Ajax API
1 lines • 3.39 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.smolcart=t():e.smolcart=t()}(self,(function(){return(()=>{"use strict";var e={4:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),r(380),t.default=class{constructor(e,t){this.actionType=t,this.data=e}execute(){switch(this.actionType){case"ADD":return this.executeAdd();case"MODIFY":return this.executeModify();case"GET_CART":return this.executeGetCart();case"CLEAR_CART":return this.executeClearCart()}}createAbsoluteURL(e){return`${window.location.protocol}//${window.location.host}${e}`}executeAdd(){return new Promise((async(e,t)=>{try{return e(await fetch(this.createAbsoluteURL("/cart/add.js"),{method:"POST",body:JSON.stringify({items:this.data.map((e=>({id:e.id,quantity:e.quantity||1,properties:e.properties?Object.assign({},e.properties):void 0})))}),headers:{"Content-Type":"application/json"}}))}catch(e){return t(e)}}))}executeModify(){return new Promise((async(e,t)=>{const r=this.data[0];try{return e(await fetch(this.createAbsoluteURL("/cart/change.js"),{method:"POST",body:JSON.stringify({id:r.id,quantity:r.hasOwnProperty("quantity")?r.quantity:0,properties:(null==r?void 0:r.properties)?Object.assign({},null==r?void 0:r.properties):void 0}),headers:{"Content-Type":"application/json"}}))}catch(e){return t(e)}}))}executeGetCart(){return new Promise((async(e,t)=>{try{const t=await fetch(this.createAbsoluteURL("/cart.js"));return e(await t.json())}catch(e){return t(e)}}))}executeClearCart(){return new Promise((async(e,t)=>{try{const t=await fetch(this.createAbsoluteURL("/cart/clear.js"),{method:"POST"});return e(await t.json())}catch(e){return t(e)}}))}}},665:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getCart=t.clearCart=t.modifyItem=t.addItems=t.loadPolyfills=void 0;const i=r(380),n=o(r(4));t.loadPolyfills=()=>{document.write('<script src="https://polyfill.io/v3/polyfill.min.js?callback=smolPolyLoaded"><\/script>')},t.addItems=e=>new n.default(e,i.ActionType.Add).execute(),t.modifyItem=e=>new n.default([e],i.ActionType.Modify).execute(),t.clearCart=()=>new n.default(null,i.ActionType.ClearCart).execute(),t.getCart=()=>new n.default(null,i.ActionType.GetCart).execute()},341:function(e,t,r){var o=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&o(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.init=void 0;const a=n(r(665));t.init=()=>a},380:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ActionType=void 0,(r=t.ActionType||(t.ActionType={})).Add="ADD",r.Modify="MODIFY",r.GetCart="GET_CART",r.ClearCart="CLEAR_CART"}},t={};return function r(o){if(t[o])return t[o].exports;var i=t[o]={exports:{}};return e[o].call(i.exports,i,i.exports,r),i.exports}(341)})()}));