UNPKG

fluro

Version:

Promise based HTTP Fluro client for the browser and node.js

383 lines (295 loc) 19.2 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>fluro.core.js - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc.css"> <script src="scripts/nav.js" defer></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav > <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="access.html">access</a><ul class='methods'><li data-type='method'><a href="access.html#.addEventListener">addEventListener</a></li><li data-type='method'><a href="access.html#.can">can</a></li><li data-type='method'><a href="access.html#.canDeleteItem">canDeleteItem</a></li><li data-type='method'><a href="access.html#.canEditItem">canEditItem</a></li><li data-type='method'><a href="access.html#.canKnowOf">canKnowOf</a></li><li data-type='method'><a href="access.html#.canViewItem">canViewItem</a></li><li data-type='method'><a href="access.html#.has">has</a></li><li data-type='method'><a href="access.html#.isAuthor">isAuthor</a></li><li data-type='method'><a href="access.html#.removeAllListeners">removeAllListeners</a></li><li data-type='method'><a href="access.html#.removeEventListener">removeEventListener</a></li><li data-type='method'><a href="access.html#.retrieveActionableRealms">retrieveActionableRealms</a></li><li data-type='method'><a href="access.html#.retrieveCurrentSession">retrieveCurrentSession</a></li><li data-type='method'><a href="access.html#.setDefaultApplication">setDefaultApplication</a></li></ul></li><li><a href="api.html">api</a><ul class='methods'><li data-type='method'><a href="api.html#.delete">delete</a></li><li data-type='method'><a href="api.html#.generateEndpointURL">generateEndpointURL</a></li><li data-type='method'><a href="api.html#.get">get</a></li><li data-type='method'><a href="api.html#.post">post</a></li><li data-type='method'><a href="api.html#.put">put</a></li></ul></li><li><a href="app.device.html">device</a></li><li><a href="asset.html">asset</a><ul class='methods'><li data-type='method'><a href="asset.html#.avatarUrl">avatarUrl</a></li><li data-type='method'><a href="asset.html#.downloadUrl">downloadUrl</a></li><li data-type='method'><a href="asset.html#.filesize">filesize</a></li><li data-type='method'><a href="asset.html#.getUrl">getUrl</a></li><li data-type='method'><a href="asset.html#.imageUrl">imageUrl</a></li><li data-type='method'><a href="asset.html#.playerUrl">playerUrl</a></li><li data-type='method'><a href="asset.html#.posterUrl">posterUrl</a></li><li data-type='method'><a href="asset.html#.typeFromMime">typeFromMime</a></li></ul></li><li><a href="auth.html">auth</a><ul class='methods'><li data-type='method'><a href="auth.html#.addEventListener">addEventListener</a></li><li data-type='method'><a href="auth.html#.changeAccount">changeAccount</a></li><li data-type='method'><a href="auth.html#.getCurrentToken">getCurrentToken</a></li><li data-type='method'><a href="auth.html#.getCurrentUser">getCurrentUser</a></li><li data-type='method'><a href="auth.html#.impersonate">impersonate</a></li><li data-type='method'><a href="auth.html#.login">login</a></li><li data-type='method'><a href="auth.html#.logout">logout</a></li><li data-type='method'><a href="auth.html#.refreshAccessToken">refreshAccessToken</a></li><li data-type='method'><a href="auth.html#.removeAllListeners">removeAllListeners</a></li><li data-type='method'><a href="auth.html#.removeEventListener">removeEventListener</a></li><li data-type='method'><a href="auth.html#.retrieveUserFromResetToken">retrieveUserFromResetToken</a></li><li data-type='method'><a href="auth.html#.sendResetPasswordRequest">sendResetPasswordRequest</a></li><li data-type='method'><a href="auth.html#.set">set</a></li><li data-type='method'><a href="auth.html#.signup">signup</a></li><li data-type='method'><a href="auth.html#.updateUserWithToken">updateUserWithToken</a></li></ul></li><li><a href="cache.html">cache</a><ul class='methods'><li data-type='method'><a href="cache.html#.get">get</a></li><li data-type='method'><a href="cache.html#.reset">reset</a></li></ul></li><li><a href="components.html">components</a><ul class='methods'><li data-type='method'><a href="components.html#.hydrateModel">hydrateModel</a></li></ul></li><li><a href="content.html">content</a><ul class='methods'><li data-type='method'><a href="content.html#.duplicate">duplicate</a></li><li data-type='method'><a href="content.html#.external">external</a></li><li data-type='method'><a href="content.html#.filter">filter</a></li><li data-type='method'><a href="content.html#.form">form</a></li><li data-type='method'><a href="content.html#.get">get</a></li><li data-type='method'><a href="content.html#.getMultiple">getMultiple</a></li><li data-type='method'><a href="content.html#.keys">keys</a></li><li data-type='method'><a href="content.html#.list">list</a></li><li data-type='method'><a href="content.html#.query">query</a></li><li data-type='method'><a href="content.html#.related">related</a></li><li data-type='method'><a href="content.html#.retrieve">retrieve</a></li><li data-type='method'><a href="content.html#.slug">slug</a></li><li data-type='method'><a href="content.html#.submitInteraction">submitInteraction</a></li><li data-type='method'><a href="content.html#.submitPost">submitPost</a></li><li data-type='method'><a href="content.html#.thread">thread</a></li><li data-type='method'><a href="content.html#.values">values</a></li></ul></li><li><a href="date.html">date</a><ul class='methods'><li data-type='method'><a href="date.html#.countdown">countdown</a></li><li data-type='method'><a href="date.html#.dateFromID">dateFromID</a></li><li data-type='method'><a href="date.html#.formatDate">formatDate</a></li><li data-type='method'><a href="date.html#.getAge">getAge</a></li><li data-type='method'><a href="date.html#.groupEventByDate">groupEventByDate</a></li><li data-type='method'><a href="date.html#.isDifferentTimezoneThanUser">isDifferentTimezoneThanUser</a></li><li data-type='method'><a href="date.html#.isMultiDayEvent">isMultiDayEvent</a></li><li data-type='method'><a href="date.html#.localDate">localDate</a></li><li data-type='method'><a href="date.html#.militaryTimestamp">militaryTimestamp</a></li><li data-type='method'><a href="date.html#.readableEventDate">readableEventDate</a></li><li data-type='method'><a href="date.html#.readableEventTime">readableEventTime</a></li><li data-type='method'><a href="date.html#.timeago">timeago</a></li><li data-type='method'><a href="date.html#.timeline">timeline</a></li><li data-type='method'><a href="date.html#.timestampToAmPm">timestampToAmPm</a></li><li data-type='method'><a href="date.html#.timezones">timezones</a></li></ul></li><li><a href="fluro.html">fluro</a></li><li><a href="types.html">types</a><ul class='methods'><li data-type='method'><a href="types.html#.all">all</a></li><li data-type='method'><a href="types.html#.basicTypes">basicTypes</a></li><li data-type='method'><a href="types.html#.get">get</a></li><li data-type='method'><a href="types.html#.mapDefinitionItems">mapDefinitionItems</a></li><li data-type='method'><a href="types.html#.parentType">parentType</a></li><li data-type='method'><a href="types.html#.postableTypes">postableTypes</a></li><li data-type='method'><a href="types.html#.readable">readable</a></li><li data-type='method'><a href="types.html#.reloadTerminology">reloadTerminology</a></li><li data-type='method'><a href="types.html#.retrieve">retrieve</a></li><li data-type='method'><a href="types.html#.subTypes">subTypes</a></li><li data-type='method'><a href="types.html#.term">term</a></li></ul></li><li><a href="utils.html">utils</a><ul class='methods'><li data-type='method'><a href="utils.html#.arrayIDs">arrayIDs</a></li><li data-type='method'><a href="utils.html#.comma">comma</a></li><li data-type='method'><a href="utils.html#.currencySymbol">currencySymbol</a></li><li data-type='method'><a href="utils.html#.errorMessage">errorMessage</a></li><li data-type='method'><a href="utils.html#.extractFromArray">extractFromArray</a></li><li data-type='method'><a href="utils.html#.formatCurrency">formatCurrency</a></li><li data-type='method'><a href="utils.html#.getDefaultValueForField">getDefaultValueForField</a></li><li data-type='method'><a href="utils.html#.getFlattenedFields">getFlattenedFields</a></li><li data-type='method'><a href="utils.html#.getStringID">getStringID</a></li><li data-type='method'><a href="utils.html#.guid">guid</a></li><li data-type='method'><a href="utils.html#.hash">hash</a></li><li data-type='method'><a href="utils.html#.injectScript">injectScript</a></li><li data-type='method'><a href="utils.html#.machineName">machineName</a></li><li data-type='method'><a href="utils.html#.mapParameters">mapParameters</a></li><li data-type='method'><a href="utils.html#.matchInArray">matchInArray</a></li><li data-type='method'><a href="utils.html#.processCardPrioritySort">processCardPrioritySort</a></li></ul></li><li><a href="video.html">video</a><ul class='methods'><li data-type='method'><a href="video.html#.hhmmss">hhmmss</a></li><li data-type='method'><a href="video.html#.readableMilliseconds">readableMilliseconds</a></li><li data-type='method'><a href="video.html#.readableSeconds">readableSeconds</a></li></ul></li></ul> </nav> <div id="main"> <h1 class="page-title">fluro.core.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>// if (process.browser) { import FluroAPI from './fluro.api'; import FluroAuth from './fluro.auth'; import FluroComponents from './fluro.components'; import FluroAsset from './fluro.asset'; import FluroUtils from './fluro.utils'; import FluroCache from './fluro.cache'; import FluroDate from './fluro.date'; import FluroStats from './fluro.stats'; import FluroTypes from './fluro.types'; import FluroContent from './fluro.content'; import FluroAccess from './fluro.access'; import FluroVideo from './fluro.video'; import FluroDevice from './fluro.device'; import { EventDispatcher } from './fluro.utils'; // } else { // const esmImport = require('esm')(module); // const FluroAPI = esmImport('./fluro.api'); // const FluroAuth = esmImport('./fluro.auth'); // const FluroAsset = esmImport('./fluro.asset'); // const FluroUtils = esmImport('./fluro.utils'); // const FluroCache = esmImport('./fluro.cache'); // const FluroDate = esmImport('./fluro.date'); // const FluroStats = esmImport('./fluro.stats'); // const FluroTypes = esmImport('./fluro.types'); // const FluroContent = esmImport('./fluro.content'); // const FluroAccess = esmImport('./fluro.access'); // const EventDispatcher = FluroUtils.EventDispatcher; // } /////////////////////////////////////// /** * Creates a new FluroCore instance including all of the default sub modules * @alias fluro * @constructor * @param {Object} options * @param {String} options.apiURL The remote URL of the Fluro API you want to connect to. Options are 'staging', 'production' or you may set a specific URL eg. 'https://api.fluro.io' (do not include trailing slash). If no value is provided, will default to 'production'. * @param {String} options.applicationToken When running as a static application, (for example a website) you may set the application's access token before you initialize the Fluro instance here. * @example * * //Import the Fluro package * import Fluro from 'fluro'; * * //Create a new Fluro instance * var fluro = new Fluro(); * * //Request the current user session endpoint from the Fluro API * fluro.api.get('/session').then(function(res) { * console.log('User session is ', res.data); * }) * .catch(function(err) { * console.log('There was an error', err); * }); * * //Use the FluroAsset package to generate an image url * var link = fluro.asset.imageUrl('5ca3d64dd2bb085eb9d450db', 1920, 1080) */ var FluroCore = function(options) { if (!options) { options = { // apiURL, // applicationToken, // api:{} }; } /////////////////////////////////////// /////////////////////////////////////// if (!options.apiURL || !options.apiURL.length) { options.apiURL = 'production'; } /////////////////////////////////////// switch (String(options.apiURL).toLowerCase()) { case 'production': options.apiURL = 'https://api.fluro.io'; break; case 'staging': options.apiURL = 'https://api.staging.fluro.io'; break; case 'local': options.apiURL = 'http://api.fluro.localhost:3000'; break; } /////////////////////////////////////// /////////////////////////////////////// var core = Object.assign(options, { //apiURL: options.apiURL, //applicationToken: options.applicationToken, domain: options.domain || '', //withCredentials:options.withCredentials, global:{}, resetCache() { // console.log('Fluro - Reset Global Cache') FluroCache.reset(); dispatcher.dispatch('cache.reset') } }) /////////////////////////////////////// /** * Provides a cache service, used for creating, clearing * and storing API requests and other information in memory * @type {FluroCache} */ var cache = FluroCache; Object.defineProperty(core, 'cache', { value: cache, writable: false, }); /////////////////////////////////////// /** * Provides helper functions for working * with Fluro data * @type {FluroUtils} */ var utils = FluroUtils; Object.defineProperty(core, 'utils', { value: utils, writable: false, }); /////////////////////////////////////// /** * Provides helper functions for understanding the users device * @type {FluroDevice} */ var device = FluroDevice; Object.defineProperty(core, 'device', { value: device, writable: false, }); /////////////////////////////////////// //Create a new global dispatcher so we can trigger events var dispatcher = new EventDispatcher(); dispatcher.bootstrap(core); //Set the function core.error = function(err) { //Dispatch an error event return core.dispatch('error', utils.errorMessage(err)); } //And enable notifications with a short message core.notify = function(message, options) { return core.dispatch('notification', {message, options}); } /////////////////////////////////////// /** * Provides date functions, filters and utilities * for working with dates and timezones * @type {FluroDate} */ var date = FluroDate; Object.defineProperty(core, 'date', { value: date, writable: false, }); /** * The default service for interacting with * the Fluro REST API, it's a wrapper around the axios library * that works in conjunction with the other Fluro modules * @type {FluroAPI} */ var api = new FluroAPI(core); Object.defineProperty(core, 'api', { value: api, writable: false, }); var appContextAPI = new FluroAPI(core, true); Object.defineProperty(core, 'appContextAPI', { value: appContextAPI, writable: false, }); /** * A helper service for CRUD operations that wraps around the fluro.api service * @type {FluroContent} */ var content = new FluroContent(core); Object.defineProperty(core, 'content', { value: content, writable: false, }); /** * The default service for managing authentication * handles automatic refreshing of access tokens, and provides login, logout * and other user/application specific functionality * @type {FluroAuth} */ var auth = new FluroAuth(core); Object.defineProperty(core, 'auth', { value: auth, writable: false, }); /** * Provides helper functions for working with Fluro Components * @type {FluroComponents} */ var components = new FluroComponents(core); Object.defineProperty(core, 'components', { value: components, writable: false, }); /////////////////////////////////////// /** * Provides helper functions for working * with Fluro Video data * @type {FluroVideo} */ var video = FluroVideo; Object.defineProperty(core, 'video', { value: video, writable: false, }); /** * The default service for managing, rendering and handling files and media from Fluro. * It contains helper functions for managing connecting to image, audio, asset and video api endpoints. * @type {FluroAsset} */ var asset = new FluroAsset(core); Object.defineProperty(core, 'asset', { value: asset, writable: false, }); /** * The default service for handling a user's 'stats' eg. (likes, views, favorites, downvotes etc...) * This service creates and syncs user's stats when they 'stat' items from Fluro. * @type {FluroStats} */ var stats = new FluroStats(core) Object.defineProperty(core, 'stats', { value: new FluroStats(core), writable: false, }); /** * A helper service for retrieving, translating and rendering content types and definitions * defined within Fluro. * @type {FluroTypes} */ var types = new FluroTypes(core); Object.defineProperty(core, 'types', { value: types, writable: false, }); /** * A helper service for understanding a user's access permissions * @type {FluroAccess} */ var access = new FluroAccess(core); Object.defineProperty(core, 'access', { value: access, writable: false, }); /////////////////////////////////////// return core; } /////////////////////////////////////// /////////////////////////////////////// /////////////////////////////////////// /////////////////////////////////////// export default FluroCore; </code></pre> </article> </section> </div> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.3</a> on Tue Jun 29 2021 08:38:17 GMT+1000 (Australian Eastern Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme. </footer> <script>prettyPrint();</script> <script src="scripts/polyfill.js"></script> <script src="scripts/linenumber.js"></script> </body> </html>