@plattar/plattar-api
Version:
Module for interfacing with the Plattar API (https://www.plattar.com)
1,230 lines (1,202 loc) • 114 kB
JavaScript
"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