@reecem/custom-type-api
Version:
API interface for the Prismic.io Custom Type API (beta)
3 lines (2 loc) • 5.04 kB
JavaScript
var t=require("node-fetch");function e(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=e(t);function n(t,e){try{var r=t()}catch(t){return e(t)}return r&&r.then?r.then(void 0,e):r}var o=function(){function t(t,e){this.repository=t,this.http=e.withHeaders({repository:this.repository})}var e=t.prototype;return e.getOne=function(t){try{var e=this;return Promise.resolve(n(function(){return Promise.resolve(e.http.get(function(t){return"https://customtypes.prismic.io/slices/"+t}(t))).then(function(t){return Promise.resolve(t).then(function(t){function e(e){return Promise.resolve(t.json())}var r=function(){if(403===t.status)return Promise.resolve(t.json()).then(function(t){throw(null==t?void 0:t.message).search("not a valid key=value pair (missing equal-sign) in Authorization header:")?new Error("Incorrect Url or Token issue"):new Error("Unauthorized")})}();return r&&r.then?r.then(e):e()})})},function(){throw new Error("[ERROR] Unable to fetch the slice: "+t)}))}catch(t){return Promise.reject(t)}},e.getAll=function(){try{var t=this;return Promise.resolve(n(function(){return Promise.resolve(t.http.get("https://customtypes.prismic.io/slices")).then(function(t){return Promise.resolve(t.json())})},function(t){throw new Error(t)}))}catch(t){return Promise.reject(t)}},e.insert=function(t){try{return Promise.resolve(this.http.post("https://customtypes.prismic.io/slices/insert",t))}catch(t){return Promise.reject(t)}},e.update=function(t){try{return Promise.resolve(this.http.post("https://customtypes.prismic.io/slices/update",t))}catch(t){return Promise.reject(t)}},t}();function i(t,e){try{var r=t()}catch(t){return e(t)}return r&&r.then?r.then(void 0,e):r}var s=function(){function t(t,e){this.repository=t,this.http=e.withHeaders({repository:this.repository})}var e=t.prototype;return e.getOne=function(t){try{var e=this;return Promise.resolve(i(function(){return Promise.resolve(e.http.get((r=t,"https://customtypes.prismic.io/customtypes/"+r))).then(function(t){return Promise.resolve(t.json())});var r},function(t){throw new Error(t)}))}catch(t){return Promise.reject(t)}},e.getAll=function(){try{var t=this;return Promise.resolve(i(function(){return Promise.resolve(t.http.get("https://customtypes.prismic.io/customtypes")).then(function(t){return Promise.resolve(t.json())})},function(t){throw new Error(t)}))}catch(t){return Promise.reject(t)}},e.insert=function(t){try{var e=this;if("object"!=typeof t.json)throw new Error("JSON field of custom type isn't and object. Please check if it is correct");return Promise.resolve(i(function(){return Promise.resolve(e.http.post("https://customtypes.prismic.io/customtypes/insert",t)).then(function(t){return Promise.resolve(t.json())})},function(t){throw new Error(t)}))}catch(t){return Promise.reject(t)}},e.update=function(t){try{return Promise.resolve(this.http.post("https://customtypes.prismic.io/customtypes/update",t))}catch(t){return Promise.reject(t)}},t}(),u=function(){function e(e){this.headers=new t.Headers,this.headers.append("Authorization","Bearer "+e)}var n=e.prototype;return n.request=function(t,e){return{method:t,headers:this.headers,body:e,redirect:"follow"}},n.post=function(t,e){try{return Promise.resolve(r.default(t,this.request("POST",JSON.stringify(e))))}catch(t){return Promise.reject(t)}},n.get=function(t){try{return Promise.resolve(r.default(t,this.request("GET")))}catch(t){return Promise.reject(t)}},n.withHeaders=function(t){for(var e in t){var r,n,o;if(null!=(r=this.headers)&&r.has(e)&&(null==(o=this.headers)?void 0:o.get(e))===t[e])return this;null==(n=this.headers)||n.append(e,t[e])}return this},e}();module.exports=function(){function t(t,e){this.repository=t,this.token=e}var e=t.prototype;return e.login=function(t,e,r){try{var n=this,o=function(){n.init()},i=function(){if(!n.token)return Promise.resolve(n.generateToken(t,e)).then(function(t){n.token=t,r&&r(n.token)})}();return Promise.resolve(i&&i.then?i.then(o):o())}catch(t){return Promise.reject(t)}},e.init=function(){var t=new u(this.token);this._slices=new o(this.repository,t),this._types=new s(this.repository,t)},e.generateToken=function(t,e){try{var n;return null==(n=console)||n.warn("[WARN] using email login method, an API key is safer."),Promise.resolve(function(n,o){try{var i=Promise.resolve(function(t){try{return Promise.resolve(function(e,n){try{var o=Promise.resolve(r.default("https://auth.prismic.io/login",{method:"POST",body:JSON.stringify(t),redirect:"follow"}))}catch(t){return n()}return o&&o.then?o.then(void 0,n):o}(0,function(){throw new Error("[Custom Type API] Unable to perform log in action")}))}catch(t){return Promise.reject(t)}}({email:t,password:e})).then(function(t){return Promise.resolve(t.text())})}catch(t){return o()}return i&&i.then?i.then(void 0,o):i}(0,function(){throw new Error("[Custom Type API] Unable to log in with using password & email details")}))}catch(t){return Promise.reject(t)}},e.slices=function(){return this._slices},e.types=function(){return this._types},t}();
//# sourceMappingURL=index.cjs.map