UNPKG

@plattar/plattar-api

Version:

Module for interfacing with the Plattar API (https://www.plattar.com)

1,230 lines (1,202 loc) 114 kB
"use strict"; function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } 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); } 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 _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 (f) { if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined") { module.exports = f(); } else if (typeof define === "function" && define.amd) { define([], f); } else { var g; if (typeof window !== "undefined") { g = window; } else if (typeof global !== "undefined") { g = global; } else if (typeof self !== "undefined") { g = self; } else { g = this; } g.Plattar = f(); } })(function () { var define, module, exports; return function () { function r(e, n, t) { function o(i, f) { if (!n[i]) { if (!e[i]) { var c = "function" == typeof require && require; if (!f && c) return c(i, !0); if (u) return u(i, !0); var a = new Error("Cannot find module '" + i + "'"); throw a.code = "MODULE_NOT_FOUND", a; } var p = n[i] = { exports: {} }; e[i][0].call(p.exports, function (r) { var n = e[i][1][r]; return o(n || r); }, p, p.exports, r, e, n, t); } return n[i].exports; } for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) o(t[i]); return o; } return r; }()({ 1: [function (require, module, exports) { "use strict"; var Server = require("./server/plattar-server.js"); var Util = require("./util/plattar-util.js"); var Project = require("./types/application.js"); // import Scene and its types var Scene = require("./types/scene/scene.js"); var SceneAnnotation = require("./types/scene/scene-annotation.js"); var SceneAudio = require("./types/scene/scene-audio.js"); var SceneButton = require("./types/scene/scene-button.js"); var SceneCamera = require("./types/scene/scene-camera.js"); var SceneCarousel = require("./types/scene/scene-carousel.js"); var SceneImage = require("./types/scene/scene-image.js"); var SceneModel = require("./types/scene/scene-model.js"); var ScenePanorama = require("./types/scene/scene-panorama.js"); var ScenePoller = require("./types/scene/scene-poller.js"); var SceneProduct = require("./types/scene/scene-product.js"); var SceneShadow = require("./types/scene/scene-shadow.js"); var SceneVideo = require("./types/scene/scene-video.js"); var SceneVolumetric = require("./types/scene/scene-volumetric.js"); var SceneYoutube = require("./types/scene/scene-youtube.js"); var SceneScript = require("./types/scene/scene-script.js"); var SceneGallery = require("./types/scene/scene-gallery.js"); var SceneGalleryImage = require("./types/scene/scene-gallery-image.js"); // import Page and its types var Page = require("./types/page/page.js"); var CardButton = require("./types/page/card-button.js"); var CardHTML = require("./types/page/card-html.js"); var CardIFrame = require("./types/page/card-iframe.js"); var CardImage = require("./types/page/card-image.js"); var CardMap = require("./types/page/card-map.js"); var CardParagraph = require("./types/page/card-paragraph.js"); var CardRow = require("./types/page/card-row.js"); var CardSlider = require("./types/page/card-slider.js"); var CardTitle = require("./types/page/card-title.js"); var CardVideo = require("./types/page/card-video.js"); var CardYoutube = require("./types/page/card-youtube.js"); // import Product and its types var Product = require("./types/product/product.js"); var ProductVariation = require("./types/product/product-variation.js"); var ProductAnnotation = require("./types/product/product-annotation.js"); // import File and its types var FileAudio = require("./types/file/file-audio.js"); var FileVideo = require("./types/file/file-video.js"); var FileModel = require("./types/file/file-model.js"); var FileImage = require("./types/file/file-image.js"); var FileScript = require("./types/file/file-script.js"); // import misc var ScriptEvent = require("./types/misc/script-event.js"); var Tag = require("./types/misc/tag.js"); var ApplicationBuild = require("./types/misc/application-build.js"); var AsyncJob = require("./types/misc/async-job.js"); var AssetLibrary = require("./types/misc/asset-library.js"); // import trigger var TriggerImage = require("./types/trigger/trigger-image.js"); // import content-pipeline var Brief = require("./types/content-pipeline/brief.js"); var CommentBrief = require("./types/content-pipeline/comment-brief.js"); var CommentQuote = require("./types/content-pipeline/comment-quote.js"); var CommentSolution = require("./types/content-pipeline/comment-solution.js"); var PipelineUser = require("./types/content-pipeline/pipeline-user.js"); var Quote = require("./types/content-pipeline/quote.js"); var Rating = require("./types/content-pipeline/rating.js"); var Solution = require("./types/content-pipeline/solution.js"); var Folder = require("./types/content-pipeline/folder.js"); // base types var SceneObject = require("./types/scene/scene-base.js"); var CardObject = require("./types/page/card-base.js"); var ProductObject = require("./types/product/product-base.js"); var FileObject = require("./types/file/file-base.js"); var Version = require("./version"); // create a default server instance to be used globally Server.create(); console.log("using @plattar/plattar-api v" + Version); module.exports = { // core types Server: Server, Util: Util, Project: Project, // scene and types Scene: Scene, SceneAnnotation: SceneAnnotation, SceneAudio: SceneAudio, SceneButton: SceneButton, SceneCamera: SceneCamera, SceneCarousel: SceneCarousel, SceneImage: SceneImage, SceneModel: SceneModel, ScenePanorama: ScenePanorama, ScenePoller: ScenePoller, SceneProduct: SceneProduct, SceneShadow: SceneShadow, SceneVideo: SceneVideo, SceneVolumetric: SceneVolumetric, SceneYoutube: SceneYoutube, SceneScript: SceneScript, SceneGallery: SceneGallery, SceneGalleryImage: SceneGalleryImage, // page and types Page: Page, CardButton: CardButton, CardHTML: CardHTML, CardIFrame: CardIFrame, CardImage: CardImage, CardMap: CardMap, CardParagraph: CardParagraph, CardRow: CardRow, CardSlider: CardSlider, CardTitle: CardTitle, CardVideo: CardVideo, CardYoutube: CardYoutube, // product and types Product: Product, ProductVariation: ProductVariation, ProductAnnotation: ProductAnnotation, // raw file/assets and types FileAudio: FileAudio, FileVideo: FileVideo, FileModel: FileModel, FileImage: FileImage, FileScript: FileScript, FileObject: FileObject, // misc ScriptEvent: ScriptEvent, Tag: Tag, ApplicationBuild: ApplicationBuild, AsyncJob: AsyncJob, AssetLibrary: AssetLibrary, // triggers TriggerImage: TriggerImage, // content-pipeline Brief: Brief, CommentBrief: CommentBrief, CommentQuote: CommentQuote, CommentSolution: CommentSolution, PipelineUser: PipelineUser, Quote: Quote, Rating: Rating, Solution: Solution, Folder: Folder, // base types SceneObject: SceneObject, CardObject: CardObject, ProductObject: ProductObject, version: Version }; }, { "./server/plattar-server.js": 5, "./types/application.js": 6, "./types/content-pipeline/brief.js": 7, "./types/content-pipeline/comment-brief.js": 8, "./types/content-pipeline/comment-quote.js": 9, "./types/content-pipeline/comment-solution.js": 10, "./types/content-pipeline/folder.js": 11, "./types/content-pipeline/pipeline-user.js": 12, "./types/content-pipeline/quote.js": 13, "./types/content-pipeline/rating.js": 14, "./types/content-pipeline/solution.js": 15, "./types/file/file-audio.js": 16, "./types/file/file-base.js": 17, "./types/file/file-image.js": 18, "./types/file/file-model.js": 19, "./types/file/file-script.js": 20, "./types/file/file-video.js": 21, "./types/misc/application-build.js": 25, "./types/misc/asset-library.js": 26, "./types/misc/async-job.js": 27, "./types/misc/script-event.js": 28, "./types/misc/tag.js": 29, "./types/page/card-base.js": 30, "./types/page/card-button.js": 31, "./types/page/card-html.js": 32, "./types/page/card-iframe.js": 33, "./types/page/card-image.js": 34, "./types/page/card-map.js": 35, "./types/page/card-paragraph.js": 36, "./types/page/card-row.js": 37, "./types/page/card-slider.js": 38, "./types/page/card-title.js": 39, "./types/page/card-video.js": 40, "./types/page/card-youtube.js": 41, "./types/page/page.js": 42, "./types/product/product-annotation.js": 43, "./types/product/product-base.js": 44, "./types/product/product-variation.js": 45, "./types/product/product.js": 46, "./types/scene/scene-annotation.js": 47, "./types/scene/scene-audio.js": 48, "./types/scene/scene-base.js": 49, "./types/scene/scene-button.js": 50, "./types/scene/scene-camera.js": 51, "./types/scene/scene-carousel.js": 52, "./types/scene/scene-gallery-image.js": 53, "./types/scene/scene-gallery.js": 54, "./types/scene/scene-image.js": 55, "./types/scene/scene-model.js": 56, "./types/scene/scene-panorama.js": 57, "./types/scene/scene-poller.js": 58, "./types/scene/scene-product.js": 59, "./types/scene/scene-script.js": 60, "./types/scene/scene-shadow.js": 61, "./types/scene/scene-video.js": 62, "./types/scene/scene-volumetric.js": 63, "./types/scene/scene-youtube.js": 64, "./types/scene/scene.js": 65, "./types/trigger/trigger-image.js": 66, "./util/plattar-util.js": 67, "./version": 68 }], 2: [function (require, module, exports) { (function (global) { (function () { "use strict"; // ref: https://github.com/tc39/proposal-global var getGlobal = function getGlobal() { // the only reliable means to get the global object is // `Function('return this')()` // However, this causes CSP violations in Chrome apps. if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } throw new Error('unable to locate global object'); }; var globalObject = getGlobal(); module.exports = exports = globalObject.fetch; // Needed for TypeScript and Webpack. if (globalObject.fetch) { exports["default"] = globalObject.fetch.bind(globalObject); } exports.Headers = globalObject.Headers; exports.Request = globalObject.Request; exports.Response = globalObject.Response; }).call(this); }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); }, {}], 3: [function (require, module, exports) { // shim for using process in browser var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it // don't break things. But we need to wrap it in a try catch in case it is // wrapped in strict mode code which doesn't define any globals. It's inside a // function because try/catches deoptimize in certain engines. var cachedSetTimeout; var cachedClearTimeout; function defaultSetTimout() { throw new Error('setTimeout has not been defined'); } function defaultClearTimeout() { throw new Error('clearTimeout has not been defined'); } (function () { try { if (typeof setTimeout === 'function') { cachedSetTimeout = setTimeout; } else { cachedSetTimeout = defaultSetTimout; } } catch (e) { cachedSetTimeout = defaultSetTimout; } try { if (typeof clearTimeout === 'function') { cachedClearTimeout = clearTimeout; } else { cachedClearTimeout = defaultClearTimeout; } } catch (e) { cachedClearTimeout = defaultClearTimeout; } })(); function runTimeout(fun) { if (cachedSetTimeout === setTimeout) { //normal enviroments in sane situations return setTimeout(fun, 0); } // if setTimeout wasn't available but was latter defined if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { cachedSetTimeout = setTimeout; return setTimeout(fun, 0); } try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedSetTimeout(fun, 0); } catch (e) { try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedSetTimeout.call(null, fun, 0); } catch (e) { // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error return cachedSetTimeout.call(this, fun, 0); } } } function runClearTimeout(marker) { if (cachedClearTimeout === clearTimeout) { //normal enviroments in sane situations return clearTimeout(marker); } // if clearTimeout wasn't available but was latter defined if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { cachedClearTimeout = clearTimeout; return clearTimeout(marker); } try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedClearTimeout(marker); } catch (e) { try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedClearTimeout.call(null, marker); } catch (e) { // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. // Some versions of I.E. have different rules for clearTimeout vs setTimeout return cachedClearTimeout.call(this, marker); } } } var queue = []; var draining = false; var currentQueue; var queueIndex = -1; function cleanUpNextTick() { if (!draining || !currentQueue) { return; } draining = false; if (currentQueue.length) { queue = currentQueue.concat(queue); } else { queueIndex = -1; } if (queue.length) { drainQueue(); } } function drainQueue() { if (draining) { return; } var timeout = runTimeout(cleanUpNextTick); draining = true; var len = queue.length; while (len) { currentQueue = queue; queue = []; while (++queueIndex < len) { if (currentQueue) { currentQueue[queueIndex].run(); } } queueIndex = -1; len = queue.length; } currentQueue = null; draining = false; runClearTimeout(timeout); } process.nextTick = function (fun) { var args = new Array(arguments.length - 1); if (arguments.length > 1) { for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { runTimeout(drainQueue); } }; // v8 likes predictible objects function Item(fun, array) { this.fun = fun; this.array = array; } Item.prototype.run = function () { this.fun.apply(null, this.array); }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {}; function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop; process.listeners = function (name) { return []; }; process.binding = function (name) { throw new Error('process.binding is not supported'); }; process.cwd = function () { return '/'; }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function () { return 0; }; }, {}], 4: [function (require, module, exports) { var fetch = require("node-fetch"); var PlattarQuery = /*#__PURE__*/function () { function PlattarQuery(target, server) { _classCallCheck(this, PlattarQuery); if (!target) { throw new Error("PlattarQuery cannot be created as target object cannot be null"); } if (!server) { throw new Error("PlattarQuery cannot be created as server object cannot be null"); } this._target = target; this._server = server; this._params = []; this._getIncludeQuery = []; } return _createClass(PlattarQuery, [{ key: "target", get: function get() { return this._target; } }, { key: "server", get: function get() { return this._server; } }, { key: "getCookie", value: function getCookie(cname) { try { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } } catch (error) { /* silent */ } return ""; } }, { key: "_get", value: function _get(opt) { var _this = this; return new Promise(function (resolve, reject) { var target = _this.target; var server = _this.server; // we cannot perform a GET request without an ID if (!target.id) { reject(new Error("PlattarQuery." + target.type() + ".get() - object id is missing")); return; } var options = opt || { cache: true }; // look in the cache only if its enabled if (options.cache === true) { // check global cache first var cached = PlattarQuery._GetGlobalCachedObject(target); if (cached) { resolve(cached); return; } } // otherwise, proceed with the fetching op var origin = server.originLocation.api_read; var auth = server.authToken; var headers = { 'cookie': 'laravel_session=' + _this.getCookie('laravel_session') }; Object.assign(headers, auth); var reqopts = { method: "GET", headers: headers }; var includeQuery = _this._IncludeQuery; var params = _this._ParamFor("get"); var endpoint = origin + target.type() + "/" + target.id; if (includeQuery) { endpoint = endpoint + "?include=" + includeQuery; } if (params) { var appender = includeQuery ? "&" : "?"; params.forEach(function (param) { endpoint = endpoint + appender + param.key + "=" + param.value; appender = "&"; }); } fetch(endpoint, reqopts).then(function (res) { if (res.ok) { try { return res.json(); } catch (err) { return new Error("PlattarQuery." + target.type() + ".get(" + target.id + ") - critical error occured, cannot proceed"); } } return new Error("PlattarQuery." + target.type() + ".get(" + target.id + ") - unexpected error occured, cannot proceed. error message is " + res.statusText); }).then(function (json) { if (json instanceof Error) { reject(json); } else { var PlattarUtil = require("../util/plattar-util.js"); PlattarUtil.reconstruct(target, json, options); resolve(target); } }); }); } }, { key: "_update", value: function _update() { var _this2 = this; return new Promise(function (resolve, reject) { var target = _this2.target; var server = _this2.server; // we cannot perform a GET request without an ID if (!target.id) { reject(new Error("PlattarQuery." + target.type() + ".update() - object id is missing")); return; } // otherwise, proceed with the fetching op var origin = server.originLocation.api_write; var auth = server.authToken; var headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'cookie': 'laravel_session=' + _this2.getCookie('laravel_session') }; Object.assign(headers, auth); var reqopts = { method: "PATCH", headers: headers, body: JSON.stringify({ data: { id: target.id, attributes: target.attributes }, meta: target.meta || {} }) }; var params = _this2._ParamFor("update"); var endpoint = origin + target.type() + "/" + target.id; if (params) { var appender = "?"; params.forEach(function (param) { endpoint = endpoint + appender + param.key + "=" + param.value; appender = "&"; }); } fetch(endpoint, reqopts).then(function (res) { if (res.ok) { try { return res.json(); } catch (err) { return new Error("PlattarQuery." + target.type() + ".update(" + target.id + ") - critical error occured, cannot proceed"); } } return new Error("PlattarQuery." + target.type() + ".update(" + target.id + ") - unexpected error occured, cannot proceed. error message is " + res.statusText); }).then(function (json) { if (json instanceof Error) { reject(json); } else { if (json.data) { var PlattarUtil = require("../util/plattar-util.js"); PlattarUtil.reconstruct(target, json, { cache: true }); } resolve(target); } }); }); } }, { key: "_create", value: function _create() { var _this3 = this; return new Promise(function (resolve, reject) { var target = _this3.target; var server = _this3.server; // otherwise, proceed with the fetching op var origin = server.originLocation.api_write; var auth = server.authToken; var headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'cookie': 'laravel_session=' + _this3.getCookie('laravel_session') }; Object.assign(headers, auth); var reqopts = { method: "POST", headers: headers, body: JSON.stringify({ data: { attributes: target.attributes }, meta: target.meta || {} }) }; var params = _this3._ParamFor("create"); var endpoint = origin + target.type(); if (params) { var appender = "?"; params.forEach(function (param) { endpoint = endpoint + appender + param.key + "=" + param.value; appender = "&"; }); } fetch(endpoint, reqopts).then(function (res) { if (res.ok) { try { return res.json(); } catch (err) { return new Error("PlattarQuery." + target.type() + ".create() - critical error occured, cannot proceed"); } } return new Error("PlattarQuery." + target.type() + ".create() - unexpected error occured, cannot proceed. error message is " + res.statusText); }).then(function (json) { if (json instanceof Error) { reject(json); } else { if (json.data) { target._id = json.data.id; var PlattarUtil = require("../util/plattar-util.js"); PlattarUtil.reconstruct(target, json, { cache: true }); } resolve(target); } }); }); } }, { key: "_delete", value: function _delete() { var _this4 = this; return new Promise(function (resolve, reject) { var target = _this4.target; var server = _this4.server; // we cannot perform a GET request without an ID if (!target.id) { reject(new Error("PlattarQuery." + target.type() + ".delete() - object id is missing")); return; } // otherwise, proceed with the fetching op var origin = server.originLocation.api_write; var auth = server.authToken; var headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'cookie': 'laravel_session=' + _this4.getCookie('laravel_session') }; Object.assign(headers, auth); var reqopts = { method: "DELETE", headers: headers, body: JSON.stringify({ data: { id: target.id, attributes: target.attributes }, meta: target.meta || {} }) }; var params = _this4._ParamFor("delete"); var endpoint = origin + target.type() + "/" + target.id; if (params) { var appender = "?"; params.forEach(function (param) { endpoint = endpoint + appender + param.key + "=" + param.value; appender = "&"; }); } fetch(endpoint, reqopts).then(function (res) { if (res.ok) { try { return res.json(); } catch (err) { return new Error("PlattarQuery." + target.type() + ".delete() - critical error occured, cannot proceed"); } } return new Error("PlattarQuery." + target.type() + ".delete() - unexpected error occured, cannot proceed. error message is " + res.statusText); }).then(function (json) { if (json instanceof Error) { reject(json); } else { if (json.data) { target._id = json.data.id; var PlattarUtil = require("../util/plattar-util.js"); PlattarUtil.reconstruct(target, json, { cache: true }); } resolve(target); } }); }); } /** * Adds a specific request parameter */ }, { key: "_addParameter", value: function _addParameter(key, value, type) { type = type || "all"; this._params.push({ key: key, value: value, type: type.toLowerCase() }); } /** * Includes this query with the next GET operation */ }, { key: "_include", value: function _include(args) { var _this5 = this; if (!args || args.length <= 0) { return this; } var PlattarUtil = require("../util/plattar-util.js"); args.forEach(function (obj) { // object passed is of PlattarObject type if (Array.isArray(obj)) { obj.forEach(function (strObject) { if (typeof strObject === "string" || strObject instanceof String) { _this5._getIncludeQuery.push(strObject); } else { throw new Error("PlattarQuery." + _this5.target.type() + ".include(...args) - argument of Array must only include Strings"); } }); } else if (PlattarUtil.isPlattarObject(obj)) { var type = obj.type(); if (Array.isArray(type)) { _this5._include(type); } else { _this5._getIncludeQuery.push(type); } } else { throw new Error("PlattarQuery." + _this5.target.type() + ".include(...args) - argument must be of type PlattarObject or Array but was type=" + _typeof(obj) + " value=" + obj); } }); return this; } /** * Filters and returns all request parameters for a particular * request type */ }, { key: "_ParamFor", value: function _ParamFor(type) { type = type || "all"; var list = this._params.filter(function (objcheck) { return objcheck.type === type || objcheck.type === "all"; }); if (list.length > 0) { return list; } return undefined; } /** * Performs a combination of all include queries */ }, { key: "_IncludeQuery", get: function get() { if (this._getIncludeQuery.length <= 0) { return undefined; } return "".concat(this._getIncludeQuery.map(function (item) { return "".concat(item); }).join(",")); } }]); }(); /** * Plattar uses GUID for all object ids. This means * that the GUID will not be shared between different * object instances. This allows us to create a global * static cache to optimise fetch operations for all * objects. * * WARNING: These are for internal uses only! */ PlattarQuery._GlobalObjectCache = {}; PlattarQuery._InvalidateGlobalCache = function () { PlattarQuery._GlobalObjectCache = {}; }; PlattarQuery._HasGlobalCachedObject = function (obj) { return PlattarQuery._GlobalObjectCache.hasOwnProperty(obj.id); }; PlattarQuery._GetGlobalCachedObject = function (obj) { return PlattarQuery._HasGlobalCachedObject(obj) ? PlattarQuery._GlobalObjectCache[obj.id] : undefined; }; PlattarQuery._SetGlobalCachedObject = function (obj) { // enable after extensive testing - too many bugs //PlattarQuery._GlobalObjectCache[obj.id] = obj; }; PlattarQuery._DeleteGlobalCachedObject = function (obj) { if (PlattarQuery._HasGlobalCachedObject(obj)) { delete PlattarQuery._GlobalObjectCache[obj.id]; } }; module.exports = PlattarQuery; }, { "../util/plattar-util.js": 67, "node-fetch": 2 }], 5: [function (require, module, exports) { (function (process) { (function () { var fetch = require("node-fetch"); var PlattarServer = /*#__PURE__*/function () { function PlattarServer() { _classCallCheck(this, PlattarServer); this._authToken = {}; this._serverLocation = this.prod; } return _createClass(PlattarServer, [{ key: "prod", get: function get() { return PlattarServer.match("prod"); } }, { key: "isProd", get: function get() { return this._serverLocation.type === "production"; } }, { key: "review", get: function get() { return PlattarServer.match("review"); } }, { key: "isReview", get: function get() { return this._serverLocation.type === "review"; } }, { key: "staging", get: function get() { return PlattarServer.match("staging"); } }, { key: "isStaging", get: function get() { return this._serverLocation.type === "staging"; } }, { key: "dev", get: function get() { return PlattarServer.match("dev"); } }, { key: "isDev", get: function get() { return this._serverLocation.type === "dev"; } }, { key: "authToken", get: function get() { return this._authToken; } }, { key: "originLocation", get: function get() { return this._serverLocation; } }, { key: "auth", value: function auth(token, opt) { var _this6 = this; var copt = opt || { validate: false }; return new Promise(function (resolve, reject) { var server = _this6.originLocation.api_write; if (!server) { reject(new Error("Plattar.auth(token) - cannot authenticate as server not set via Plattar.origin(server)")); return; } if (!token) { reject(new Error("Plattar.auth(token) - token variable is undefined")); return; } if (!copt.validate) { _this6._authToken = { "plattar-auth-token": token }; resolve(_this6); return; } var endpoint = server + "plattaruser/xauth/validate"; var options = { method: "GET", headers: { "plattar-auth-token": token } }; fetch(endpoint, options).then(function (res) { if (res.ok) { _this6._authToken = { "plattar-auth-token": token }; resolve(_this6); } else { reject(new Error("Plattar.auth(token) - failed to validate authentication token at " + endpoint)); } }); }); } }, { key: "origin", value: function origin(server, opt) { var _this7 = this; var copt = opt || { validate: false }; return new Promise(function (resolve, reject) { if (!server) { reject(new Error("Plattar.origin(server) - server variable is undefined")); return; } if (!copt.validate) { _this7._serverLocation = server; resolve(_this7); return; } var endpoint = server.api_read + "ping"; var options = { method: "GET" }; fetch(endpoint, options).then(function (res) { if (res.ok) { _this7._serverLocation = server; resolve(_this7); } else { reject(new Error("Plattar.origin(server) - failed to ping server at " + endpoint)); } }); }); } }]); }(); /** * Matches the provided server name with a provided environment */ PlattarServer.match = function (serverName) { switch (serverName.toLowerCase()) { case "staging.plattar.space": case "cdn-staging.plattar.space": case "staging": return { base: "https://staging.plattar.space/", api_read: "https://api.plattar.space/v3/", api_write: "https://api.plattar.space/v3/", cdn: "https://cdn-staging.plattar.space/", cdn_image: "https://images.plattar.space/", analytics: "https://c.plattar.space/api/v2/analytics", type: "staging" }; case "app.plattar.com": case "cdn.plattar.com": case "prod": case "production": return { base: "https://app.plattar.com/", api_read: "https://api.plattar.com/v3/", api_write: "https://api.plattar.com/v3/", cdn: "https://cdn.plattar.com/", cdn_image: "https://images.plattar.com/", analytics: "https://c.plattar.space/api/v2/analytics", type: "production" }; case "review.plattar.com": case "review": case "qa": return { base: "https://review.plattar.com/", api_read: "https://review-api.plattar.com/v3/", api_write: "https://review-api.plattar.com/v3/", cdn: "https://cdn.plattar.com/", cdn_image: "https://images.plattar.com/", analytics: "https://c.plattar.space/api/v2/analytics", type: "review" }; case "dev": case "developer": case "development": case "local": case "localhost": default: return { base: "https://localhost/", api_read: "https://localhost:3000/v3/", api_write: "https://localhost:3000/v3/", cdn: "https://cdn-dev.plattar.space/", cdn_image: "https://images-dev.plattar.space/", analytics: "https://localhost:3000/api/v2/analytics/", type: "dev" }; } }; PlattarServer.create = function (origin, auth) { var newServer = new PlattarServer(); if (origin) { newServer.origin(origin); } if (auth) { newServer.auth(auth); } PlattarServer._default = newServer; return newServer; }; PlattarServer.disableTLS = function () { process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; }; PlattarServer["default"] = function () { return PlattarServer._default; }; PlattarServer.location = function () { return PlattarServer["default"]().originLocation; }; module.exports = PlattarServer; }).call(this); }).call(this, require('_process')); }, { "_process": 3, "node-fetch": 2 }], 6: [function (require, module, exports) { var PlattarBase = require("./interfaces/plattar-base.js"); var Application = /*#__PURE__*/function (_PlattarBase) { function Application() { _classCallCheck(this, Application); return _callSuper(this, Application, arguments); } _inherits(Application, _PlattarBase); return _createClass(Application, null, [{ key: "type", value: function type() { return "application"; } }]); }(PlattarBase); module.exports = Application; }, { "./interfaces/plattar-base.js": 22 }], 7: [function (require, module, exports) { var PlattarBase = require("../interfaces/plattar-base"); var Brief = /*#__PURE__*/function (_PlattarBase2) { function Brief() { _classCallCheck(this, Brief); return _callSuper(this, Brief, arguments); } _inherits(Brief, _PlattarBase2); return _createClass(Brief, null, [{ key: "type", value: function type() { return "brief"; } }]); }(PlattarBase); module.exports = Brief; }, { "../interfaces/plattar-base": 22 }], 8: [function (require, module, exports) { var PlattarBase = require("../interfaces/plattar-base"); var CommentBrief = /*#__PURE__*/function (_PlattarBase3) { function CommentBrief() { _classCallCheck(this, CommentBrief); return _callSuper(this, CommentBrief, arguments); } _inherits(CommentBrief, _PlattarBase3); return _createClass(CommentBrief, null, [{ key: "type", value: function type() { return "commentbrief"; } }]); }(PlattarBase); module.exports = CommentBrief; }, { "../interfaces/plattar-base": 22 }], 9: [function (require, module, exports) { var PlattarBase = require("../interfaces/plattar-base"); var CommentQuote = /*#__PURE__*/function (_PlattarBase4) { function CommentQuote() { _classCallCheck(this, CommentQuote); return _callSuper(this, CommentQuote, arguments); } _inherits(CommentQuote, _PlattarBase4); return _createClass(CommentQuote, null, [{ key: "type", value: function type() { return "commentquote"; } }]); }(PlattarBase); module.exports = CommentQuote; }, { "../interfaces/plattar-base": 22 }], 10: [function (require, module, exports) { var PlattarBase = require("../interfaces/plattar-base"); var CommentSolution = /*#__PURE__*/function (_PlattarBase5) { function CommentSolution() { _classCallCheck(this, CommentSolution); return _callSuper(this