UNPKG

hal-json-vuex

Version:
2 lines 16.8 kB
(()=>{"use strict";var e={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{ServerException:()=>X,default:()=>Y});const n=require("@babel/runtime/helpers/slicedToArray");var r=e.n(n);const o=require("@babel/runtime/helpers/typeof");var i=e.n(o);const a=require("@babel/runtime/helpers/asyncToGenerator");var u=e.n(a);const c=require("@babel/runtime/helpers/defineProperty");var s=e.n(c);const l=require("@babel/runtime/helpers/classCallCheck");var f=e.n(l);const p=require("@babel/runtime/helpers/inherits");var d=e.n(p);const m=require("@babel/runtime/helpers/possibleConstructorReturn");var h=e.n(m);const y=require("@babel/runtime/helpers/getPrototypeOf");var v=e.n(y);const g=require("@babel/runtime/helpers/wrapNativeSuper");var b=e.n(g);const w=require("@babel/runtime/regenerator");var O=e.n(w);const _=require("hal-json-normalizer");var j=e.n(_);const R=require("url-template");var P=e.n(R);const k=require("@babel/runtime/helpers/toConsumableArray");var S=e.n(k);function E(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return A(void 0===e?"":"string"==typeof e?e:((e||{})._meta||{}).self,t)}function A(e,t){return"string"!=typeof e?null:function(e){var t=e.indexOf("?");if(-1===t)return e;var n=e.substring(0,t),r=new URLSearchParams(e.substring(t+1)),o=new URLSearchParams;return S()(new Set(r.keys())).sort().forEach((function(e){r.getAll(e).forEach((function(t){o.append(e,t)}))})),S()(o.keys()).length?"".concat(n,"?").concat(o.toString()):n}(e).replace(new RegExp("^".concat(t)),"")}const U=require("@babel/runtime/helpers/createClass");var N=e.n(U);const q=require("@babel/runtime/helpers/assertThisInitialized");var L=e.n(q);function x(e,t){return e.length===t.length&&e.every((function(e){return t.includes(e)}))}function I(e){return!!e&&x(Object.keys(e),["href"])}function $(e){return!(!e||!Array.isArray(e.items))}const C=function(){function e(t){if(f()(this,e),Symbol.for("isPending")in t)return t;var n=!0,r=!1,o=!1,i=t.then((function(e){return o=!0,n=!1,e}),(function(e){throw r=!0,n=!1,e}));return Object.defineProperty(i,Symbol.for("isFulfilled"),{get:function(){return o}}),Object.defineProperty(i,Symbol.for("isPending"),{get:function(){return n}}),Object.defineProperty(i,Symbol.for("isRejected"),{get:function(){return r}}),Object.defineProperty(i,Symbol.for("done"),{get:function(){return!n}}),i}return N()(e,null,[{key:"resolve",value:function(e){var t=Promise.resolve(e);return t[Symbol.for("isFulfilled")]=!0,t[Symbol.for("isPending")]=!1,t[Symbol.for("isRejected")]=!1,t[Symbol.for("done")]=!0,t}}]),e}(),D=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;f()(this,e);var r={get:function(r,o,i){if(o===Symbol.toPrimitive)return function(){return""};if(!["then","toJSON",Symbol.toStringTag,"state","getters","$options","_isVue","__file","render","constructor"].includes(o)){if("loading"===o)return!0;if("load"===o)return t;if("self"===o)return n;if("_meta"===o)return new e(t,n);if(["$reload"].includes(o))return function(){return t};if(["$loadItems","$post","$patch","$del"].includes(o))return function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return t.then((function(e){return e[o].apply(e,n)}))};var a=t.then((function(e){return e[o]}));if(["items","allItems"].includes(o))return new T(a);var u=function(t){return new e(a.then((function(e){return e(t)._meta.load})))};return u.loading=!0,u.toString=function(){return""},u}}};return new Proxy(this,r)},T=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];f()(this,e);var r=["find"],o=["map","flatMap","filter"];return this._meta={load:t},r.forEach((function(e){n[e]=function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];var i=t.then((function(t){return t[e].apply(t,r)}));return new D(i)}})),o.forEach((function(r){n[r]=function(){for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];var a=t.then((function(e){return e[r].apply(e,o)}));return new e(a)}})),n},F=function(){function e(t,n){var r=t.get,o=t.reload,i=t.isUnknown;f()(this,e),this.apiActions={get:r,reload:o,isUnknown:i},this.config=n}return N()(e,[{key:"addItemsGetter",value:function(e,t,n){var r=this;Object.defineProperty(this,"items",{get:function(){return r.filterDeleting(r.mapArrayOfEntityReferences(e,t,n))}}),Object.defineProperty(this,"allItems",{get:function(){return r.mapArrayOfEntityReferences(e,t,n)}})}},{key:"filterDeleting",value:function(e){return e.filter((function(e){return!e._meta.deleting}))}},{key:"mapArrayOfEntityReferences",value:function(e,t,n){var r=this;if(!this.containsUnknownEntityReference(e))return this.replaceEntityReferences(e);if(this.config.avoidNPlusOneRequests){var o=this.apiActions.reload({_meta:{reload:{uri:t,property:n}}},!0).then((function(){return r.replaceEntityReferences(e)}));return new T(o)}var i=this.replaceEntityReferences(e),a=Promise.all(e.map((function(e){return I(e)?r.apiActions.get(e.href)._meta.load:Promise.resolve(e)})));return new T(a,i)}},{key:"replaceEntityReferences",value:function(e){var t=this;return e.map((function(e){return I(e)?t.apiActions.get(e.href):e}))}},{key:"containsUnknownEntityReference",value:function(e){var t=this;return e.some((function(e){return I(e)&&t.apiActions.isUnknown(e.href)}))}}]),e}();const B=function(e){d()(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=v()(t);if(n){var o=v()(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return h()(this,e)});function o(e,t,n,i,a){var u,c=i.get,s=i.reload,l=i.isUnknown,p=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;return f()(this,o),(u=r.call(this,{get:c,reload:s,isUnknown:l},a))._meta={load:p?p.then((function(e){return new o(e[n],t,n,{get:c,reload:s,isUnknown:l},a)})):Promise.resolve(L()(u)),reload:{uri:t,property:n}},u.addItemsGetter(e,t,n),u}return N()(o,[{key:"$loadItems",value:function(){var e=this;return new Promise((function(t){var n=e.items;n instanceof T?n._meta.load.then((function(e){return t(e)})):t(n)}))}}]),o}(F);function G(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function M(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){s()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const z=function(e){d()(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=v()(t);if(n){var o=v()(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return h()(this,e)});function o(e,t,n,i){var a,u=t.get,c=t.reload,s=t.post,l=t.patch,p=t.del,d=t.isUnknown;f()(this,o),(a=r.call(this,{get:u,reload:c,isUnknown:d},i)).apiActions={get:u,reload:c,post:s,patch:l,del:p,isUnknown:d},a.config=i,Object.keys(e).forEach((function(t){var n,r=e[t];"allItems"===t&&$(e)||("items"===t&&$(e)?a.addItemsGetter(e[t],e._meta.self,t):Array.isArray(r)?a[t]=function(){return new B(r,e._meta.self,t,{get:u,reload:c,isUnknown:d},i,e._meta.load)}:I(r)?a[t]=function(){return a.apiActions.get(r.href)}:(n=r)&&x(Object.keys(n),["href","templated"])&&!0===n.templated?a[t]=function(e){return a.apiActions.get(P().parse(r.href).expand(e||{}))}:a[t]=r)}));var m=e._meta.load&&!e._meta.load[Symbol.for("done")]?e._meta.load.then((function(e){return n.wrap(e)})):C.resolve(L()(a));return a._meta=M(M({},e._meta),{},{load:m,self:a.config.apiRoot+e._meta.self}),a}return N()(o,[{key:"$reload",value:function(){return this.apiActions.reload(this._meta.self)}},{key:"$loadItems",value:function(){return this._meta.load}},{key:"$post",value:function(e){return this.apiActions.post(this._meta.self,e)}},{key:"$patch",value:function(e){return this.apiActions.patch(this._meta.self,e)}},{key:"$del",value:function(){return this.apiActions.del(this._meta.self)}}]),o}(F),K=function(){function e(t){var n=t.get,r=t.reload,o=t.post,i=t.patch,a=t.del,u=t.isUnknown,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};f()(this,e),this.apiActions={get:n,reload:r,post:o,patch:i,del:a,isUnknown:u},this.config=c}return N()(e,[{key:"wrap",value:function(e){var t=this,n=e._meta||{load:Promise.resolve()};if(n.loading){var r=n.load.then((function(e){return new z(e,t.apiActions,t,t.config)}));return new D(r,this.config.apiRoot+n.self)}return new z(e,this.apiActions,this,this.config)}}]),e}(),V=require("vue");var H=e.n(V);const J={mutations:{addEmpty:function(e,t){H().set(e,t,{_meta:{self:t,loading:!0}})},add:function(e,t){Object.keys(t).forEach((function(n){H().set(e,n,t[n])}))},reloading:function(e,t){e[t]&&H().set(e[t]._meta,"reloading",!0)},reloadingFailed:function(e,t){e[t]&&H().set(e[t]._meta,"reloading",!1)},purge:function(e,t){H().delete(e,t)},purgeAll:function(e,t){Object.keys(e).forEach((function(t){H().delete(e,t)}))},deleting:function(e,t){e[t]&&H().set(e[t]._meta,"deleting",!0)},deletingFailed:function(e,t){e[t]&&H().set(e[t]._meta,"deleting",!1)}}};function Q(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function W(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Q(Object(n),!0).forEach((function(t){s()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Q(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var X=function(e){d()(o,e);var t,n,r=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=v()(t);if(n){var o=v()(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return h()(this,e)});function o(e){var t;f()(this,o);for(var n=arguments.length,i=new Array(n>1?n-1:0),a=1;a<n;a++)i[a-1]=arguments[a];return(t=r.call.apply(r,[this].concat(i))).message||(t.message="Server error "+e.status+" ("+e.statusText+")"),t.name="ServerException",t.response=e,t}return o}(b()(Error));const Y=function(e,t,n){var o=W(W(W({},{apiName:"api",avoidNPlusOneRequests:!0,forceRequestedSelfLink:!1,nuxtInject:null}),n),{},{apiRoot:t.defaults.baseURL});e.registerModule(o.apiName,W({state:{}},J));var a,c=new K({get:p,reload:f,post:l,patch:v,del:b,isUnknown:d},o);function l(e,n){var r=E(e,t.defaults.baseURL);return null===r?Promise.reject(new Error('Could not perform POST, "'.concat(e,'" is not an entity or URI'))):new C(t.post(t.defaults.baseURL+r,S(n)).then((function(e){var t=e.data;return R(t),p(t._links.self.href)}),(function(e){throw A(r,e)})))}function f(e){return p(e,!0)._meta.load}function p(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=n&&e._meta&&e._meta.reload&&e._meta.reload.uri,o=E(r?e._meta.reload.uri:e,t.defaults.baseURL);if(null===o){if(e instanceof D)return e;throw new Error('Could not perform GET, "'.concat(e,'" is not an entity or URI'))}var i=m(o,n);return r?c.wrap(i)[e._meta.reload.property]():c.wrap(i)}function d(t){return!(t in e.state[o.apiName])}function m(t,n){var r=!d(t),i=r&&(e.state[o.apiName][t]._meta||{}).loading,a=r&&(e.state[o.apiName][t]._meta||{}).reloading;if(i||n&&a)return e.state[o.apiName][t];r?n&&e.commit("reloading",t):e.commit("addEmpty",t);var u=Promise.resolve(e.state[o.apiName][t]);return r?n?u=h(t).catch((function(n){throw e.commit("reloadingFailed",t),n})):e.state[o.apiName][t]._meta.load&&(u=e.state[o.apiName][t]._meta.load):u=h(t),k(t,u),e.state[o.apiName][t]}function h(n){return new Promise((function(r,i){t.get(t.defaults.baseURL+n).then((function(t){var i=t.data;o.forceRequestedSelfLink&&(i._links.self.href=n),R(i),r(e.state[o.apiName][n])}),(function(e){i(A(n,e))}))}))}function y(){return(y=u()(O().mark((function n(r,i){var a,u,c,s=arguments;return O().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=s.length>2&&void 0!==s[2]?s[2]:{},n.t0=E,n.next=4,p(r)._meta.load;case 4:if(n.t1=n.sent,n.t2=t.defaults.baseURL,u=(0,n.t0)(n.t1,n.t2),(c=e.state[o.apiName][u][i])&&c.href){n.next=10;break}return n.abrupt("return",void 0);case 10:if(!c.templated){n.next=12;break}return n.abrupt("return",P().parse(c.href).expand(a));case 12:return n.abrupt("return",t.defaults.baseURL+c.href);case 13:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function v(n,r){var i=E(n,t.defaults.baseURL);return null===i?Promise.reject(new Error('Could not perform PATCH, "'.concat(n,'" is not an entity or URI'))):(!d(i)||e.commit("addEmpty",i),e.state[o.apiName][i]._meta.load=new C(t.patch(t.defaults.baseURL+i,r).then((function(e){var t=e.data;return o.forceRequestedSelfLink&&(t._links.self.href=i),R(t),p(i)}),(function(e){throw A(i,e)}))),e.state[o.apiName][i]._meta.load)}function g(n){var r=E(n,t.defaults.baseURL);if(null!==r)return e.commit("purge",r),r}function b(n){var r=E(n,t.defaults.baseURL);return null===r?Promise.reject(new Error('Could not perform DELETE, "'.concat(n,'" is not an entity or URI'))):(e.commit("deleting",r),new C(t.delete(t.defaults.baseURL+r).then((function(){return _(r)}),(function(t){throw e.commit("deletingFailed",r),A(r,t)}))))}function w(e,t){if(null===e)return!1;var n=Object.keys(e);return 1===n.length&&"href"===n[0]&&e.href===t}function _(t){return Promise.all(function(t){return Object.values(e.state[o.apiName]).filter((function(e){return Object.values(e).some((function(e){return w(e,t)||function(e,t){return Array.isArray(e)&&e.some((function(e){return w(e,t)}))}(e,t)}))}))}(t).filter((function(e){return!e._meta.deleting})).map((function(e){return f(e).catch((function(){}))}))).then((function(){return g(t)}))}function R(n){var r=j()(n,{camelizeKeys:!1,metaKey:"_meta",normalizeUri:function(e){return E(e,t.defaults.baseURL)},filterReferences:!0,embeddedStandaloneListKey:"items"});e.commit("add",r),Object.keys(r).forEach((function(e){k(e)}))}function k(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e.state[o.apiName][t]._meta.load=n?new C(n):C.resolve(e.state[o.apiName][t])}function S(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return Array.isArray(e)?e.map((function(e){return null!==e&&"object"===i()(e)?e._meta&&e._meta.self?t?s()({},t.replace(/ies/,"y")+"Id",e.id):{id:e.id}:S(e,t):e})):Object.fromEntries(Object.entries(e).map((function(e){var t=r()(e,2),n=t[0],o=t[1];return Object.prototype.toString.call(o).includes("Function")&&(o=o()),null!==o&&"object"===i()(o)?o._meta&&o._meta.self?[n+"Id",o.id]:[n,S(o,n)]:[n,o]})))}function A(t,n){if(n.response){var r=n.response;return 404===r.status?(e.commit("deleting",t),_(t).then((function(){})),new X(r,'Could not perform operation, "'.concat(t,'" has been deleted'))):403===r.status?new X(r,"No permission to perform operation"):"application/problem+json"===r.headers["content-type"]?new X(r,"Server-Error "+r.status+" ("+r.data.detail+")"):new X(r)}return new Error("Could not connect to server. Check your internet connection and try again.")}null!==o.nuxtInject&&(t=W({get:(a=t).$get,patch:a.$patch,post:a.$post,delete:a.$delete},a));var U={post:l,get:p,reload:f,del:b,patch:v,purge:g,purgeAll:function(){e.commit("purgeAll")},href:function(e,t){return y.apply(this,arguments)},isUnknown:d,StoreValue:z,LoadingStoreValue:D};return W(W({},U),{},{install:function(e){this.installed||(null===o.nuxtInject?Object.defineProperties(e.prototype,s()({},o.apiName,{get:function(){return U}})):o.nuxtInject(o.apiName,U))}})};module.exports=t})(); //# sourceMappingURL=bundle.js.map