From fabe215551442ba4c478bda2458833053649b29c Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 2 May 2016 09:28:11 -0700 Subject: [PATCH] 3.0.0-beta.5 --- dist/js-data-http.js | 103 +++++++++++++++++++++++------ dist/js-data-http.js.map | 2 +- dist/js-data-http.min.js | 4 +- dist/js-data-http.min.map | 2 +- fetch/dist/js-data-fetch.js | 103 +++++++++++++++++++++++------ fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 4 +- fetch/dist/js-data-fetch.min.map | 2 +- node/dist/js-data-http-node.js | 101 ++++++++++++++++++++++------ node/dist/js-data-http-node.js.map | 2 +- 10 files changed, 254 insertions(+), 71 deletions(-) diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 5a0d5f3..8647eea 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -1,6 +1,6 @@ /*! * js-data-http -* @version 3.0.0-beta.4 - Homepage +* @version 3.0.0-beta.5 - Homepage * @copyright (c) 2014-2016 js-data-http project authors * @license MIT * @@ -1154,6 +1154,34 @@ return /******/ (function(modules) { // webpackBootstrap /** * Add an Http actions to a mapper. * + * @example + * // CommonJS + * var JSData = require('js-data') + * // It is recommended to use DataStore in the browser + * var DataStore = JSData.DataStore + * + * var JSDataHttp = require('js-data-http') + * var HttpAdapter = JSDataHttp.HttpAdapter + * var addAction = JSDataHttp.addAction + * + * var adapter = new HttpAdapter() + * var store = new DataStore() + * + * store.registerAdapter('http', adapter, { default: true }) + * store.defineMapper('school') + * + * // GET /reports/schools/:school_id/teachers + * addAction('getTeacherReports', { + * basePath: 'reports/schools', + * pathname: 'teachers', + * method: 'GET' + * })(store.getMapper('school')) + * + * // /reports/schools/1234/teachers + * store.getMapper('school').getTeacherReports(1234).then(function (response) { + * // ... + * }) + * * @name module:js-data-http.addAction * @method * @param {string} name Name of the new action. @@ -1207,7 +1235,7 @@ return /******/ (function(modules) { // webpackBootstrap } config.method = config.method || 'GET'; config.mapper = self.name; - _jsData.utils.deepMixIn(config)(_opts); + _jsData.utils.deepMixIn(config, _opts); return _jsData.utils.resolve(config).then(_opts.request || opts.request).then(function (config) { return adapter.HTTP(config); }).then(function (data) { @@ -1225,6 +1253,36 @@ return /******/ (function(modules) { // webpackBootstrap * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for * action configuration options. * + * @example + * // CommonJS + * var JSData = require('js-data') + * // It is recommended to use DataStore in the browser + * var DataStore = JSData.DataStore + * + * var JSDataHttp = require('js-data-http') + * var HttpAdapter = JSDataHttp.HttpAdapter + * var addActions = JSDataHttp.addActions + * + * var adapter = new HttpAdapter() + * var store = new DataStore() + * + * store.registerAdapter('http', adapter, { default: true }) + * store.defineMapper('school') + * + * addActions({ + * // GET /reports/schools/:school_id/teachers + * getTeacherReports: { + * basePath: 'reports/schools', + * pathname: 'teachers', + * method: 'GET' + * } + * })(store.getMapper('school')) + * + * // /reports/schools/1234/teachers + * store.getMapper('school').getTeacherReports(1234).then(function (response) { + * // ... + * }) + * * @name module:js-data-http.addActions * @method * @param {Object.} opts Object where the key is an action name @@ -1235,7 +1293,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.addActions = function addActions(opts) { opts || (opts = {}); return function (mapper) { - _jsData.utils.forOwn(mapper, function (value, key) { + _jsData.utils.forOwn(opts, function (value, key) { exports.addAction(key, value)(mapper); }); return mapper; @@ -1257,8 +1315,8 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ exports.version = { - beta: 4, - full: '3.0.0-beta.4', + beta: 5, + full: '3.0.0-beta.5', major: 3, minor: 0, patch: 0 @@ -1270,22 +1328,25 @@ return /******/ (function(modules) { // webpackBootstrap * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower * as `js-data-fetch`. * - * __Script tag__: - * ```javascript - * window.HttpAdapter - * ``` - * __CommonJS__: - * ```javascript - * var HttpAdapter = require('js-data-http') - * ``` - * __ES6 Modules__: - * ```javascript - * import HttpAdapter from 'js-data-http' - * ``` - * __AMD__: - * ```javascript - * define('myApp', ['js-data-http'], function (HttpAdapter) { ... }) - * ``` + * @example Script tag + * var HttpAdapter = window.JSDataHttp.HttpAdapter + * var adapter = new HttpAdapter() + * + * @example CommonJS + * var HttpAdapter = require('js-data-Http').HttpAdapter + * var adapter = new HttpAdapter() + * + * @example ES2015 Modules + * import {HttpAdapter} from 'js-data-Http' + * const adapter = new HttpAdapter() + * + * @example AMD + * define('myApp', ['js-data-Http'], function (JSDataHttp) { + * var HttpAdapter = JSDataHttp.HttpAdapter + * var adapter = new HttpAdapter() + * + * // ... + * }) * * @module js-data-http */ diff --git a/dist/js-data-http.js.map b/dist/js-data-http.js.map index 089f27a..19b7ad5 100644 --- a/dist/js-data-http.js.map +++ b/dist/js-data-http.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 62be9016f785db9870f0","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///./~/js-data-adapter/dist/js-data-adapter.js","webpack:///./~/axios/index.js","webpack:///./~/axios/lib/axios.js","webpack:///./~/axios/lib/defaults.js","webpack:///./~/axios/lib/utils.js","webpack:///./~/axios/lib/core/dispatchRequest.js","webpack:///./~/process/browser.js","webpack:///./~/axios/lib/adapters/xhr.js","webpack:///./~/axios/lib/helpers/buildURL.js","webpack:///./~/axios/lib/helpers/parseHeaders.js","webpack:///./~/axios/lib/helpers/transformData.js","webpack:///./~/axios/lib/helpers/isURLSameOrigin.js","webpack:///./~/axios/lib/helpers/btoa.js","webpack:///./~/axios/lib/helpers/settle.js","webpack:///./~/axios/lib/helpers/cookies.js","webpack:///./~/axios/lib/core/InterceptorManager.js","webpack:///./~/axios/lib/helpers/isAbsoluteURL.js","webpack:///./~/axios/lib/helpers/combineURLs.js","webpack:///./~/axios/lib/helpers/bind.js","webpack:///./~/axios/lib/helpers/spread.js"],"names":[],"mappings":"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AACA;AACA;AACA,kDAAiD;AACjD,EAAC,kCAAkC;;AAEnC;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD,+BAA+B;AAChF;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA,oEAAmE,aAAa;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAsE,eAAe;AACrF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,OAAO;AACpB;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,6BAA6B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,8BAA8B,eAAe;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,+BAA+B,eAAe;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,gCAAgC,eAAe;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,iCAAiC,eAAe;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAwE,eAAe;AACvF;AACA;;AAEA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP,+CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP,gDAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,EAAE;AAClB;AACA;AACA,yBAAwB;AACxB;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,oDAAmD;AACnD;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA,gDAA+C;AAC/C;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB;AACA;AACA,6FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD,4C;;;;;;AC/mDA,yC;;;;;;ACAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA,kDAAiD,gBAAgB;;AAEjE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAA+B;AAC/B,wCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;;;;;;ACtHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,uDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,YAAY;AACnB;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;ACjEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC,OAAO;AAC1C;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,SAAS,GAAG,SAAS;AAC5C,4BAA2B;AAC3B;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,wCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzQA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;;;;;;;;;AChCA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU;;;;;;;AC1FtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACnKA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;ACjEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,eAAe;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;;;;;;ACpCA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,cAAc;AACzB,YAAW,MAAM;AACjB,YAAW,eAAe;AAC1B,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;;;;;;ACnBA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;;;;;;ACnEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;;AAEA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;;;;;;ACjBA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAwC;AACxC,QAAO;;AAEP;AACA,2DAA0D,wBAAwB;AAClF;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,iCAAgC;AAChC,8BAA6B,aAAa,EAAE;AAC5C;AACA;AACA,IAAG;AACH;;;;;;;ACpDA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACnDA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACbA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;;;;;;ACXA;;AAEA;AACA;AACA;AACA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;;;;;;ACVA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA,YAAW,SAAS;AACpB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA","file":"./dist/js-data-http.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"js-data\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"js-data\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSDataHttp\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"JSDataHttp\"] = factory(root[\"JSData\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 62be9016f785db9870f0\n **/","/* global fetch:true Headers:true Request:true */\n\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport {\n Adapter,\n noop,\n noop2\n} from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nfunction isValidString (value) {\n return (value != null && value !== '')\n}\nfunction join (items, separator) {\n separator || (separator = '')\n return items.filter(isValidString).join(separator)\n}\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nfunction encode (val) {\n return encodeURIComponent(val)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+')\n .replace(/%5B/gi, '[')\n .replace(/%5D/gi, ']')\n}\n\nfunction buildUrl (url, params) {\n if (!params) {\n return url\n }\n\n const parts = []\n\n utils.forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!utils.isArray(val)) {\n val = [val]\n }\n\n val.forEach(function (v) {\n if (window.toString.call(v) === '[object Date]') {\n v = v.toISOString()\n } else if (utils.isObject(v)) {\n v = utils.toJson(v)\n }\n parts.push(`${encode(key)}=${encode(v)}`)\n })\n })\n\n if (parts.length > 0) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\n }\n\n return url\n}\n\nconst __super__ = Adapter.prototype\n\nconst DEFAULTS = {\n // Default and user-defined settings\n /**\n * @name HttpAdapter#basePath\n * @type {string}\n */\n basePath: '',\n\n /**\n * @name HttpAdapter#forceTrailingSlash\n * @type {boolean}\n * @default false\n */\n forceTrailingSlash: false,\n\n /**\n * @name HttpAdapter#http\n * @type {Function}\n */\n http: axios,\n\n /**\n * @name HttpAdapter#httpConfig\n * @type {Object}\n */\n httpConfig: {},\n\n /**\n * @name HttpAdapter#suffix\n * @type {string}\n */\n suffix: '',\n\n /**\n * @name HttpAdapter#useFetch\n * @type {boolean}\n * @default false\n */\n useFetch: false\n}\n\n/**\n * HttpAdapter class.\n *\n * @class HttpAdapter\n * @extends Adapter\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.basePath=''] TODO\n * @param {boolean} [opts.debug=false] TODO\n * @param {boolean} [opts.forceTrailingSlash=false] TODO\n * @param {Object} [opts.http=axios] TODO\n * @param {Object} [opts.httpConfig={}] TODO\n * @param {string} [opts.suffix=''] TODO\n * @param {boolean} [opts.useFetch=false] TODO\n */\nfunction HttpAdapter (opts) {\n const self = this\n opts || (opts = {})\n utils.fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\n\n/**\n * @name module:js-data-http.HttpAdapter\n * @see HttpAdapter\n */\nexports.HttpAdapter = HttpAdapter\n\n// Setup prototype inheritance from Adapter\nHttpAdapter.prototype = Object.create(Adapter.prototype, {\n constructor: {\n value: HttpAdapter,\n enumerable: false,\n writable: true,\n configurable: true\n }\n})\n\nObject.defineProperty(HttpAdapter, '__super__', {\n configurable: true,\n value: Adapter\n})\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * @example Using the ES2015 class syntax.\n * class MyHttpAdapter extends HttpAdapter {...}\n * const adapter = new MyHttpAdapter()\n *\n * @example Using {@link HttpAdapter.extend}.\n * var instanceProps = {...}\n * var classProps = {...}\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n *\n * @name HttpAdapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `HttpAdapter`.\n */\nHttpAdapter.extend = utils.extend\n\nutils.addHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterDEL\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterDEL: noop2,\n\n /**\n * @name HttpAdapter#afterGET\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterGET: noop2,\n\n /**\n * @name HttpAdapter#afterHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterHTTP: noop2,\n\n /**\n * @name HttpAdapter#afterPOST\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPOST: noop2,\n\n /**\n * @name HttpAdapter#afterPUT\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPUT: noop2,\n\n /**\n * @name HttpAdapter#beforeDEL\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeDEL: noop,\n\n /**\n * @name HttpAdapter#beforeGET\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeGET: noop,\n\n /**\n * @name HttpAdapter#beforeHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n */\n beforeHTTP: noop,\n\n /**\n * @name HttpAdapter#beforePOST\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePOST: noop,\n\n /**\n * @name HttpAdapter#beforePUT\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePUT: noop,\n\n _count (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('count', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _create (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _createMany (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroy (mapper, id, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroyAll (mapper, query, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _end (mapper, opts, response) {\n return [this.deserialize(mapper, response, opts), response]\n },\n\n _find (mapper, id, opts) {\n const self = this\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _findAll (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _sum (mapper, field, query, opts) {\n const self = this\n return self.GET(\n self.getPath('sum', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _update (mapper, id, props, opts) {\n const self = this\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateAll (mapper, props, query, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateMany (mapper, records, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n /**\n * Retrieve the number of records that match the selection `query`.\n *\n * @name HttpAdapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n count (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params.count = true\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.count.call(self, mapper, query, opts)\n },\n\n /**\n * Create a new the record from the provided `props`.\n *\n * @name HttpAdapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props Properties to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n create (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.create.call(self, mapper, props, opts)\n },\n\n /**\n * Create multiple new records in batch.\n *\n * @name HttpAdapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} props Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n createMany (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.createMany.call(self, mapper, props, opts)\n },\n\n /**\n * Make an Http request to `url` according to the configuration in `config`.\n *\n * @name HttpAdapter#DEL\n * @method\n * @param {string} url Url for the request.\n * @param {Object} [config] Http configuration that will be passed to\n * {@link HttpAdapter#HTTP}.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n DEL (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'delete'\n\n // beforeDEL lifecycle hook\n op = opts.op = 'beforeDEL'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'DEL'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterDEL lifecycle hook\n op = opts.op = 'afterDEL'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * Transform the server response object into the payload that will be returned\n * to JSData.\n *\n * @name HttpAdapter#deserialize\n * @method\n * @param {Object} mapper The mapper used for the operation.\n * @param {Object} response Response object from {@link HttpAdapter#HTTP}.\n * @param {Object} opts Configuration options.\n * @return {(Object|Array)} Deserialized data.\n */\n deserialize (mapper, response, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (utils.isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response && response.hasOwnProperty('data')) {\n return response.data\n }\n return response\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @name HttpAdapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroy (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroy.call(self, mapper, id, opts)\n },\n\n /**\n * Destroy the records that match the selection `query`.\n *\n * @name HttpAdapter#destroyAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroyAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroyAll.call(self, mapper, query, opts)\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter#error\n * @method\n * @param {...*} [args] Arguments to log.\n */\n error (...args) {\n if (console) {\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\n }\n },\n\n /**\n * Make an Http request using `window.fetch`.\n *\n * @name HttpAdapter#fetch\n * @method\n * @param {Object} config Request configuration.\n * @param {Object} config.data Payload for the request.\n * @param {string} config.method Http method for the request.\n * @param {Object} config.headers Headers for the request.\n * @param {Object} config.params Querystring for the request.\n * @param {string} config.url Url for the request.\n * @param {Object} [opts] Configuration options.\n */\n fetch (config, opts) {\n const requestConfig = {\n method: config.method,\n // turn the plain headers object into the Fetch Headers object\n headers: new Headers(config.headers)\n }\n\n if (config.data) {\n requestConfig.body = utils.toJson(config.data)\n }\n\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\n response.config = {\n method: config.method,\n url: config.url\n }\n return response.json().then(function (data) {\n response.data = data\n return response\n })\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @name HttpAdapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n find (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.find.call(self, mapper, id, opts)\n },\n\n /**\n * Retrieve the records that match the selection `query`.\n *\n * @name HttpAdapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n findAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.findAll.call(self, mapper, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#GET\n * @method\n * @param {string} url The url for the request.\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n GET (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'get'\n\n // beforeGET lifecycle hook\n op = opts.op = 'beforeGET'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'GET'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterGET lifecycle hook\n op = opts.op = 'afterGET'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * @name HttpAdapter#getEndpoint\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {boolean} opts TODO\n * @return {string} Full path.\n */\n getEndpoint (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = utils.isUndefined(opts.params) ? {} : opts.params\n const relationList = mapper.relationList || []\n let endpoint = utils.isUndefined(opts.endpoint) ? (utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint\n\n relationList.forEach(function (def) {\n if (def.type !== 'belongsTo' || !def.parent) {\n return\n }\n let item\n const parentKey = def.foreignKey\n const parentDef = def.getRelation()\n let parentId = opts.params[parentKey]\n\n if (parentId === false || !parentKey || !parentDef) {\n if (parentId === false) {\n delete opts.params[parentKey]\n }\n return false\n } else {\n delete opts.params[parentKey]\n\n if (utils.isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? utils.get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n utils.forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n utils._(_opts, parentDef)\n endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint)\n return false\n }\n }\n })\n\n return endpoint\n },\n\n /**\n * @name HttpAdapter#getPath\n * @method\n * @param {string} method TODO\n * @param {Object} mapper TODO\n * @param {(string|number)?} id TODO\n * @param {Object} opts Configuration options.\n */\n getPath (method, mapper, id, opts) {\n const self = this\n opts || (opts = {})\n const args = [\n utils.isUndefined(opts.basePath) ? (utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (utils.isString(id) || utils.isNumber(id) || method === 'create') ? id : null, opts)\n ]\n if (method === 'find' || method === 'update' || method === 'destroy') {\n args.push(id)\n }\n return makePath.apply(utils, args)\n },\n\n getParams (opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.params)) {\n return {}\n }\n return utils.copy(opts.params)\n },\n\n getSuffix (mapper, opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.suffix)) {\n if (utils.isUndefined(mapper.suffix)) {\n return this.suffix\n }\n return mapper.suffix\n }\n return opts.suffix\n },\n\n /**\n * Make an Http request.\n *\n * @name HttpAdapter#HTTP\n * @method\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n HTTP (config, opts) {\n const self = this\n const start = new Date()\n opts || (opts = {})\n const payload = config.data\n const cache = config.cache\n const timeout = config.timeout\n config = utils.copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = utils.deepMixIn(config, self.httpConfig)\n config.data = payload\n config.cache = cache\n config.timeout = timeout\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\n config.url += '/'\n }\n config.method = config.method.toUpperCase()\n const suffix = config.suffix || opts.suffix || self.suffix\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\n config.url += suffix\n }\n\n function logResponse (data) {\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\n if (data.status >= 200 && data.status < 300) {\n if (self.log) {\n self.dbg('debug', str, data)\n }\n return data\n } else {\n if (self.error) {\n self.error(`'FAILED: ${str}`, data)\n }\n return utils.reject(data)\n }\n }\n\n if (!self.http) {\n throw new Error('You have not configured this adapter with an http library!')\n }\n\n return utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) {\n config = _config || config\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\n return self.fetch(config, opts).then(logResponse, logResponse)\n }\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\n return self.responseError(err, config, opts)\n })\n }).then(function (response) {\n return utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#POST\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n POST (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'post'\n\n // beforePOST lifecycle hook\n op = opts.op = 'beforePOST'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'POST'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPOST lifecycle hook\n op = opts.op = 'afterPOST'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#PUT\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n PUT (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'put'\n\n // beforePUT lifecycle hook\n op = opts.op = 'beforePUT'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'PUT'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPUT lifecycle hook\n op = opts.op = 'afterPUT'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#queryTransform\n * @method\n * @param {Object} mapper TODO\n * @param {*} params TODO\n * @param {*} opts TODO\n * @return {*} Transformed params.\n */\n queryTransform (mapper, params, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (utils.isFunction(mapper.queryTransform)) {\n return mapper.queryTransform(mapper, params, opts)\n }\n return params\n },\n\n /**\n * Error handler invoked when the promise returned by {@link HttpAdapter#http}\n * is rejected. Default implementation is to just return the error wrapped in\n * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is\n * called by {@link HttpAdapter#HTTP}.\n *\n * @name HttpAdapter#responseError\n * @method\n * @param {*} err The error that {@link HttpAdapter#http} rejected with.\n * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}.\n * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}.\n * @return {Promise}\n */\n responseError (err, config, opts) {\n return utils.reject(err)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#serialize\n * @method\n * @param {Object} mapper TODO\n * @param {Object} data TODO\n * @param {*} opts TODO\n * @return {*} Serialized data.\n */\n serialize (mapper, data, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (utils.isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\n },\n\n /**\n * Retrieve the sum of the field of the records that match the selection query.\n *\n * @name HttpAdapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field The field to sum.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n sum (mapper, field, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n if (!utils.utils.isString(field)) {\n throw new Error('field must be a string!')\n }\n opts.params = self.getParams(opts)\n opts.params.sum = field\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.sum.call(self, mapper, field, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#update\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {*} props TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n update (mapper, id, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.update.call(self, mapper, id, props, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#updateAll\n * @method\n * @param {Object} mapper TODO\n * @param {Object} props TODO\n * @param {Object} query TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n updateAll (mapper, props, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateAll.call(self, mapper, props, query, opts)\n },\n\n /**\n * Update multiple records in batch.\n *\n * {@link HttpAdapter#beforeUpdateMany} will be called before calling\n * {@link HttpAdapter#PUT}.\n * {@link HttpAdapter#afterUpdateMany} will be called after calling\n * {@link HttpAdapter#PUT}.\n *\n * @name HttpAdapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} records Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n updateMany (mapper, records, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateMany.call(self, mapper, records, opts)\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name module:js-data-http.addAction\n * @method\n * @param {string} name Name of the new action.\n * @param {Object} [opts] Action configuration\n * @param {string} [opts.adapter]\n * @param {string} [opts.pathname]\n * @param {Function} [opts.request]\n * @param {Function} [opts.response]\n * @param {Function} [opts.responseError]\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addAction = function addAction (name, opts) {\n if (!name || !utils.isString(name)) {\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\n }\n return function (mapper) {\n if (mapper[name]) {\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\n }\n opts.request = opts.request || function (config) { return config }\n opts.response = opts.response || function (response) { return response }\n opts.responseError = opts.responseError || function (err) { return utils.reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (utils.isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n utils.fillIn(config, opts)\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\n _opts.endpoint = config.endpoint\n }\n if (typeof _opts.getEndpoint === 'function') {\n config.url = _opts.getEndpoint(self, _opts)\n } else {\n let args = [\n _opts.basePath || self.basePath || adapter.basePath,\n adapter.getEndpoint(self, utils.isSorN(id) ? id : null, _opts)\n ]\n if (utils.isSorN(id)) {\n args.push(id)\n }\n args.push(opts.pathname || name)\n config.url = makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.mapper = self.name\n utils.deepMixIn(config)(_opts)\n return utils.resolve(config)\n .then(_opts.request || opts.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.mapper = self.name\n }\n return data\n })\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\n }\n return mapper\n }\n}\n\n/**\n * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for\n * action configuration options.\n *\n * @name module:js-data-http.addActions\n * @method\n * @param {Object.} opts Object where the key is an action name\n * and the value is the configuration for the action.\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addActions = function addActions (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n exports.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name module:js-data-http.version\n * @type {Object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexports.version = '<%= version %>'\n\n/**\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\n * as `js-data-fetch`.\n *\n * __Script tag__:\n * ```javascript\n * window.HttpAdapter\n * ```\n * __CommonJS__:\n * ```javascript\n * var HttpAdapter = require('js-data-http')\n * ```\n * __ES6 Modules__:\n * ```javascript\n * import HttpAdapter from 'js-data-http'\n * ```\n * __AMD__:\n * ```javascript\n * define('myApp', ['js-data-http'], function (HttpAdapter) { ... })\n * ```\n *\n * @module js-data-http\n */\nexports.default = HttpAdapter\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}\n ** module id = 1\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['exports', 'js-data'], factory) :\n (factory((global.Adapter = global.Adapter || {}),global.JSData));\n}(this, function (exports,jsData) { 'use strict';\n\n var babelHelpers = {};\n babelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n babelHelpers.defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n };\n\n babelHelpers.slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n babelHelpers;\n\n var noop = function noop() {\n var self = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = args[args.length - 1];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var noop2 = function noop2() {\n var self = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var opts = args[args.length - 2];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var unique = function unique(array) {\n var seen = {};\n var final = [];\n array.forEach(function (item) {\n if (item in seen) {\n return;\n }\n final.push(item);\n seen[item] = 0;\n });\n return final;\n };\n\n var withoutRelations = function withoutRelations(mapper, props) {\n return jsData.utils.omit(props, mapper.relationFields || []);\n };\n\n var DEFAULTS = {\n /**\n * Whether to log debugging information.\n *\n * @name Adapter#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\n\n /**\n * Whether to return a more detailed response object.\n *\n * @name Adapter#raw\n * @type {boolean}\n * @default false\n */\n raw: false\n };\n\n /**\n * Abstract class meant to be extended by adapters.\n *\n * @class Adapter\n * @abstract\n * @param {Object} [opts] Configuration opts.\n * @param {boolean} [opts.debug=false] Whether to log debugging information.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed response\n * object.\n */\n function Adapter(opts) {\n var self = this;\n opts || (opts = {});\n jsData.utils.fillIn(opts, DEFAULTS);\n jsData.utils.fillIn(self, opts);\n }\n\n var reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where'];\n\n /**\n * Response object used when `raw` is `true`. May contain other fields in\n * addition to `data`.\n *\n * @class Response\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n\n /**\n * Response data.\n *\n * @name Response#data\n * @type {*}\n */\n self.data = data;\n\n jsData.utils.fillIn(self, meta);\n\n /**\n * The operation for which the response was created.\n *\n * @name Response#op\n * @type {string}\n */\n self.op = op;\n }\n\n /**\n * Alternative to ES6 class syntax for extending `Adapter`.\n *\n * @name Adapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `Adapter`.\n */\n Adapter.extend = jsData.utils.extend;\n\n jsData.utils.addHiddenPropsToTarget(Adapter.prototype, {\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#afterCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} props The `props` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `afterCount`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCount: noop2,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `afterCreate`\n * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreate: noop2,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `afterCreateMany`\n * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreateMany: noop2,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#afterDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `afterDestroy`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroy: noop2,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#afterDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `afterDestroyAll`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroyAll: noop2,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#afterFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `afterFind`\n * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFind: noop2,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#afterFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `afterFindAll`\n * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFindAll: noop2,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#afterSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {string} field The `field` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `afterSum`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterSum: noop2,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#afterUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `afterUpdate`\n * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdate: noop2,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#afterUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `afterUpdateAll`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateAll: noop2,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#afterUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} records The `records` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `afterUpdateMany`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateMany: noop2,\n\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#beforeCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} query The `query` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `beforeCount`\n */\n beforeCount: noop,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#beforeCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `beforeCreate`\n */\n beforeCreate: noop,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#beforeCreateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `beforeCreateMany`\n */\n beforeCreateMany: noop,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#beforeDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `beforeDestroy`\n */\n beforeDestroy: noop,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#beforeDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `beforeDestroyAll`\n */\n beforeDestroyAll: noop,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#beforeFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `beforeFind`\n */\n beforeFind: noop,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#beforeFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `beforeFindAll`\n */\n beforeFindAll: noop,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#beforeSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `beforeSum`\n */\n beforeSum: noop,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#beforeUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `beforeUpdate`\n */\n beforeUpdate: noop,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#beforeUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `beforeUpdateAll`\n */\n beforeUpdateAll: noop,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#beforeUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} props The `props` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `beforeUpdateMany`\n */\n beforeUpdateMany: noop,\n\n /**\n * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`.\n *\n * @name Adapter#dbg\n * @method\n */\n dbg: function dbg() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this.log.apply(this, ['debug'].concat(args));\n },\n\n\n /**\n * Retrieve the number of records that match the selection query. Called by\n * `Mapper#count`.\n *\n * @name Adapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n count: function count(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeCount lifecycle hook\n op = opts.op = 'beforeCount';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'count';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._count(mapper, query, opts));\n }).then(function (results) {\n var _results = babelHelpers.slicedToArray(results, 2);\n\n var data = _results[0];\n var result = _results[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterCount lifecycle hook\n op = opts.op = 'afterCount';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create a new record. Called by `Mapper#create`.\n *\n * @name Adapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The record to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n create: function create(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._create(mapper, props, opts));\n }).then(function (results) {\n var _results2 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results2[0];\n var result = _results2[1];\n\n result || (result = {});\n var response = new Response(data, result, 'create');\n response.created = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create multiple records in a single batch. Called by `Mapper#createMany`.\n *\n * @name Adapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The records to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n createMany: function createMany(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = props.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'createMany';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._createMany(mapper, props, opts));\n }).then(function (results) {\n var _results3 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results3[0];\n var result = _results3[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'createMany');\n response.created = data.length;\n response = self.respond(response, opts);\n\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the record with the given primary key. Called by\n * `Mapper#destroy`.\n *\n * @name Adapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroy: function destroy(mapper, id, opts) {\n var self = this;\n var op = void 0;\n opts || (opts = {});\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._destroy(mapper, id, opts));\n }).then(function (results) {\n var _results4 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results4[0];\n var result = _results4[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroy');\n response = self.respond(response, opts);\n\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the records that match the selection query. Called by\n * `Mapper#destroyAll`.\n *\n * @name Adapter#destroyAll\n * @method\n * @param {Object} mapper the mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroyAll: function destroyAll(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._destroyAll(mapper, query, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results5[0];\n var result = _results5[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Load a belongsTo relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadBelongsTo\n * @method\n * @return {Promise}\n */\n loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) {\n var self = this;\n var relationDef = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n var _ret = function () {\n var record = records;\n return {\n v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) {\n def.setLocalField(record, relatedItem);\n })\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.v;\n } else {\n var keys = records.map(function (record) {\n return self.makeBelongsToForeignKey(mapper, def, record);\n }).filter(function (key) {\n return key;\n });\n return self.findAll(relationDef, {\n where: babelHelpers.defineProperty({}, relationDef.idAttribute, {\n 'in': keys\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n relatedItems.forEach(function (relatedItem) {\n if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) {\n def.setLocalField(record, relatedItem);\n }\n });\n });\n });\n }\n },\n\n\n /**\n * Retrieve the record with the given primary key. Called by `Mapper#find`.\n *\n * @name Adapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n find: function find(mapper, id, opts) {\n var self = this;\n var record = void 0,\n op = void 0;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results6[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasOne') {\n task = self.loadHasOne(mapper, def, record, __opts);\n } else {\n task = self.loadHasMany(mapper, def, record, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, record, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, record, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, record, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(record, {}, 'find');\n response.found = record ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterFind lifecycle hook\n op = opts.op = 'afterFind';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @name Adapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n findAll: function findAll(mapper, query, opts) {\n var self = this;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n var records = [];\n var op = void 0;\n var activeWith = opts._activeWith;\n\n if (jsData.utils.isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n jsData.utils.deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results7[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasMany') {\n task = self.loadHasMany(mapper, def, records, __opts);\n } else {\n task = self.loadHasOne(mapper, def, records, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, records, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, records, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, records, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(records, {}, 'findAll');\n response.found = records.length;\n response = self.respond(response, opts);\n\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Resolve the value of the specified option based on the given options and\n * this adapter's settings. Override with care.\n *\n * @name Adapter#getOpt\n * @method\n * @param {string} opt The name of the option.\n * @param {Object} [opts] Configuration options.\n * @return {*} The value of the specified option.\n */\n getOpt: function getOpt(opt, opts) {\n opts || (opts = {});\n return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]);\n },\n\n\n /**\n * Load a hasMany relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasMany\n * @method\n * @return {Promise}\n */\n loadHasMany: function loadHasMany(mapper, def, records, __opts) {\n var self = this;\n var singular = false;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n singular = true;\n records = [records];\n }\n var IDs = records.map(function (record) {\n return self.makeHasManyForeignKey(mapper, def, record);\n });\n var query = {\n where: {}\n };\n var criteria = query.where[def.foreignKey] = {};\n if (singular) {\n // more efficient query when we only have one record\n criteria['=='] = IDs[0];\n } else {\n criteria['in'] = IDs.filter(function (id) {\n return id;\n });\n }\n return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n var attached = [];\n // avoid unneccesary iteration when we only have one record\n if (singular) {\n attached = relatedItems;\n } else {\n relatedItems.forEach(function (relatedItem) {\n if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) {\n attached.push(relatedItem);\n }\n });\n }\n def.setLocalField(record, attached);\n });\n });\n },\n loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) {\n var self = this;\n var record = void 0;\n var relatedMapper = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': self.makeHasManyLocalKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n var _ret2 = function () {\n var localKeys = [];\n records.forEach(function (record) {\n localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record));\n });\n return {\n v: self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': unique(localKeys).filter(function (x) {\n return x;\n })\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (item) {\n var attached = [];\n var itemKeys = jsData.utils.get(item, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n relatedItems.forEach(function (relatedItem) {\n if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) {\n attached.push(relatedItem);\n }\n });\n def.setLocalField(item, attached);\n });\n return relatedItems;\n })\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.v;\n }\n },\n loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) {\n var self = this;\n var relatedMapper = def.getRelation();\n var idAttribute = mapper.idAttribute;\n var record = void 0;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(def.getRelation(), {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'contains': self.makeHasManyForeignKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'isectNotEmpty': records.map(function (record) {\n return self.makeHasManyForeignKeys(mapper, def, record);\n })\n })\n }, __opts).then(function (relatedItems) {\n var foreignKeysField = def.foreignKeys;\n records.forEach(function (record) {\n var _relatedItems = [];\n var id = jsData.utils.get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || [];\n if (foreignKeys.indexOf(id) !== -1) {\n _relatedItems.push(relatedItem);\n }\n });\n def.setLocalField(record, _relatedItems);\n });\n });\n }\n },\n\n\n /**\n * Load a hasOne relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasOne\n * @method\n * @return {Promise}\n */\n loadHasOne: function loadHasOne(mapper, def, records, __opts) {\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n records = [records];\n }\n return this.loadHasMany(mapper, def, records, __opts).then(function () {\n records.forEach(function (record) {\n var relatedData = def.getLocalField(record);\n if (jsData.utils.isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\n },\n\n\n /**\n * Logging utility method. Override this method if you want to send log\n * messages to something other than the console.\n *\n * @name Adapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} values Values to log.\n */\n log: function log(level) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (level && !args.length) {\n args.push(level);\n level = 'debug';\n }\n if (level === 'debug' && !this.debug) {\n return;\n }\n var prefix = level.toUpperCase() + ': (Adapter)';\n if (console[level]) {\n var _console;\n\n (_console = console)[level].apply(_console, [prefix].concat(args));\n } else {\n var _console2;\n\n (_console2 = console).log.apply(_console2, [prefix].concat(args));\n }\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * There may be reasons why you may want to override this method, like when\n * the id of the parent doesn't exactly match up to the key on the child.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKey\n * @method\n * @return {*}\n */\n makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyLocalKeys\n * @method\n * @return {*}\n */\n makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) {\n var localKeys = [];\n var itemKeys = jsData.utils.get(record, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n localKeys = localKeys.concat(itemKeys);\n return unique(localKeys).filter(function (x) {\n return x;\n });\n },\n\n\n /**\n * Return the foreignKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKeys\n * @method\n * @return {*}\n */\n makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) {\n return jsData.utils.get(record, mapper.idAttribute);\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeBelongsToForeignKey\n * @method\n * @return {*}\n */\n makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Retrieve sum of the specified field of the records that match the selection\n * query. Called by `Mapper#sum`.\n *\n * @name Adapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field By to sum.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n sum: function sum(mapper, field, query, opts) {\n var self = this;\n var op = void 0;\n if (!jsData.utils.isString(field)) {\n throw new Error('field must be a string!');\n }\n query || (query = {});\n opts || (opts = {});\n\n // beforeSum lifecycle hook\n op = opts.op = 'beforeSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'sum';\n self.dbg(op, mapper, field, query, opts);\n return jsData.utils.resolve(self._sum(mapper, field, query, opts));\n }).then(function (results) {\n var _results8 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results8[0];\n var result = _results8[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterSum lifecycle hook\n op = opts.op = 'afterSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * @name Adapter#respond\n * @method\n * @param {Object} response Response object.\n * @param {Object} opts Configuration options.\n * return {Object} If `opts.raw == true` then return `response`, else return\n * `response.data`.\n */\n respond: function respond(response, opts) {\n return this.getOpt('raw', opts) ? response : response.data;\n },\n\n\n /**\n * Apply the given update to the record with the specified primary key. Called\n * by `Mapper#update`.\n *\n * @name Adapter#update\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {Object} props The update to apply to the record.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n update: function update(mapper, id, props, opts) {\n var self = this;\n props || (props = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return jsData.utils.resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results9 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results9[0];\n var result = _results9[1];\n\n result || (result = {});\n var response = new Response(data, result, 'update');\n response.updated = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Apply the given update to all records that match the selection query.\n * Called by `Mapper#updateAll`.\n *\n * @name Adapter#updateAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateAll: function updateAll(mapper, props, query, opts) {\n var self = this;\n props || (props = {});\n query || (query = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return jsData.utils.resolve(self._updateAll(mapper, props, query, opts));\n }).then(function (results) {\n var _results10 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results10[0];\n var result = _results10[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateAll');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Update the given records in a single batch. Called by `Mapper#updateMany`.\n *\n * @name Adapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object[]} records The records to update.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateMany: function updateMany(mapper, records, opts) {\n var self = this;\n records || (records = []);\n opts || (opts = {});\n var op = void 0;\n var idAttribute = mapper.idAttribute;\n\n records = records.filter(function (record) {\n return jsData.utils.get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = jsData.utils.isUndefined(_records) ? records : _records;\n records = records.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'updateMany';\n self.dbg(op, mapper, records, opts);\n return jsData.utils.resolve(self._updateMany(mapper, records, opts));\n }).then(function (results) {\n var _results11 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results11[0];\n var result = _results11[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateMany');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n exports.noop = noop;\n exports.noop2 = noop2;\n exports.unique = unique;\n exports.withoutRelations = withoutRelations;\n exports.Adapter = Adapter;\n exports.reserved = reserved;\n exports.Response = Response;\n\n}));\n//# sourceMappingURL=js-data-adapter.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/js-data-adapter/dist/js-data-adapter.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = require('./lib/axios');\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/index.js\n ** module id = 3\n ** module chunks = 0\n **/","'use strict';\n\nvar defaults = require('./defaults');\nvar utils = require('./utils');\nvar dispatchRequest = require('./core/dispatchRequest');\nvar InterceptorManager = require('./core/InterceptorManager');\nvar isAbsoluteURL = require('./helpers/isAbsoluteURL');\nvar combineURLs = require('./helpers/combineURLs');\nvar bind = require('./helpers/bind');\nvar transformData = require('./helpers/transformData');\n\nfunction Axios(defaultConfig) {\n this.defaults = utils.merge({}, defaultConfig);\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Don't allow overriding defaults.withCredentials\n config.withCredentials = config.withCredentials || this.defaults.withCredentials;\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nvar defaultInstance = new Axios(defaults);\nvar axios = module.exports = bind(Axios.prototype.request, defaultInstance);\n\n// Expose properties from defaultInstance\naxios.defaults = defaultInstance.defaults;\naxios.interceptors = defaultInstance.interceptors;\n\n// Factory for creating new instances\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n axios[method] = bind(Axios.prototype[method], defaultInstance);\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n axios[method] = bind(Axios.prototype[method], defaultInstance);\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/axios.js\n ** module id = 4\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./utils');\n\nvar PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/;\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nmodule.exports = {\n transformRequest: [function transformRequest(data, headers) {\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isStream(data)) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) {\n // Set application/json if no Content-Type has been specified\n if (!utils.isUndefined(headers)) {\n utils.forEach(headers, function processContentTypeHeader(val, key) {\n if (key.toLowerCase() === 'content-type') {\n headers['Content-Type'] = val;\n }\n });\n\n if (utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = 'application/json;charset=utf-8';\n }\n }\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n data = data.replace(PROTECTION_PREFIX, '');\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n },\n patch: utils.merge(DEFAULT_CONTENT_TYPE),\n post: utils.merge(DEFAULT_CONTENT_TYPE),\n put: utils.merge(DEFAULT_CONTENT_TYPE)\n },\n\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/defaults.js\n ** module id = 5\n ** module chunks = 0\n **/","'use strict';\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * typeof document.createElement -> undefined\n */\nfunction isStandardBrowserEnv() {\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object' && !isArray(obj)) {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n trim: trim\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/utils.js\n ** module id = 6\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Dispatch a request to the server using whichever adapter\n * is supported by the current environment.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n return new Promise(function executor(resolve, reject) {\n try {\n var adapter;\n\n if (typeof config.adapter === 'function') {\n // For custom adapter support\n adapter = config.adapter;\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n\n if (typeof adapter === 'function') {\n adapter(resolve, reject, config);\n }\n } catch (e) {\n reject(e);\n }\n });\n};\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/core/dispatchRequest.js\n ** module id = 7\n ** module chunks = 0\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/process/browser.js\n ** module id = 8\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar transformData = require('./../helpers/transformData');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar btoa = (typeof window !== 'undefined' && window.btoa) || require('./../helpers/btoa');\nvar settle = require('../helpers/settle');\n\nmodule.exports = function xhrAdapter(resolve, reject, config) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' && typeof window !== 'undefined' && window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // For IE 9 CORS support.\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n if (request.status === 0) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: transformData(\n responseData,\n responseHeaders,\n config.transformResponse\n ),\n // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new Error('Network Error'));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var err = new Error('timeout of ' + config.timeout + 'ms exceeded');\n err.timeout = config.timeout;\n err.code = 'ECONNABORTED';\n reject(err);\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n if (request.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (config.progress) {\n if (config.method === 'post' || config.method === 'put') {\n request.upload.addEventListener('progress', config.progress);\n } else if (config.method === 'get') {\n request.addEventListener('progress', config.progress);\n }\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/adapters/xhr.js\n ** module id = 9\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n }\n\n if (!utils.isArray(val)) {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/buildURL.js\n ** module id = 10\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/parseHeaders.js\n ** module id = 11\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/transformData.js\n ** module id = 12\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/isURLSameOrigin.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/btoa.js\n ** module id = 14\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(response);\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/settle.js\n ** module id = 15\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/cookies.js\n ** module id = 16\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/core/InterceptorManager.js\n ** module id = 17\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/isAbsoluteURL.js\n ** module id = 18\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '');\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/combineURLs.js\n ** module id = 19\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/bind.js\n ** module id = 20\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/spread.js\n ** module id = 21\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 5ca3dba1258af7fede7c","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///./~/js-data-adapter/dist/js-data-adapter.js","webpack:///./~/axios/index.js","webpack:///./~/axios/lib/axios.js","webpack:///./~/axios/lib/defaults.js","webpack:///./~/axios/lib/utils.js","webpack:///./~/axios/lib/core/dispatchRequest.js","webpack:///./~/process/browser.js","webpack:///./~/axios/lib/adapters/xhr.js","webpack:///./~/axios/lib/helpers/buildURL.js","webpack:///./~/axios/lib/helpers/parseHeaders.js","webpack:///./~/axios/lib/helpers/transformData.js","webpack:///./~/axios/lib/helpers/isURLSameOrigin.js","webpack:///./~/axios/lib/helpers/btoa.js","webpack:///./~/axios/lib/helpers/settle.js","webpack:///./~/axios/lib/helpers/cookies.js","webpack:///./~/axios/lib/core/InterceptorManager.js","webpack:///./~/axios/lib/helpers/isAbsoluteURL.js","webpack:///./~/axios/lib/helpers/combineURLs.js","webpack:///./~/axios/lib/helpers/bind.js","webpack:///./~/axios/lib/helpers/spread.js"],"names":[],"mappings":"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;;;;;;AA8BA,SAAQ,OAAR,GAAkB,WAAlB,C;;;;;;AC7wCA,gD;;;;;;ACAA;AACA;AACA;AACA,kDAAiD;AACjD,EAAC,kCAAkC;;AAEnC;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD,+BAA+B;AAChF;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA,oEAAmE,aAAa;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAsE,eAAe;AACrF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,OAAO;AACpB;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,6BAA6B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,8BAA8B,eAAe;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,+BAA+B,eAAe;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,gCAAgC,eAAe;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,iCAAiC,eAAe;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAwE,eAAe;AACvF;AACA;;AAEA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP,+CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP,gDAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,EAAE;AAClB;AACA;AACA,yBAAwB;AACxB;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,oDAAmD;AACnD;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA,gDAA+C;AAC/C;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB;AACA;AACA,6FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD,4C;;;;;;AC/mDA,yC;;;;;;ACAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA,kDAAiD,gBAAgB;;AAEjE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAA+B;AAC/B,wCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;;;;;;ACtHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,uDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO,YAAY;AACnB;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;ACjEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC,OAAO;AAC1C;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,SAAS,GAAG,SAAS;AAC5C,4BAA2B;AAC3B;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,wCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzQA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;;;;;;;;;AChCA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU;;;;;;;AC1FtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACnKA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;ACjEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,eAAe;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;;;;;;ACpCA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,cAAc;AACzB,YAAW,MAAM;AACjB,YAAW,eAAe;AAC1B,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;;;;;;ACnBA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,iBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,eAAc,OAAO;AACrB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;;;;;;ACnEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;;AAEA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;;;;;;ACjBA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAwC;AACxC,QAAO;;AAEP;AACA,2DAA0D,wBAAwB;AAClF;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,iCAAgC;AAChC,8BAA6B,aAAa,EAAE;AAC5C;AACA;AACA,IAAG;AACH;;;;;;;ACpDA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACnDA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACbA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;;;;;;ACXA;;AAEA;AACA;AACA;AACA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;;;;;;ACVA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA,YAAW,SAAS;AACpB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA","file":"./dist/js-data-http.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"js-data\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"js-data\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSDataHttp\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"JSDataHttp\"] = factory(root[\"JSData\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 5ca3dba1258af7fede7c\n **/","/* global fetch:true Headers:true Request:true */\n\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport {\n Adapter,\n noop,\n noop2\n} from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nfunction isValidString (value) {\n return (value != null && value !== '')\n}\nfunction join (items, separator) {\n separator || (separator = '')\n return items.filter(isValidString).join(separator)\n}\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nfunction encode (val) {\n return encodeURIComponent(val)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+')\n .replace(/%5B/gi, '[')\n .replace(/%5D/gi, ']')\n}\n\nfunction buildUrl (url, params) {\n if (!params) {\n return url\n }\n\n const parts = []\n\n utils.forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!utils.isArray(val)) {\n val = [val]\n }\n\n val.forEach(function (v) {\n if (window.toString.call(v) === '[object Date]') {\n v = v.toISOString()\n } else if (utils.isObject(v)) {\n v = utils.toJson(v)\n }\n parts.push(`${encode(key)}=${encode(v)}`)\n })\n })\n\n if (parts.length > 0) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\n }\n\n return url\n}\n\nconst __super__ = Adapter.prototype\n\nconst DEFAULTS = {\n // Default and user-defined settings\n /**\n * @name HttpAdapter#basePath\n * @type {string}\n */\n basePath: '',\n\n /**\n * @name HttpAdapter#forceTrailingSlash\n * @type {boolean}\n * @default false\n */\n forceTrailingSlash: false,\n\n /**\n * @name HttpAdapter#http\n * @type {Function}\n */\n http: axios,\n\n /**\n * @name HttpAdapter#httpConfig\n * @type {Object}\n */\n httpConfig: {},\n\n /**\n * @name HttpAdapter#suffix\n * @type {string}\n */\n suffix: '',\n\n /**\n * @name HttpAdapter#useFetch\n * @type {boolean}\n * @default false\n */\n useFetch: false\n}\n\n/**\n * HttpAdapter class.\n *\n * @class HttpAdapter\n * @extends Adapter\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.basePath=''] TODO\n * @param {boolean} [opts.debug=false] TODO\n * @param {boolean} [opts.forceTrailingSlash=false] TODO\n * @param {Object} [opts.http=axios] TODO\n * @param {Object} [opts.httpConfig={}] TODO\n * @param {string} [opts.suffix=''] TODO\n * @param {boolean} [opts.useFetch=false] TODO\n */\nfunction HttpAdapter (opts) {\n const self = this\n opts || (opts = {})\n utils.fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\n\n/**\n * @name module:js-data-http.HttpAdapter\n * @see HttpAdapter\n */\nexports.HttpAdapter = HttpAdapter\n\n// Setup prototype inheritance from Adapter\nHttpAdapter.prototype = Object.create(Adapter.prototype, {\n constructor: {\n value: HttpAdapter,\n enumerable: false,\n writable: true,\n configurable: true\n }\n})\n\nObject.defineProperty(HttpAdapter, '__super__', {\n configurable: true,\n value: Adapter\n})\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * @example Using the ES2015 class syntax.\n * class MyHttpAdapter extends HttpAdapter {...}\n * const adapter = new MyHttpAdapter()\n *\n * @example Using {@link HttpAdapter.extend}.\n * var instanceProps = {...}\n * var classProps = {...}\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n *\n * @name HttpAdapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `HttpAdapter`.\n */\nHttpAdapter.extend = utils.extend\n\nutils.addHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterDEL\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterDEL: noop2,\n\n /**\n * @name HttpAdapter#afterGET\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterGET: noop2,\n\n /**\n * @name HttpAdapter#afterHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterHTTP: noop2,\n\n /**\n * @name HttpAdapter#afterPOST\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPOST: noop2,\n\n /**\n * @name HttpAdapter#afterPUT\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPUT: noop2,\n\n /**\n * @name HttpAdapter#beforeDEL\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeDEL: noop,\n\n /**\n * @name HttpAdapter#beforeGET\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeGET: noop,\n\n /**\n * @name HttpAdapter#beforeHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n */\n beforeHTTP: noop,\n\n /**\n * @name HttpAdapter#beforePOST\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePOST: noop,\n\n /**\n * @name HttpAdapter#beforePUT\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePUT: noop,\n\n _count (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('count', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _create (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _createMany (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroy (mapper, id, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroyAll (mapper, query, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _end (mapper, opts, response) {\n return [this.deserialize(mapper, response, opts), response]\n },\n\n _find (mapper, id, opts) {\n const self = this\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _findAll (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _sum (mapper, field, query, opts) {\n const self = this\n return self.GET(\n self.getPath('sum', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _update (mapper, id, props, opts) {\n const self = this\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateAll (mapper, props, query, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateMany (mapper, records, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n /**\n * Retrieve the number of records that match the selection `query`.\n *\n * @name HttpAdapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n count (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params.count = true\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.count.call(self, mapper, query, opts)\n },\n\n /**\n * Create a new the record from the provided `props`.\n *\n * @name HttpAdapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props Properties to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n create (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.create.call(self, mapper, props, opts)\n },\n\n /**\n * Create multiple new records in batch.\n *\n * @name HttpAdapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} props Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n createMany (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.createMany.call(self, mapper, props, opts)\n },\n\n /**\n * Make an Http request to `url` according to the configuration in `config`.\n *\n * @name HttpAdapter#DEL\n * @method\n * @param {string} url Url for the request.\n * @param {Object} [config] Http configuration that will be passed to\n * {@link HttpAdapter#HTTP}.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n DEL (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'delete'\n\n // beforeDEL lifecycle hook\n op = opts.op = 'beforeDEL'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'DEL'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterDEL lifecycle hook\n op = opts.op = 'afterDEL'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * Transform the server response object into the payload that will be returned\n * to JSData.\n *\n * @name HttpAdapter#deserialize\n * @method\n * @param {Object} mapper The mapper used for the operation.\n * @param {Object} response Response object from {@link HttpAdapter#HTTP}.\n * @param {Object} opts Configuration options.\n * @return {(Object|Array)} Deserialized data.\n */\n deserialize (mapper, response, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (utils.isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response && response.hasOwnProperty('data')) {\n return response.data\n }\n return response\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @name HttpAdapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroy (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroy.call(self, mapper, id, opts)\n },\n\n /**\n * Destroy the records that match the selection `query`.\n *\n * @name HttpAdapter#destroyAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroyAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroyAll.call(self, mapper, query, opts)\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter#error\n * @method\n * @param {...*} [args] Arguments to log.\n */\n error (...args) {\n if (console) {\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\n }\n },\n\n /**\n * Make an Http request using `window.fetch`.\n *\n * @name HttpAdapter#fetch\n * @method\n * @param {Object} config Request configuration.\n * @param {Object} config.data Payload for the request.\n * @param {string} config.method Http method for the request.\n * @param {Object} config.headers Headers for the request.\n * @param {Object} config.params Querystring for the request.\n * @param {string} config.url Url for the request.\n * @param {Object} [opts] Configuration options.\n */\n fetch (config, opts) {\n const requestConfig = {\n method: config.method,\n // turn the plain headers object into the Fetch Headers object\n headers: new Headers(config.headers)\n }\n\n if (config.data) {\n requestConfig.body = utils.toJson(config.data)\n }\n\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\n response.config = {\n method: config.method,\n url: config.url\n }\n return response.json().then(function (data) {\n response.data = data\n return response\n })\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @name HttpAdapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n find (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.find.call(self, mapper, id, opts)\n },\n\n /**\n * Retrieve the records that match the selection `query`.\n *\n * @name HttpAdapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n findAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.findAll.call(self, mapper, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#GET\n * @method\n * @param {string} url The url for the request.\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n GET (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'get'\n\n // beforeGET lifecycle hook\n op = opts.op = 'beforeGET'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'GET'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterGET lifecycle hook\n op = opts.op = 'afterGET'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * @name HttpAdapter#getEndpoint\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {boolean} opts TODO\n * @return {string} Full path.\n */\n getEndpoint (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = utils.isUndefined(opts.params) ? {} : opts.params\n const relationList = mapper.relationList || []\n let endpoint = utils.isUndefined(opts.endpoint) ? (utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint\n\n relationList.forEach(function (def) {\n if (def.type !== 'belongsTo' || !def.parent) {\n return\n }\n let item\n const parentKey = def.foreignKey\n const parentDef = def.getRelation()\n let parentId = opts.params[parentKey]\n\n if (parentId === false || !parentKey || !parentDef) {\n if (parentId === false) {\n delete opts.params[parentKey]\n }\n return false\n } else {\n delete opts.params[parentKey]\n\n if (utils.isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? utils.get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n utils.forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n utils._(_opts, parentDef)\n endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint)\n return false\n }\n }\n })\n\n return endpoint\n },\n\n /**\n * @name HttpAdapter#getPath\n * @method\n * @param {string} method TODO\n * @param {Object} mapper TODO\n * @param {(string|number)?} id TODO\n * @param {Object} opts Configuration options.\n */\n getPath (method, mapper, id, opts) {\n const self = this\n opts || (opts = {})\n const args = [\n utils.isUndefined(opts.basePath) ? (utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (utils.isString(id) || utils.isNumber(id) || method === 'create') ? id : null, opts)\n ]\n if (method === 'find' || method === 'update' || method === 'destroy') {\n args.push(id)\n }\n return makePath.apply(utils, args)\n },\n\n getParams (opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.params)) {\n return {}\n }\n return utils.copy(opts.params)\n },\n\n getSuffix (mapper, opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.suffix)) {\n if (utils.isUndefined(mapper.suffix)) {\n return this.suffix\n }\n return mapper.suffix\n }\n return opts.suffix\n },\n\n /**\n * Make an Http request.\n *\n * @name HttpAdapter#HTTP\n * @method\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n HTTP (config, opts) {\n const self = this\n const start = new Date()\n opts || (opts = {})\n const payload = config.data\n const cache = config.cache\n const timeout = config.timeout\n config = utils.copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = utils.deepMixIn(config, self.httpConfig)\n config.data = payload\n config.cache = cache\n config.timeout = timeout\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\n config.url += '/'\n }\n config.method = config.method.toUpperCase()\n const suffix = config.suffix || opts.suffix || self.suffix\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\n config.url += suffix\n }\n\n function logResponse (data) {\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\n if (data.status >= 200 && data.status < 300) {\n if (self.log) {\n self.dbg('debug', str, data)\n }\n return data\n } else {\n if (self.error) {\n self.error(`'FAILED: ${str}`, data)\n }\n return utils.reject(data)\n }\n }\n\n if (!self.http) {\n throw new Error('You have not configured this adapter with an http library!')\n }\n\n return utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) {\n config = _config || config\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\n return self.fetch(config, opts).then(logResponse, logResponse)\n }\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\n return self.responseError(err, config, opts)\n })\n }).then(function (response) {\n return utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#POST\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n POST (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'post'\n\n // beforePOST lifecycle hook\n op = opts.op = 'beforePOST'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'POST'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPOST lifecycle hook\n op = opts.op = 'afterPOST'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#PUT\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n PUT (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'put'\n\n // beforePUT lifecycle hook\n op = opts.op = 'beforePUT'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'PUT'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPUT lifecycle hook\n op = opts.op = 'afterPUT'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#queryTransform\n * @method\n * @param {Object} mapper TODO\n * @param {*} params TODO\n * @param {*} opts TODO\n * @return {*} Transformed params.\n */\n queryTransform (mapper, params, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (utils.isFunction(mapper.queryTransform)) {\n return mapper.queryTransform(mapper, params, opts)\n }\n return params\n },\n\n /**\n * Error handler invoked when the promise returned by {@link HttpAdapter#http}\n * is rejected. Default implementation is to just return the error wrapped in\n * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is\n * called by {@link HttpAdapter#HTTP}.\n *\n * @name HttpAdapter#responseError\n * @method\n * @param {*} err The error that {@link HttpAdapter#http} rejected with.\n * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}.\n * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}.\n * @return {Promise}\n */\n responseError (err, config, opts) {\n return utils.reject(err)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#serialize\n * @method\n * @param {Object} mapper TODO\n * @param {Object} data TODO\n * @param {*} opts TODO\n * @return {*} Serialized data.\n */\n serialize (mapper, data, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (utils.isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\n },\n\n /**\n * Retrieve the sum of the field of the records that match the selection query.\n *\n * @name HttpAdapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field The field to sum.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n sum (mapper, field, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n if (!utils.utils.isString(field)) {\n throw new Error('field must be a string!')\n }\n opts.params = self.getParams(opts)\n opts.params.sum = field\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.sum.call(self, mapper, field, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#update\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {*} props TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n update (mapper, id, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.update.call(self, mapper, id, props, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#updateAll\n * @method\n * @param {Object} mapper TODO\n * @param {Object} props TODO\n * @param {Object} query TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n updateAll (mapper, props, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateAll.call(self, mapper, props, query, opts)\n },\n\n /**\n * Update multiple records in batch.\n *\n * {@link HttpAdapter#beforeUpdateMany} will be called before calling\n * {@link HttpAdapter#PUT}.\n * {@link HttpAdapter#afterUpdateMany} will be called after calling\n * {@link HttpAdapter#PUT}.\n *\n * @name HttpAdapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} records Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n updateMany (mapper, records, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateMany.call(self, mapper, records, opts)\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @example\n * // CommonJS\n * var JSData = require('js-data')\n * // It is recommended to use DataStore in the browser\n * var DataStore = JSData.DataStore\n *\n * var JSDataHttp = require('js-data-http')\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var addAction = JSDataHttp.addAction\n *\n * var adapter = new HttpAdapter()\n * var store = new DataStore()\n *\n * store.registerAdapter('http', adapter, { default: true })\n * store.defineMapper('school')\n *\n * // GET /reports/schools/:school_id/teachers\n * addAction('getTeacherReports', {\n * basePath: 'reports/schools',\n * pathname: 'teachers',\n * method: 'GET'\n * })(store.getMapper('school'))\n *\n * // /reports/schools/1234/teachers\n * store.getMapper('school').getTeacherReports(1234).then(function (response) {\n * // ...\n * })\n *\n * @name module:js-data-http.addAction\n * @method\n * @param {string} name Name of the new action.\n * @param {Object} [opts] Action configuration\n * @param {string} [opts.adapter]\n * @param {string} [opts.pathname]\n * @param {Function} [opts.request]\n * @param {Function} [opts.response]\n * @param {Function} [opts.responseError]\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addAction = function addAction (name, opts) {\n if (!name || !utils.isString(name)) {\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\n }\n return function (mapper) {\n if (mapper[name]) {\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\n }\n opts.request = opts.request || function (config) { return config }\n opts.response = opts.response || function (response) { return response }\n opts.responseError = opts.responseError || function (err) { return utils.reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (utils.isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n utils.fillIn(config, opts)\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\n _opts.endpoint = config.endpoint\n }\n if (typeof _opts.getEndpoint === 'function') {\n config.url = _opts.getEndpoint(self, _opts)\n } else {\n let args = [\n _opts.basePath || self.basePath || adapter.basePath,\n adapter.getEndpoint(self, utils.isSorN(id) ? id : null, _opts)\n ]\n if (utils.isSorN(id)) {\n args.push(id)\n }\n args.push(opts.pathname || name)\n config.url = makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.mapper = self.name\n utils.deepMixIn(config, _opts)\n return utils.resolve(config)\n .then(_opts.request || opts.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.mapper = self.name\n }\n return data\n })\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\n }\n return mapper\n }\n}\n\n/**\n * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for\n * action configuration options.\n *\n * @example\n * // CommonJS\n * var JSData = require('js-data')\n * // It is recommended to use DataStore in the browser\n * var DataStore = JSData.DataStore\n *\n * var JSDataHttp = require('js-data-http')\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var addActions = JSDataHttp.addActions\n *\n * var adapter = new HttpAdapter()\n * var store = new DataStore()\n *\n * store.registerAdapter('http', adapter, { default: true })\n * store.defineMapper('school')\n *\n * addActions({\n * // GET /reports/schools/:school_id/teachers\n * getTeacherReports: {\n * basePath: 'reports/schools',\n * pathname: 'teachers',\n * method: 'GET'\n * }\n * })(store.getMapper('school'))\n *\n * // /reports/schools/1234/teachers\n * store.getMapper('school').getTeacherReports(1234).then(function (response) {\n * // ...\n * })\n *\n * @name module:js-data-http.addActions\n * @method\n * @param {Object.} opts Object where the key is an action name\n * and the value is the configuration for the action.\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addActions = function addActions (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(opts, function (value, key) {\n exports.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name module:js-data-http.version\n * @type {Object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexports.version = '<%= version %>'\n\n/**\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\n * as `js-data-fetch`.\n *\n * @example Script tag\n * var HttpAdapter = window.JSDataHttp.HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * @example CommonJS\n * var HttpAdapter = require('js-data-Http').HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * @example ES2015 Modules\n * import {HttpAdapter} from 'js-data-Http'\n * const adapter = new HttpAdapter()\n *\n * @example AMD\n * define('myApp', ['js-data-Http'], function (JSDataHttp) {\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * // ...\n * })\n *\n * @module js-data-http\n */\nexports.default = HttpAdapter\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}\n ** module id = 1\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['exports', 'js-data'], factory) :\n (factory((global.Adapter = global.Adapter || {}),global.JSData));\n}(this, function (exports,jsData) { 'use strict';\n\n var babelHelpers = {};\n babelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n babelHelpers.defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n };\n\n babelHelpers.slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n babelHelpers;\n\n var noop = function noop() {\n var self = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = args[args.length - 1];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var noop2 = function noop2() {\n var self = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var opts = args[args.length - 2];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var unique = function unique(array) {\n var seen = {};\n var final = [];\n array.forEach(function (item) {\n if (item in seen) {\n return;\n }\n final.push(item);\n seen[item] = 0;\n });\n return final;\n };\n\n var withoutRelations = function withoutRelations(mapper, props) {\n return jsData.utils.omit(props, mapper.relationFields || []);\n };\n\n var DEFAULTS = {\n /**\n * Whether to log debugging information.\n *\n * @name Adapter#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\n\n /**\n * Whether to return a more detailed response object.\n *\n * @name Adapter#raw\n * @type {boolean}\n * @default false\n */\n raw: false\n };\n\n /**\n * Abstract class meant to be extended by adapters.\n *\n * @class Adapter\n * @abstract\n * @param {Object} [opts] Configuration opts.\n * @param {boolean} [opts.debug=false] Whether to log debugging information.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed response\n * object.\n */\n function Adapter(opts) {\n var self = this;\n opts || (opts = {});\n jsData.utils.fillIn(opts, DEFAULTS);\n jsData.utils.fillIn(self, opts);\n }\n\n var reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where'];\n\n /**\n * Response object used when `raw` is `true`. May contain other fields in\n * addition to `data`.\n *\n * @class Response\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n\n /**\n * Response data.\n *\n * @name Response#data\n * @type {*}\n */\n self.data = data;\n\n jsData.utils.fillIn(self, meta);\n\n /**\n * The operation for which the response was created.\n *\n * @name Response#op\n * @type {string}\n */\n self.op = op;\n }\n\n /**\n * Alternative to ES6 class syntax for extending `Adapter`.\n *\n * @name Adapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `Adapter`.\n */\n Adapter.extend = jsData.utils.extend;\n\n jsData.utils.addHiddenPropsToTarget(Adapter.prototype, {\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#afterCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} props The `props` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `afterCount`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCount: noop2,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `afterCreate`\n * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreate: noop2,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `afterCreateMany`\n * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreateMany: noop2,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#afterDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `afterDestroy`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroy: noop2,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#afterDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `afterDestroyAll`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroyAll: noop2,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#afterFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `afterFind`\n * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFind: noop2,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#afterFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `afterFindAll`\n * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFindAll: noop2,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#afterSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {string} field The `field` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `afterSum`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterSum: noop2,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#afterUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `afterUpdate`\n * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdate: noop2,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#afterUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `afterUpdateAll`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateAll: noop2,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#afterUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} records The `records` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `afterUpdateMany`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateMany: noop2,\n\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#beforeCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} query The `query` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `beforeCount`\n */\n beforeCount: noop,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#beforeCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `beforeCreate`\n */\n beforeCreate: noop,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#beforeCreateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `beforeCreateMany`\n */\n beforeCreateMany: noop,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#beforeDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `beforeDestroy`\n */\n beforeDestroy: noop,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#beforeDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `beforeDestroyAll`\n */\n beforeDestroyAll: noop,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#beforeFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `beforeFind`\n */\n beforeFind: noop,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#beforeFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `beforeFindAll`\n */\n beforeFindAll: noop,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#beforeSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `beforeSum`\n */\n beforeSum: noop,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#beforeUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `beforeUpdate`\n */\n beforeUpdate: noop,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#beforeUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `beforeUpdateAll`\n */\n beforeUpdateAll: noop,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#beforeUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} props The `props` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `beforeUpdateMany`\n */\n beforeUpdateMany: noop,\n\n /**\n * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`.\n *\n * @name Adapter#dbg\n * @method\n */\n dbg: function dbg() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this.log.apply(this, ['debug'].concat(args));\n },\n\n\n /**\n * Retrieve the number of records that match the selection query. Called by\n * `Mapper#count`.\n *\n * @name Adapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n count: function count(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeCount lifecycle hook\n op = opts.op = 'beforeCount';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'count';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._count(mapper, query, opts));\n }).then(function (results) {\n var _results = babelHelpers.slicedToArray(results, 2);\n\n var data = _results[0];\n var result = _results[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterCount lifecycle hook\n op = opts.op = 'afterCount';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create a new record. Called by `Mapper#create`.\n *\n * @name Adapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The record to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n create: function create(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._create(mapper, props, opts));\n }).then(function (results) {\n var _results2 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results2[0];\n var result = _results2[1];\n\n result || (result = {});\n var response = new Response(data, result, 'create');\n response.created = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create multiple records in a single batch. Called by `Mapper#createMany`.\n *\n * @name Adapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The records to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n createMany: function createMany(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = props.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'createMany';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._createMany(mapper, props, opts));\n }).then(function (results) {\n var _results3 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results3[0];\n var result = _results3[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'createMany');\n response.created = data.length;\n response = self.respond(response, opts);\n\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the record with the given primary key. Called by\n * `Mapper#destroy`.\n *\n * @name Adapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroy: function destroy(mapper, id, opts) {\n var self = this;\n var op = void 0;\n opts || (opts = {});\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._destroy(mapper, id, opts));\n }).then(function (results) {\n var _results4 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results4[0];\n var result = _results4[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroy');\n response = self.respond(response, opts);\n\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the records that match the selection query. Called by\n * `Mapper#destroyAll`.\n *\n * @name Adapter#destroyAll\n * @method\n * @param {Object} mapper the mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroyAll: function destroyAll(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._destroyAll(mapper, query, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results5[0];\n var result = _results5[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Load a belongsTo relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadBelongsTo\n * @method\n * @return {Promise}\n */\n loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) {\n var self = this;\n var relationDef = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n var _ret = function () {\n var record = records;\n return {\n v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) {\n def.setLocalField(record, relatedItem);\n })\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.v;\n } else {\n var keys = records.map(function (record) {\n return self.makeBelongsToForeignKey(mapper, def, record);\n }).filter(function (key) {\n return key;\n });\n return self.findAll(relationDef, {\n where: babelHelpers.defineProperty({}, relationDef.idAttribute, {\n 'in': keys\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n relatedItems.forEach(function (relatedItem) {\n if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) {\n def.setLocalField(record, relatedItem);\n }\n });\n });\n });\n }\n },\n\n\n /**\n * Retrieve the record with the given primary key. Called by `Mapper#find`.\n *\n * @name Adapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n find: function find(mapper, id, opts) {\n var self = this;\n var record = void 0,\n op = void 0;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results6[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasOne') {\n task = self.loadHasOne(mapper, def, record, __opts);\n } else {\n task = self.loadHasMany(mapper, def, record, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, record, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, record, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, record, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(record, {}, 'find');\n response.found = record ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterFind lifecycle hook\n op = opts.op = 'afterFind';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @name Adapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n findAll: function findAll(mapper, query, opts) {\n var self = this;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n var records = [];\n var op = void 0;\n var activeWith = opts._activeWith;\n\n if (jsData.utils.isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n jsData.utils.deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results7[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasMany') {\n task = self.loadHasMany(mapper, def, records, __opts);\n } else {\n task = self.loadHasOne(mapper, def, records, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, records, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, records, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, records, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(records, {}, 'findAll');\n response.found = records.length;\n response = self.respond(response, opts);\n\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Resolve the value of the specified option based on the given options and\n * this adapter's settings. Override with care.\n *\n * @name Adapter#getOpt\n * @method\n * @param {string} opt The name of the option.\n * @param {Object} [opts] Configuration options.\n * @return {*} The value of the specified option.\n */\n getOpt: function getOpt(opt, opts) {\n opts || (opts = {});\n return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]);\n },\n\n\n /**\n * Load a hasMany relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasMany\n * @method\n * @return {Promise}\n */\n loadHasMany: function loadHasMany(mapper, def, records, __opts) {\n var self = this;\n var singular = false;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n singular = true;\n records = [records];\n }\n var IDs = records.map(function (record) {\n return self.makeHasManyForeignKey(mapper, def, record);\n });\n var query = {\n where: {}\n };\n var criteria = query.where[def.foreignKey] = {};\n if (singular) {\n // more efficient query when we only have one record\n criteria['=='] = IDs[0];\n } else {\n criteria['in'] = IDs.filter(function (id) {\n return id;\n });\n }\n return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n var attached = [];\n // avoid unneccesary iteration when we only have one record\n if (singular) {\n attached = relatedItems;\n } else {\n relatedItems.forEach(function (relatedItem) {\n if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) {\n attached.push(relatedItem);\n }\n });\n }\n def.setLocalField(record, attached);\n });\n });\n },\n loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) {\n var self = this;\n var record = void 0;\n var relatedMapper = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': self.makeHasManyLocalKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n var _ret2 = function () {\n var localKeys = [];\n records.forEach(function (record) {\n localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record));\n });\n return {\n v: self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': unique(localKeys).filter(function (x) {\n return x;\n })\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (item) {\n var attached = [];\n var itemKeys = jsData.utils.get(item, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n relatedItems.forEach(function (relatedItem) {\n if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) {\n attached.push(relatedItem);\n }\n });\n def.setLocalField(item, attached);\n });\n return relatedItems;\n })\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.v;\n }\n },\n loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) {\n var self = this;\n var relatedMapper = def.getRelation();\n var idAttribute = mapper.idAttribute;\n var record = void 0;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(def.getRelation(), {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'contains': self.makeHasManyForeignKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'isectNotEmpty': records.map(function (record) {\n return self.makeHasManyForeignKeys(mapper, def, record);\n })\n })\n }, __opts).then(function (relatedItems) {\n var foreignKeysField = def.foreignKeys;\n records.forEach(function (record) {\n var _relatedItems = [];\n var id = jsData.utils.get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || [];\n if (foreignKeys.indexOf(id) !== -1) {\n _relatedItems.push(relatedItem);\n }\n });\n def.setLocalField(record, _relatedItems);\n });\n });\n }\n },\n\n\n /**\n * Load a hasOne relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasOne\n * @method\n * @return {Promise}\n */\n loadHasOne: function loadHasOne(mapper, def, records, __opts) {\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n records = [records];\n }\n return this.loadHasMany(mapper, def, records, __opts).then(function () {\n records.forEach(function (record) {\n var relatedData = def.getLocalField(record);\n if (jsData.utils.isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\n },\n\n\n /**\n * Logging utility method. Override this method if you want to send log\n * messages to something other than the console.\n *\n * @name Adapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} values Values to log.\n */\n log: function log(level) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (level && !args.length) {\n args.push(level);\n level = 'debug';\n }\n if (level === 'debug' && !this.debug) {\n return;\n }\n var prefix = level.toUpperCase() + ': (Adapter)';\n if (console[level]) {\n var _console;\n\n (_console = console)[level].apply(_console, [prefix].concat(args));\n } else {\n var _console2;\n\n (_console2 = console).log.apply(_console2, [prefix].concat(args));\n }\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * There may be reasons why you may want to override this method, like when\n * the id of the parent doesn't exactly match up to the key on the child.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKey\n * @method\n * @return {*}\n */\n makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyLocalKeys\n * @method\n * @return {*}\n */\n makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) {\n var localKeys = [];\n var itemKeys = jsData.utils.get(record, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n localKeys = localKeys.concat(itemKeys);\n return unique(localKeys).filter(function (x) {\n return x;\n });\n },\n\n\n /**\n * Return the foreignKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKeys\n * @method\n * @return {*}\n */\n makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) {\n return jsData.utils.get(record, mapper.idAttribute);\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeBelongsToForeignKey\n * @method\n * @return {*}\n */\n makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Retrieve sum of the specified field of the records that match the selection\n * query. Called by `Mapper#sum`.\n *\n * @name Adapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field By to sum.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n sum: function sum(mapper, field, query, opts) {\n var self = this;\n var op = void 0;\n if (!jsData.utils.isString(field)) {\n throw new Error('field must be a string!');\n }\n query || (query = {});\n opts || (opts = {});\n\n // beforeSum lifecycle hook\n op = opts.op = 'beforeSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'sum';\n self.dbg(op, mapper, field, query, opts);\n return jsData.utils.resolve(self._sum(mapper, field, query, opts));\n }).then(function (results) {\n var _results8 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results8[0];\n var result = _results8[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterSum lifecycle hook\n op = opts.op = 'afterSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * @name Adapter#respond\n * @method\n * @param {Object} response Response object.\n * @param {Object} opts Configuration options.\n * return {Object} If `opts.raw == true` then return `response`, else return\n * `response.data`.\n */\n respond: function respond(response, opts) {\n return this.getOpt('raw', opts) ? response : response.data;\n },\n\n\n /**\n * Apply the given update to the record with the specified primary key. Called\n * by `Mapper#update`.\n *\n * @name Adapter#update\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {Object} props The update to apply to the record.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n update: function update(mapper, id, props, opts) {\n var self = this;\n props || (props = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return jsData.utils.resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results9 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results9[0];\n var result = _results9[1];\n\n result || (result = {});\n var response = new Response(data, result, 'update');\n response.updated = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Apply the given update to all records that match the selection query.\n * Called by `Mapper#updateAll`.\n *\n * @name Adapter#updateAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateAll: function updateAll(mapper, props, query, opts) {\n var self = this;\n props || (props = {});\n query || (query = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return jsData.utils.resolve(self._updateAll(mapper, props, query, opts));\n }).then(function (results) {\n var _results10 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results10[0];\n var result = _results10[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateAll');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Update the given records in a single batch. Called by `Mapper#updateMany`.\n *\n * @name Adapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object[]} records The records to update.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateMany: function updateMany(mapper, records, opts) {\n var self = this;\n records || (records = []);\n opts || (opts = {});\n var op = void 0;\n var idAttribute = mapper.idAttribute;\n\n records = records.filter(function (record) {\n return jsData.utils.get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = jsData.utils.isUndefined(_records) ? records : _records;\n records = records.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'updateMany';\n self.dbg(op, mapper, records, opts);\n return jsData.utils.resolve(self._updateMany(mapper, records, opts));\n }).then(function (results) {\n var _results11 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results11[0];\n var result = _results11[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateMany');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n exports.noop = noop;\n exports.noop2 = noop2;\n exports.unique = unique;\n exports.withoutRelations = withoutRelations;\n exports.Adapter = Adapter;\n exports.reserved = reserved;\n exports.Response = Response;\n\n}));\n//# sourceMappingURL=js-data-adapter.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/js-data-adapter/dist/js-data-adapter.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = require('./lib/axios');\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/index.js\n ** module id = 3\n ** module chunks = 0\n **/","'use strict';\n\nvar defaults = require('./defaults');\nvar utils = require('./utils');\nvar dispatchRequest = require('./core/dispatchRequest');\nvar InterceptorManager = require('./core/InterceptorManager');\nvar isAbsoluteURL = require('./helpers/isAbsoluteURL');\nvar combineURLs = require('./helpers/combineURLs');\nvar bind = require('./helpers/bind');\nvar transformData = require('./helpers/transformData');\n\nfunction Axios(defaultConfig) {\n this.defaults = utils.merge({}, defaultConfig);\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Don't allow overriding defaults.withCredentials\n config.withCredentials = config.withCredentials || this.defaults.withCredentials;\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nvar defaultInstance = new Axios(defaults);\nvar axios = module.exports = bind(Axios.prototype.request, defaultInstance);\n\n// Expose properties from defaultInstance\naxios.defaults = defaultInstance.defaults;\naxios.interceptors = defaultInstance.interceptors;\n\n// Factory for creating new instances\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n axios[method] = bind(Axios.prototype[method], defaultInstance);\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n axios[method] = bind(Axios.prototype[method], defaultInstance);\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/axios.js\n ** module id = 4\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./utils');\n\nvar PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/;\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nmodule.exports = {\n transformRequest: [function transformRequest(data, headers) {\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isStream(data)) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) {\n // Set application/json if no Content-Type has been specified\n if (!utils.isUndefined(headers)) {\n utils.forEach(headers, function processContentTypeHeader(val, key) {\n if (key.toLowerCase() === 'content-type') {\n headers['Content-Type'] = val;\n }\n });\n\n if (utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = 'application/json;charset=utf-8';\n }\n }\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n data = data.replace(PROTECTION_PREFIX, '');\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n },\n patch: utils.merge(DEFAULT_CONTENT_TYPE),\n post: utils.merge(DEFAULT_CONTENT_TYPE),\n put: utils.merge(DEFAULT_CONTENT_TYPE)\n },\n\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/defaults.js\n ** module id = 5\n ** module chunks = 0\n **/","'use strict';\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * typeof document.createElement -> undefined\n */\nfunction isStandardBrowserEnv() {\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object' && !isArray(obj)) {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n trim: trim\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/utils.js\n ** module id = 6\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Dispatch a request to the server using whichever adapter\n * is supported by the current environment.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n return new Promise(function executor(resolve, reject) {\n try {\n var adapter;\n\n if (typeof config.adapter === 'function') {\n // For custom adapter support\n adapter = config.adapter;\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n\n if (typeof adapter === 'function') {\n adapter(resolve, reject, config);\n }\n } catch (e) {\n reject(e);\n }\n });\n};\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/core/dispatchRequest.js\n ** module id = 7\n ** module chunks = 0\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/process/browser.js\n ** module id = 8\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar transformData = require('./../helpers/transformData');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar btoa = (typeof window !== 'undefined' && window.btoa) || require('./../helpers/btoa');\nvar settle = require('../helpers/settle');\n\nmodule.exports = function xhrAdapter(resolve, reject, config) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' && typeof window !== 'undefined' && window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // For IE 9 CORS support.\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n if (request.status === 0) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: transformData(\n responseData,\n responseHeaders,\n config.transformResponse\n ),\n // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new Error('Network Error'));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var err = new Error('timeout of ' + config.timeout + 'ms exceeded');\n err.timeout = config.timeout;\n err.code = 'ECONNABORTED';\n reject(err);\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n if (request.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (config.progress) {\n if (config.method === 'post' || config.method === 'put') {\n request.upload.addEventListener('progress', config.progress);\n } else if (config.method === 'get') {\n request.addEventListener('progress', config.progress);\n }\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/adapters/xhr.js\n ** module id = 9\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n }\n\n if (!utils.isArray(val)) {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/buildURL.js\n ** module id = 10\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/parseHeaders.js\n ** module id = 11\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/transformData.js\n ** module id = 12\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/isURLSameOrigin.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/btoa.js\n ** module id = 14\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(response);\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/settle.js\n ** module id = 15\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/cookies.js\n ** module id = 16\n ** module chunks = 0\n **/","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/core/InterceptorManager.js\n ** module id = 17\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/isAbsoluteURL.js\n ** module id = 18\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '');\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/combineURLs.js\n ** module id = 19\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/bind.js\n ** module id = 20\n ** module chunks = 0\n **/","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/helpers/spread.js\n ** module id = 21\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js-data-http.min.js b/dist/js-data-http.min.js index 1fc78f3..6a76dac 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -1,11 +1,11 @@ /*! * js-data-http -* @version 3.0.0-beta.4 - Homepage +* @version 3.0.0-beta.5 - Homepage * @copyright (c) 2014-2016 js-data-http project authors * @license MIT * * @overview HTTP (XHR) adapter for js-data in the browser. */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("js-data")):"function"==typeof define&&define.amd?define(["js-data"],t):"object"==typeof exports?exports.JSDataHttp=t(require("js-data")):e.JSDataHttp=t(e.JSData)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(r).join(t)}function i(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=o(t,"/");return r.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function u(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function a(e,t){if(!t)return e;var n=[];return l.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(l.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():l.utils.isObject(e)&&(e=l.utils.toJson(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function s(e){var t=this;e||(e={}),l.utils.fillIn(e,y),c.Adapter.call(t,e)}var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},l=n(1),c=n(2),d=n(3),p=!1;try{p=window&&window.fetch}catch(e){}var h=c.Adapter.prototype,y={basePath:"",forceTrailingSlash:!1,http:d,httpConfig:{},suffix:"",useFetch:!1};t.HttpAdapter=s,s.prototype=Object.create(c.Adapter.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(s,"__super__",{configurable:!0,value:c.Adapter}),s.extend=l.utils.extend,l.utils.addHiddenPropsToTarget(s.prototype,{afterDEL:c.noop2,afterGET:c.noop2,afterHTTP:c.noop2,afterPOST:c.noop2,afterPUT:c.noop2,beforeDEL:c.noop,beforeGET:c.noop,beforeHTTP:c.noop,beforePOST:c.noop,beforePUT:c.noop,_count:function(e,t,n){var r=this;return r.GET(r.getPath("count",e,n.params,n),n).then(function(t){return r._end(e,n,t)})},_create:function(e,t,n){var r=this;return r.POST(r.getPath("create",e,t,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},_createMany:function(e,t,n){var r=this;return r.POST(r.getPath("createMany",e,null,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},_destroy:function(e,t,n){var r=this;return r.DEL(r.getPath("destroy",e,t,n),n).then(function(t){return r._end(e,n,t)})},_destroyAll:function(e,t,n){var r=this;return r.DEL(r.getPath("destroyAll",e,null,n),n).then(function(t){return r._end(e,n,t)})},_end:function(e,t,n){return[this.deserialize(e,n,t),n]},_find:function(e,t,n){var r=this;return r.GET(r.getPath("find",e,t,n),n).then(function(t){return r._end(e,n,t)})},_findAll:function(e,t,n){var r=this;return r.GET(r.getPath("findAll",e,n.params,n),n).then(function(t){return r._end(e,n,t)})},_sum:function(e,t,n,r){var o=this;return o.GET(o.getPath("sum",e,r.params,r),r).then(function(t){return o._end(e,r,t)})},_update:function(e,t,n,r){var o=this;return o.PUT(o.getPath("update",e,t,r),o.serialize(e,n,r),r).then(function(t){return o._end(e,r,t)})},_updateAll:function(e,t,n,r){var o=this;return o.PUT(o.getPath("updateAll",e,null,r),o.serialize(e,t,r),r).then(function(t){return o._end(e,r,t)})},_updateMany:function(e,t,n){var r=this;return r.PUT(r.getPath("updateMany",e,null,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},count:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),n.params.count=!0,n.suffix=r.getSuffix(e,n),l.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),h.count.call(r,e,t,n)},create:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.createMany.call(r,e,t,n)},DEL:function(e,t,n){var r=this,o=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"delete",o=n.op="beforeDEL",l.utils.resolve(r[o](e,t,n)).then(function(i){return t=l.utils.isUndefined(i)?t:i,o=n.op="DEL",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(i){return o=n.op="afterDEL",l.utils.resolve(r[o](e,t,n,i)).then(function(e){return l.utils.isUndefined(e)?i:e})})},deserialize:function(e,t,n){return n||(n={}),l.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):l.utils.isFunction(e.deserialize)?e.deserialize(e,t,n):t&&t.hasOwnProperty("data")?t.data:t},destroy:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),l.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.destroyAll.call(r,e,t,n)},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,n){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var n={method:e.method,headers:new Headers(e.headers)};return e.data&&(n.body=l.utils.toJson(e.data)),fetch(new Request(a(e.url,e.params),n)).then(function(t){return t.config={method:e.method,url:e.url},t.json().then(function(e){return t.data=e,t})})}),find:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),n.suffix=r.getSuffix(e,n),l.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),h.findAll.call(r,e,t,n)},GET:function(e,t,n){var r=this,o=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"get",o=n.op="beforeGET",l.utils.resolve(r[o](e,t,n)).then(function(i){return t=l.utils.isUndefined(i)?t:i,o=n.op="GET",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(i){return o=n.op="afterGET",l.utils.resolve(r[o](e,t,n,i)).then(function(e){return l.utils.isUndefined(e)?i:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=l.utils.isUndefined(n.params)?{}:n.params;var o=e.relationList||[],u=l.utils.isUndefined(n.endpoint)?l.utils.isUndefined(e.endpoint)?e.name:e.endpoint:n.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,a=e.foreignKey,s=e.getRelation(),c=n.params[a];if(c===!1||!a||!s)return c===!1&&delete n.params[a],!1;if(delete n.params[a],l.utils.isObject(t)&&(o=t),o&&(c=c||e.getForeignKey(o)||(e.getLocalField(o)?l.utils.get(e.getLocalField(o),s.idAttribute):null)),c){var d=function(){delete n.endpoint;var e={};return l.utils.forOwn(n,function(t,n){e[n]=t}),l.utils._(e,s),u=i(r.getEndpoint(s,c,e),c,u),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":f(d)))return d.v}}}),u},getPath:function(e,t,n,r){var o=this;r||(r={});var u=[l.utils.isUndefined(r.basePath)?l.utils.isUndefined(t.basePath)?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,l.utils.isString(n)||l.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||u.push(n),i.apply(l.utils,u)},getParams:function(e){return e||(e={}),l.utils.isUndefined(e.params)?{}:l.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),l.utils.isUndefined(t.suffix)?l.utils.isUndefined(e.suffix)?this.suffix:e.suffix:t.suffix},HTTP:function(e,t){function n(t){var n=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(r.log&&r.dbg("debug",n,t),t):(r.error&&r.error("'FAILED: "+n,t),l.utils.reject(t))}var r=this,o=new Date;t||(t={});var i=e.data,u=e.cache,a=e.timeout;e=l.utils.copy(e,null,null,null,["data","cache","timeout"]),e=l.utils.deepMixIn(e,r.httpConfig),e.data=i,e.cache=u,e.timeout=a,r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var s=e.suffix||t.suffix||r.suffix;if(s&&e.url.substr(e.url.length-s.length)!==s&&(e.url+=s),!r.http)throw new Error("You have not configured this adapter with an http library!");return l.utils.resolve(r.beforeHTTP(e,t)).then(function(o){return e=o||e,p&&(r.useFetch||t.useFetch||!r.http)?r.fetch(e,t).then(n,n):r.http(e).then(n,n).catch(function(n){return r.responseError(n,e,t)})}).then(function(n){return l.utils.resolve(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var o=this,i=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",i=r.op="beforePOST",l.utils.resolve(o[i](e,t,n,r)).then(function(u){return n=l.utils.isUndefined(u)?n:u,i=r.op="POST",o.dbg(i,e,t,n,r),o.HTTP(n,r)}).then(function(u){return i=r.op="afterPOST",l.utils.resolve(o[i](e,t,n,r,u)).then(function(e){return l.utils.isUndefined(e)?u:e})})},PUT:function(e,t,n,r){var o=this,i=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",i=r.op="beforePUT",l.utils.resolve(o[i](e,t,n,r)).then(function(u){return n=l.utils.isUndefined(u)?n:u,i=r.op="PUT",o.dbg(i,e,t,n,r),o.HTTP(n,r)}).then(function(u){return i=r.op="afterPUT",l.utils.resolve(o[i](e,t,n,r,u)).then(function(e){return l.utils.isUndefined(e)?u:e})})},queryTransform:function(e,t,n){return n||(n={}),l.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):l.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return l.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),l.utils.isFunction(n.serialize)?n.serialize(e,t,n):l.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var o=this;if(n||(n={}),r||(r={}),!l.utils.utils.isString(t))throw new Error("field must be a string!");return r.params=o.getParams(r),r.params.sum=t,r.suffix=o.getSuffix(e,r),l.utils.deepMixIn(r.params,n),r.params=o.queryTransform(e,r.params,r),h.sum.call(o,e,t,n,r)},update:function(e,t,n,r){var o=this;return r||(r={}),r.params=o.getParams(r),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),h.update.call(o,e,t,n,r)},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r||(r={}),r.params=o.getParams(r),l.utils.deepMixIn(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),h.updateAll.call(o,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.updateMany.call(r,e,t,n)}}),t.addAction=function(e,t){if(!e||!l.utils.isString(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":f(e)));return function(n){if(n[e])throw new Error("action(name[, opts]): "+e+" already exists on target!");return t.request=t.request||function(e){return e},t.response=t.response||function(e){return e},t.responseError=t.responseError||function(e){return l.utils.reject(e)},n[e]=function(n,r){var o=this;l.utils.isObject(n)&&(r=n),r=r||{};var u=o.getAdapter(t.adapter||o.defaultAdapter||"http"),a={};if(l.utils.fillIn(a,t),!r.hasOwnProperty("endpoint")&&a.endpoint&&(r.endpoint=a.endpoint),"function"==typeof r.getEndpoint)a.url=r.getEndpoint(o,r);else{var s=[r.basePath||o.basePath||u.basePath,u.getEndpoint(o,l.utils.isSorN(n)?n:null,r)];l.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),a.url=i.apply(null,s)}return a.method=a.method||"GET",a.mapper=o.name,l.utils.deepMixIn(a)(r),l.utils.resolve(a).then(r.request||t.request).then(function(e){return u.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(r.response||t.response,r.responseError||t.responseError)},n}},t.addActions=function(e){return e||(e={}),function(e){return l.utils.forOwn(e,function(n,r){t.addAction(r,n)(e)}),e}},t.version={beta:4,full:"3.0.0-beta.4",major:3,minor:0,patch:0},t.default=s},function(t,n){t.exports=e},function(e,t,n){!function(e,r){r(t,n(1))}(this,function(e,t){"use strict";function n(e){var n=this;e||(e={}),t.utils.fillIn(e,f),t.utils.fillIn(n,e)}function r(e,n,r){var o=this;n||(n={}),o.data=e,t.utils.fillIn(o,n),o.op=r}var o={};o.typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},o.defineProperty=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},o.slicedToArray=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();var i=function(){for(var e=this,n=arguments.length,r=Array(n),o=0;n>o;o++)r[o]=arguments[o];var i=r[r.length-1];return e.dbg.apply(e,[i.op].concat(r)),t.utils.resolve()},u=function(){for(var e=this,n=arguments.length,r=Array(n),o=0;n>o;o++)r[o]=arguments[o];var i=r[r.length-2];return e.dbg.apply(e,[i.op].concat(r)),t.utils.resolve()},a=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},s=function(e,n){return t.utils.omit(n,e.relationFields||[])},f={debug:!1,raw:!1},l=["orderBy","sort","limit","offset","skip","where"];n.extend=t.utils.extend,t.utils.addHiddenPropsToTarget(n.prototype,{afterCount:u,afterCreate:u,afterCreateMany:u,afterDestroy:u,afterDestroyAll:u,afterFind:u,afterFindAll:u,afterSum:u,afterUpdate:u,afterUpdateAll:u,afterUpdateMany:u,beforeCount:i,beforeCreate:i,beforeCreateMany:i,beforeDestroy:i,beforeDestroyAll:i,beforeFind:i,beforeFindAll:i,beforeSum:i,beforeUpdate:i,beforeUpdateAll:i,beforeUpdateMany:i,dbg:function(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];this.log.apply(this,["debug"].concat(t))},count:function(e,n,i){var u=this,a=void 0;return n||(n={}),i||(i={}),a=i.op="beforeCount",t.utils.resolve(u[a](e,n,i)).then(function(){return a=i.op="count",u.dbg(a,e,n,i),t.utils.resolve(u._count(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,a);return d=u.respond(d,i),a=i.op="afterCount",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},create:function(e,n,i){var u=this,a=void 0;return n||(n={}),i||(i={}),a=i.op="beforeCreate",t.utils.resolve(u[a](e,n,i)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),a=i.op="create",u.dbg(a,e,n,i),t.utils.resolve(u._create(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"create");return d.created=l?1:0,d=u.respond(d,i),a=i.op="afterCreate",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},createMany:function(e,n,i){var u=this,a=void 0;return n||(n={}),i||(i={}),a=i.op="beforeCreateMany",t.utils.resolve(u[a](e,n,i)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=i.op="createMany",u.dbg(a,e,n,i),t.utils.resolve(u._createMany(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];l||(l=[]),c||(c={});var d=new r(l,c,"createMany");return d.created=l.length,d=u.respond(d,i),a=i.op="afterCreateMany",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroy:function(e,n,i){var u=this,a=void 0;return i||(i={}),a=i.op="beforeDestroy",t.utils.resolve(u[a](e,n,i)).then(function(){return a=i.op="destroy",u.dbg(a,e,n,i),t.utils.resolve(u._destroy(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroy");return d=u.respond(d,i),a=i.op="afterDestroy",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroyAll:function(e,n,i){var u=this,a=void 0;return n||(n={}),i||(i={}),a=i.op="beforeDestroyAll",t.utils.resolve(u[a](e,n,i)).then(function(){return a=i.op="destroyAll",u.dbg(a,e,n,i),t.utils.resolve(u._destroyAll(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroyAll");return d=u.respond(d,i),a=i.op="afterDestroyAll",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},loadBelongsTo:function(e,n,r,i){var u=this,a=n.getRelation();if(!t.utils.isObject(r)||t.utils.isArray(r)){var s=r.map(function(t){return u.makeBelongsToForeignKey(e,n,t)}).filter(function(e){return e});return u.findAll(a,{where:o.defineProperty({},a.idAttribute,{in:s})},i).then(function(e){r.forEach(function(t){e.forEach(function(e){e[a.idAttribute]===t[n.foreignKey]&&n.setLocalField(t,e)})})})}var f=function(){var t=r;return{v:u.find(a,u.makeBelongsToForeignKey(e,n,t),i).then(function(e){n.setLocalField(t,e)})}}();return"object"===("undefined"==typeof f?"undefined":o.typeof(f))?f.v:void 0},find:function(e,n,i){var u=this,a=void 0,s=void 0;return i||(i={}),i.with||(i.with=[]),s=i.op="beforeFind",t.utils.resolve(u[s](e,n,i)).then(function(){return s=i.op="find",u.dbg(s,e,n,i),t.utils.resolve(u._find(e,n,i))}).then(function(n){var r=o.slicedToArray(n,1),s=r[0];if(s){a=s;var f=[];return t.utils.forEachRelation(e,i,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=u.loadHasManyLocalKeys(e,t,a,n):"hasMany"===t.type&&t.foreignKeys?r=u.loadHasManyForeignKeys(e,t,a,n):"belongsTo"===t.type&&(r=u.loadBelongsTo(e,t,a,n)):r="hasOne"===t.type?u.loadHasOne(e,t,a,n):u.loadHasMany(e,t,a,n),r&&f.push(r)}),Promise.all(f)}}).then(function(){var o=new r(a,{},"find");return o.found=a?1:0,o=u.respond(o,i),s=i.op="afterFind",t.utils.resolve(u[s](e,n,i,o)).then(function(e){return t.utils.isUndefined(e)?o:e})})},findAll:function(e,n,i){var u=this;i||(i={}),i.with||(i.with=[]);var a=[],s=void 0,f=i._activeWith;if(t.utils.isObject(f)){var l=f.query||{};f.replace?n=l:t.utils.deepFillIn(n,l)}return s=i.op="beforeFindAll",t.utils.resolve(u[s](e,n,i)).then(function(){return s=i.op="findAll",u.dbg(s,e,n,i),t.utils.resolve(u._findAll(e,n,i))}).then(function(n){var r=o.slicedToArray(n,1),s=r[0];s||(s=[]),a=s;var f=[];return t.utils.forEachRelation(e,i,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=u.loadHasManyLocalKeys(e,t,a,n):"hasMany"===t.type&&t.foreignKeys?r=u.loadHasManyForeignKeys(e,t,a,n):"belongsTo"===t.type&&(r=u.loadBelongsTo(e,t,a,n)):r="hasMany"===t.type?u.loadHasMany(e,t,a,n):u.loadHasOne(e,t,a,n),r&&f.push(r)}),Promise.all(f)}).then(function(){var o=new r(a,{},"findAll");return o.found=a.length,o=u.respond(o,i),s=i.op="afterFindAll",t.utils.resolve(u[s](e,n,i,o)).then(function(e){return t.utils.isUndefined(e)?o:e})})},getOpt:function(e,n){return n||(n={}),t.utils.isUndefined(n[e])?t.utils.plainCopy(this[e]):t.utils.plainCopy(n[e])},loadHasMany:function(e,n,r,o){var i=this,u=!1;t.utils.isObject(r)&&!t.utils.isArray(r)&&(u=!0,r=[r]);var a=r.map(function(t){return i.makeHasManyForeignKey(e,n,t)}),s={where:{}},f=s.where[n.foreignKey]={};return u?f["=="]=a[0]:f.in=a.filter(function(e){return e}),i.findAll(n.getRelation(),s,o).then(function(o){r.forEach(function(r){var i=[];u?i=o:o.forEach(function(o){t.utils.get(o,n.foreignKey)===r[e.idAttribute]&&i.push(o)}),n.setLocalField(r,i)})})},loadHasManyLocalKeys:function(e,n,r,i){var u=this,s=void 0,f=n.getRelation();if(t.utils.isObject(r)&&!t.utils.isArray(r)&&(s=r),s)return u.findAll(f,{where:o.defineProperty({},f.idAttribute,{in:u.makeHasManyLocalKeys(e,n,s)})},i).then(function(e){n.setLocalField(s,e)});var l=function(){var s=[];return r.forEach(function(t){s=s.concat(u.self.makeHasManyLocalKeys(e,n,t))}),{v:u.findAll(f,{where:o.defineProperty({},f.idAttribute,{in:a(s).filter(function(e){return e})})},i).then(function(e){return r.forEach(function(r){var o=[],i=t.utils.get(r,n.localKeys)||[];i=t.utils.isArray(i)?i:Object.keys(i),e.forEach(function(e){i&&-1!==i.indexOf(e[f.idAttribute])&&o.push(e)}),n.setLocalField(r,o)}),e})}}();return"object"===("undefined"==typeof l?"undefined":o.typeof(l))?l.v:void 0},loadHasManyForeignKeys:function(e,n,r,i){var u=this,a=n.getRelation(),s=e.idAttribute,f=void 0;return t.utils.isObject(r)&&!t.utils.isArray(r)&&(f=r),f?u.findAll(n.getRelation(),{where:o.defineProperty({},n.foreignKeys,{contains:u.makeHasManyForeignKeys(e,n,f)})},i).then(function(e){n.setLocalField(f,e)}):u.findAll(a,{where:o.defineProperty({},n.foreignKeys,{isectNotEmpty:r.map(function(t){return u.makeHasManyForeignKeys(e,n,t)})})},i).then(function(e){var o=n.foreignKeys;r.forEach(function(r){var i=[],u=t.utils.get(r,s);e.forEach(function(n){var r=t.utils.get(e,o)||[];-1!==r.indexOf(u)&&i.push(n)}),n.setLocalField(r,i)})})},loadHasOne:function(e,n,r,o){return t.utils.isObject(r)&&!t.utils.isArray(r)&&(r=[r]),this.loadHasMany(e,n,r,o).then(function(){r.forEach(function(e){var r=n.getLocalField(e);t.utils.isArray(r)&&r.length&&n.setLocalField(e,r[0])})})},log:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;t>r;r++)n[r-1]=arguments[r];if(e&&!n.length&&(n.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (Adapter)";if(console[e]){var i;(i=console)[e].apply(i,[o].concat(n))}else{var u;(u=console).log.apply(u,[o].concat(n))}}},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,n,r){var o=[],i=t.utils.get(r,n.localKeys)||[];return i=t.utils.isArray(i)?i:Object.keys(i),o=o.concat(i),a(o).filter(function(e){return e})},makeHasManyForeignKeys:function(e,n,r){return t.utils.get(r,e.idAttribute)},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},sum:function(e,n,i,u){var a=this,s=void 0;if(!t.utils.isString(n))throw new Error("field must be a string!");return i||(i={}),u||(u={}),s=u.op="beforeSum",t.utils.resolve(a[s](e,n,i,u)).then(function(){return s=u.op="sum",a.dbg(s,e,n,i,u),t.utils.resolve(a._sum(e,n,i,u))}).then(function(f){var l=o.slicedToArray(f,2),c=l[0],d=l[1];d||(d={});var p=new r(c,d,s);return p=a.respond(p,u),s=u.op="afterSum",t.utils.resolve(a[s](e,n,i,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,n,i,u){var a=this;i||(i={}),u||(u={});var f=void 0;return f=u.op="beforeUpdate",t.utils.resolve(a[f](e,n,i,u)).then(function(r){return i=t.utils.isUndefined(r)?i:r,i=s(e,i),f=u.op="update",a.dbg(f,e,n,i,u),t.utils.resolve(a._update(e,n,i,u))}).then(function(s){var l=o.slicedToArray(s,2),c=l[0],d=l[1];d||(d={});var p=new r(c,d,"update");return p.updated=c?1:0,p=a.respond(p,u),f=u.op="afterUpdate",t.utils.resolve(a[f](e,n,i,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateAll:function(e,n,i,u){var a=this;n||(n={}),i||(i={}),u||(u={});var f=void 0;return f=u.op="beforeUpdateAll",t.utils.resolve(a[f](e,n,i,u)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),f=u.op="updateAll",a.dbg(f,e,n,i,u),t.utils.resolve(a._updateAll(e,n,i,u))}).then(function(s){var l=o.slicedToArray(s,2),c=l[0],d=l[1];c||(c=[]),d||(d={});var p=new r(c,d,"updateAll");return p.updated=c.length,p=a.respond(p,u),f=u.op="afterUpdateAll",t.utils.resolve(a[f](e,n,i,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateMany:function(e,n,i){var u=this;n||(n=[]),i||(i={});var a=void 0,f=e.idAttribute;return n=n.filter(function(e){return t.utils.get(e,f)}),a=i.op="beforeUpdateMany",t.utils.resolve(u[a](e,n,i)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=i.op="updateMany",u.dbg(a,e,n,i),t.utils.resolve(u._updateMany(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];l||(l=[]),c||(c={});var d=new r(l,c,"updateMany");return d.updated=l.length,d=u.respond(d,i),a=i.op="afterUpdateMany",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})}}),e.noop=i,e.noop2=u,e.unique=a,e.withoutRelations=s,e.Adapter=n,e.reserved=l,e.Response=r})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=i.merge({},e),this.interceptors={request:new a,response:new a}}var o=n(5),i=n(6),u=n(7),a=n(17),s=n(18),f=n(19),l=n(20),c=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=i.merge({url:arguments[0]},arguments[1])),e=i.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!s(e.url)&&(e.url=f(e.baseURL,e.url)),e.withCredentials=e.withCredentials||this.defaults.withCredentials,e.data=c(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[u,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n};var d=new r(o),p=e.exports=l(r.prototype.request,d);p.defaults=d.defaults,p.interceptors=d.interceptors,p.create=function(e){return new r(e)},p.all=function(e){return Promise.all(e)},p.spread=n(21),i.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))},p[e]=l(r.prototype[e],d)}),i.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))},p[e]=l(r.prototype[e],d)})},function(e,t,n){"use strict";var r=n(6),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)||r.isArrayBuffer(e)||r.isStream(e)?e:r.isArrayBufferView(e)?e.buffer:!r.isObject(e)||r.isFile(e)||r.isBlob(e)?e:(r.isUndefined(t)||(r.forEach(t,function(e,n){"content-type"===n.toLowerCase()&&(t["Content-Type"]=e)}),r.isUndefined(t["Content-Type"])&&(t["Content-Type"]="application/json;charset=utf-8")),JSON.stringify(e))}],transformResponse:[function(e){if("string"==typeof e){e=e.replace(o,"");try{e=JSON.parse(e)}catch(e){}}return e}],headers:{common:{Accept:"application/json, text/plain, */*"},patch:r.merge(i),post:r.merge(i),put:r.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&300>e}}},function(e,t){"use strict";function n(e){return"[object Array]"===b.call(e)}function r(e){return"[object ArrayBuffer]"===b.call(e)}function o(e){return"[object FormData]"===b.call(e)}function i(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function u(e){return"string"==typeof e}function a(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function l(e){return"[object Date]"===b.call(e)}function c(e){return"[object File]"===b.call(e)}function d(e){return"[object Blob]"===b.call(e)}function p(e){return"[object Function]"===b.call(e)}function h(e){return f(e)&&p(e.pipe)}function y(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function v(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function m(e,t){if(null!==e&&"undefined"!=typeof e)if("object"==typeof e||n(e)||(e=[e]),n(e))for(var r=0,o=e.length;o>r;r++)t.call(null,e[r],r,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function g(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=g(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)m(arguments[n],e);return t}var b=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:o,isArrayBufferView:i,isString:u,isNumber:a,isObject:f,isUndefined:s,isDate:l,isFile:c,isBlob:d,isFunction:p,isStream:h,isStandardBrowserEnv:v,forEach:m,merge:g,trim:y}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,o){try{var i;"function"==typeof e.adapter?i=e.adapter:"undefined"!=typeof XMLHttpRequest?i=n(9):"undefined"!=typeof t&&(i=n(9)),"function"==typeof i&&i(r,o,e)}catch(e){o(e)}})}}).call(t,n(8))},function(e,t){function n(){f=!1,u.length?s=u.concat(s):l=-1,s.length&&r()}function r(){if(!f){var e=setTimeout(n);f=!0;for(var t=s.length;t;){for(u=s,s=[];++l1)for(var n=1;nn;n++)t[n]=arguments[n];var r=o(t,"/");return r.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function u(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function a(e,t){if(!t)return e;var n=[];return l.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(l.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():l.utils.isObject(e)&&(e=l.utils.toJson(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function s(e){var t=this;e||(e={}),l.utils.fillIn(e,y),c.Adapter.call(t,e)}var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},l=n(1),c=n(2),d=n(3),p=!1;try{p=window&&window.fetch}catch(e){}var h=c.Adapter.prototype,y={basePath:"",forceTrailingSlash:!1,http:d,httpConfig:{},suffix:"",useFetch:!1};t.HttpAdapter=s,s.prototype=Object.create(c.Adapter.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(s,"__super__",{configurable:!0,value:c.Adapter}),s.extend=l.utils.extend,l.utils.addHiddenPropsToTarget(s.prototype,{afterDEL:c.noop2,afterGET:c.noop2,afterHTTP:c.noop2,afterPOST:c.noop2,afterPUT:c.noop2,beforeDEL:c.noop,beforeGET:c.noop,beforeHTTP:c.noop,beforePOST:c.noop,beforePUT:c.noop,_count:function(e,t,n){var r=this;return r.GET(r.getPath("count",e,n.params,n),n).then(function(t){return r._end(e,n,t)})},_create:function(e,t,n){var r=this;return r.POST(r.getPath("create",e,t,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},_createMany:function(e,t,n){var r=this;return r.POST(r.getPath("createMany",e,null,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},_destroy:function(e,t,n){var r=this;return r.DEL(r.getPath("destroy",e,t,n),n).then(function(t){return r._end(e,n,t)})},_destroyAll:function(e,t,n){var r=this;return r.DEL(r.getPath("destroyAll",e,null,n),n).then(function(t){return r._end(e,n,t)})},_end:function(e,t,n){return[this.deserialize(e,n,t),n]},_find:function(e,t,n){var r=this;return r.GET(r.getPath("find",e,t,n),n).then(function(t){return r._end(e,n,t)})},_findAll:function(e,t,n){var r=this;return r.GET(r.getPath("findAll",e,n.params,n),n).then(function(t){return r._end(e,n,t)})},_sum:function(e,t,n,r){var o=this;return o.GET(o.getPath("sum",e,r.params,r),r).then(function(t){return o._end(e,r,t)})},_update:function(e,t,n,r){var o=this;return o.PUT(o.getPath("update",e,t,r),o.serialize(e,n,r),r).then(function(t){return o._end(e,r,t)})},_updateAll:function(e,t,n,r){var o=this;return o.PUT(o.getPath("updateAll",e,null,r),o.serialize(e,t,r),r).then(function(t){return o._end(e,r,t)})},_updateMany:function(e,t,n){var r=this;return r.PUT(r.getPath("updateMany",e,null,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},count:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),n.params.count=!0,n.suffix=r.getSuffix(e,n),l.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),h.count.call(r,e,t,n)},create:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.createMany.call(r,e,t,n)},DEL:function(e,t,n){var r=this,o=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"delete",o=n.op="beforeDEL",l.utils.resolve(r[o](e,t,n)).then(function(i){return t=l.utils.isUndefined(i)?t:i,o=n.op="DEL",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(i){return o=n.op="afterDEL",l.utils.resolve(r[o](e,t,n,i)).then(function(e){return l.utils.isUndefined(e)?i:e})})},deserialize:function(e,t,n){return n||(n={}),l.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):l.utils.isFunction(e.deserialize)?e.deserialize(e,t,n):t&&t.hasOwnProperty("data")?t.data:t},destroy:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),l.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.destroyAll.call(r,e,t,n)},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,n){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var n={method:e.method,headers:new Headers(e.headers)};return e.data&&(n.body=l.utils.toJson(e.data)),fetch(new Request(a(e.url,e.params),n)).then(function(t){return t.config={method:e.method,url:e.url},t.json().then(function(e){return t.data=e,t})})}),find:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),n.suffix=r.getSuffix(e,n),l.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),h.findAll.call(r,e,t,n)},GET:function(e,t,n){var r=this,o=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"get",o=n.op="beforeGET",l.utils.resolve(r[o](e,t,n)).then(function(i){return t=l.utils.isUndefined(i)?t:i,o=n.op="GET",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(i){return o=n.op="afterGET",l.utils.resolve(r[o](e,t,n,i)).then(function(e){return l.utils.isUndefined(e)?i:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=l.utils.isUndefined(n.params)?{}:n.params;var o=e.relationList||[],u=l.utils.isUndefined(n.endpoint)?l.utils.isUndefined(e.endpoint)?e.name:e.endpoint:n.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,a=e.foreignKey,s=e.getRelation(),c=n.params[a];if(c===!1||!a||!s)return c===!1&&delete n.params[a],!1;if(delete n.params[a],l.utils.isObject(t)&&(o=t),o&&(c=c||e.getForeignKey(o)||(e.getLocalField(o)?l.utils.get(e.getLocalField(o),s.idAttribute):null)),c){var d=function(){delete n.endpoint;var e={};return l.utils.forOwn(n,function(t,n){e[n]=t}),l.utils._(e,s),u=i(r.getEndpoint(s,c,e),c,u),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":f(d)))return d.v}}}),u},getPath:function(e,t,n,r){var o=this;r||(r={});var u=[l.utils.isUndefined(r.basePath)?l.utils.isUndefined(t.basePath)?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,l.utils.isString(n)||l.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||u.push(n),i.apply(l.utils,u)},getParams:function(e){return e||(e={}),l.utils.isUndefined(e.params)?{}:l.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),l.utils.isUndefined(t.suffix)?l.utils.isUndefined(e.suffix)?this.suffix:e.suffix:t.suffix},HTTP:function(e,t){function n(t){var n=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(r.log&&r.dbg("debug",n,t),t):(r.error&&r.error("'FAILED: "+n,t),l.utils.reject(t))}var r=this,o=new Date;t||(t={});var i=e.data,u=e.cache,a=e.timeout;e=l.utils.copy(e,null,null,null,["data","cache","timeout"]),e=l.utils.deepMixIn(e,r.httpConfig),e.data=i,e.cache=u,e.timeout=a,r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var s=e.suffix||t.suffix||r.suffix;if(s&&e.url.substr(e.url.length-s.length)!==s&&(e.url+=s),!r.http)throw new Error("You have not configured this adapter with an http library!");return l.utils.resolve(r.beforeHTTP(e,t)).then(function(o){return e=o||e,p&&(r.useFetch||t.useFetch||!r.http)?r.fetch(e,t).then(n,n):r.http(e).then(n,n).catch(function(n){return r.responseError(n,e,t)})}).then(function(n){return l.utils.resolve(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var o=this,i=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",i=r.op="beforePOST",l.utils.resolve(o[i](e,t,n,r)).then(function(u){return n=l.utils.isUndefined(u)?n:u,i=r.op="POST",o.dbg(i,e,t,n,r),o.HTTP(n,r)}).then(function(u){return i=r.op="afterPOST",l.utils.resolve(o[i](e,t,n,r,u)).then(function(e){return l.utils.isUndefined(e)?u:e})})},PUT:function(e,t,n,r){var o=this,i=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",i=r.op="beforePUT",l.utils.resolve(o[i](e,t,n,r)).then(function(u){return n=l.utils.isUndefined(u)?n:u,i=r.op="PUT",o.dbg(i,e,t,n,r),o.HTTP(n,r)}).then(function(u){return i=r.op="afterPUT",l.utils.resolve(o[i](e,t,n,r,u)).then(function(e){return l.utils.isUndefined(e)?u:e})})},queryTransform:function(e,t,n){return n||(n={}),l.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):l.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return l.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),l.utils.isFunction(n.serialize)?n.serialize(e,t,n):l.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var o=this;if(n||(n={}),r||(r={}),!l.utils.utils.isString(t))throw new Error("field must be a string!");return r.params=o.getParams(r),r.params.sum=t,r.suffix=o.getSuffix(e,r),l.utils.deepMixIn(r.params,n),r.params=o.queryTransform(e,r.params,r),h.sum.call(o,e,t,n,r)},update:function(e,t,n,r){var o=this;return r||(r={}),r.params=o.getParams(r),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),h.update.call(o,e,t,n,r)},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r||(r={}),r.params=o.getParams(r),l.utils.deepMixIn(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),h.updateAll.call(o,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.updateMany.call(r,e,t,n)}}),t.addAction=function(e,t){if(!e||!l.utils.isString(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":f(e)));return function(n){if(n[e])throw new Error("action(name[, opts]): "+e+" already exists on target!");return t.request=t.request||function(e){return e},t.response=t.response||function(e){return e},t.responseError=t.responseError||function(e){return l.utils.reject(e)},n[e]=function(n,r){var o=this;l.utils.isObject(n)&&(r=n),r=r||{};var u=o.getAdapter(t.adapter||o.defaultAdapter||"http"),a={};if(l.utils.fillIn(a,t),!r.hasOwnProperty("endpoint")&&a.endpoint&&(r.endpoint=a.endpoint),"function"==typeof r.getEndpoint)a.url=r.getEndpoint(o,r);else{var s=[r.basePath||o.basePath||u.basePath,u.getEndpoint(o,l.utils.isSorN(n)?n:null,r)];l.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),a.url=i.apply(null,s)}return a.method=a.method||"GET",a.mapper=o.name,l.utils.deepMixIn(a,r),l.utils.resolve(a).then(r.request||t.request).then(function(e){return u.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(r.response||t.response,r.responseError||t.responseError)},n}},t.addActions=function(e){return e||(e={}),function(n){return l.utils.forOwn(e,function(e,r){t.addAction(r,e)(n)}),n}},t.version={beta:5,full:"3.0.0-beta.5",major:3,minor:0,patch:0},t.default=s},function(t,n){t.exports=e},function(e,t,n){!function(e,r){r(t,n(1))}(this,function(e,t){"use strict";function n(e){var n=this;e||(e={}),t.utils.fillIn(e,f),t.utils.fillIn(n,e)}function r(e,n,r){var o=this;n||(n={}),o.data=e,t.utils.fillIn(o,n),o.op=r}var o={};o.typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},o.defineProperty=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},o.slicedToArray=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();var i=function(){for(var e=this,n=arguments.length,r=Array(n),o=0;n>o;o++)r[o]=arguments[o];var i=r[r.length-1];return e.dbg.apply(e,[i.op].concat(r)),t.utils.resolve()},u=function(){for(var e=this,n=arguments.length,r=Array(n),o=0;n>o;o++)r[o]=arguments[o];var i=r[r.length-2];return e.dbg.apply(e,[i.op].concat(r)),t.utils.resolve()},a=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},s=function(e,n){return t.utils.omit(n,e.relationFields||[])},f={debug:!1,raw:!1},l=["orderBy","sort","limit","offset","skip","where"];n.extend=t.utils.extend,t.utils.addHiddenPropsToTarget(n.prototype,{afterCount:u,afterCreate:u,afterCreateMany:u,afterDestroy:u,afterDestroyAll:u,afterFind:u,afterFindAll:u,afterSum:u,afterUpdate:u,afterUpdateAll:u,afterUpdateMany:u,beforeCount:i,beforeCreate:i,beforeCreateMany:i,beforeDestroy:i,beforeDestroyAll:i,beforeFind:i,beforeFindAll:i,beforeSum:i,beforeUpdate:i,beforeUpdateAll:i,beforeUpdateMany:i,dbg:function(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];this.log.apply(this,["debug"].concat(t))},count:function(e,n,i){var u=this,a=void 0;return n||(n={}),i||(i={}),a=i.op="beforeCount",t.utils.resolve(u[a](e,n,i)).then(function(){return a=i.op="count",u.dbg(a,e,n,i),t.utils.resolve(u._count(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,a);return d=u.respond(d,i),a=i.op="afterCount",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},create:function(e,n,i){var u=this,a=void 0;return n||(n={}),i||(i={}),a=i.op="beforeCreate",t.utils.resolve(u[a](e,n,i)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),a=i.op="create",u.dbg(a,e,n,i),t.utils.resolve(u._create(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"create");return d.created=l?1:0,d=u.respond(d,i),a=i.op="afterCreate",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},createMany:function(e,n,i){var u=this,a=void 0;return n||(n={}),i||(i={}),a=i.op="beforeCreateMany",t.utils.resolve(u[a](e,n,i)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=i.op="createMany",u.dbg(a,e,n,i),t.utils.resolve(u._createMany(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];l||(l=[]),c||(c={});var d=new r(l,c,"createMany");return d.created=l.length,d=u.respond(d,i),a=i.op="afterCreateMany",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroy:function(e,n,i){var u=this,a=void 0;return i||(i={}),a=i.op="beforeDestroy",t.utils.resolve(u[a](e,n,i)).then(function(){return a=i.op="destroy",u.dbg(a,e,n,i),t.utils.resolve(u._destroy(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroy");return d=u.respond(d,i),a=i.op="afterDestroy",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroyAll:function(e,n,i){var u=this,a=void 0;return n||(n={}),i||(i={}),a=i.op="beforeDestroyAll",t.utils.resolve(u[a](e,n,i)).then(function(){return a=i.op="destroyAll",u.dbg(a,e,n,i),t.utils.resolve(u._destroyAll(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroyAll");return d=u.respond(d,i),a=i.op="afterDestroyAll",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},loadBelongsTo:function(e,n,r,i){var u=this,a=n.getRelation();if(!t.utils.isObject(r)||t.utils.isArray(r)){var s=r.map(function(t){return u.makeBelongsToForeignKey(e,n,t)}).filter(function(e){return e});return u.findAll(a,{where:o.defineProperty({},a.idAttribute,{in:s})},i).then(function(e){r.forEach(function(t){e.forEach(function(e){e[a.idAttribute]===t[n.foreignKey]&&n.setLocalField(t,e)})})})}var f=function(){var t=r;return{v:u.find(a,u.makeBelongsToForeignKey(e,n,t),i).then(function(e){n.setLocalField(t,e)})}}();return"object"===("undefined"==typeof f?"undefined":o.typeof(f))?f.v:void 0},find:function(e,n,i){var u=this,a=void 0,s=void 0;return i||(i={}),i.with||(i.with=[]),s=i.op="beforeFind",t.utils.resolve(u[s](e,n,i)).then(function(){return s=i.op="find",u.dbg(s,e,n,i),t.utils.resolve(u._find(e,n,i))}).then(function(n){var r=o.slicedToArray(n,1),s=r[0];if(s){a=s;var f=[];return t.utils.forEachRelation(e,i,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=u.loadHasManyLocalKeys(e,t,a,n):"hasMany"===t.type&&t.foreignKeys?r=u.loadHasManyForeignKeys(e,t,a,n):"belongsTo"===t.type&&(r=u.loadBelongsTo(e,t,a,n)):r="hasOne"===t.type?u.loadHasOne(e,t,a,n):u.loadHasMany(e,t,a,n),r&&f.push(r)}),Promise.all(f)}}).then(function(){var o=new r(a,{},"find");return o.found=a?1:0,o=u.respond(o,i),s=i.op="afterFind",t.utils.resolve(u[s](e,n,i,o)).then(function(e){return t.utils.isUndefined(e)?o:e})})},findAll:function(e,n,i){var u=this;i||(i={}),i.with||(i.with=[]);var a=[],s=void 0,f=i._activeWith;if(t.utils.isObject(f)){var l=f.query||{};f.replace?n=l:t.utils.deepFillIn(n,l)}return s=i.op="beforeFindAll",t.utils.resolve(u[s](e,n,i)).then(function(){return s=i.op="findAll",u.dbg(s,e,n,i),t.utils.resolve(u._findAll(e,n,i))}).then(function(n){var r=o.slicedToArray(n,1),s=r[0];s||(s=[]),a=s;var f=[];return t.utils.forEachRelation(e,i,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=u.loadHasManyLocalKeys(e,t,a,n):"hasMany"===t.type&&t.foreignKeys?r=u.loadHasManyForeignKeys(e,t,a,n):"belongsTo"===t.type&&(r=u.loadBelongsTo(e,t,a,n)):r="hasMany"===t.type?u.loadHasMany(e,t,a,n):u.loadHasOne(e,t,a,n),r&&f.push(r)}),Promise.all(f)}).then(function(){var o=new r(a,{},"findAll");return o.found=a.length,o=u.respond(o,i),s=i.op="afterFindAll",t.utils.resolve(u[s](e,n,i,o)).then(function(e){return t.utils.isUndefined(e)?o:e})})},getOpt:function(e,n){return n||(n={}),t.utils.isUndefined(n[e])?t.utils.plainCopy(this[e]):t.utils.plainCopy(n[e])},loadHasMany:function(e,n,r,o){var i=this,u=!1;t.utils.isObject(r)&&!t.utils.isArray(r)&&(u=!0,r=[r]);var a=r.map(function(t){return i.makeHasManyForeignKey(e,n,t)}),s={where:{}},f=s.where[n.foreignKey]={};return u?f["=="]=a[0]:f.in=a.filter(function(e){return e}),i.findAll(n.getRelation(),s,o).then(function(o){r.forEach(function(r){var i=[];u?i=o:o.forEach(function(o){t.utils.get(o,n.foreignKey)===r[e.idAttribute]&&i.push(o)}),n.setLocalField(r,i)})})},loadHasManyLocalKeys:function(e,n,r,i){var u=this,s=void 0,f=n.getRelation();if(t.utils.isObject(r)&&!t.utils.isArray(r)&&(s=r),s)return u.findAll(f,{where:o.defineProperty({},f.idAttribute,{in:u.makeHasManyLocalKeys(e,n,s)})},i).then(function(e){n.setLocalField(s,e)});var l=function(){var s=[];return r.forEach(function(t){s=s.concat(u.self.makeHasManyLocalKeys(e,n,t))}),{v:u.findAll(f,{where:o.defineProperty({},f.idAttribute,{in:a(s).filter(function(e){return e})})},i).then(function(e){return r.forEach(function(r){var o=[],i=t.utils.get(r,n.localKeys)||[];i=t.utils.isArray(i)?i:Object.keys(i),e.forEach(function(e){i&&-1!==i.indexOf(e[f.idAttribute])&&o.push(e)}),n.setLocalField(r,o)}),e})}}();return"object"===("undefined"==typeof l?"undefined":o.typeof(l))?l.v:void 0},loadHasManyForeignKeys:function(e,n,r,i){var u=this,a=n.getRelation(),s=e.idAttribute,f=void 0;return t.utils.isObject(r)&&!t.utils.isArray(r)&&(f=r),f?u.findAll(n.getRelation(),{where:o.defineProperty({},n.foreignKeys,{contains:u.makeHasManyForeignKeys(e,n,f)})},i).then(function(e){n.setLocalField(f,e)}):u.findAll(a,{where:o.defineProperty({},n.foreignKeys,{isectNotEmpty:r.map(function(t){return u.makeHasManyForeignKeys(e,n,t)})})},i).then(function(e){var o=n.foreignKeys;r.forEach(function(r){var i=[],u=t.utils.get(r,s);e.forEach(function(n){var r=t.utils.get(e,o)||[];-1!==r.indexOf(u)&&i.push(n)}),n.setLocalField(r,i)})})},loadHasOne:function(e,n,r,o){return t.utils.isObject(r)&&!t.utils.isArray(r)&&(r=[r]),this.loadHasMany(e,n,r,o).then(function(){r.forEach(function(e){var r=n.getLocalField(e);t.utils.isArray(r)&&r.length&&n.setLocalField(e,r[0])})})},log:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;t>r;r++)n[r-1]=arguments[r];if(e&&!n.length&&(n.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (Adapter)";if(console[e]){var i;(i=console)[e].apply(i,[o].concat(n))}else{var u;(u=console).log.apply(u,[o].concat(n))}}},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,n,r){var o=[],i=t.utils.get(r,n.localKeys)||[];return i=t.utils.isArray(i)?i:Object.keys(i),o=o.concat(i),a(o).filter(function(e){return e})},makeHasManyForeignKeys:function(e,n,r){return t.utils.get(r,e.idAttribute)},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},sum:function(e,n,i,u){var a=this,s=void 0;if(!t.utils.isString(n))throw new Error("field must be a string!");return i||(i={}),u||(u={}),s=u.op="beforeSum",t.utils.resolve(a[s](e,n,i,u)).then(function(){return s=u.op="sum",a.dbg(s,e,n,i,u),t.utils.resolve(a._sum(e,n,i,u))}).then(function(f){var l=o.slicedToArray(f,2),c=l[0],d=l[1];d||(d={});var p=new r(c,d,s);return p=a.respond(p,u),s=u.op="afterSum",t.utils.resolve(a[s](e,n,i,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,n,i,u){var a=this;i||(i={}),u||(u={});var f=void 0;return f=u.op="beforeUpdate",t.utils.resolve(a[f](e,n,i,u)).then(function(r){return i=t.utils.isUndefined(r)?i:r,i=s(e,i),f=u.op="update",a.dbg(f,e,n,i,u),t.utils.resolve(a._update(e,n,i,u))}).then(function(s){var l=o.slicedToArray(s,2),c=l[0],d=l[1];d||(d={});var p=new r(c,d,"update");return p.updated=c?1:0,p=a.respond(p,u),f=u.op="afterUpdate",t.utils.resolve(a[f](e,n,i,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateAll:function(e,n,i,u){var a=this;n||(n={}),i||(i={}),u||(u={});var f=void 0;return f=u.op="beforeUpdateAll",t.utils.resolve(a[f](e,n,i,u)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),f=u.op="updateAll",a.dbg(f,e,n,i,u),t.utils.resolve(a._updateAll(e,n,i,u))}).then(function(s){var l=o.slicedToArray(s,2),c=l[0],d=l[1];c||(c=[]),d||(d={});var p=new r(c,d,"updateAll");return p.updated=c.length,p=a.respond(p,u),f=u.op="afterUpdateAll",t.utils.resolve(a[f](e,n,i,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateMany:function(e,n,i){var u=this;n||(n=[]),i||(i={});var a=void 0,f=e.idAttribute;return n=n.filter(function(e){return t.utils.get(e,f)}),a=i.op="beforeUpdateMany",t.utils.resolve(u[a](e,n,i)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=i.op="updateMany",u.dbg(a,e,n,i),t.utils.resolve(u._updateMany(e,n,i))}).then(function(s){var f=o.slicedToArray(s,2),l=f[0],c=f[1];l||(l=[]),c||(c={});var d=new r(l,c,"updateMany");return d.updated=l.length,d=u.respond(d,i),a=i.op="afterUpdateMany",t.utils.resolve(u[a](e,n,i,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})}}),e.noop=i,e.noop2=u,e.unique=a,e.withoutRelations=s,e.Adapter=n,e.reserved=l,e.Response=r})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=i.merge({},e),this.interceptors={request:new a,response:new a}}var o=n(5),i=n(6),u=n(7),a=n(17),s=n(18),f=n(19),l=n(20),c=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=i.merge({url:arguments[0]},arguments[1])),e=i.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!s(e.url)&&(e.url=f(e.baseURL,e.url)),e.withCredentials=e.withCredentials||this.defaults.withCredentials,e.data=c(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[u,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n};var d=new r(o),p=e.exports=l(r.prototype.request,d);p.defaults=d.defaults,p.interceptors=d.interceptors,p.create=function(e){return new r(e)},p.all=function(e){return Promise.all(e)},p.spread=n(21),i.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))},p[e]=l(r.prototype[e],d)}),i.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))},p[e]=l(r.prototype[e],d)})},function(e,t,n){"use strict";var r=n(6),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)||r.isArrayBuffer(e)||r.isStream(e)?e:r.isArrayBufferView(e)?e.buffer:!r.isObject(e)||r.isFile(e)||r.isBlob(e)?e:(r.isUndefined(t)||(r.forEach(t,function(e,n){"content-type"===n.toLowerCase()&&(t["Content-Type"]=e)}),r.isUndefined(t["Content-Type"])&&(t["Content-Type"]="application/json;charset=utf-8")),JSON.stringify(e))}],transformResponse:[function(e){if("string"==typeof e){e=e.replace(o,"");try{e=JSON.parse(e)}catch(e){}}return e}],headers:{common:{Accept:"application/json, text/plain, */*"},patch:r.merge(i),post:r.merge(i),put:r.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&300>e}}},function(e,t){"use strict";function n(e){return"[object Array]"===b.call(e)}function r(e){return"[object ArrayBuffer]"===b.call(e)}function o(e){return"[object FormData]"===b.call(e)}function i(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function u(e){return"string"==typeof e}function a(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function l(e){return"[object Date]"===b.call(e)}function c(e){return"[object File]"===b.call(e)}function d(e){return"[object Blob]"===b.call(e)}function p(e){return"[object Function]"===b.call(e)}function h(e){return f(e)&&p(e.pipe)}function y(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function v(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function m(e,t){if(null!==e&&"undefined"!=typeof e)if("object"==typeof e||n(e)||(e=[e]),n(e))for(var r=0,o=e.length;o>r;r++)t.call(null,e[r],r,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function g(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=g(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)m(arguments[n],e);return t}var b=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:o,isArrayBufferView:i,isString:u,isNumber:a,isObject:f,isUndefined:s,isDate:l,isFile:c,isBlob:d,isFunction:p,isStream:h,isStandardBrowserEnv:v,forEach:m,merge:g,trim:y}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,o){try{var i;"function"==typeof e.adapter?i=e.adapter:"undefined"!=typeof XMLHttpRequest?i=n(9):"undefined"!=typeof t&&(i=n(9)),"function"==typeof i&&i(r,o,e)}catch(e){o(e)}})}}).call(t,n(8))},function(e,t){function n(){f=!1,u.length?s=u.concat(s):l=-1,s.length&&r()}function r(){if(!f){var e=setTimeout(n);f=!0;for(var t=s.length;t;){for(u=s,s=[];++l1)for(var n=1;n>8-a%1*8)){if(r=i.charCodeAt(a+=.75),r>255)throw new n;t=t<<8|r}return u}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t){"use strict";e.exports=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(n):e(n)}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,u){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(i)&&a.push("domain="+i),u===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(6);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,"")}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r +* @version 3.0.0-beta.5 - Homepage * @copyright (c) 2014-2016 js-data-http project authors * @license MIT * @@ -1154,6 +1154,34 @@ return /******/ (function(modules) { // webpackBootstrap /** * Add an Http actions to a mapper. * + * @example + * // CommonJS + * var JSData = require('js-data') + * // It is recommended to use DataStore in the browser + * var DataStore = JSData.DataStore + * + * var JSDataHttp = require('js-data-http') + * var HttpAdapter = JSDataHttp.HttpAdapter + * var addAction = JSDataHttp.addAction + * + * var adapter = new HttpAdapter() + * var store = new DataStore() + * + * store.registerAdapter('http', adapter, { default: true }) + * store.defineMapper('school') + * + * // GET /reports/schools/:school_id/teachers + * addAction('getTeacherReports', { + * basePath: 'reports/schools', + * pathname: 'teachers', + * method: 'GET' + * })(store.getMapper('school')) + * + * // /reports/schools/1234/teachers + * store.getMapper('school').getTeacherReports(1234).then(function (response) { + * // ... + * }) + * * @name module:js-data-http.addAction * @method * @param {string} name Name of the new action. @@ -1207,7 +1235,7 @@ return /******/ (function(modules) { // webpackBootstrap } config.method = config.method || 'GET'; config.mapper = self.name; - _jsData.utils.deepMixIn(config)(_opts); + _jsData.utils.deepMixIn(config, _opts); return _jsData.utils.resolve(config).then(_opts.request || opts.request).then(function (config) { return adapter.HTTP(config); }).then(function (data) { @@ -1225,6 +1253,36 @@ return /******/ (function(modules) { // webpackBootstrap * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for * action configuration options. * + * @example + * // CommonJS + * var JSData = require('js-data') + * // It is recommended to use DataStore in the browser + * var DataStore = JSData.DataStore + * + * var JSDataHttp = require('js-data-http') + * var HttpAdapter = JSDataHttp.HttpAdapter + * var addActions = JSDataHttp.addActions + * + * var adapter = new HttpAdapter() + * var store = new DataStore() + * + * store.registerAdapter('http', adapter, { default: true }) + * store.defineMapper('school') + * + * addActions({ + * // GET /reports/schools/:school_id/teachers + * getTeacherReports: { + * basePath: 'reports/schools', + * pathname: 'teachers', + * method: 'GET' + * } + * })(store.getMapper('school')) + * + * // /reports/schools/1234/teachers + * store.getMapper('school').getTeacherReports(1234).then(function (response) { + * // ... + * }) + * * @name module:js-data-http.addActions * @method * @param {Object.} opts Object where the key is an action name @@ -1235,7 +1293,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.addActions = function addActions(opts) { opts || (opts = {}); return function (mapper) { - _jsData.utils.forOwn(mapper, function (value, key) { + _jsData.utils.forOwn(opts, function (value, key) { exports.addAction(key, value)(mapper); }); return mapper; @@ -1257,8 +1315,8 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ exports.version = { - beta: 4, - full: '3.0.0-beta.4', + beta: 5, + full: '3.0.0-beta.5', major: 3, minor: 0, patch: 0 @@ -1270,22 +1328,25 @@ return /******/ (function(modules) { // webpackBootstrap * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower * as `js-data-fetch`. * - * __Script tag__: - * ```javascript - * window.HttpAdapter - * ``` - * __CommonJS__: - * ```javascript - * var HttpAdapter = require('js-data-http') - * ``` - * __ES6 Modules__: - * ```javascript - * import HttpAdapter from 'js-data-http' - * ``` - * __AMD__: - * ```javascript - * define('myApp', ['js-data-http'], function (HttpAdapter) { ... }) - * ``` + * @example Script tag + * var HttpAdapter = window.JSDataHttp.HttpAdapter + * var adapter = new HttpAdapter() + * + * @example CommonJS + * var HttpAdapter = require('js-data-Http').HttpAdapter + * var adapter = new HttpAdapter() + * + * @example ES2015 Modules + * import {HttpAdapter} from 'js-data-Http' + * const adapter = new HttpAdapter() + * + * @example AMD + * define('myApp', ['js-data-Http'], function (JSDataHttp) { + * var HttpAdapter = JSDataHttp.HttpAdapter + * var adapter = new HttpAdapter() + * + * // ... + * }) * * @module js-data-http */ diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index 77aba75..a1ab4e4 100644 --- a/fetch/dist/js-data-fetch.js.map +++ b/fetch/dist/js-data-fetch.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 387d4ab6abb4878de718","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///./~/js-data-adapter/dist/js-data-adapter.js","webpack:///external \"undefined\""],"names":[],"mappings":"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AACA;AACA;AACA,kDAAiD;AACjD,EAAC,kCAAkC;;AAEnC;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD,+BAA+B;AAChF;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA,oEAAmE,aAAa;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAsE,eAAe;AACrF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,OAAO;AACpB;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,6BAA6B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,8BAA8B,eAAe;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,+BAA+B,eAAe;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,gCAAgC,eAAe;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,iCAAiC,eAAe;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAwE,eAAe;AACvF;AACA;;AAEA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP,+CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP,gDAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,EAAE;AAClB;AACA;AACA,yBAAwB;AACxB;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,oDAAmD;AACnD;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA,gDAA+C;AAC/C;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB;AACA;AACA,6FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD,4C;;;;;;AC/mDA,4B","file":"./fetch/dist/js-data-fetch.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"js-data\"), require(\"undefined\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"js-data\", \"undefined\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSDataHttp\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"JSDataHttp\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 387d4ab6abb4878de718\n **/","/* global fetch:true Headers:true Request:true */\n\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport {\n Adapter,\n noop,\n noop2\n} from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nfunction isValidString (value) {\n return (value != null && value !== '')\n}\nfunction join (items, separator) {\n separator || (separator = '')\n return items.filter(isValidString).join(separator)\n}\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nfunction encode (val) {\n return encodeURIComponent(val)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+')\n .replace(/%5B/gi, '[')\n .replace(/%5D/gi, ']')\n}\n\nfunction buildUrl (url, params) {\n if (!params) {\n return url\n }\n\n const parts = []\n\n utils.forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!utils.isArray(val)) {\n val = [val]\n }\n\n val.forEach(function (v) {\n if (window.toString.call(v) === '[object Date]') {\n v = v.toISOString()\n } else if (utils.isObject(v)) {\n v = utils.toJson(v)\n }\n parts.push(`${encode(key)}=${encode(v)}`)\n })\n })\n\n if (parts.length > 0) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\n }\n\n return url\n}\n\nconst __super__ = Adapter.prototype\n\nconst DEFAULTS = {\n // Default and user-defined settings\n /**\n * @name HttpAdapter#basePath\n * @type {string}\n */\n basePath: '',\n\n /**\n * @name HttpAdapter#forceTrailingSlash\n * @type {boolean}\n * @default false\n */\n forceTrailingSlash: false,\n\n /**\n * @name HttpAdapter#http\n * @type {Function}\n */\n http: axios,\n\n /**\n * @name HttpAdapter#httpConfig\n * @type {Object}\n */\n httpConfig: {},\n\n /**\n * @name HttpAdapter#suffix\n * @type {string}\n */\n suffix: '',\n\n /**\n * @name HttpAdapter#useFetch\n * @type {boolean}\n * @default false\n */\n useFetch: false\n}\n\n/**\n * HttpAdapter class.\n *\n * @class HttpAdapter\n * @extends Adapter\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.basePath=''] TODO\n * @param {boolean} [opts.debug=false] TODO\n * @param {boolean} [opts.forceTrailingSlash=false] TODO\n * @param {Object} [opts.http=axios] TODO\n * @param {Object} [opts.httpConfig={}] TODO\n * @param {string} [opts.suffix=''] TODO\n * @param {boolean} [opts.useFetch=false] TODO\n */\nfunction HttpAdapter (opts) {\n const self = this\n opts || (opts = {})\n utils.fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\n\n/**\n * @name module:js-data-http.HttpAdapter\n * @see HttpAdapter\n */\nexports.HttpAdapter = HttpAdapter\n\n// Setup prototype inheritance from Adapter\nHttpAdapter.prototype = Object.create(Adapter.prototype, {\n constructor: {\n value: HttpAdapter,\n enumerable: false,\n writable: true,\n configurable: true\n }\n})\n\nObject.defineProperty(HttpAdapter, '__super__', {\n configurable: true,\n value: Adapter\n})\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * @example Using the ES2015 class syntax.\n * class MyHttpAdapter extends HttpAdapter {...}\n * const adapter = new MyHttpAdapter()\n *\n * @example Using {@link HttpAdapter.extend}.\n * var instanceProps = {...}\n * var classProps = {...}\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n *\n * @name HttpAdapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `HttpAdapter`.\n */\nHttpAdapter.extend = utils.extend\n\nutils.addHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterDEL\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterDEL: noop2,\n\n /**\n * @name HttpAdapter#afterGET\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterGET: noop2,\n\n /**\n * @name HttpAdapter#afterHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterHTTP: noop2,\n\n /**\n * @name HttpAdapter#afterPOST\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPOST: noop2,\n\n /**\n * @name HttpAdapter#afterPUT\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPUT: noop2,\n\n /**\n * @name HttpAdapter#beforeDEL\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeDEL: noop,\n\n /**\n * @name HttpAdapter#beforeGET\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeGET: noop,\n\n /**\n * @name HttpAdapter#beforeHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n */\n beforeHTTP: noop,\n\n /**\n * @name HttpAdapter#beforePOST\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePOST: noop,\n\n /**\n * @name HttpAdapter#beforePUT\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePUT: noop,\n\n _count (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('count', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _create (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _createMany (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroy (mapper, id, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroyAll (mapper, query, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _end (mapper, opts, response) {\n return [this.deserialize(mapper, response, opts), response]\n },\n\n _find (mapper, id, opts) {\n const self = this\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _findAll (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _sum (mapper, field, query, opts) {\n const self = this\n return self.GET(\n self.getPath('sum', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _update (mapper, id, props, opts) {\n const self = this\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateAll (mapper, props, query, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateMany (mapper, records, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n /**\n * Retrieve the number of records that match the selection `query`.\n *\n * @name HttpAdapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n count (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params.count = true\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.count.call(self, mapper, query, opts)\n },\n\n /**\n * Create a new the record from the provided `props`.\n *\n * @name HttpAdapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props Properties to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n create (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.create.call(self, mapper, props, opts)\n },\n\n /**\n * Create multiple new records in batch.\n *\n * @name HttpAdapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} props Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n createMany (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.createMany.call(self, mapper, props, opts)\n },\n\n /**\n * Make an Http request to `url` according to the configuration in `config`.\n *\n * @name HttpAdapter#DEL\n * @method\n * @param {string} url Url for the request.\n * @param {Object} [config] Http configuration that will be passed to\n * {@link HttpAdapter#HTTP}.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n DEL (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'delete'\n\n // beforeDEL lifecycle hook\n op = opts.op = 'beforeDEL'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'DEL'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterDEL lifecycle hook\n op = opts.op = 'afterDEL'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * Transform the server response object into the payload that will be returned\n * to JSData.\n *\n * @name HttpAdapter#deserialize\n * @method\n * @param {Object} mapper The mapper used for the operation.\n * @param {Object} response Response object from {@link HttpAdapter#HTTP}.\n * @param {Object} opts Configuration options.\n * @return {(Object|Array)} Deserialized data.\n */\n deserialize (mapper, response, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (utils.isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response && response.hasOwnProperty('data')) {\n return response.data\n }\n return response\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @name HttpAdapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroy (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroy.call(self, mapper, id, opts)\n },\n\n /**\n * Destroy the records that match the selection `query`.\n *\n * @name HttpAdapter#destroyAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroyAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroyAll.call(self, mapper, query, opts)\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter#error\n * @method\n * @param {...*} [args] Arguments to log.\n */\n error (...args) {\n if (console) {\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\n }\n },\n\n /**\n * Make an Http request using `window.fetch`.\n *\n * @name HttpAdapter#fetch\n * @method\n * @param {Object} config Request configuration.\n * @param {Object} config.data Payload for the request.\n * @param {string} config.method Http method for the request.\n * @param {Object} config.headers Headers for the request.\n * @param {Object} config.params Querystring for the request.\n * @param {string} config.url Url for the request.\n * @param {Object} [opts] Configuration options.\n */\n fetch (config, opts) {\n const requestConfig = {\n method: config.method,\n // turn the plain headers object into the Fetch Headers object\n headers: new Headers(config.headers)\n }\n\n if (config.data) {\n requestConfig.body = utils.toJson(config.data)\n }\n\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\n response.config = {\n method: config.method,\n url: config.url\n }\n return response.json().then(function (data) {\n response.data = data\n return response\n })\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @name HttpAdapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n find (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.find.call(self, mapper, id, opts)\n },\n\n /**\n * Retrieve the records that match the selection `query`.\n *\n * @name HttpAdapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n findAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.findAll.call(self, mapper, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#GET\n * @method\n * @param {string} url The url for the request.\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n GET (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'get'\n\n // beforeGET lifecycle hook\n op = opts.op = 'beforeGET'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'GET'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterGET lifecycle hook\n op = opts.op = 'afterGET'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * @name HttpAdapter#getEndpoint\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {boolean} opts TODO\n * @return {string} Full path.\n */\n getEndpoint (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = utils.isUndefined(opts.params) ? {} : opts.params\n const relationList = mapper.relationList || []\n let endpoint = utils.isUndefined(opts.endpoint) ? (utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint\n\n relationList.forEach(function (def) {\n if (def.type !== 'belongsTo' || !def.parent) {\n return\n }\n let item\n const parentKey = def.foreignKey\n const parentDef = def.getRelation()\n let parentId = opts.params[parentKey]\n\n if (parentId === false || !parentKey || !parentDef) {\n if (parentId === false) {\n delete opts.params[parentKey]\n }\n return false\n } else {\n delete opts.params[parentKey]\n\n if (utils.isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? utils.get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n utils.forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n utils._(_opts, parentDef)\n endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint)\n return false\n }\n }\n })\n\n return endpoint\n },\n\n /**\n * @name HttpAdapter#getPath\n * @method\n * @param {string} method TODO\n * @param {Object} mapper TODO\n * @param {(string|number)?} id TODO\n * @param {Object} opts Configuration options.\n */\n getPath (method, mapper, id, opts) {\n const self = this\n opts || (opts = {})\n const args = [\n utils.isUndefined(opts.basePath) ? (utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (utils.isString(id) || utils.isNumber(id) || method === 'create') ? id : null, opts)\n ]\n if (method === 'find' || method === 'update' || method === 'destroy') {\n args.push(id)\n }\n return makePath.apply(utils, args)\n },\n\n getParams (opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.params)) {\n return {}\n }\n return utils.copy(opts.params)\n },\n\n getSuffix (mapper, opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.suffix)) {\n if (utils.isUndefined(mapper.suffix)) {\n return this.suffix\n }\n return mapper.suffix\n }\n return opts.suffix\n },\n\n /**\n * Make an Http request.\n *\n * @name HttpAdapter#HTTP\n * @method\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n HTTP (config, opts) {\n const self = this\n const start = new Date()\n opts || (opts = {})\n const payload = config.data\n const cache = config.cache\n const timeout = config.timeout\n config = utils.copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = utils.deepMixIn(config, self.httpConfig)\n config.data = payload\n config.cache = cache\n config.timeout = timeout\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\n config.url += '/'\n }\n config.method = config.method.toUpperCase()\n const suffix = config.suffix || opts.suffix || self.suffix\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\n config.url += suffix\n }\n\n function logResponse (data) {\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\n if (data.status >= 200 && data.status < 300) {\n if (self.log) {\n self.dbg('debug', str, data)\n }\n return data\n } else {\n if (self.error) {\n self.error(`'FAILED: ${str}`, data)\n }\n return utils.reject(data)\n }\n }\n\n if (!self.http) {\n throw new Error('You have not configured this adapter with an http library!')\n }\n\n return utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) {\n config = _config || config\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\n return self.fetch(config, opts).then(logResponse, logResponse)\n }\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\n return self.responseError(err, config, opts)\n })\n }).then(function (response) {\n return utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#POST\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n POST (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'post'\n\n // beforePOST lifecycle hook\n op = opts.op = 'beforePOST'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'POST'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPOST lifecycle hook\n op = opts.op = 'afterPOST'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#PUT\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n PUT (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'put'\n\n // beforePUT lifecycle hook\n op = opts.op = 'beforePUT'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'PUT'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPUT lifecycle hook\n op = opts.op = 'afterPUT'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#queryTransform\n * @method\n * @param {Object} mapper TODO\n * @param {*} params TODO\n * @param {*} opts TODO\n * @return {*} Transformed params.\n */\n queryTransform (mapper, params, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (utils.isFunction(mapper.queryTransform)) {\n return mapper.queryTransform(mapper, params, opts)\n }\n return params\n },\n\n /**\n * Error handler invoked when the promise returned by {@link HttpAdapter#http}\n * is rejected. Default implementation is to just return the error wrapped in\n * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is\n * called by {@link HttpAdapter#HTTP}.\n *\n * @name HttpAdapter#responseError\n * @method\n * @param {*} err The error that {@link HttpAdapter#http} rejected with.\n * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}.\n * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}.\n * @return {Promise}\n */\n responseError (err, config, opts) {\n return utils.reject(err)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#serialize\n * @method\n * @param {Object} mapper TODO\n * @param {Object} data TODO\n * @param {*} opts TODO\n * @return {*} Serialized data.\n */\n serialize (mapper, data, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (utils.isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\n },\n\n /**\n * Retrieve the sum of the field of the records that match the selection query.\n *\n * @name HttpAdapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field The field to sum.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n sum (mapper, field, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n if (!utils.utils.isString(field)) {\n throw new Error('field must be a string!')\n }\n opts.params = self.getParams(opts)\n opts.params.sum = field\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.sum.call(self, mapper, field, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#update\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {*} props TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n update (mapper, id, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.update.call(self, mapper, id, props, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#updateAll\n * @method\n * @param {Object} mapper TODO\n * @param {Object} props TODO\n * @param {Object} query TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n updateAll (mapper, props, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateAll.call(self, mapper, props, query, opts)\n },\n\n /**\n * Update multiple records in batch.\n *\n * {@link HttpAdapter#beforeUpdateMany} will be called before calling\n * {@link HttpAdapter#PUT}.\n * {@link HttpAdapter#afterUpdateMany} will be called after calling\n * {@link HttpAdapter#PUT}.\n *\n * @name HttpAdapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} records Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n updateMany (mapper, records, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateMany.call(self, mapper, records, opts)\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name module:js-data-http.addAction\n * @method\n * @param {string} name Name of the new action.\n * @param {Object} [opts] Action configuration\n * @param {string} [opts.adapter]\n * @param {string} [opts.pathname]\n * @param {Function} [opts.request]\n * @param {Function} [opts.response]\n * @param {Function} [opts.responseError]\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addAction = function addAction (name, opts) {\n if (!name || !utils.isString(name)) {\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\n }\n return function (mapper) {\n if (mapper[name]) {\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\n }\n opts.request = opts.request || function (config) { return config }\n opts.response = opts.response || function (response) { return response }\n opts.responseError = opts.responseError || function (err) { return utils.reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (utils.isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n utils.fillIn(config, opts)\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\n _opts.endpoint = config.endpoint\n }\n if (typeof _opts.getEndpoint === 'function') {\n config.url = _opts.getEndpoint(self, _opts)\n } else {\n let args = [\n _opts.basePath || self.basePath || adapter.basePath,\n adapter.getEndpoint(self, utils.isSorN(id) ? id : null, _opts)\n ]\n if (utils.isSorN(id)) {\n args.push(id)\n }\n args.push(opts.pathname || name)\n config.url = makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.mapper = self.name\n utils.deepMixIn(config)(_opts)\n return utils.resolve(config)\n .then(_opts.request || opts.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.mapper = self.name\n }\n return data\n })\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\n }\n return mapper\n }\n}\n\n/**\n * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for\n * action configuration options.\n *\n * @name module:js-data-http.addActions\n * @method\n * @param {Object.} opts Object where the key is an action name\n * and the value is the configuration for the action.\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addActions = function addActions (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n exports.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name module:js-data-http.version\n * @type {Object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexports.version = '<%= version %>'\n\n/**\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\n * as `js-data-fetch`.\n *\n * __Script tag__:\n * ```javascript\n * window.HttpAdapter\n * ```\n * __CommonJS__:\n * ```javascript\n * var HttpAdapter = require('js-data-http')\n * ```\n * __ES6 Modules__:\n * ```javascript\n * import HttpAdapter from 'js-data-http'\n * ```\n * __AMD__:\n * ```javascript\n * define('myApp', ['js-data-http'], function (HttpAdapter) { ... })\n * ```\n *\n * @module js-data-http\n */\nexports.default = HttpAdapter\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}\n ** module id = 1\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['exports', 'js-data'], factory) :\n (factory((global.Adapter = global.Adapter || {}),global.JSData));\n}(this, function (exports,jsData) { 'use strict';\n\n var babelHelpers = {};\n babelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n babelHelpers.defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n };\n\n babelHelpers.slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n babelHelpers;\n\n var noop = function noop() {\n var self = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = args[args.length - 1];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var noop2 = function noop2() {\n var self = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var opts = args[args.length - 2];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var unique = function unique(array) {\n var seen = {};\n var final = [];\n array.forEach(function (item) {\n if (item in seen) {\n return;\n }\n final.push(item);\n seen[item] = 0;\n });\n return final;\n };\n\n var withoutRelations = function withoutRelations(mapper, props) {\n return jsData.utils.omit(props, mapper.relationFields || []);\n };\n\n var DEFAULTS = {\n /**\n * Whether to log debugging information.\n *\n * @name Adapter#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\n\n /**\n * Whether to return a more detailed response object.\n *\n * @name Adapter#raw\n * @type {boolean}\n * @default false\n */\n raw: false\n };\n\n /**\n * Abstract class meant to be extended by adapters.\n *\n * @class Adapter\n * @abstract\n * @param {Object} [opts] Configuration opts.\n * @param {boolean} [opts.debug=false] Whether to log debugging information.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed response\n * object.\n */\n function Adapter(opts) {\n var self = this;\n opts || (opts = {});\n jsData.utils.fillIn(opts, DEFAULTS);\n jsData.utils.fillIn(self, opts);\n }\n\n var reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where'];\n\n /**\n * Response object used when `raw` is `true`. May contain other fields in\n * addition to `data`.\n *\n * @class Response\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n\n /**\n * Response data.\n *\n * @name Response#data\n * @type {*}\n */\n self.data = data;\n\n jsData.utils.fillIn(self, meta);\n\n /**\n * The operation for which the response was created.\n *\n * @name Response#op\n * @type {string}\n */\n self.op = op;\n }\n\n /**\n * Alternative to ES6 class syntax for extending `Adapter`.\n *\n * @name Adapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `Adapter`.\n */\n Adapter.extend = jsData.utils.extend;\n\n jsData.utils.addHiddenPropsToTarget(Adapter.prototype, {\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#afterCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} props The `props` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `afterCount`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCount: noop2,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `afterCreate`\n * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreate: noop2,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `afterCreateMany`\n * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreateMany: noop2,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#afterDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `afterDestroy`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroy: noop2,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#afterDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `afterDestroyAll`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroyAll: noop2,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#afterFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `afterFind`\n * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFind: noop2,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#afterFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `afterFindAll`\n * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFindAll: noop2,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#afterSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {string} field The `field` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `afterSum`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterSum: noop2,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#afterUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `afterUpdate`\n * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdate: noop2,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#afterUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `afterUpdateAll`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateAll: noop2,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#afterUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} records The `records` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `afterUpdateMany`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateMany: noop2,\n\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#beforeCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} query The `query` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `beforeCount`\n */\n beforeCount: noop,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#beforeCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `beforeCreate`\n */\n beforeCreate: noop,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#beforeCreateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `beforeCreateMany`\n */\n beforeCreateMany: noop,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#beforeDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `beforeDestroy`\n */\n beforeDestroy: noop,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#beforeDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `beforeDestroyAll`\n */\n beforeDestroyAll: noop,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#beforeFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `beforeFind`\n */\n beforeFind: noop,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#beforeFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `beforeFindAll`\n */\n beforeFindAll: noop,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#beforeSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `beforeSum`\n */\n beforeSum: noop,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#beforeUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `beforeUpdate`\n */\n beforeUpdate: noop,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#beforeUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `beforeUpdateAll`\n */\n beforeUpdateAll: noop,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#beforeUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} props The `props` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `beforeUpdateMany`\n */\n beforeUpdateMany: noop,\n\n /**\n * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`.\n *\n * @name Adapter#dbg\n * @method\n */\n dbg: function dbg() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this.log.apply(this, ['debug'].concat(args));\n },\n\n\n /**\n * Retrieve the number of records that match the selection query. Called by\n * `Mapper#count`.\n *\n * @name Adapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n count: function count(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeCount lifecycle hook\n op = opts.op = 'beforeCount';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'count';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._count(mapper, query, opts));\n }).then(function (results) {\n var _results = babelHelpers.slicedToArray(results, 2);\n\n var data = _results[0];\n var result = _results[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterCount lifecycle hook\n op = opts.op = 'afterCount';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create a new record. Called by `Mapper#create`.\n *\n * @name Adapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The record to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n create: function create(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._create(mapper, props, opts));\n }).then(function (results) {\n var _results2 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results2[0];\n var result = _results2[1];\n\n result || (result = {});\n var response = new Response(data, result, 'create');\n response.created = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create multiple records in a single batch. Called by `Mapper#createMany`.\n *\n * @name Adapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The records to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n createMany: function createMany(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = props.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'createMany';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._createMany(mapper, props, opts));\n }).then(function (results) {\n var _results3 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results3[0];\n var result = _results3[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'createMany');\n response.created = data.length;\n response = self.respond(response, opts);\n\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the record with the given primary key. Called by\n * `Mapper#destroy`.\n *\n * @name Adapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroy: function destroy(mapper, id, opts) {\n var self = this;\n var op = void 0;\n opts || (opts = {});\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._destroy(mapper, id, opts));\n }).then(function (results) {\n var _results4 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results4[0];\n var result = _results4[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroy');\n response = self.respond(response, opts);\n\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the records that match the selection query. Called by\n * `Mapper#destroyAll`.\n *\n * @name Adapter#destroyAll\n * @method\n * @param {Object} mapper the mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroyAll: function destroyAll(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._destroyAll(mapper, query, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results5[0];\n var result = _results5[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Load a belongsTo relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadBelongsTo\n * @method\n * @return {Promise}\n */\n loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) {\n var self = this;\n var relationDef = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n var _ret = function () {\n var record = records;\n return {\n v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) {\n def.setLocalField(record, relatedItem);\n })\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.v;\n } else {\n var keys = records.map(function (record) {\n return self.makeBelongsToForeignKey(mapper, def, record);\n }).filter(function (key) {\n return key;\n });\n return self.findAll(relationDef, {\n where: babelHelpers.defineProperty({}, relationDef.idAttribute, {\n 'in': keys\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n relatedItems.forEach(function (relatedItem) {\n if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) {\n def.setLocalField(record, relatedItem);\n }\n });\n });\n });\n }\n },\n\n\n /**\n * Retrieve the record with the given primary key. Called by `Mapper#find`.\n *\n * @name Adapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n find: function find(mapper, id, opts) {\n var self = this;\n var record = void 0,\n op = void 0;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results6[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasOne') {\n task = self.loadHasOne(mapper, def, record, __opts);\n } else {\n task = self.loadHasMany(mapper, def, record, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, record, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, record, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, record, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(record, {}, 'find');\n response.found = record ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterFind lifecycle hook\n op = opts.op = 'afterFind';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @name Adapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n findAll: function findAll(mapper, query, opts) {\n var self = this;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n var records = [];\n var op = void 0;\n var activeWith = opts._activeWith;\n\n if (jsData.utils.isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n jsData.utils.deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results7[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasMany') {\n task = self.loadHasMany(mapper, def, records, __opts);\n } else {\n task = self.loadHasOne(mapper, def, records, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, records, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, records, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, records, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(records, {}, 'findAll');\n response.found = records.length;\n response = self.respond(response, opts);\n\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Resolve the value of the specified option based on the given options and\n * this adapter's settings. Override with care.\n *\n * @name Adapter#getOpt\n * @method\n * @param {string} opt The name of the option.\n * @param {Object} [opts] Configuration options.\n * @return {*} The value of the specified option.\n */\n getOpt: function getOpt(opt, opts) {\n opts || (opts = {});\n return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]);\n },\n\n\n /**\n * Load a hasMany relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasMany\n * @method\n * @return {Promise}\n */\n loadHasMany: function loadHasMany(mapper, def, records, __opts) {\n var self = this;\n var singular = false;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n singular = true;\n records = [records];\n }\n var IDs = records.map(function (record) {\n return self.makeHasManyForeignKey(mapper, def, record);\n });\n var query = {\n where: {}\n };\n var criteria = query.where[def.foreignKey] = {};\n if (singular) {\n // more efficient query when we only have one record\n criteria['=='] = IDs[0];\n } else {\n criteria['in'] = IDs.filter(function (id) {\n return id;\n });\n }\n return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n var attached = [];\n // avoid unneccesary iteration when we only have one record\n if (singular) {\n attached = relatedItems;\n } else {\n relatedItems.forEach(function (relatedItem) {\n if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) {\n attached.push(relatedItem);\n }\n });\n }\n def.setLocalField(record, attached);\n });\n });\n },\n loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) {\n var self = this;\n var record = void 0;\n var relatedMapper = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': self.makeHasManyLocalKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n var _ret2 = function () {\n var localKeys = [];\n records.forEach(function (record) {\n localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record));\n });\n return {\n v: self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': unique(localKeys).filter(function (x) {\n return x;\n })\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (item) {\n var attached = [];\n var itemKeys = jsData.utils.get(item, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n relatedItems.forEach(function (relatedItem) {\n if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) {\n attached.push(relatedItem);\n }\n });\n def.setLocalField(item, attached);\n });\n return relatedItems;\n })\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.v;\n }\n },\n loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) {\n var self = this;\n var relatedMapper = def.getRelation();\n var idAttribute = mapper.idAttribute;\n var record = void 0;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(def.getRelation(), {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'contains': self.makeHasManyForeignKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'isectNotEmpty': records.map(function (record) {\n return self.makeHasManyForeignKeys(mapper, def, record);\n })\n })\n }, __opts).then(function (relatedItems) {\n var foreignKeysField = def.foreignKeys;\n records.forEach(function (record) {\n var _relatedItems = [];\n var id = jsData.utils.get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || [];\n if (foreignKeys.indexOf(id) !== -1) {\n _relatedItems.push(relatedItem);\n }\n });\n def.setLocalField(record, _relatedItems);\n });\n });\n }\n },\n\n\n /**\n * Load a hasOne relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasOne\n * @method\n * @return {Promise}\n */\n loadHasOne: function loadHasOne(mapper, def, records, __opts) {\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n records = [records];\n }\n return this.loadHasMany(mapper, def, records, __opts).then(function () {\n records.forEach(function (record) {\n var relatedData = def.getLocalField(record);\n if (jsData.utils.isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\n },\n\n\n /**\n * Logging utility method. Override this method if you want to send log\n * messages to something other than the console.\n *\n * @name Adapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} values Values to log.\n */\n log: function log(level) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (level && !args.length) {\n args.push(level);\n level = 'debug';\n }\n if (level === 'debug' && !this.debug) {\n return;\n }\n var prefix = level.toUpperCase() + ': (Adapter)';\n if (console[level]) {\n var _console;\n\n (_console = console)[level].apply(_console, [prefix].concat(args));\n } else {\n var _console2;\n\n (_console2 = console).log.apply(_console2, [prefix].concat(args));\n }\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * There may be reasons why you may want to override this method, like when\n * the id of the parent doesn't exactly match up to the key on the child.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKey\n * @method\n * @return {*}\n */\n makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyLocalKeys\n * @method\n * @return {*}\n */\n makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) {\n var localKeys = [];\n var itemKeys = jsData.utils.get(record, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n localKeys = localKeys.concat(itemKeys);\n return unique(localKeys).filter(function (x) {\n return x;\n });\n },\n\n\n /**\n * Return the foreignKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKeys\n * @method\n * @return {*}\n */\n makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) {\n return jsData.utils.get(record, mapper.idAttribute);\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeBelongsToForeignKey\n * @method\n * @return {*}\n */\n makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Retrieve sum of the specified field of the records that match the selection\n * query. Called by `Mapper#sum`.\n *\n * @name Adapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field By to sum.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n sum: function sum(mapper, field, query, opts) {\n var self = this;\n var op = void 0;\n if (!jsData.utils.isString(field)) {\n throw new Error('field must be a string!');\n }\n query || (query = {});\n opts || (opts = {});\n\n // beforeSum lifecycle hook\n op = opts.op = 'beforeSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'sum';\n self.dbg(op, mapper, field, query, opts);\n return jsData.utils.resolve(self._sum(mapper, field, query, opts));\n }).then(function (results) {\n var _results8 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results8[0];\n var result = _results8[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterSum lifecycle hook\n op = opts.op = 'afterSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * @name Adapter#respond\n * @method\n * @param {Object} response Response object.\n * @param {Object} opts Configuration options.\n * return {Object} If `opts.raw == true` then return `response`, else return\n * `response.data`.\n */\n respond: function respond(response, opts) {\n return this.getOpt('raw', opts) ? response : response.data;\n },\n\n\n /**\n * Apply the given update to the record with the specified primary key. Called\n * by `Mapper#update`.\n *\n * @name Adapter#update\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {Object} props The update to apply to the record.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n update: function update(mapper, id, props, opts) {\n var self = this;\n props || (props = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return jsData.utils.resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results9 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results9[0];\n var result = _results9[1];\n\n result || (result = {});\n var response = new Response(data, result, 'update');\n response.updated = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Apply the given update to all records that match the selection query.\n * Called by `Mapper#updateAll`.\n *\n * @name Adapter#updateAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateAll: function updateAll(mapper, props, query, opts) {\n var self = this;\n props || (props = {});\n query || (query = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return jsData.utils.resolve(self._updateAll(mapper, props, query, opts));\n }).then(function (results) {\n var _results10 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results10[0];\n var result = _results10[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateAll');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Update the given records in a single batch. Called by `Mapper#updateMany`.\n *\n * @name Adapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object[]} records The records to update.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateMany: function updateMany(mapper, records, opts) {\n var self = this;\n records || (records = []);\n opts || (opts = {});\n var op = void 0;\n var idAttribute = mapper.idAttribute;\n\n records = records.filter(function (record) {\n return jsData.utils.get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = jsData.utils.isUndefined(_records) ? records : _records;\n records = records.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'updateMany';\n self.dbg(op, mapper, records, opts);\n return jsData.utils.resolve(self._updateMany(mapper, records, opts));\n }).then(function (results) {\n var _results11 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results11[0];\n var result = _results11[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateMany');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n exports.noop = noop;\n exports.noop2 = noop2;\n exports.unique = unique;\n exports.withoutRelations = withoutRelations;\n exports.Adapter = Adapter;\n exports.reserved = reserved;\n exports.Response = Response;\n\n}));\n//# sourceMappingURL=js-data-adapter.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/js-data-adapter/dist/js-data-adapter.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 3\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap c15a7e72a42c303f269e","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///./~/js-data-adapter/dist/js-data-adapter.js","webpack:///external \"undefined\""],"names":[],"mappings":"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;;;;;;AA8BA,SAAQ,OAAR,GAAkB,WAAlB,C;;;;;;AC7wCA,gD;;;;;;ACAA;AACA;AACA;AACA,kDAAiD;AACjD,EAAC,kCAAkC;;AAEnC;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD,+BAA+B;AAChF;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA,oEAAmE,aAAa;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAsE,eAAe;AACrF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,OAAO;AACpB;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,6BAA6B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,8BAA8B,eAAe;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,+BAA+B,eAAe;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,gCAAgC,eAAe;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,iCAAiC,eAAe;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAwE,eAAe;AACvF;AACA;;AAEA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP,+CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP,gDAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,EAAE;AAClB;AACA;AACA,yBAAwB;AACxB;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,oDAAmD;AACnD;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA,gDAA+C;AAC/C;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB;AACA;AACA,6FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD,4C;;;;;;AC/mDA,4B","file":"./fetch/dist/js-data-fetch.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"js-data\"), require(\"undefined\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"js-data\", \"undefined\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSDataHttp\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"JSDataHttp\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap c15a7e72a42c303f269e\n **/","/* global fetch:true Headers:true Request:true */\n\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport {\n Adapter,\n noop,\n noop2\n} from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nfunction isValidString (value) {\n return (value != null && value !== '')\n}\nfunction join (items, separator) {\n separator || (separator = '')\n return items.filter(isValidString).join(separator)\n}\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nfunction encode (val) {\n return encodeURIComponent(val)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+')\n .replace(/%5B/gi, '[')\n .replace(/%5D/gi, ']')\n}\n\nfunction buildUrl (url, params) {\n if (!params) {\n return url\n }\n\n const parts = []\n\n utils.forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!utils.isArray(val)) {\n val = [val]\n }\n\n val.forEach(function (v) {\n if (window.toString.call(v) === '[object Date]') {\n v = v.toISOString()\n } else if (utils.isObject(v)) {\n v = utils.toJson(v)\n }\n parts.push(`${encode(key)}=${encode(v)}`)\n })\n })\n\n if (parts.length > 0) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\n }\n\n return url\n}\n\nconst __super__ = Adapter.prototype\n\nconst DEFAULTS = {\n // Default and user-defined settings\n /**\n * @name HttpAdapter#basePath\n * @type {string}\n */\n basePath: '',\n\n /**\n * @name HttpAdapter#forceTrailingSlash\n * @type {boolean}\n * @default false\n */\n forceTrailingSlash: false,\n\n /**\n * @name HttpAdapter#http\n * @type {Function}\n */\n http: axios,\n\n /**\n * @name HttpAdapter#httpConfig\n * @type {Object}\n */\n httpConfig: {},\n\n /**\n * @name HttpAdapter#suffix\n * @type {string}\n */\n suffix: '',\n\n /**\n * @name HttpAdapter#useFetch\n * @type {boolean}\n * @default false\n */\n useFetch: false\n}\n\n/**\n * HttpAdapter class.\n *\n * @class HttpAdapter\n * @extends Adapter\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.basePath=''] TODO\n * @param {boolean} [opts.debug=false] TODO\n * @param {boolean} [opts.forceTrailingSlash=false] TODO\n * @param {Object} [opts.http=axios] TODO\n * @param {Object} [opts.httpConfig={}] TODO\n * @param {string} [opts.suffix=''] TODO\n * @param {boolean} [opts.useFetch=false] TODO\n */\nfunction HttpAdapter (opts) {\n const self = this\n opts || (opts = {})\n utils.fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\n\n/**\n * @name module:js-data-http.HttpAdapter\n * @see HttpAdapter\n */\nexports.HttpAdapter = HttpAdapter\n\n// Setup prototype inheritance from Adapter\nHttpAdapter.prototype = Object.create(Adapter.prototype, {\n constructor: {\n value: HttpAdapter,\n enumerable: false,\n writable: true,\n configurable: true\n }\n})\n\nObject.defineProperty(HttpAdapter, '__super__', {\n configurable: true,\n value: Adapter\n})\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * @example Using the ES2015 class syntax.\n * class MyHttpAdapter extends HttpAdapter {...}\n * const adapter = new MyHttpAdapter()\n *\n * @example Using {@link HttpAdapter.extend}.\n * var instanceProps = {...}\n * var classProps = {...}\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n *\n * @name HttpAdapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `HttpAdapter`.\n */\nHttpAdapter.extend = utils.extend\n\nutils.addHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterDEL\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterDEL: noop2,\n\n /**\n * @name HttpAdapter#afterGET\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterGET: noop2,\n\n /**\n * @name HttpAdapter#afterHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterHTTP: noop2,\n\n /**\n * @name HttpAdapter#afterPOST\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPOST: noop2,\n\n /**\n * @name HttpAdapter#afterPUT\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPUT: noop2,\n\n /**\n * @name HttpAdapter#beforeDEL\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeDEL: noop,\n\n /**\n * @name HttpAdapter#beforeGET\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeGET: noop,\n\n /**\n * @name HttpAdapter#beforeHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n */\n beforeHTTP: noop,\n\n /**\n * @name HttpAdapter#beforePOST\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePOST: noop,\n\n /**\n * @name HttpAdapter#beforePUT\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePUT: noop,\n\n _count (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('count', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _create (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _createMany (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroy (mapper, id, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroyAll (mapper, query, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _end (mapper, opts, response) {\n return [this.deserialize(mapper, response, opts), response]\n },\n\n _find (mapper, id, opts) {\n const self = this\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _findAll (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _sum (mapper, field, query, opts) {\n const self = this\n return self.GET(\n self.getPath('sum', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _update (mapper, id, props, opts) {\n const self = this\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateAll (mapper, props, query, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateMany (mapper, records, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n /**\n * Retrieve the number of records that match the selection `query`.\n *\n * @name HttpAdapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n count (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params.count = true\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.count.call(self, mapper, query, opts)\n },\n\n /**\n * Create a new the record from the provided `props`.\n *\n * @name HttpAdapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props Properties to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n create (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.create.call(self, mapper, props, opts)\n },\n\n /**\n * Create multiple new records in batch.\n *\n * @name HttpAdapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} props Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n createMany (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.createMany.call(self, mapper, props, opts)\n },\n\n /**\n * Make an Http request to `url` according to the configuration in `config`.\n *\n * @name HttpAdapter#DEL\n * @method\n * @param {string} url Url for the request.\n * @param {Object} [config] Http configuration that will be passed to\n * {@link HttpAdapter#HTTP}.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n DEL (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'delete'\n\n // beforeDEL lifecycle hook\n op = opts.op = 'beforeDEL'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'DEL'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterDEL lifecycle hook\n op = opts.op = 'afterDEL'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * Transform the server response object into the payload that will be returned\n * to JSData.\n *\n * @name HttpAdapter#deserialize\n * @method\n * @param {Object} mapper The mapper used for the operation.\n * @param {Object} response Response object from {@link HttpAdapter#HTTP}.\n * @param {Object} opts Configuration options.\n * @return {(Object|Array)} Deserialized data.\n */\n deserialize (mapper, response, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (utils.isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response && response.hasOwnProperty('data')) {\n return response.data\n }\n return response\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @name HttpAdapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroy (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroy.call(self, mapper, id, opts)\n },\n\n /**\n * Destroy the records that match the selection `query`.\n *\n * @name HttpAdapter#destroyAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroyAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroyAll.call(self, mapper, query, opts)\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter#error\n * @method\n * @param {...*} [args] Arguments to log.\n */\n error (...args) {\n if (console) {\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\n }\n },\n\n /**\n * Make an Http request using `window.fetch`.\n *\n * @name HttpAdapter#fetch\n * @method\n * @param {Object} config Request configuration.\n * @param {Object} config.data Payload for the request.\n * @param {string} config.method Http method for the request.\n * @param {Object} config.headers Headers for the request.\n * @param {Object} config.params Querystring for the request.\n * @param {string} config.url Url for the request.\n * @param {Object} [opts] Configuration options.\n */\n fetch (config, opts) {\n const requestConfig = {\n method: config.method,\n // turn the plain headers object into the Fetch Headers object\n headers: new Headers(config.headers)\n }\n\n if (config.data) {\n requestConfig.body = utils.toJson(config.data)\n }\n\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\n response.config = {\n method: config.method,\n url: config.url\n }\n return response.json().then(function (data) {\n response.data = data\n return response\n })\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @name HttpAdapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n find (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.find.call(self, mapper, id, opts)\n },\n\n /**\n * Retrieve the records that match the selection `query`.\n *\n * @name HttpAdapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n findAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.findAll.call(self, mapper, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#GET\n * @method\n * @param {string} url The url for the request.\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n GET (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'get'\n\n // beforeGET lifecycle hook\n op = opts.op = 'beforeGET'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'GET'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterGET lifecycle hook\n op = opts.op = 'afterGET'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * @name HttpAdapter#getEndpoint\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {boolean} opts TODO\n * @return {string} Full path.\n */\n getEndpoint (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = utils.isUndefined(opts.params) ? {} : opts.params\n const relationList = mapper.relationList || []\n let endpoint = utils.isUndefined(opts.endpoint) ? (utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint\n\n relationList.forEach(function (def) {\n if (def.type !== 'belongsTo' || !def.parent) {\n return\n }\n let item\n const parentKey = def.foreignKey\n const parentDef = def.getRelation()\n let parentId = opts.params[parentKey]\n\n if (parentId === false || !parentKey || !parentDef) {\n if (parentId === false) {\n delete opts.params[parentKey]\n }\n return false\n } else {\n delete opts.params[parentKey]\n\n if (utils.isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? utils.get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n utils.forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n utils._(_opts, parentDef)\n endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint)\n return false\n }\n }\n })\n\n return endpoint\n },\n\n /**\n * @name HttpAdapter#getPath\n * @method\n * @param {string} method TODO\n * @param {Object} mapper TODO\n * @param {(string|number)?} id TODO\n * @param {Object} opts Configuration options.\n */\n getPath (method, mapper, id, opts) {\n const self = this\n opts || (opts = {})\n const args = [\n utils.isUndefined(opts.basePath) ? (utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (utils.isString(id) || utils.isNumber(id) || method === 'create') ? id : null, opts)\n ]\n if (method === 'find' || method === 'update' || method === 'destroy') {\n args.push(id)\n }\n return makePath.apply(utils, args)\n },\n\n getParams (opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.params)) {\n return {}\n }\n return utils.copy(opts.params)\n },\n\n getSuffix (mapper, opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.suffix)) {\n if (utils.isUndefined(mapper.suffix)) {\n return this.suffix\n }\n return mapper.suffix\n }\n return opts.suffix\n },\n\n /**\n * Make an Http request.\n *\n * @name HttpAdapter#HTTP\n * @method\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n HTTP (config, opts) {\n const self = this\n const start = new Date()\n opts || (opts = {})\n const payload = config.data\n const cache = config.cache\n const timeout = config.timeout\n config = utils.copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = utils.deepMixIn(config, self.httpConfig)\n config.data = payload\n config.cache = cache\n config.timeout = timeout\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\n config.url += '/'\n }\n config.method = config.method.toUpperCase()\n const suffix = config.suffix || opts.suffix || self.suffix\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\n config.url += suffix\n }\n\n function logResponse (data) {\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\n if (data.status >= 200 && data.status < 300) {\n if (self.log) {\n self.dbg('debug', str, data)\n }\n return data\n } else {\n if (self.error) {\n self.error(`'FAILED: ${str}`, data)\n }\n return utils.reject(data)\n }\n }\n\n if (!self.http) {\n throw new Error('You have not configured this adapter with an http library!')\n }\n\n return utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) {\n config = _config || config\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\n return self.fetch(config, opts).then(logResponse, logResponse)\n }\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\n return self.responseError(err, config, opts)\n })\n }).then(function (response) {\n return utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#POST\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n POST (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'post'\n\n // beforePOST lifecycle hook\n op = opts.op = 'beforePOST'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'POST'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPOST lifecycle hook\n op = opts.op = 'afterPOST'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#PUT\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n PUT (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'put'\n\n // beforePUT lifecycle hook\n op = opts.op = 'beforePUT'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'PUT'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPUT lifecycle hook\n op = opts.op = 'afterPUT'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#queryTransform\n * @method\n * @param {Object} mapper TODO\n * @param {*} params TODO\n * @param {*} opts TODO\n * @return {*} Transformed params.\n */\n queryTransform (mapper, params, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (utils.isFunction(mapper.queryTransform)) {\n return mapper.queryTransform(mapper, params, opts)\n }\n return params\n },\n\n /**\n * Error handler invoked when the promise returned by {@link HttpAdapter#http}\n * is rejected. Default implementation is to just return the error wrapped in\n * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is\n * called by {@link HttpAdapter#HTTP}.\n *\n * @name HttpAdapter#responseError\n * @method\n * @param {*} err The error that {@link HttpAdapter#http} rejected with.\n * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}.\n * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}.\n * @return {Promise}\n */\n responseError (err, config, opts) {\n return utils.reject(err)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#serialize\n * @method\n * @param {Object} mapper TODO\n * @param {Object} data TODO\n * @param {*} opts TODO\n * @return {*} Serialized data.\n */\n serialize (mapper, data, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (utils.isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\n },\n\n /**\n * Retrieve the sum of the field of the records that match the selection query.\n *\n * @name HttpAdapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field The field to sum.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n sum (mapper, field, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n if (!utils.utils.isString(field)) {\n throw new Error('field must be a string!')\n }\n opts.params = self.getParams(opts)\n opts.params.sum = field\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.sum.call(self, mapper, field, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#update\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {*} props TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n update (mapper, id, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.update.call(self, mapper, id, props, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#updateAll\n * @method\n * @param {Object} mapper TODO\n * @param {Object} props TODO\n * @param {Object} query TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n updateAll (mapper, props, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateAll.call(self, mapper, props, query, opts)\n },\n\n /**\n * Update multiple records in batch.\n *\n * {@link HttpAdapter#beforeUpdateMany} will be called before calling\n * {@link HttpAdapter#PUT}.\n * {@link HttpAdapter#afterUpdateMany} will be called after calling\n * {@link HttpAdapter#PUT}.\n *\n * @name HttpAdapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} records Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n updateMany (mapper, records, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateMany.call(self, mapper, records, opts)\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @example\n * // CommonJS\n * var JSData = require('js-data')\n * // It is recommended to use DataStore in the browser\n * var DataStore = JSData.DataStore\n *\n * var JSDataHttp = require('js-data-http')\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var addAction = JSDataHttp.addAction\n *\n * var adapter = new HttpAdapter()\n * var store = new DataStore()\n *\n * store.registerAdapter('http', adapter, { default: true })\n * store.defineMapper('school')\n *\n * // GET /reports/schools/:school_id/teachers\n * addAction('getTeacherReports', {\n * basePath: 'reports/schools',\n * pathname: 'teachers',\n * method: 'GET'\n * })(store.getMapper('school'))\n *\n * // /reports/schools/1234/teachers\n * store.getMapper('school').getTeacherReports(1234).then(function (response) {\n * // ...\n * })\n *\n * @name module:js-data-http.addAction\n * @method\n * @param {string} name Name of the new action.\n * @param {Object} [opts] Action configuration\n * @param {string} [opts.adapter]\n * @param {string} [opts.pathname]\n * @param {Function} [opts.request]\n * @param {Function} [opts.response]\n * @param {Function} [opts.responseError]\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addAction = function addAction (name, opts) {\n if (!name || !utils.isString(name)) {\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\n }\n return function (mapper) {\n if (mapper[name]) {\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\n }\n opts.request = opts.request || function (config) { return config }\n opts.response = opts.response || function (response) { return response }\n opts.responseError = opts.responseError || function (err) { return utils.reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (utils.isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n utils.fillIn(config, opts)\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\n _opts.endpoint = config.endpoint\n }\n if (typeof _opts.getEndpoint === 'function') {\n config.url = _opts.getEndpoint(self, _opts)\n } else {\n let args = [\n _opts.basePath || self.basePath || adapter.basePath,\n adapter.getEndpoint(self, utils.isSorN(id) ? id : null, _opts)\n ]\n if (utils.isSorN(id)) {\n args.push(id)\n }\n args.push(opts.pathname || name)\n config.url = makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.mapper = self.name\n utils.deepMixIn(config, _opts)\n return utils.resolve(config)\n .then(_opts.request || opts.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.mapper = self.name\n }\n return data\n })\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\n }\n return mapper\n }\n}\n\n/**\n * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for\n * action configuration options.\n *\n * @example\n * // CommonJS\n * var JSData = require('js-data')\n * // It is recommended to use DataStore in the browser\n * var DataStore = JSData.DataStore\n *\n * var JSDataHttp = require('js-data-http')\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var addActions = JSDataHttp.addActions\n *\n * var adapter = new HttpAdapter()\n * var store = new DataStore()\n *\n * store.registerAdapter('http', adapter, { default: true })\n * store.defineMapper('school')\n *\n * addActions({\n * // GET /reports/schools/:school_id/teachers\n * getTeacherReports: {\n * basePath: 'reports/schools',\n * pathname: 'teachers',\n * method: 'GET'\n * }\n * })(store.getMapper('school'))\n *\n * // /reports/schools/1234/teachers\n * store.getMapper('school').getTeacherReports(1234).then(function (response) {\n * // ...\n * })\n *\n * @name module:js-data-http.addActions\n * @method\n * @param {Object.} opts Object where the key is an action name\n * and the value is the configuration for the action.\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addActions = function addActions (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(opts, function (value, key) {\n exports.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name module:js-data-http.version\n * @type {Object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexports.version = '<%= version %>'\n\n/**\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\n * as `js-data-fetch`.\n *\n * @example Script tag\n * var HttpAdapter = window.JSDataHttp.HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * @example CommonJS\n * var HttpAdapter = require('js-data-Http').HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * @example ES2015 Modules\n * import {HttpAdapter} from 'js-data-Http'\n * const adapter = new HttpAdapter()\n *\n * @example AMD\n * define('myApp', ['js-data-Http'], function (JSDataHttp) {\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * // ...\n * })\n *\n * @module js-data-http\n */\nexports.default = HttpAdapter\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}\n ** module id = 1\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['exports', 'js-data'], factory) :\n (factory((global.Adapter = global.Adapter || {}),global.JSData));\n}(this, function (exports,jsData) { 'use strict';\n\n var babelHelpers = {};\n babelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n babelHelpers.defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n };\n\n babelHelpers.slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n babelHelpers;\n\n var noop = function noop() {\n var self = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = args[args.length - 1];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var noop2 = function noop2() {\n var self = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var opts = args[args.length - 2];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var unique = function unique(array) {\n var seen = {};\n var final = [];\n array.forEach(function (item) {\n if (item in seen) {\n return;\n }\n final.push(item);\n seen[item] = 0;\n });\n return final;\n };\n\n var withoutRelations = function withoutRelations(mapper, props) {\n return jsData.utils.omit(props, mapper.relationFields || []);\n };\n\n var DEFAULTS = {\n /**\n * Whether to log debugging information.\n *\n * @name Adapter#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\n\n /**\n * Whether to return a more detailed response object.\n *\n * @name Adapter#raw\n * @type {boolean}\n * @default false\n */\n raw: false\n };\n\n /**\n * Abstract class meant to be extended by adapters.\n *\n * @class Adapter\n * @abstract\n * @param {Object} [opts] Configuration opts.\n * @param {boolean} [opts.debug=false] Whether to log debugging information.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed response\n * object.\n */\n function Adapter(opts) {\n var self = this;\n opts || (opts = {});\n jsData.utils.fillIn(opts, DEFAULTS);\n jsData.utils.fillIn(self, opts);\n }\n\n var reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where'];\n\n /**\n * Response object used when `raw` is `true`. May contain other fields in\n * addition to `data`.\n *\n * @class Response\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n\n /**\n * Response data.\n *\n * @name Response#data\n * @type {*}\n */\n self.data = data;\n\n jsData.utils.fillIn(self, meta);\n\n /**\n * The operation for which the response was created.\n *\n * @name Response#op\n * @type {string}\n */\n self.op = op;\n }\n\n /**\n * Alternative to ES6 class syntax for extending `Adapter`.\n *\n * @name Adapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `Adapter`.\n */\n Adapter.extend = jsData.utils.extend;\n\n jsData.utils.addHiddenPropsToTarget(Adapter.prototype, {\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#afterCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} props The `props` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `afterCount`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCount: noop2,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `afterCreate`\n * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreate: noop2,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `afterCreateMany`\n * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreateMany: noop2,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#afterDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `afterDestroy`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroy: noop2,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#afterDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `afterDestroyAll`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroyAll: noop2,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#afterFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `afterFind`\n * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFind: noop2,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#afterFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `afterFindAll`\n * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFindAll: noop2,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#afterSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {string} field The `field` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `afterSum`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterSum: noop2,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#afterUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `afterUpdate`\n * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdate: noop2,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#afterUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `afterUpdateAll`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateAll: noop2,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#afterUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} records The `records` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `afterUpdateMany`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateMany: noop2,\n\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#beforeCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} query The `query` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `beforeCount`\n */\n beforeCount: noop,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#beforeCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `beforeCreate`\n */\n beforeCreate: noop,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#beforeCreateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `beforeCreateMany`\n */\n beforeCreateMany: noop,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#beforeDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `beforeDestroy`\n */\n beforeDestroy: noop,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#beforeDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `beforeDestroyAll`\n */\n beforeDestroyAll: noop,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#beforeFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `beforeFind`\n */\n beforeFind: noop,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#beforeFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `beforeFindAll`\n */\n beforeFindAll: noop,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#beforeSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `beforeSum`\n */\n beforeSum: noop,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#beforeUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `beforeUpdate`\n */\n beforeUpdate: noop,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#beforeUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `beforeUpdateAll`\n */\n beforeUpdateAll: noop,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#beforeUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} props The `props` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `beforeUpdateMany`\n */\n beforeUpdateMany: noop,\n\n /**\n * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`.\n *\n * @name Adapter#dbg\n * @method\n */\n dbg: function dbg() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this.log.apply(this, ['debug'].concat(args));\n },\n\n\n /**\n * Retrieve the number of records that match the selection query. Called by\n * `Mapper#count`.\n *\n * @name Adapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n count: function count(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeCount lifecycle hook\n op = opts.op = 'beforeCount';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'count';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._count(mapper, query, opts));\n }).then(function (results) {\n var _results = babelHelpers.slicedToArray(results, 2);\n\n var data = _results[0];\n var result = _results[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterCount lifecycle hook\n op = opts.op = 'afterCount';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create a new record. Called by `Mapper#create`.\n *\n * @name Adapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The record to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n create: function create(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._create(mapper, props, opts));\n }).then(function (results) {\n var _results2 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results2[0];\n var result = _results2[1];\n\n result || (result = {});\n var response = new Response(data, result, 'create');\n response.created = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create multiple records in a single batch. Called by `Mapper#createMany`.\n *\n * @name Adapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The records to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n createMany: function createMany(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = props.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'createMany';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._createMany(mapper, props, opts));\n }).then(function (results) {\n var _results3 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results3[0];\n var result = _results3[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'createMany');\n response.created = data.length;\n response = self.respond(response, opts);\n\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the record with the given primary key. Called by\n * `Mapper#destroy`.\n *\n * @name Adapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroy: function destroy(mapper, id, opts) {\n var self = this;\n var op = void 0;\n opts || (opts = {});\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._destroy(mapper, id, opts));\n }).then(function (results) {\n var _results4 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results4[0];\n var result = _results4[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroy');\n response = self.respond(response, opts);\n\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the records that match the selection query. Called by\n * `Mapper#destroyAll`.\n *\n * @name Adapter#destroyAll\n * @method\n * @param {Object} mapper the mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroyAll: function destroyAll(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._destroyAll(mapper, query, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results5[0];\n var result = _results5[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Load a belongsTo relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadBelongsTo\n * @method\n * @return {Promise}\n */\n loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) {\n var self = this;\n var relationDef = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n var _ret = function () {\n var record = records;\n return {\n v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) {\n def.setLocalField(record, relatedItem);\n })\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.v;\n } else {\n var keys = records.map(function (record) {\n return self.makeBelongsToForeignKey(mapper, def, record);\n }).filter(function (key) {\n return key;\n });\n return self.findAll(relationDef, {\n where: babelHelpers.defineProperty({}, relationDef.idAttribute, {\n 'in': keys\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n relatedItems.forEach(function (relatedItem) {\n if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) {\n def.setLocalField(record, relatedItem);\n }\n });\n });\n });\n }\n },\n\n\n /**\n * Retrieve the record with the given primary key. Called by `Mapper#find`.\n *\n * @name Adapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n find: function find(mapper, id, opts) {\n var self = this;\n var record = void 0,\n op = void 0;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results6[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasOne') {\n task = self.loadHasOne(mapper, def, record, __opts);\n } else {\n task = self.loadHasMany(mapper, def, record, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, record, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, record, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, record, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(record, {}, 'find');\n response.found = record ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterFind lifecycle hook\n op = opts.op = 'afterFind';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @name Adapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n findAll: function findAll(mapper, query, opts) {\n var self = this;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n var records = [];\n var op = void 0;\n var activeWith = opts._activeWith;\n\n if (jsData.utils.isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n jsData.utils.deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results7[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasMany') {\n task = self.loadHasMany(mapper, def, records, __opts);\n } else {\n task = self.loadHasOne(mapper, def, records, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, records, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, records, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, records, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(records, {}, 'findAll');\n response.found = records.length;\n response = self.respond(response, opts);\n\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Resolve the value of the specified option based on the given options and\n * this adapter's settings. Override with care.\n *\n * @name Adapter#getOpt\n * @method\n * @param {string} opt The name of the option.\n * @param {Object} [opts] Configuration options.\n * @return {*} The value of the specified option.\n */\n getOpt: function getOpt(opt, opts) {\n opts || (opts = {});\n return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]);\n },\n\n\n /**\n * Load a hasMany relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasMany\n * @method\n * @return {Promise}\n */\n loadHasMany: function loadHasMany(mapper, def, records, __opts) {\n var self = this;\n var singular = false;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n singular = true;\n records = [records];\n }\n var IDs = records.map(function (record) {\n return self.makeHasManyForeignKey(mapper, def, record);\n });\n var query = {\n where: {}\n };\n var criteria = query.where[def.foreignKey] = {};\n if (singular) {\n // more efficient query when we only have one record\n criteria['=='] = IDs[0];\n } else {\n criteria['in'] = IDs.filter(function (id) {\n return id;\n });\n }\n return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n var attached = [];\n // avoid unneccesary iteration when we only have one record\n if (singular) {\n attached = relatedItems;\n } else {\n relatedItems.forEach(function (relatedItem) {\n if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) {\n attached.push(relatedItem);\n }\n });\n }\n def.setLocalField(record, attached);\n });\n });\n },\n loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) {\n var self = this;\n var record = void 0;\n var relatedMapper = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': self.makeHasManyLocalKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n var _ret2 = function () {\n var localKeys = [];\n records.forEach(function (record) {\n localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record));\n });\n return {\n v: self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': unique(localKeys).filter(function (x) {\n return x;\n })\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (item) {\n var attached = [];\n var itemKeys = jsData.utils.get(item, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n relatedItems.forEach(function (relatedItem) {\n if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) {\n attached.push(relatedItem);\n }\n });\n def.setLocalField(item, attached);\n });\n return relatedItems;\n })\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.v;\n }\n },\n loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) {\n var self = this;\n var relatedMapper = def.getRelation();\n var idAttribute = mapper.idAttribute;\n var record = void 0;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(def.getRelation(), {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'contains': self.makeHasManyForeignKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'isectNotEmpty': records.map(function (record) {\n return self.makeHasManyForeignKeys(mapper, def, record);\n })\n })\n }, __opts).then(function (relatedItems) {\n var foreignKeysField = def.foreignKeys;\n records.forEach(function (record) {\n var _relatedItems = [];\n var id = jsData.utils.get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || [];\n if (foreignKeys.indexOf(id) !== -1) {\n _relatedItems.push(relatedItem);\n }\n });\n def.setLocalField(record, _relatedItems);\n });\n });\n }\n },\n\n\n /**\n * Load a hasOne relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasOne\n * @method\n * @return {Promise}\n */\n loadHasOne: function loadHasOne(mapper, def, records, __opts) {\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n records = [records];\n }\n return this.loadHasMany(mapper, def, records, __opts).then(function () {\n records.forEach(function (record) {\n var relatedData = def.getLocalField(record);\n if (jsData.utils.isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\n },\n\n\n /**\n * Logging utility method. Override this method if you want to send log\n * messages to something other than the console.\n *\n * @name Adapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} values Values to log.\n */\n log: function log(level) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (level && !args.length) {\n args.push(level);\n level = 'debug';\n }\n if (level === 'debug' && !this.debug) {\n return;\n }\n var prefix = level.toUpperCase() + ': (Adapter)';\n if (console[level]) {\n var _console;\n\n (_console = console)[level].apply(_console, [prefix].concat(args));\n } else {\n var _console2;\n\n (_console2 = console).log.apply(_console2, [prefix].concat(args));\n }\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * There may be reasons why you may want to override this method, like when\n * the id of the parent doesn't exactly match up to the key on the child.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKey\n * @method\n * @return {*}\n */\n makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyLocalKeys\n * @method\n * @return {*}\n */\n makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) {\n var localKeys = [];\n var itemKeys = jsData.utils.get(record, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n localKeys = localKeys.concat(itemKeys);\n return unique(localKeys).filter(function (x) {\n return x;\n });\n },\n\n\n /**\n * Return the foreignKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKeys\n * @method\n * @return {*}\n */\n makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) {\n return jsData.utils.get(record, mapper.idAttribute);\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeBelongsToForeignKey\n * @method\n * @return {*}\n */\n makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Retrieve sum of the specified field of the records that match the selection\n * query. Called by `Mapper#sum`.\n *\n * @name Adapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field By to sum.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n sum: function sum(mapper, field, query, opts) {\n var self = this;\n var op = void 0;\n if (!jsData.utils.isString(field)) {\n throw new Error('field must be a string!');\n }\n query || (query = {});\n opts || (opts = {});\n\n // beforeSum lifecycle hook\n op = opts.op = 'beforeSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'sum';\n self.dbg(op, mapper, field, query, opts);\n return jsData.utils.resolve(self._sum(mapper, field, query, opts));\n }).then(function (results) {\n var _results8 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results8[0];\n var result = _results8[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterSum lifecycle hook\n op = opts.op = 'afterSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * @name Adapter#respond\n * @method\n * @param {Object} response Response object.\n * @param {Object} opts Configuration options.\n * return {Object} If `opts.raw == true` then return `response`, else return\n * `response.data`.\n */\n respond: function respond(response, opts) {\n return this.getOpt('raw', opts) ? response : response.data;\n },\n\n\n /**\n * Apply the given update to the record with the specified primary key. Called\n * by `Mapper#update`.\n *\n * @name Adapter#update\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {Object} props The update to apply to the record.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n update: function update(mapper, id, props, opts) {\n var self = this;\n props || (props = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return jsData.utils.resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results9 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results9[0];\n var result = _results9[1];\n\n result || (result = {});\n var response = new Response(data, result, 'update');\n response.updated = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Apply the given update to all records that match the selection query.\n * Called by `Mapper#updateAll`.\n *\n * @name Adapter#updateAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateAll: function updateAll(mapper, props, query, opts) {\n var self = this;\n props || (props = {});\n query || (query = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return jsData.utils.resolve(self._updateAll(mapper, props, query, opts));\n }).then(function (results) {\n var _results10 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results10[0];\n var result = _results10[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateAll');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Update the given records in a single batch. Called by `Mapper#updateMany`.\n *\n * @name Adapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object[]} records The records to update.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateMany: function updateMany(mapper, records, opts) {\n var self = this;\n records || (records = []);\n opts || (opts = {});\n var op = void 0;\n var idAttribute = mapper.idAttribute;\n\n records = records.filter(function (record) {\n return jsData.utils.get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = jsData.utils.isUndefined(_records) ? records : _records;\n records = records.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'updateMany';\n self.dbg(op, mapper, records, opts);\n return jsData.utils.resolve(self._updateMany(mapper, records, opts));\n }).then(function (results) {\n var _results11 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results11[0];\n var result = _results11[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateMany');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n exports.noop = noop;\n exports.noop2 = noop2;\n exports.unique = unique;\n exports.withoutRelations = withoutRelations;\n exports.Adapter = Adapter;\n exports.reserved = reserved;\n exports.Response = Response;\n\n}));\n//# sourceMappingURL=js-data-adapter.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/js-data-adapter/dist/js-data-adapter.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 3\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/fetch/dist/js-data-fetch.min.js b/fetch/dist/js-data-fetch.min.js index 6dae1bf..ce0316a 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,10 +1,10 @@ /*! * js-data-fetch -* @version 3.0.0-beta.4 - Homepage +* @version 3.0.0-beta.5 - Homepage * @copyright (c) 2014-2016 js-data-http project authors * @license MIT * * @overview HTTP adapter for js-data that uses the fetch API. */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("js-data"),require("undefined")):"function"==typeof define&&define.amd?define(["js-data","undefined"],t):"object"==typeof exports?exports.JSDataHttp=t(require("js-data"),require("undefined")):e.JSDataHttp=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return null!=e&&""!==e}function i(e,t){return t||(t=""),e.filter(r).join(t)}function o(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=i(t,"/");return r.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function a(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function u(e,t){if(!t)return e;var n=[];return f.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(f.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():f.utils.isObject(e)&&(e=f.utils.toJson(e)),n.push(a(t)+"="+a(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function s(e){var t=this;e||(e={}),f.utils.fillIn(e,y),d.Adapter.call(t,e)}var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},f=n(1),d=n(2),c=n(3),p=!1;try{p=window&&window.fetch}catch(e){}var h=d.Adapter.prototype,y={basePath:"",forceTrailingSlash:!1,http:c,httpConfig:{},suffix:"",useFetch:!1};t.HttpAdapter=s,s.prototype=Object.create(d.Adapter.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(s,"__super__",{configurable:!0,value:d.Adapter}),s.extend=f.utils.extend,f.utils.addHiddenPropsToTarget(s.prototype,{afterDEL:d.noop2,afterGET:d.noop2,afterHTTP:d.noop2,afterPOST:d.noop2,afterPUT:d.noop2,beforeDEL:d.noop,beforeGET:d.noop,beforeHTTP:d.noop,beforePOST:d.noop,beforePUT:d.noop,_count:function(e,t,n){var r=this;return r.GET(r.getPath("count",e,n.params,n),n).then(function(t){return r._end(e,n,t)})},_create:function(e,t,n){var r=this;return r.POST(r.getPath("create",e,t,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},_createMany:function(e,t,n){var r=this;return r.POST(r.getPath("createMany",e,null,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},_destroy:function(e,t,n){var r=this;return r.DEL(r.getPath("destroy",e,t,n),n).then(function(t){return r._end(e,n,t)})},_destroyAll:function(e,t,n){var r=this;return r.DEL(r.getPath("destroyAll",e,null,n),n).then(function(t){return r._end(e,n,t)})},_end:function(e,t,n){return[this.deserialize(e,n,t),n]},_find:function(e,t,n){var r=this;return r.GET(r.getPath("find",e,t,n),n).then(function(t){return r._end(e,n,t)})},_findAll:function(e,t,n){var r=this;return r.GET(r.getPath("findAll",e,n.params,n),n).then(function(t){return r._end(e,n,t)})},_sum:function(e,t,n,r){var i=this;return i.GET(i.getPath("sum",e,r.params,r),r).then(function(t){return i._end(e,r,t)})},_update:function(e,t,n,r){var i=this;return i.PUT(i.getPath("update",e,t,r),i.serialize(e,n,r),r).then(function(t){return i._end(e,r,t)})},_updateAll:function(e,t,n,r){var i=this;return i.PUT(i.getPath("updateAll",e,null,r),i.serialize(e,t,r),r).then(function(t){return i._end(e,r,t)})},_updateMany:function(e,t,n){var r=this;return r.PUT(r.getPath("updateMany",e,null,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},count:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),n.params.count=!0,n.suffix=r.getSuffix(e,n),f.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),h.count.call(r,e,t,n)},create:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.createMany.call(r,e,t,n)},DEL:function(e,t,n){var r=this,i=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"delete",i=n.op="beforeDEL",f.utils.resolve(r[i](e,t,n)).then(function(o){return t=f.utils.isUndefined(o)?t:o,i=n.op="DEL",r.dbg(i,e,t,n),r.HTTP(t,n)}).then(function(o){return i=n.op="afterDEL",f.utils.resolve(r[i](e,t,n,o)).then(function(e){return f.utils.isUndefined(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),f.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):f.utils.isFunction(e.deserialize)?e.deserialize(e,t,n):t&&t.hasOwnProperty("data")?t.data:t},destroy:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),f.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.destroyAll.call(r,e,t,n)},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,n){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var n={method:e.method,headers:new Headers(e.headers)};return e.data&&(n.body=f.utils.toJson(e.data)),fetch(new Request(u(e.url,e.params),n)).then(function(t){return t.config={method:e.method,url:e.url},t.json().then(function(e){return t.data=e,t})})}),find:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),n.suffix=r.getSuffix(e,n),f.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),h.findAll.call(r,e,t,n)},GET:function(e,t,n){var r=this,i=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"get",i=n.op="beforeGET",f.utils.resolve(r[i](e,t,n)).then(function(o){return t=f.utils.isUndefined(o)?t:o,i=n.op="GET",r.dbg(i,e,t,n),r.HTTP(t,n)}).then(function(o){return i=n.op="afterGET",f.utils.resolve(r[i](e,t,n,o)).then(function(e){return f.utils.isUndefined(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=f.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],a=f.utils.isUndefined(n.endpoint)?f.utils.isUndefined(e.endpoint)?e.name:e.endpoint:n.endpoint;return i.forEach(function(e){if("belongsTo"===e.type&&e.parent){var i=void 0,u=e.foreignKey,s=e.getRelation(),d=n.params[u];if(d===!1||!u||!s)return d===!1&&delete n.params[u],!1;if(delete n.params[u],f.utils.isObject(t)&&(i=t),i&&(d=d||e.getForeignKey(i)||(e.getLocalField(i)?f.utils.get(e.getLocalField(i),s.idAttribute):null)),d){var c=function(){delete n.endpoint;var e={};return f.utils.forOwn(n,function(t,n){e[n]=t}),f.utils._(e,s),a=o(r.getEndpoint(s,d,e),d,a),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":l(c)))return c.v}}}),a},getPath:function(e,t,n,r){var i=this;r||(r={});var a=[f.utils.isUndefined(r.basePath)?f.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,f.utils.isString(n)||f.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),o.apply(f.utils,a)},getParams:function(e){return e||(e={}),f.utils.isUndefined(e.params)?{}:f.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),f.utils.isUndefined(t.suffix)?f.utils.isUndefined(e.suffix)?this.suffix:e.suffix:t.suffix},HTTP:function(e,t){function n(t){var n=i.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-i.getTime())+"ms";return t.status>=200&&t.status<300?(r.log&&r.dbg("debug",n,t),t):(r.error&&r.error("'FAILED: "+n,t),f.utils.reject(t))}var r=this,i=new Date;t||(t={});var o=e.data,a=e.cache,u=e.timeout;e=f.utils.copy(e,null,null,null,["data","cache","timeout"]),e=f.utils.deepMixIn(e,r.httpConfig),e.data=o,e.cache=a,e.timeout=u,r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var s=e.suffix||t.suffix||r.suffix;if(s&&e.url.substr(e.url.length-s.length)!==s&&(e.url+=s),!r.http)throw new Error("You have not configured this adapter with an http library!");return f.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,p&&(r.useFetch||t.useFetch||!r.http)?r.fetch(e,t).then(n,n):r.http(e).then(n,n).catch(function(n){return r.responseError(n,e,t)})}).then(function(n){return f.utils.resolve(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var i=this,o=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",o=r.op="beforePOST",f.utils.resolve(i[o](e,t,n,r)).then(function(a){return n=f.utils.isUndefined(a)?n:a,o=r.op="POST",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(a){return o=r.op="afterPOST",f.utils.resolve(i[o](e,t,n,r,a)).then(function(e){return f.utils.isUndefined(e)?a:e})})},PUT:function(e,t,n,r){var i=this,o=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",o=r.op="beforePUT",f.utils.resolve(i[o](e,t,n,r)).then(function(a){return n=f.utils.isUndefined(a)?n:a,o=r.op="PUT",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(a){return o=r.op="afterPUT",f.utils.resolve(i[o](e,t,n,r,a)).then(function(e){return f.utils.isUndefined(e)?a:e})})},queryTransform:function(e,t,n){return n||(n={}),f.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):f.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return f.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),f.utils.isFunction(n.serialize)?n.serialize(e,t,n):f.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!f.utils.utils.isString(t))throw new Error("field must be a string!");return r.params=i.getParams(r),r.params.sum=t,r.suffix=i.getSuffix(e,r),f.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),h.sum.call(i,e,t,n,r)},update:function(e,t,n,r){var i=this;return r||(r={}),r.params=i.getParams(r),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),h.update.call(i,e,t,n,r)},updateAll:function(e,t,n,r){var i=this;return n||(n={}),r||(r={}),r.params=i.getParams(r),f.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),h.updateAll.call(i,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.updateMany.call(r,e,t,n)}}),t.addAction=function(e,t){if(!e||!f.utils.isString(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":l(e)));return function(n){if(n[e])throw new Error("action(name[, opts]): "+e+" already exists on target!");return t.request=t.request||function(e){return e},t.response=t.response||function(e){return e},t.responseError=t.responseError||function(e){return f.utils.reject(e)},n[e]=function(n,r){var i=this;f.utils.isObject(n)&&(r=n),r=r||{};var a=i.getAdapter(t.adapter||i.defaultAdapter||"http"),u={};if(f.utils.fillIn(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(i,r);else{var s=[r.basePath||i.basePath||a.basePath,a.getEndpoint(i,f.utils.isSorN(n)?n:null,r)];f.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),u.url=o.apply(null,s)}return u.method=u.method||"GET",u.mapper=i.name,f.utils.deepMixIn(u)(r),f.utils.resolve(u).then(r.request||t.request).then(function(e){return a.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=i.name),e}).then(r.response||t.response,r.responseError||t.responseError)},n}},t.addActions=function(e){return e||(e={}),function(e){return f.utils.forOwn(e,function(n,r){t.addAction(r,n)(e)}),e}},t.version={beta:4,full:"3.0.0-beta.4",major:3,minor:0,patch:0},t.default=s},function(t,n){t.exports=e},function(e,t,n){!function(e,r){r(t,n(1))}(this,function(e,t){"use strict";function n(e){var n=this;e||(e={}),t.utils.fillIn(e,l),t.utils.fillIn(n,e)}function r(e,n,r){var i=this;n||(n={}),i.data=e,t.utils.fillIn(i,n),i.op=r}var i={};i.typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},i.defineProperty=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},i.slicedToArray=function(){function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&u.return&&u.return()}finally{if(i)throw o}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();var o=function(){for(var e=this,n=arguments.length,r=Array(n),i=0;n>i;i++)r[i]=arguments[i];var o=r[r.length-1];return e.dbg.apply(e,[o.op].concat(r)),t.utils.resolve()},a=function(){for(var e=this,n=arguments.length,r=Array(n),i=0;n>i;i++)r[i]=arguments[i];var o=r[r.length-2];return e.dbg.apply(e,[o.op].concat(r)),t.utils.resolve()},u=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},s=function(e,n){return t.utils.omit(n,e.relationFields||[])},l={debug:!1,raw:!1},f=["orderBy","sort","limit","offset","skip","where"];n.extend=t.utils.extend,t.utils.addHiddenPropsToTarget(n.prototype,{afterCount:a,afterCreate:a,afterCreateMany:a,afterDestroy:a,afterDestroyAll:a,afterFind:a,afterFindAll:a,afterSum:a,afterUpdate:a,afterUpdateAll:a,afterUpdateMany:a,beforeCount:o,beforeCreate:o,beforeCreateMany:o,beforeDestroy:o,beforeDestroyAll:o,beforeFind:o,beforeFindAll:o,beforeSum:o,beforeUpdate:o,beforeUpdateAll:o,beforeUpdateMany:o,dbg:function(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];this.log.apply(this,["debug"].concat(t))},count:function(e,n,o){var a=this,u=void 0;return n||(n={}),o||(o={}),u=o.op="beforeCount",t.utils.resolve(a[u](e,n,o)).then(function(){return u=o.op="count",a.dbg(u,e,n,o),t.utils.resolve(a._count(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];d||(d={});var c=new r(f,d,u);return c=a.respond(c,o),u=o.op="afterCount",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},create:function(e,n,o){var a=this,u=void 0;return n||(n={}),o||(o={}),u=o.op="beforeCreate",t.utils.resolve(a[u](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),u=o.op="create",a.dbg(u,e,n,o),t.utils.resolve(a._create(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];d||(d={});var c=new r(f,d,"create");return c.created=f?1:0,c=a.respond(c,o),u=o.op="afterCreate",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},createMany:function(e,n,o){var a=this,u=void 0;return n||(n={}),o||(o={}),u=o.op="beforeCreateMany",t.utils.resolve(a[u](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),u=o.op="createMany",a.dbg(u,e,n,o),t.utils.resolve(a._createMany(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];f||(f=[]),d||(d={});var c=new r(f,d,"createMany");return c.created=f.length,c=a.respond(c,o),u=o.op="afterCreateMany",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},destroy:function(e,n,o){var a=this,u=void 0;return o||(o={}),u=o.op="beforeDestroy",t.utils.resolve(a[u](e,n,o)).then(function(){return u=o.op="destroy",a.dbg(u,e,n,o),t.utils.resolve(a._destroy(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];d||(d={});var c=new r(f,d,"destroy");return c=a.respond(c,o),u=o.op="afterDestroy",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},destroyAll:function(e,n,o){var a=this,u=void 0;return n||(n={}),o||(o={}),u=o.op="beforeDestroyAll",t.utils.resolve(a[u](e,n,o)).then(function(){return u=o.op="destroyAll",a.dbg(u,e,n,o),t.utils.resolve(a._destroyAll(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];d||(d={});var c=new r(f,d,"destroyAll");return c=a.respond(c,o),u=o.op="afterDestroyAll",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},loadBelongsTo:function(e,n,r,o){var a=this,u=n.getRelation();if(!t.utils.isObject(r)||t.utils.isArray(r)){var s=r.map(function(t){return a.makeBelongsToForeignKey(e,n,t)}).filter(function(e){return e});return a.findAll(u,{where:i.defineProperty({},u.idAttribute,{in:s})},o).then(function(e){r.forEach(function(t){e.forEach(function(e){e[u.idAttribute]===t[n.foreignKey]&&n.setLocalField(t,e)})})})}var l=function(){var t=r;return{v:a.find(u,a.makeBelongsToForeignKey(e,n,t),o).then(function(e){n.setLocalField(t,e)})}}();return"object"===("undefined"==typeof l?"undefined":i.typeof(l))?l.v:void 0},find:function(e,n,o){var a=this,u=void 0,s=void 0;return o||(o={}),o.with||(o.with=[]),s=o.op="beforeFind",t.utils.resolve(a[s](e,n,o)).then(function(){return s=o.op="find",a.dbg(s,e,n,o),t.utils.resolve(a._find(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];if(s){u=s;var l=[];return t.utils.forEachRelation(e,o,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=a.loadHasManyLocalKeys(e,t,u,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,u,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,u,n)):r="hasOne"===t.type?a.loadHasOne(e,t,u,n):a.loadHasMany(e,t,u,n),r&&l.push(r)}),Promise.all(l)}}).then(function(){var i=new r(u,{},"find");return i.found=u?1:0,i=a.respond(i,o),s=o.op="afterFind",t.utils.resolve(a[s](e,n,o,i)).then(function(e){return t.utils.isUndefined(e)?i:e})})},findAll:function(e,n,o){var a=this;o||(o={}),o.with||(o.with=[]);var u=[],s=void 0,l=o._activeWith;if(t.utils.isObject(l)){var f=l.query||{};l.replace?n=f:t.utils.deepFillIn(n,f)}return s=o.op="beforeFindAll",t.utils.resolve(a[s](e,n,o)).then(function(){return s=o.op="findAll",a.dbg(s,e,n,o),t.utils.resolve(a._findAll(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];s||(s=[]),u=s;var l=[];return t.utils.forEachRelation(e,o,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=a.loadHasManyLocalKeys(e,t,u,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,u,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,u,n)):r="hasMany"===t.type?a.loadHasMany(e,t,u,n):a.loadHasOne(e,t,u,n),r&&l.push(r)}),Promise.all(l)}).then(function(){var i=new r(u,{},"findAll");return i.found=u.length,i=a.respond(i,o),s=o.op="afterFindAll",t.utils.resolve(a[s](e,n,o,i)).then(function(e){return t.utils.isUndefined(e)?i:e})})},getOpt:function(e,n){return n||(n={}),t.utils.isUndefined(n[e])?t.utils.plainCopy(this[e]):t.utils.plainCopy(n[e])},loadHasMany:function(e,n,r,i){var o=this,a=!1;t.utils.isObject(r)&&!t.utils.isArray(r)&&(a=!0,r=[r]);var u=r.map(function(t){return o.makeHasManyForeignKey(e,n,t)}),s={where:{}},l=s.where[n.foreignKey]={};return a?l["=="]=u[0]:l.in=u.filter(function(e){return e}),o.findAll(n.getRelation(),s,i).then(function(i){r.forEach(function(r){var o=[];a?o=i:i.forEach(function(i){t.utils.get(i,n.foreignKey)===r[e.idAttribute]&&o.push(i)}),n.setLocalField(r,o)})})},loadHasManyLocalKeys:function(e,n,r,o){var a=this,s=void 0,l=n.getRelation();if(t.utils.isObject(r)&&!t.utils.isArray(r)&&(s=r),s)return a.findAll(l,{where:i.defineProperty({},l.idAttribute,{in:a.makeHasManyLocalKeys(e,n,s)})},o).then(function(e){n.setLocalField(s,e)});var f=function(){var s=[];return r.forEach(function(t){s=s.concat(a.self.makeHasManyLocalKeys(e,n,t))}),{v:a.findAll(l,{where:i.defineProperty({},l.idAttribute,{in:u(s).filter(function(e){return e})})},o).then(function(e){return r.forEach(function(r){var i=[],o=t.utils.get(r,n.localKeys)||[];o=t.utils.isArray(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[l.idAttribute])&&i.push(e)}),n.setLocalField(r,i)}),e})}}();return"object"===("undefined"==typeof f?"undefined":i.typeof(f))?f.v:void 0},loadHasManyForeignKeys:function(e,n,r,o){var a=this,u=n.getRelation(),s=e.idAttribute,l=void 0;return t.utils.isObject(r)&&!t.utils.isArray(r)&&(l=r),l?a.findAll(n.getRelation(),{where:i.defineProperty({},n.foreignKeys,{contains:a.makeHasManyForeignKeys(e,n,l)})},o).then(function(e){n.setLocalField(l,e)}):a.findAll(u,{where:i.defineProperty({},n.foreignKeys,{isectNotEmpty:r.map(function(t){return a.makeHasManyForeignKeys(e,n,t)})})},o).then(function(e){var i=n.foreignKeys;r.forEach(function(r){var o=[],a=t.utils.get(r,s);e.forEach(function(n){var r=t.utils.get(e,i)||[];-1!==r.indexOf(a)&&o.push(n)}),n.setLocalField(r,o)})})},loadHasOne:function(e,n,r,i){return t.utils.isObject(r)&&!t.utils.isArray(r)&&(r=[r]),this.loadHasMany(e,n,r,i).then(function(){r.forEach(function(e){var r=n.getLocalField(e);t.utils.isArray(r)&&r.length&&n.setLocalField(e,r[0])})})},log:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;t>r;r++)n[r-1]=arguments[r];if(e&&!n.length&&(n.push(e),e="debug"),"debug"!==e||this.debug){var i=e.toUpperCase()+": (Adapter)";if(console[e]){var o;(o=console)[e].apply(o,[i].concat(n))}else{var a;(a=console).log.apply(a,[i].concat(n))}}},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,n,r){var i=[],o=t.utils.get(r,n.localKeys)||[];return o=t.utils.isArray(o)?o:Object.keys(o),i=i.concat(o),u(i).filter(function(e){return e})},makeHasManyForeignKeys:function(e,n,r){return t.utils.get(r,e.idAttribute)},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},sum:function(e,n,o,a){var u=this,s=void 0;if(!t.utils.isString(n))throw new Error("field must be a string!");return o||(o={}),a||(a={}),s=a.op="beforeSum",t.utils.resolve(u[s](e,n,o,a)).then(function(){return s=a.op="sum",u.dbg(s,e,n,o,a),t.utils.resolve(u._sum(e,n,o,a))}).then(function(l){var f=i.slicedToArray(l,2),d=f[0],c=f[1];c||(c={});var p=new r(d,c,s);return p=u.respond(p,a),s=a.op="afterSum",t.utils.resolve(u[s](e,n,o,a,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,n,o,a){var u=this;o||(o={}),a||(a={});var l=void 0;return l=a.op="beforeUpdate",t.utils.resolve(u[l](e,n,o,a)).then(function(r){return o=t.utils.isUndefined(r)?o:r,o=s(e,o),l=a.op="update",u.dbg(l,e,n,o,a),t.utils.resolve(u._update(e,n,o,a))}).then(function(s){var f=i.slicedToArray(s,2),d=f[0],c=f[1];c||(c={});var p=new r(d,c,"update");return p.updated=d?1:0,p=u.respond(p,a),l=a.op="afterUpdate",t.utils.resolve(u[l](e,n,o,a,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateAll:function(e,n,o,a){var u=this;n||(n={}),o||(o={}),a||(a={});var l=void 0;return l=a.op="beforeUpdateAll",t.utils.resolve(u[l](e,n,o,a)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),l=a.op="updateAll",u.dbg(l,e,n,o,a),t.utils.resolve(u._updateAll(e,n,o,a))}).then(function(s){var f=i.slicedToArray(s,2),d=f[0],c=f[1];d||(d=[]),c||(c={});var p=new r(d,c,"updateAll");return p.updated=d.length,p=u.respond(p,a),l=a.op="afterUpdateAll",t.utils.resolve(u[l](e,n,o,a,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateMany:function(e,n,o){var a=this;n||(n=[]),o||(o={});var u=void 0,l=e.idAttribute;return n=n.filter(function(e){return t.utils.get(e,l)}),u=o.op="beforeUpdateMany",t.utils.resolve(a[u](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),u=o.op="updateMany",a.dbg(u,e,n,o),t.utils.resolve(a._updateMany(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];f||(f=[]),d||(d={});var c=new r(f,d,"updateMany");return c.updated=f.length,c=a.respond(c,o),u=o.op="afterUpdateMany",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})}}),e.noop=o,e.noop2=a,e.unique=u,e.withoutRelations=s,e.Adapter=n,e.reserved=f,e.Response=r})},function(e,t){e.exports=void 0}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("js-data"),require("undefined")):"function"==typeof define&&define.amd?define(["js-data","undefined"],t):"object"==typeof exports?exports.JSDataHttp=t(require("js-data"),require("undefined")):e.JSDataHttp=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return null!=e&&""!==e}function i(e,t){return t||(t=""),e.filter(r).join(t)}function o(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=i(t,"/");return r.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function a(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function u(e,t){if(!t)return e;var n=[];return f.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(f.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():f.utils.isObject(e)&&(e=f.utils.toJson(e)),n.push(a(t)+"="+a(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function s(e){var t=this;e||(e={}),f.utils.fillIn(e,y),d.Adapter.call(t,e)}var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},f=n(1),d=n(2),c=n(3),p=!1;try{p=window&&window.fetch}catch(e){}var h=d.Adapter.prototype,y={basePath:"",forceTrailingSlash:!1,http:c,httpConfig:{},suffix:"",useFetch:!1};t.HttpAdapter=s,s.prototype=Object.create(d.Adapter.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(s,"__super__",{configurable:!0,value:d.Adapter}),s.extend=f.utils.extend,f.utils.addHiddenPropsToTarget(s.prototype,{afterDEL:d.noop2,afterGET:d.noop2,afterHTTP:d.noop2,afterPOST:d.noop2,afterPUT:d.noop2,beforeDEL:d.noop,beforeGET:d.noop,beforeHTTP:d.noop,beforePOST:d.noop,beforePUT:d.noop,_count:function(e,t,n){var r=this;return r.GET(r.getPath("count",e,n.params,n),n).then(function(t){return r._end(e,n,t)})},_create:function(e,t,n){var r=this;return r.POST(r.getPath("create",e,t,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},_createMany:function(e,t,n){var r=this;return r.POST(r.getPath("createMany",e,null,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},_destroy:function(e,t,n){var r=this;return r.DEL(r.getPath("destroy",e,t,n),n).then(function(t){return r._end(e,n,t)})},_destroyAll:function(e,t,n){var r=this;return r.DEL(r.getPath("destroyAll",e,null,n),n).then(function(t){return r._end(e,n,t)})},_end:function(e,t,n){return[this.deserialize(e,n,t),n]},_find:function(e,t,n){var r=this;return r.GET(r.getPath("find",e,t,n),n).then(function(t){return r._end(e,n,t)})},_findAll:function(e,t,n){var r=this;return r.GET(r.getPath("findAll",e,n.params,n),n).then(function(t){return r._end(e,n,t)})},_sum:function(e,t,n,r){var i=this;return i.GET(i.getPath("sum",e,r.params,r),r).then(function(t){return i._end(e,r,t)})},_update:function(e,t,n,r){var i=this;return i.PUT(i.getPath("update",e,t,r),i.serialize(e,n,r),r).then(function(t){return i._end(e,r,t)})},_updateAll:function(e,t,n,r){var i=this;return i.PUT(i.getPath("updateAll",e,null,r),i.serialize(e,t,r),r).then(function(t){return i._end(e,r,t)})},_updateMany:function(e,t,n){var r=this;return r.PUT(r.getPath("updateMany",e,null,n),r.serialize(e,t,n),n).then(function(t){return r._end(e,n,t)})},count:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),n.params.count=!0,n.suffix=r.getSuffix(e,n),f.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),h.count.call(r,e,t,n)},create:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.createMany.call(r,e,t,n)},DEL:function(e,t,n){var r=this,i=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"delete",i=n.op="beforeDEL",f.utils.resolve(r[i](e,t,n)).then(function(o){return t=f.utils.isUndefined(o)?t:o,i=n.op="DEL",r.dbg(i,e,t,n),r.HTTP(t,n)}).then(function(o){return i=n.op="afterDEL",f.utils.resolve(r[i](e,t,n,o)).then(function(e){return f.utils.isUndefined(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),f.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):f.utils.isFunction(e.deserialize)?e.deserialize(e,t,n):t&&t.hasOwnProperty("data")?t.data:t},destroy:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),f.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.destroyAll.call(r,e,t,n)},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,n){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var n={method:e.method,headers:new Headers(e.headers)};return e.data&&(n.body=f.utils.toJson(e.data)),fetch(new Request(u(e.url,e.params),n)).then(function(t){return t.config={method:e.method,url:e.url},t.json().then(function(e){return t.data=e,t})})}),find:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),n.suffix=r.getSuffix(e,n),f.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),h.findAll.call(r,e,t,n)},GET:function(e,t,n){var r=this,i=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"get",i=n.op="beforeGET",f.utils.resolve(r[i](e,t,n)).then(function(o){return t=f.utils.isUndefined(o)?t:o,i=n.op="GET",r.dbg(i,e,t,n),r.HTTP(t,n)}).then(function(o){return i=n.op="afterGET",f.utils.resolve(r[i](e,t,n,o)).then(function(e){return f.utils.isUndefined(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=f.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],a=f.utils.isUndefined(n.endpoint)?f.utils.isUndefined(e.endpoint)?e.name:e.endpoint:n.endpoint;return i.forEach(function(e){if("belongsTo"===e.type&&e.parent){var i=void 0,u=e.foreignKey,s=e.getRelation(),d=n.params[u];if(d===!1||!u||!s)return d===!1&&delete n.params[u],!1;if(delete n.params[u],f.utils.isObject(t)&&(i=t),i&&(d=d||e.getForeignKey(i)||(e.getLocalField(i)?f.utils.get(e.getLocalField(i),s.idAttribute):null)),d){var c=function(){delete n.endpoint;var e={};return f.utils.forOwn(n,function(t,n){e[n]=t}),f.utils._(e,s),a=o(r.getEndpoint(s,d,e),d,a),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":l(c)))return c.v}}}),a},getPath:function(e,t,n,r){var i=this;r||(r={});var a=[f.utils.isUndefined(r.basePath)?f.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,f.utils.isString(n)||f.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),o.apply(f.utils,a)},getParams:function(e){return e||(e={}),f.utils.isUndefined(e.params)?{}:f.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),f.utils.isUndefined(t.suffix)?f.utils.isUndefined(e.suffix)?this.suffix:e.suffix:t.suffix},HTTP:function(e,t){function n(t){var n=i.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-i.getTime())+"ms";return t.status>=200&&t.status<300?(r.log&&r.dbg("debug",n,t),t):(r.error&&r.error("'FAILED: "+n,t),f.utils.reject(t))}var r=this,i=new Date;t||(t={});var o=e.data,a=e.cache,u=e.timeout;e=f.utils.copy(e,null,null,null,["data","cache","timeout"]),e=f.utils.deepMixIn(e,r.httpConfig),e.data=o,e.cache=a,e.timeout=u,r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var s=e.suffix||t.suffix||r.suffix;if(s&&e.url.substr(e.url.length-s.length)!==s&&(e.url+=s),!r.http)throw new Error("You have not configured this adapter with an http library!");return f.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,p&&(r.useFetch||t.useFetch||!r.http)?r.fetch(e,t).then(n,n):r.http(e).then(n,n).catch(function(n){return r.responseError(n,e,t)})}).then(function(n){return f.utils.resolve(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var i=this,o=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",o=r.op="beforePOST",f.utils.resolve(i[o](e,t,n,r)).then(function(a){return n=f.utils.isUndefined(a)?n:a,o=r.op="POST",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(a){return o=r.op="afterPOST",f.utils.resolve(i[o](e,t,n,r,a)).then(function(e){return f.utils.isUndefined(e)?a:e})})},PUT:function(e,t,n,r){var i=this,o=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",o=r.op="beforePUT",f.utils.resolve(i[o](e,t,n,r)).then(function(a){return n=f.utils.isUndefined(a)?n:a,o=r.op="PUT",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(a){return o=r.op="afterPUT",f.utils.resolve(i[o](e,t,n,r,a)).then(function(e){return f.utils.isUndefined(e)?a:e})})},queryTransform:function(e,t,n){return n||(n={}),f.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):f.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return f.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),f.utils.isFunction(n.serialize)?n.serialize(e,t,n):f.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!f.utils.utils.isString(t))throw new Error("field must be a string!");return r.params=i.getParams(r),r.params.sum=t,r.suffix=i.getSuffix(e,r),f.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),h.sum.call(i,e,t,n,r)},update:function(e,t,n,r){var i=this;return r||(r={}),r.params=i.getParams(r),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),h.update.call(i,e,t,n,r)},updateAll:function(e,t,n,r){var i=this;return n||(n={}),r||(r={}),r.params=i.getParams(r),f.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),h.updateAll.call(i,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n||(n={}),n.params=r.getParams(n),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),h.updateMany.call(r,e,t,n)}}),t.addAction=function(e,t){if(!e||!f.utils.isString(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":l(e)));return function(n){if(n[e])throw new Error("action(name[, opts]): "+e+" already exists on target!");return t.request=t.request||function(e){return e},t.response=t.response||function(e){return e},t.responseError=t.responseError||function(e){return f.utils.reject(e)},n[e]=function(n,r){var i=this;f.utils.isObject(n)&&(r=n),r=r||{};var a=i.getAdapter(t.adapter||i.defaultAdapter||"http"),u={};if(f.utils.fillIn(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(i,r);else{var s=[r.basePath||i.basePath||a.basePath,a.getEndpoint(i,f.utils.isSorN(n)?n:null,r)];f.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),u.url=o.apply(null,s)}return u.method=u.method||"GET",u.mapper=i.name,f.utils.deepMixIn(u,r),f.utils.resolve(u).then(r.request||t.request).then(function(e){return a.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=i.name),e}).then(r.response||t.response,r.responseError||t.responseError)},n}},t.addActions=function(e){return e||(e={}),function(n){return f.utils.forOwn(e,function(e,r){t.addAction(r,e)(n)}),n}},t.version={beta:5,full:"3.0.0-beta.5",major:3,minor:0,patch:0},t.default=s},function(t,n){t.exports=e},function(e,t,n){!function(e,r){r(t,n(1))}(this,function(e,t){"use strict";function n(e){var n=this;e||(e={}),t.utils.fillIn(e,l),t.utils.fillIn(n,e)}function r(e,n,r){var i=this;n||(n={}),i.data=e,t.utils.fillIn(i,n),i.op=r}var i={};i.typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},i.defineProperty=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},i.slicedToArray=function(){function e(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&u.return&&u.return()}finally{if(i)throw o}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();var o=function(){for(var e=this,n=arguments.length,r=Array(n),i=0;n>i;i++)r[i]=arguments[i];var o=r[r.length-1];return e.dbg.apply(e,[o.op].concat(r)),t.utils.resolve()},a=function(){for(var e=this,n=arguments.length,r=Array(n),i=0;n>i;i++)r[i]=arguments[i];var o=r[r.length-2];return e.dbg.apply(e,[o.op].concat(r)),t.utils.resolve()},u=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},s=function(e,n){return t.utils.omit(n,e.relationFields||[])},l={debug:!1,raw:!1},f=["orderBy","sort","limit","offset","skip","where"];n.extend=t.utils.extend,t.utils.addHiddenPropsToTarget(n.prototype,{afterCount:a,afterCreate:a,afterCreateMany:a,afterDestroy:a,afterDestroyAll:a,afterFind:a,afterFindAll:a,afterSum:a,afterUpdate:a,afterUpdateAll:a,afterUpdateMany:a,beforeCount:o,beforeCreate:o,beforeCreateMany:o,beforeDestroy:o,beforeDestroyAll:o,beforeFind:o,beforeFindAll:o,beforeSum:o,beforeUpdate:o,beforeUpdateAll:o,beforeUpdateMany:o,dbg:function(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];this.log.apply(this,["debug"].concat(t))},count:function(e,n,o){var a=this,u=void 0;return n||(n={}),o||(o={}),u=o.op="beforeCount",t.utils.resolve(a[u](e,n,o)).then(function(){return u=o.op="count",a.dbg(u,e,n,o),t.utils.resolve(a._count(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];d||(d={});var c=new r(f,d,u);return c=a.respond(c,o),u=o.op="afterCount",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},create:function(e,n,o){var a=this,u=void 0;return n||(n={}),o||(o={}),u=o.op="beforeCreate",t.utils.resolve(a[u](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),u=o.op="create",a.dbg(u,e,n,o),t.utils.resolve(a._create(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];d||(d={});var c=new r(f,d,"create");return c.created=f?1:0,c=a.respond(c,o),u=o.op="afterCreate",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},createMany:function(e,n,o){var a=this,u=void 0;return n||(n={}),o||(o={}),u=o.op="beforeCreateMany",t.utils.resolve(a[u](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),u=o.op="createMany",a.dbg(u,e,n,o),t.utils.resolve(a._createMany(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];f||(f=[]),d||(d={});var c=new r(f,d,"createMany");return c.created=f.length,c=a.respond(c,o),u=o.op="afterCreateMany",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},destroy:function(e,n,o){var a=this,u=void 0;return o||(o={}),u=o.op="beforeDestroy",t.utils.resolve(a[u](e,n,o)).then(function(){return u=o.op="destroy",a.dbg(u,e,n,o),t.utils.resolve(a._destroy(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];d||(d={});var c=new r(f,d,"destroy");return c=a.respond(c,o),u=o.op="afterDestroy",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},destroyAll:function(e,n,o){var a=this,u=void 0;return n||(n={}),o||(o={}),u=o.op="beforeDestroyAll",t.utils.resolve(a[u](e,n,o)).then(function(){return u=o.op="destroyAll",a.dbg(u,e,n,o),t.utils.resolve(a._destroyAll(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];d||(d={});var c=new r(f,d,"destroyAll");return c=a.respond(c,o),u=o.op="afterDestroyAll",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},loadBelongsTo:function(e,n,r,o){var a=this,u=n.getRelation();if(!t.utils.isObject(r)||t.utils.isArray(r)){var s=r.map(function(t){return a.makeBelongsToForeignKey(e,n,t)}).filter(function(e){return e});return a.findAll(u,{where:i.defineProperty({},u.idAttribute,{in:s})},o).then(function(e){r.forEach(function(t){e.forEach(function(e){e[u.idAttribute]===t[n.foreignKey]&&n.setLocalField(t,e)})})})}var l=function(){var t=r;return{v:a.find(u,a.makeBelongsToForeignKey(e,n,t),o).then(function(e){n.setLocalField(t,e)})}}();return"object"===("undefined"==typeof l?"undefined":i.typeof(l))?l.v:void 0},find:function(e,n,o){var a=this,u=void 0,s=void 0;return o||(o={}),o.with||(o.with=[]),s=o.op="beforeFind",t.utils.resolve(a[s](e,n,o)).then(function(){return s=o.op="find",a.dbg(s,e,n,o),t.utils.resolve(a._find(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];if(s){u=s;var l=[];return t.utils.forEachRelation(e,o,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=a.loadHasManyLocalKeys(e,t,u,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,u,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,u,n)):r="hasOne"===t.type?a.loadHasOne(e,t,u,n):a.loadHasMany(e,t,u,n),r&&l.push(r)}),Promise.all(l)}}).then(function(){var i=new r(u,{},"find");return i.found=u?1:0,i=a.respond(i,o),s=o.op="afterFind",t.utils.resolve(a[s](e,n,o,i)).then(function(e){return t.utils.isUndefined(e)?i:e})})},findAll:function(e,n,o){var a=this;o||(o={}),o.with||(o.with=[]);var u=[],s=void 0,l=o._activeWith;if(t.utils.isObject(l)){var f=l.query||{};l.replace?n=f:t.utils.deepFillIn(n,f)}return s=o.op="beforeFindAll",t.utils.resolve(a[s](e,n,o)).then(function(){return s=o.op="findAll",a.dbg(s,e,n,o),t.utils.resolve(a._findAll(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];s||(s=[]),u=s;var l=[];return t.utils.forEachRelation(e,o,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=a.loadHasManyLocalKeys(e,t,u,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,u,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,u,n)):r="hasMany"===t.type?a.loadHasMany(e,t,u,n):a.loadHasOne(e,t,u,n),r&&l.push(r)}),Promise.all(l)}).then(function(){var i=new r(u,{},"findAll");return i.found=u.length,i=a.respond(i,o),s=o.op="afterFindAll",t.utils.resolve(a[s](e,n,o,i)).then(function(e){return t.utils.isUndefined(e)?i:e})})},getOpt:function(e,n){return n||(n={}),t.utils.isUndefined(n[e])?t.utils.plainCopy(this[e]):t.utils.plainCopy(n[e])},loadHasMany:function(e,n,r,i){var o=this,a=!1;t.utils.isObject(r)&&!t.utils.isArray(r)&&(a=!0,r=[r]);var u=r.map(function(t){return o.makeHasManyForeignKey(e,n,t)}),s={where:{}},l=s.where[n.foreignKey]={};return a?l["=="]=u[0]:l.in=u.filter(function(e){return e}),o.findAll(n.getRelation(),s,i).then(function(i){r.forEach(function(r){var o=[];a?o=i:i.forEach(function(i){t.utils.get(i,n.foreignKey)===r[e.idAttribute]&&o.push(i)}),n.setLocalField(r,o)})})},loadHasManyLocalKeys:function(e,n,r,o){var a=this,s=void 0,l=n.getRelation();if(t.utils.isObject(r)&&!t.utils.isArray(r)&&(s=r),s)return a.findAll(l,{where:i.defineProperty({},l.idAttribute,{in:a.makeHasManyLocalKeys(e,n,s)})},o).then(function(e){n.setLocalField(s,e)});var f=function(){var s=[];return r.forEach(function(t){s=s.concat(a.self.makeHasManyLocalKeys(e,n,t))}),{v:a.findAll(l,{where:i.defineProperty({},l.idAttribute,{in:u(s).filter(function(e){return e})})},o).then(function(e){return r.forEach(function(r){var i=[],o=t.utils.get(r,n.localKeys)||[];o=t.utils.isArray(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[l.idAttribute])&&i.push(e)}),n.setLocalField(r,i)}),e})}}();return"object"===("undefined"==typeof f?"undefined":i.typeof(f))?f.v:void 0},loadHasManyForeignKeys:function(e,n,r,o){var a=this,u=n.getRelation(),s=e.idAttribute,l=void 0;return t.utils.isObject(r)&&!t.utils.isArray(r)&&(l=r),l?a.findAll(n.getRelation(),{where:i.defineProperty({},n.foreignKeys,{contains:a.makeHasManyForeignKeys(e,n,l)})},o).then(function(e){n.setLocalField(l,e)}):a.findAll(u,{where:i.defineProperty({},n.foreignKeys,{isectNotEmpty:r.map(function(t){return a.makeHasManyForeignKeys(e,n,t)})})},o).then(function(e){var i=n.foreignKeys;r.forEach(function(r){var o=[],a=t.utils.get(r,s);e.forEach(function(n){var r=t.utils.get(e,i)||[];-1!==r.indexOf(a)&&o.push(n)}),n.setLocalField(r,o)})})},loadHasOne:function(e,n,r,i){return t.utils.isObject(r)&&!t.utils.isArray(r)&&(r=[r]),this.loadHasMany(e,n,r,i).then(function(){r.forEach(function(e){var r=n.getLocalField(e);t.utils.isArray(r)&&r.length&&n.setLocalField(e,r[0])})})},log:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;t>r;r++)n[r-1]=arguments[r];if(e&&!n.length&&(n.push(e),e="debug"),"debug"!==e||this.debug){var i=e.toUpperCase()+": (Adapter)";if(console[e]){var o;(o=console)[e].apply(o,[i].concat(n))}else{var a;(a=console).log.apply(a,[i].concat(n))}}},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,n,r){var i=[],o=t.utils.get(r,n.localKeys)||[];return o=t.utils.isArray(o)?o:Object.keys(o),i=i.concat(o),u(i).filter(function(e){return e})},makeHasManyForeignKeys:function(e,n,r){return t.utils.get(r,e.idAttribute)},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},sum:function(e,n,o,a){var u=this,s=void 0;if(!t.utils.isString(n))throw new Error("field must be a string!");return o||(o={}),a||(a={}),s=a.op="beforeSum",t.utils.resolve(u[s](e,n,o,a)).then(function(){return s=a.op="sum",u.dbg(s,e,n,o,a),t.utils.resolve(u._sum(e,n,o,a))}).then(function(l){var f=i.slicedToArray(l,2),d=f[0],c=f[1];c||(c={});var p=new r(d,c,s);return p=u.respond(p,a),s=a.op="afterSum",t.utils.resolve(u[s](e,n,o,a,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,n,o,a){var u=this;o||(o={}),a||(a={});var l=void 0;return l=a.op="beforeUpdate",t.utils.resolve(u[l](e,n,o,a)).then(function(r){return o=t.utils.isUndefined(r)?o:r,o=s(e,o),l=a.op="update",u.dbg(l,e,n,o,a),t.utils.resolve(u._update(e,n,o,a))}).then(function(s){var f=i.slicedToArray(s,2),d=f[0],c=f[1];c||(c={});var p=new r(d,c,"update");return p.updated=d?1:0,p=u.respond(p,a),l=a.op="afterUpdate",t.utils.resolve(u[l](e,n,o,a,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateAll:function(e,n,o,a){var u=this;n||(n={}),o||(o={}),a||(a={});var l=void 0;return l=a.op="beforeUpdateAll",t.utils.resolve(u[l](e,n,o,a)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),l=a.op="updateAll",u.dbg(l,e,n,o,a),t.utils.resolve(u._updateAll(e,n,o,a))}).then(function(s){var f=i.slicedToArray(s,2),d=f[0],c=f[1];d||(d=[]),c||(c={});var p=new r(d,c,"updateAll");return p.updated=d.length,p=u.respond(p,a),l=a.op="afterUpdateAll",t.utils.resolve(u[l](e,n,o,a,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateMany:function(e,n,o){var a=this;n||(n=[]),o||(o={});var u=void 0,l=e.idAttribute;return n=n.filter(function(e){return t.utils.get(e,l)}),u=o.op="beforeUpdateMany",t.utils.resolve(a[u](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),u=o.op="updateMany",a.dbg(u,e,n,o),t.utils.resolve(a._updateMany(e,n,o))}).then(function(s){var l=i.slicedToArray(s,2),f=l[0],d=l[1];f||(f=[]),d||(d={});var c=new r(f,d,"updateMany");return c.updated=f.length,c=a.respond(c,o),u=o.op="afterUpdateMany",t.utils.resolve(a[u](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})}}),e.noop=o,e.noop2=a,e.unique=u,e.withoutRelations=s,e.Adapter=n,e.reserved=f,e.Response=r})},function(e,t){e.exports=void 0}])}); //# sourceMappingURL=js-data-fetch.min.map \ No newline at end of file diff --git a/fetch/dist/js-data-fetch.min.map b/fetch/dist/js-data-fetch.min.map index b039e72..0054279 100644 --- a/fetch/dist/js-data-fetch.min.map +++ b/fetch/dist/js-data-fetch.min.map @@ -1 +1 @@ -{"version":3,"sources":["fetch/dist/js-data-fetch.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","__WEBPACK_EXTERNAL_MODULE_3__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","isValidString","value","join","items","separator","filter","makePath","_len","arguments","length","args","Array","_key","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","_jsData","utils","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter","Adapter","_typeof","Symbol","iterator","obj","constructor","axios","hasFetch","fetch","e","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","extend","addHiddenPropsToTarget","afterDEL","noop2","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","noop","beforeGET","beforeHTTP","beforePOST","beforePUT","_count","mapper","query","GET","getPath","then","response","_end","_create","props","POST","serialize","_createMany","_destroy","DEL","_destroyAll","deserialize","_find","_findAll","_sum","field","_update","PUT","_updateAll","_updateMany","records","count","getParams","getSuffix","deepMixIn","queryTransform","createMany","config","op","method","resolve","_config","isUndefined","dbg","HTTP","_response","isFunction","hasOwnProperty","data","destroy","destroyAll","error","console","_console","apply","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","findAll","getEndpoint","relationList","endpoint","name","def","type","parent","item","parentKey","foreignKey","parentDef","getRelation","parentId","getForeignKey","getLocalField","get","idAttribute","_ret","_opts","_","isString","isNumber","copy","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","reject","payload","cache","timeout","substr","Error","catch","err","responseError","sum","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","isSorN","pathname","addActions","version","beta","full","major","minor","patch","default","global","jsData","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","concat","_len2","_key2","unique","array","seen","final","withoutRelations","omit","relationFields","debug","raw","reserved","afterCount","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterSum","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCount","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeSum","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_len3","_key3","results","_results","respond","_props","_results2","created","map","record","_results3","_results4","_results5","loadBelongsTo","__opts","relationDef","keys","makeBelongsToForeignKey","where","in","relatedItems","relatedItem","setLocalField","with","_results6","_record","tasks","forEachRelation","task","localKeys","loadHasManyLocalKeys","foreignKeys","loadHasManyForeignKeys","loadHasOne","loadHasMany","Promise","all","found","activeWith","_activeWith","activeQuery","deepFillIn","_results7","_records","getOpt","opt","plainCopy","singular","IDs","makeHasManyForeignKey","criteria","attached","relatedMapper","makeHasManyLocalKeys","_ret2","x","itemKeys","contains","makeHasManyForeignKeys","isectNotEmpty","foreignKeysField","_relatedItems","relatedData","level","_len4","_key4","prefix","_console2","_results8","_results9","updated","_results10","_results11"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file +{"version":3,"sources":["fetch/dist/js-data-fetch.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","__WEBPACK_EXTERNAL_MODULE_3__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","isValidString","value","join","items","separator","filter","makePath","_len","arguments","length","args","Array","_key","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","_jsData","utils","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter","Adapter","_typeof","Symbol","iterator","obj","constructor","axios","hasFetch","fetch","e","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","extend","addHiddenPropsToTarget","afterDEL","noop2","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","noop","beforeGET","beforeHTTP","beforePOST","beforePUT","_count","mapper","query","GET","getPath","then","response","_end","_create","props","POST","serialize","_createMany","_destroy","DEL","_destroyAll","deserialize","_find","_findAll","_sum","field","_update","PUT","_updateAll","_updateMany","records","count","getParams","getSuffix","deepMixIn","queryTransform","createMany","config","op","method","resolve","_config","isUndefined","dbg","HTTP","_response","isFunction","hasOwnProperty","data","destroy","destroyAll","error","console","_console","apply","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","findAll","getEndpoint","relationList","endpoint","name","def","type","parent","item","parentKey","foreignKey","parentDef","getRelation","parentId","getForeignKey","getLocalField","get","idAttribute","_ret","_opts","_","isString","isNumber","copy","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","reject","payload","cache","timeout","substr","Error","catch","err","responseError","sum","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","isSorN","pathname","addActions","version","beta","full","major","minor","patch","default","global","jsData","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","concat","_len2","_key2","unique","array","seen","final","withoutRelations","omit","relationFields","debug","raw","reserved","afterCount","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterSum","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCount","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeSum","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_len3","_key3","results","_results","respond","_props","_results2","created","map","record","_results3","_results4","_results5","loadBelongsTo","__opts","relationDef","keys","makeBelongsToForeignKey","where","in","relatedItems","relatedItem","setLocalField","with","_results6","_record","tasks","forEachRelation","task","localKeys","loadHasManyLocalKeys","foreignKeys","loadHasManyForeignKeys","loadHasOne","loadHasMany","Promise","all","found","activeWith","_activeWith","activeQuery","deepFillIn","_results7","_records","getOpt","opt","plainCopy","singular","IDs","makeHasManyForeignKey","criteria","attached","relatedMapper","makeHasManyLocalKeys","_ret2","x","itemKeys","contains","makeHasManyForeignKeys","isectNotEmpty","foreignKeysField","_relatedItems","relatedData","level","_len4","_key4","prefix","_console2","_results8","_results9","updated","_results10","_results11"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index b2c0f59..b5fe91c 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -1146,6 +1146,34 @@ return /******/ (function(modules) { // webpackBootstrap /** * Add an Http actions to a mapper. * + * @example + * // CommonJS + * var JSData = require('js-data') + * // It is recommended to use DataStore in the browser + * var DataStore = JSData.DataStore + * + * var JSDataHttp = require('js-data-http') + * var HttpAdapter = JSDataHttp.HttpAdapter + * var addAction = JSDataHttp.addAction + * + * var adapter = new HttpAdapter() + * var store = new DataStore() + * + * store.registerAdapter('http', adapter, { default: true }) + * store.defineMapper('school') + * + * // GET /reports/schools/:school_id/teachers + * addAction('getTeacherReports', { + * basePath: 'reports/schools', + * pathname: 'teachers', + * method: 'GET' + * })(store.getMapper('school')) + * + * // /reports/schools/1234/teachers + * store.getMapper('school').getTeacherReports(1234).then(function (response) { + * // ... + * }) + * * @name module:js-data-http.addAction * @method * @param {string} name Name of the new action. @@ -1199,7 +1227,7 @@ return /******/ (function(modules) { // webpackBootstrap } config.method = config.method || 'GET'; config.mapper = self.name; - _jsData.utils.deepMixIn(config)(_opts); + _jsData.utils.deepMixIn(config, _opts); return _jsData.utils.resolve(config).then(_opts.request || opts.request).then(function (config) { return adapter.HTTP(config); }).then(function (data) { @@ -1217,6 +1245,36 @@ return /******/ (function(modules) { // webpackBootstrap * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for * action configuration options. * + * @example + * // CommonJS + * var JSData = require('js-data') + * // It is recommended to use DataStore in the browser + * var DataStore = JSData.DataStore + * + * var JSDataHttp = require('js-data-http') + * var HttpAdapter = JSDataHttp.HttpAdapter + * var addActions = JSDataHttp.addActions + * + * var adapter = new HttpAdapter() + * var store = new DataStore() + * + * store.registerAdapter('http', adapter, { default: true }) + * store.defineMapper('school') + * + * addActions({ + * // GET /reports/schools/:school_id/teachers + * getTeacherReports: { + * basePath: 'reports/schools', + * pathname: 'teachers', + * method: 'GET' + * } + * })(store.getMapper('school')) + * + * // /reports/schools/1234/teachers + * store.getMapper('school').getTeacherReports(1234).then(function (response) { + * // ... + * }) + * * @name module:js-data-http.addActions * @method * @param {Object.} opts Object where the key is an action name @@ -1227,7 +1285,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.addActions = function addActions(opts) { opts || (opts = {}); return function (mapper) { - _jsData.utils.forOwn(mapper, function (value, key) { + _jsData.utils.forOwn(opts, function (value, key) { exports.addAction(key, value)(mapper); }); return mapper; @@ -1249,8 +1307,8 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ exports.version = { - beta: 4, - full: '3.0.0-beta.4', + beta: 5, + full: '3.0.0-beta.5', major: 3, minor: 0, patch: 0 @@ -1262,22 +1320,25 @@ return /******/ (function(modules) { // webpackBootstrap * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower * as `js-data-fetch`. * - * __Script tag__: - * ```javascript - * window.HttpAdapter - * ``` - * __CommonJS__: - * ```javascript - * var HttpAdapter = require('js-data-http') - * ``` - * __ES6 Modules__: - * ```javascript - * import HttpAdapter from 'js-data-http' - * ``` - * __AMD__: - * ```javascript - * define('myApp', ['js-data-http'], function (HttpAdapter) { ... }) - * ``` + * @example Script tag + * var HttpAdapter = window.JSDataHttp.HttpAdapter + * var adapter = new HttpAdapter() + * + * @example CommonJS + * var HttpAdapter = require('js-data-Http').HttpAdapter + * var adapter = new HttpAdapter() + * + * @example ES2015 Modules + * import {HttpAdapter} from 'js-data-Http' + * const adapter = new HttpAdapter() + * + * @example AMD + * define('myApp', ['js-data-Http'], function (JSDataHttp) { + * var HttpAdapter = JSDataHttp.HttpAdapter + * var adapter = new HttpAdapter() + * + * // ... + * }) * * @module js-data-http */ diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index bc19b6b..cf2f9d7 100644 --- a/node/dist/js-data-http-node.js.map +++ b/node/dist/js-data-http-node.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 13c03016b2804214fca6","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///./~/js-data-adapter/dist/js-data-adapter.js","webpack:///external \"axios\""],"names":[],"mappings":"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AACA;AACA;AACA,kDAAiD;AACjD,EAAC,kCAAkC;;AAEnC;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD,+BAA+B;AAChF;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA,oEAAmE,aAAa;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAsE,eAAe;AACrF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,OAAO;AACpB;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,6BAA6B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,8BAA8B,eAAe;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,+BAA+B,eAAe;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,gCAAgC,eAAe;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,iCAAiC,eAAe;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAwE,eAAe;AACvF;AACA;;AAEA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP,+CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP,gDAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,EAAE;AAClB;AACA;AACA,yBAAwB;AACxB;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,oDAAmD;AACnD;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA,gDAA+C;AAC/C;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB;AACA;AACA,6FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD,4C;;;;;;AC/mDA,gD","file":"./node/dist/js-data-http-node.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"js-data\"), require(\"axios\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"js-data\", \"axios\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"js-data\"), require(\"axios\")) : factory(root[\"js-data\"], root[\"axios\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 13c03016b2804214fca6\n **/","/* global fetch:true Headers:true Request:true */\n\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport {\n Adapter,\n noop,\n noop2\n} from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nfunction isValidString (value) {\n return (value != null && value !== '')\n}\nfunction join (items, separator) {\n separator || (separator = '')\n return items.filter(isValidString).join(separator)\n}\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nfunction encode (val) {\n return encodeURIComponent(val)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+')\n .replace(/%5B/gi, '[')\n .replace(/%5D/gi, ']')\n}\n\nfunction buildUrl (url, params) {\n if (!params) {\n return url\n }\n\n const parts = []\n\n utils.forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!utils.isArray(val)) {\n val = [val]\n }\n\n val.forEach(function (v) {\n if (window.toString.call(v) === '[object Date]') {\n v = v.toISOString()\n } else if (utils.isObject(v)) {\n v = utils.toJson(v)\n }\n parts.push(`${encode(key)}=${encode(v)}`)\n })\n })\n\n if (parts.length > 0) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\n }\n\n return url\n}\n\nconst __super__ = Adapter.prototype\n\nconst DEFAULTS = {\n // Default and user-defined settings\n /**\n * @name HttpAdapter#basePath\n * @type {string}\n */\n basePath: '',\n\n /**\n * @name HttpAdapter#forceTrailingSlash\n * @type {boolean}\n * @default false\n */\n forceTrailingSlash: false,\n\n /**\n * @name HttpAdapter#http\n * @type {Function}\n */\n http: axios,\n\n /**\n * @name HttpAdapter#httpConfig\n * @type {Object}\n */\n httpConfig: {},\n\n /**\n * @name HttpAdapter#suffix\n * @type {string}\n */\n suffix: '',\n\n /**\n * @name HttpAdapter#useFetch\n * @type {boolean}\n * @default false\n */\n useFetch: false\n}\n\n/**\n * HttpAdapter class.\n *\n * @class HttpAdapter\n * @extends Adapter\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.basePath=''] TODO\n * @param {boolean} [opts.debug=false] TODO\n * @param {boolean} [opts.forceTrailingSlash=false] TODO\n * @param {Object} [opts.http=axios] TODO\n * @param {Object} [opts.httpConfig={}] TODO\n * @param {string} [opts.suffix=''] TODO\n * @param {boolean} [opts.useFetch=false] TODO\n */\nfunction HttpAdapter (opts) {\n const self = this\n opts || (opts = {})\n utils.fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\n\n/**\n * @name module:js-data-http.HttpAdapter\n * @see HttpAdapter\n */\nexports.HttpAdapter = HttpAdapter\n\n// Setup prototype inheritance from Adapter\nHttpAdapter.prototype = Object.create(Adapter.prototype, {\n constructor: {\n value: HttpAdapter,\n enumerable: false,\n writable: true,\n configurable: true\n }\n})\n\nObject.defineProperty(HttpAdapter, '__super__', {\n configurable: true,\n value: Adapter\n})\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * @example Using the ES2015 class syntax.\n * class MyHttpAdapter extends HttpAdapter {...}\n * const adapter = new MyHttpAdapter()\n *\n * @example Using {@link HttpAdapter.extend}.\n * var instanceProps = {...}\n * var classProps = {...}\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n *\n * @name HttpAdapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `HttpAdapter`.\n */\nHttpAdapter.extend = utils.extend\n\nutils.addHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterDEL\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterDEL: noop2,\n\n /**\n * @name HttpAdapter#afterGET\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterGET: noop2,\n\n /**\n * @name HttpAdapter#afterHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterHTTP: noop2,\n\n /**\n * @name HttpAdapter#afterPOST\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPOST: noop2,\n\n /**\n * @name HttpAdapter#afterPUT\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPUT: noop2,\n\n /**\n * @name HttpAdapter#beforeDEL\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeDEL: noop,\n\n /**\n * @name HttpAdapter#beforeGET\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeGET: noop,\n\n /**\n * @name HttpAdapter#beforeHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n */\n beforeHTTP: noop,\n\n /**\n * @name HttpAdapter#beforePOST\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePOST: noop,\n\n /**\n * @name HttpAdapter#beforePUT\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePUT: noop,\n\n _count (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('count', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _create (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _createMany (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroy (mapper, id, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroyAll (mapper, query, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _end (mapper, opts, response) {\n return [this.deserialize(mapper, response, opts), response]\n },\n\n _find (mapper, id, opts) {\n const self = this\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _findAll (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _sum (mapper, field, query, opts) {\n const self = this\n return self.GET(\n self.getPath('sum', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _update (mapper, id, props, opts) {\n const self = this\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateAll (mapper, props, query, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateMany (mapper, records, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n /**\n * Retrieve the number of records that match the selection `query`.\n *\n * @name HttpAdapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n count (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params.count = true\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.count.call(self, mapper, query, opts)\n },\n\n /**\n * Create a new the record from the provided `props`.\n *\n * @name HttpAdapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props Properties to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n create (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.create.call(self, mapper, props, opts)\n },\n\n /**\n * Create multiple new records in batch.\n *\n * @name HttpAdapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} props Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n createMany (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.createMany.call(self, mapper, props, opts)\n },\n\n /**\n * Make an Http request to `url` according to the configuration in `config`.\n *\n * @name HttpAdapter#DEL\n * @method\n * @param {string} url Url for the request.\n * @param {Object} [config] Http configuration that will be passed to\n * {@link HttpAdapter#HTTP}.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n DEL (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'delete'\n\n // beforeDEL lifecycle hook\n op = opts.op = 'beforeDEL'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'DEL'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterDEL lifecycle hook\n op = opts.op = 'afterDEL'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * Transform the server response object into the payload that will be returned\n * to JSData.\n *\n * @name HttpAdapter#deserialize\n * @method\n * @param {Object} mapper The mapper used for the operation.\n * @param {Object} response Response object from {@link HttpAdapter#HTTP}.\n * @param {Object} opts Configuration options.\n * @return {(Object|Array)} Deserialized data.\n */\n deserialize (mapper, response, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (utils.isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response && response.hasOwnProperty('data')) {\n return response.data\n }\n return response\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @name HttpAdapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroy (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroy.call(self, mapper, id, opts)\n },\n\n /**\n * Destroy the records that match the selection `query`.\n *\n * @name HttpAdapter#destroyAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroyAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroyAll.call(self, mapper, query, opts)\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter#error\n * @method\n * @param {...*} [args] Arguments to log.\n */\n error (...args) {\n if (console) {\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\n }\n },\n\n /**\n * Make an Http request using `window.fetch`.\n *\n * @name HttpAdapter#fetch\n * @method\n * @param {Object} config Request configuration.\n * @param {Object} config.data Payload for the request.\n * @param {string} config.method Http method for the request.\n * @param {Object} config.headers Headers for the request.\n * @param {Object} config.params Querystring for the request.\n * @param {string} config.url Url for the request.\n * @param {Object} [opts] Configuration options.\n */\n fetch (config, opts) {\n const requestConfig = {\n method: config.method,\n // turn the plain headers object into the Fetch Headers object\n headers: new Headers(config.headers)\n }\n\n if (config.data) {\n requestConfig.body = utils.toJson(config.data)\n }\n\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\n response.config = {\n method: config.method,\n url: config.url\n }\n return response.json().then(function (data) {\n response.data = data\n return response\n })\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @name HttpAdapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n find (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.find.call(self, mapper, id, opts)\n },\n\n /**\n * Retrieve the records that match the selection `query`.\n *\n * @name HttpAdapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n findAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.findAll.call(self, mapper, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#GET\n * @method\n * @param {string} url The url for the request.\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n GET (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'get'\n\n // beforeGET lifecycle hook\n op = opts.op = 'beforeGET'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'GET'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterGET lifecycle hook\n op = opts.op = 'afterGET'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * @name HttpAdapter#getEndpoint\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {boolean} opts TODO\n * @return {string} Full path.\n */\n getEndpoint (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = utils.isUndefined(opts.params) ? {} : opts.params\n const relationList = mapper.relationList || []\n let endpoint = utils.isUndefined(opts.endpoint) ? (utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint\n\n relationList.forEach(function (def) {\n if (def.type !== 'belongsTo' || !def.parent) {\n return\n }\n let item\n const parentKey = def.foreignKey\n const parentDef = def.getRelation()\n let parentId = opts.params[parentKey]\n\n if (parentId === false || !parentKey || !parentDef) {\n if (parentId === false) {\n delete opts.params[parentKey]\n }\n return false\n } else {\n delete opts.params[parentKey]\n\n if (utils.isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? utils.get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n utils.forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n utils._(_opts, parentDef)\n endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint)\n return false\n }\n }\n })\n\n return endpoint\n },\n\n /**\n * @name HttpAdapter#getPath\n * @method\n * @param {string} method TODO\n * @param {Object} mapper TODO\n * @param {(string|number)?} id TODO\n * @param {Object} opts Configuration options.\n */\n getPath (method, mapper, id, opts) {\n const self = this\n opts || (opts = {})\n const args = [\n utils.isUndefined(opts.basePath) ? (utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (utils.isString(id) || utils.isNumber(id) || method === 'create') ? id : null, opts)\n ]\n if (method === 'find' || method === 'update' || method === 'destroy') {\n args.push(id)\n }\n return makePath.apply(utils, args)\n },\n\n getParams (opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.params)) {\n return {}\n }\n return utils.copy(opts.params)\n },\n\n getSuffix (mapper, opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.suffix)) {\n if (utils.isUndefined(mapper.suffix)) {\n return this.suffix\n }\n return mapper.suffix\n }\n return opts.suffix\n },\n\n /**\n * Make an Http request.\n *\n * @name HttpAdapter#HTTP\n * @method\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n HTTP (config, opts) {\n const self = this\n const start = new Date()\n opts || (opts = {})\n const payload = config.data\n const cache = config.cache\n const timeout = config.timeout\n config = utils.copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = utils.deepMixIn(config, self.httpConfig)\n config.data = payload\n config.cache = cache\n config.timeout = timeout\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\n config.url += '/'\n }\n config.method = config.method.toUpperCase()\n const suffix = config.suffix || opts.suffix || self.suffix\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\n config.url += suffix\n }\n\n function logResponse (data) {\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\n if (data.status >= 200 && data.status < 300) {\n if (self.log) {\n self.dbg('debug', str, data)\n }\n return data\n } else {\n if (self.error) {\n self.error(`'FAILED: ${str}`, data)\n }\n return utils.reject(data)\n }\n }\n\n if (!self.http) {\n throw new Error('You have not configured this adapter with an http library!')\n }\n\n return utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) {\n config = _config || config\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\n return self.fetch(config, opts).then(logResponse, logResponse)\n }\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\n return self.responseError(err, config, opts)\n })\n }).then(function (response) {\n return utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#POST\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n POST (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'post'\n\n // beforePOST lifecycle hook\n op = opts.op = 'beforePOST'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'POST'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPOST lifecycle hook\n op = opts.op = 'afterPOST'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#PUT\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n PUT (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'put'\n\n // beforePUT lifecycle hook\n op = opts.op = 'beforePUT'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'PUT'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPUT lifecycle hook\n op = opts.op = 'afterPUT'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#queryTransform\n * @method\n * @param {Object} mapper TODO\n * @param {*} params TODO\n * @param {*} opts TODO\n * @return {*} Transformed params.\n */\n queryTransform (mapper, params, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (utils.isFunction(mapper.queryTransform)) {\n return mapper.queryTransform(mapper, params, opts)\n }\n return params\n },\n\n /**\n * Error handler invoked when the promise returned by {@link HttpAdapter#http}\n * is rejected. Default implementation is to just return the error wrapped in\n * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is\n * called by {@link HttpAdapter#HTTP}.\n *\n * @name HttpAdapter#responseError\n * @method\n * @param {*} err The error that {@link HttpAdapter#http} rejected with.\n * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}.\n * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}.\n * @return {Promise}\n */\n responseError (err, config, opts) {\n return utils.reject(err)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#serialize\n * @method\n * @param {Object} mapper TODO\n * @param {Object} data TODO\n * @param {*} opts TODO\n * @return {*} Serialized data.\n */\n serialize (mapper, data, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (utils.isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\n },\n\n /**\n * Retrieve the sum of the field of the records that match the selection query.\n *\n * @name HttpAdapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field The field to sum.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n sum (mapper, field, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n if (!utils.utils.isString(field)) {\n throw new Error('field must be a string!')\n }\n opts.params = self.getParams(opts)\n opts.params.sum = field\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.sum.call(self, mapper, field, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#update\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {*} props TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n update (mapper, id, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.update.call(self, mapper, id, props, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#updateAll\n * @method\n * @param {Object} mapper TODO\n * @param {Object} props TODO\n * @param {Object} query TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n updateAll (mapper, props, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateAll.call(self, mapper, props, query, opts)\n },\n\n /**\n * Update multiple records in batch.\n *\n * {@link HttpAdapter#beforeUpdateMany} will be called before calling\n * {@link HttpAdapter#PUT}.\n * {@link HttpAdapter#afterUpdateMany} will be called after calling\n * {@link HttpAdapter#PUT}.\n *\n * @name HttpAdapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} records Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n updateMany (mapper, records, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateMany.call(self, mapper, records, opts)\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name module:js-data-http.addAction\n * @method\n * @param {string} name Name of the new action.\n * @param {Object} [opts] Action configuration\n * @param {string} [opts.adapter]\n * @param {string} [opts.pathname]\n * @param {Function} [opts.request]\n * @param {Function} [opts.response]\n * @param {Function} [opts.responseError]\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addAction = function addAction (name, opts) {\n if (!name || !utils.isString(name)) {\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\n }\n return function (mapper) {\n if (mapper[name]) {\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\n }\n opts.request = opts.request || function (config) { return config }\n opts.response = opts.response || function (response) { return response }\n opts.responseError = opts.responseError || function (err) { return utils.reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (utils.isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n utils.fillIn(config, opts)\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\n _opts.endpoint = config.endpoint\n }\n if (typeof _opts.getEndpoint === 'function') {\n config.url = _opts.getEndpoint(self, _opts)\n } else {\n let args = [\n _opts.basePath || self.basePath || adapter.basePath,\n adapter.getEndpoint(self, utils.isSorN(id) ? id : null, _opts)\n ]\n if (utils.isSorN(id)) {\n args.push(id)\n }\n args.push(opts.pathname || name)\n config.url = makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.mapper = self.name\n utils.deepMixIn(config)(_opts)\n return utils.resolve(config)\n .then(_opts.request || opts.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.mapper = self.name\n }\n return data\n })\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\n }\n return mapper\n }\n}\n\n/**\n * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for\n * action configuration options.\n *\n * @name module:js-data-http.addActions\n * @method\n * @param {Object.} opts Object where the key is an action name\n * and the value is the configuration for the action.\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addActions = function addActions (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n exports.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name module:js-data-http.version\n * @type {Object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexports.version = '<%= version %>'\n\n/**\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\n * as `js-data-fetch`.\n *\n * __Script tag__:\n * ```javascript\n * window.HttpAdapter\n * ```\n * __CommonJS__:\n * ```javascript\n * var HttpAdapter = require('js-data-http')\n * ```\n * __ES6 Modules__:\n * ```javascript\n * import HttpAdapter from 'js-data-http'\n * ```\n * __AMD__:\n * ```javascript\n * define('myApp', ['js-data-http'], function (HttpAdapter) { ... })\n * ```\n *\n * @module js-data-http\n */\nexports.default = HttpAdapter\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"js-data\"\n ** module id = 1\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['exports', 'js-data'], factory) :\n (factory((global.Adapter = global.Adapter || {}),global.JSData));\n}(this, function (exports,jsData) { 'use strict';\n\n var babelHelpers = {};\n babelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n babelHelpers.defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n };\n\n babelHelpers.slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n babelHelpers;\n\n var noop = function noop() {\n var self = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = args[args.length - 1];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var noop2 = function noop2() {\n var self = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var opts = args[args.length - 2];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var unique = function unique(array) {\n var seen = {};\n var final = [];\n array.forEach(function (item) {\n if (item in seen) {\n return;\n }\n final.push(item);\n seen[item] = 0;\n });\n return final;\n };\n\n var withoutRelations = function withoutRelations(mapper, props) {\n return jsData.utils.omit(props, mapper.relationFields || []);\n };\n\n var DEFAULTS = {\n /**\n * Whether to log debugging information.\n *\n * @name Adapter#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\n\n /**\n * Whether to return a more detailed response object.\n *\n * @name Adapter#raw\n * @type {boolean}\n * @default false\n */\n raw: false\n };\n\n /**\n * Abstract class meant to be extended by adapters.\n *\n * @class Adapter\n * @abstract\n * @param {Object} [opts] Configuration opts.\n * @param {boolean} [opts.debug=false] Whether to log debugging information.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed response\n * object.\n */\n function Adapter(opts) {\n var self = this;\n opts || (opts = {});\n jsData.utils.fillIn(opts, DEFAULTS);\n jsData.utils.fillIn(self, opts);\n }\n\n var reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where'];\n\n /**\n * Response object used when `raw` is `true`. May contain other fields in\n * addition to `data`.\n *\n * @class Response\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n\n /**\n * Response data.\n *\n * @name Response#data\n * @type {*}\n */\n self.data = data;\n\n jsData.utils.fillIn(self, meta);\n\n /**\n * The operation for which the response was created.\n *\n * @name Response#op\n * @type {string}\n */\n self.op = op;\n }\n\n /**\n * Alternative to ES6 class syntax for extending `Adapter`.\n *\n * @name Adapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `Adapter`.\n */\n Adapter.extend = jsData.utils.extend;\n\n jsData.utils.addHiddenPropsToTarget(Adapter.prototype, {\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#afterCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} props The `props` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `afterCount`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCount: noop2,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `afterCreate`\n * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreate: noop2,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `afterCreateMany`\n * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreateMany: noop2,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#afterDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `afterDestroy`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroy: noop2,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#afterDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `afterDestroyAll`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroyAll: noop2,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#afterFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `afterFind`\n * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFind: noop2,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#afterFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `afterFindAll`\n * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFindAll: noop2,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#afterSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {string} field The `field` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `afterSum`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterSum: noop2,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#afterUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `afterUpdate`\n * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdate: noop2,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#afterUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `afterUpdateAll`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateAll: noop2,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#afterUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} records The `records` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `afterUpdateMany`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateMany: noop2,\n\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#beforeCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} query The `query` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `beforeCount`\n */\n beforeCount: noop,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#beforeCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `beforeCreate`\n */\n beforeCreate: noop,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#beforeCreateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `beforeCreateMany`\n */\n beforeCreateMany: noop,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#beforeDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `beforeDestroy`\n */\n beforeDestroy: noop,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#beforeDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `beforeDestroyAll`\n */\n beforeDestroyAll: noop,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#beforeFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `beforeFind`\n */\n beforeFind: noop,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#beforeFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `beforeFindAll`\n */\n beforeFindAll: noop,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#beforeSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `beforeSum`\n */\n beforeSum: noop,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#beforeUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `beforeUpdate`\n */\n beforeUpdate: noop,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#beforeUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `beforeUpdateAll`\n */\n beforeUpdateAll: noop,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#beforeUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} props The `props` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `beforeUpdateMany`\n */\n beforeUpdateMany: noop,\n\n /**\n * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`.\n *\n * @name Adapter#dbg\n * @method\n */\n dbg: function dbg() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this.log.apply(this, ['debug'].concat(args));\n },\n\n\n /**\n * Retrieve the number of records that match the selection query. Called by\n * `Mapper#count`.\n *\n * @name Adapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n count: function count(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeCount lifecycle hook\n op = opts.op = 'beforeCount';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'count';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._count(mapper, query, opts));\n }).then(function (results) {\n var _results = babelHelpers.slicedToArray(results, 2);\n\n var data = _results[0];\n var result = _results[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterCount lifecycle hook\n op = opts.op = 'afterCount';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create a new record. Called by `Mapper#create`.\n *\n * @name Adapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The record to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n create: function create(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._create(mapper, props, opts));\n }).then(function (results) {\n var _results2 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results2[0];\n var result = _results2[1];\n\n result || (result = {});\n var response = new Response(data, result, 'create');\n response.created = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create multiple records in a single batch. Called by `Mapper#createMany`.\n *\n * @name Adapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The records to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n createMany: function createMany(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = props.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'createMany';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._createMany(mapper, props, opts));\n }).then(function (results) {\n var _results3 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results3[0];\n var result = _results3[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'createMany');\n response.created = data.length;\n response = self.respond(response, opts);\n\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the record with the given primary key. Called by\n * `Mapper#destroy`.\n *\n * @name Adapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroy: function destroy(mapper, id, opts) {\n var self = this;\n var op = void 0;\n opts || (opts = {});\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._destroy(mapper, id, opts));\n }).then(function (results) {\n var _results4 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results4[0];\n var result = _results4[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroy');\n response = self.respond(response, opts);\n\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the records that match the selection query. Called by\n * `Mapper#destroyAll`.\n *\n * @name Adapter#destroyAll\n * @method\n * @param {Object} mapper the mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroyAll: function destroyAll(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._destroyAll(mapper, query, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results5[0];\n var result = _results5[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Load a belongsTo relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadBelongsTo\n * @method\n * @return {Promise}\n */\n loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) {\n var self = this;\n var relationDef = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n var _ret = function () {\n var record = records;\n return {\n v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) {\n def.setLocalField(record, relatedItem);\n })\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.v;\n } else {\n var keys = records.map(function (record) {\n return self.makeBelongsToForeignKey(mapper, def, record);\n }).filter(function (key) {\n return key;\n });\n return self.findAll(relationDef, {\n where: babelHelpers.defineProperty({}, relationDef.idAttribute, {\n 'in': keys\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n relatedItems.forEach(function (relatedItem) {\n if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) {\n def.setLocalField(record, relatedItem);\n }\n });\n });\n });\n }\n },\n\n\n /**\n * Retrieve the record with the given primary key. Called by `Mapper#find`.\n *\n * @name Adapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n find: function find(mapper, id, opts) {\n var self = this;\n var record = void 0,\n op = void 0;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results6[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasOne') {\n task = self.loadHasOne(mapper, def, record, __opts);\n } else {\n task = self.loadHasMany(mapper, def, record, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, record, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, record, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, record, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(record, {}, 'find');\n response.found = record ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterFind lifecycle hook\n op = opts.op = 'afterFind';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @name Adapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n findAll: function findAll(mapper, query, opts) {\n var self = this;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n var records = [];\n var op = void 0;\n var activeWith = opts._activeWith;\n\n if (jsData.utils.isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n jsData.utils.deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results7[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasMany') {\n task = self.loadHasMany(mapper, def, records, __opts);\n } else {\n task = self.loadHasOne(mapper, def, records, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, records, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, records, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, records, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(records, {}, 'findAll');\n response.found = records.length;\n response = self.respond(response, opts);\n\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Resolve the value of the specified option based on the given options and\n * this adapter's settings. Override with care.\n *\n * @name Adapter#getOpt\n * @method\n * @param {string} opt The name of the option.\n * @param {Object} [opts] Configuration options.\n * @return {*} The value of the specified option.\n */\n getOpt: function getOpt(opt, opts) {\n opts || (opts = {});\n return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]);\n },\n\n\n /**\n * Load a hasMany relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasMany\n * @method\n * @return {Promise}\n */\n loadHasMany: function loadHasMany(mapper, def, records, __opts) {\n var self = this;\n var singular = false;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n singular = true;\n records = [records];\n }\n var IDs = records.map(function (record) {\n return self.makeHasManyForeignKey(mapper, def, record);\n });\n var query = {\n where: {}\n };\n var criteria = query.where[def.foreignKey] = {};\n if (singular) {\n // more efficient query when we only have one record\n criteria['=='] = IDs[0];\n } else {\n criteria['in'] = IDs.filter(function (id) {\n return id;\n });\n }\n return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n var attached = [];\n // avoid unneccesary iteration when we only have one record\n if (singular) {\n attached = relatedItems;\n } else {\n relatedItems.forEach(function (relatedItem) {\n if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) {\n attached.push(relatedItem);\n }\n });\n }\n def.setLocalField(record, attached);\n });\n });\n },\n loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) {\n var self = this;\n var record = void 0;\n var relatedMapper = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': self.makeHasManyLocalKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n var _ret2 = function () {\n var localKeys = [];\n records.forEach(function (record) {\n localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record));\n });\n return {\n v: self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': unique(localKeys).filter(function (x) {\n return x;\n })\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (item) {\n var attached = [];\n var itemKeys = jsData.utils.get(item, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n relatedItems.forEach(function (relatedItem) {\n if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) {\n attached.push(relatedItem);\n }\n });\n def.setLocalField(item, attached);\n });\n return relatedItems;\n })\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.v;\n }\n },\n loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) {\n var self = this;\n var relatedMapper = def.getRelation();\n var idAttribute = mapper.idAttribute;\n var record = void 0;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(def.getRelation(), {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'contains': self.makeHasManyForeignKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'isectNotEmpty': records.map(function (record) {\n return self.makeHasManyForeignKeys(mapper, def, record);\n })\n })\n }, __opts).then(function (relatedItems) {\n var foreignKeysField = def.foreignKeys;\n records.forEach(function (record) {\n var _relatedItems = [];\n var id = jsData.utils.get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || [];\n if (foreignKeys.indexOf(id) !== -1) {\n _relatedItems.push(relatedItem);\n }\n });\n def.setLocalField(record, _relatedItems);\n });\n });\n }\n },\n\n\n /**\n * Load a hasOne relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasOne\n * @method\n * @return {Promise}\n */\n loadHasOne: function loadHasOne(mapper, def, records, __opts) {\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n records = [records];\n }\n return this.loadHasMany(mapper, def, records, __opts).then(function () {\n records.forEach(function (record) {\n var relatedData = def.getLocalField(record);\n if (jsData.utils.isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\n },\n\n\n /**\n * Logging utility method. Override this method if you want to send log\n * messages to something other than the console.\n *\n * @name Adapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} values Values to log.\n */\n log: function log(level) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (level && !args.length) {\n args.push(level);\n level = 'debug';\n }\n if (level === 'debug' && !this.debug) {\n return;\n }\n var prefix = level.toUpperCase() + ': (Adapter)';\n if (console[level]) {\n var _console;\n\n (_console = console)[level].apply(_console, [prefix].concat(args));\n } else {\n var _console2;\n\n (_console2 = console).log.apply(_console2, [prefix].concat(args));\n }\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * There may be reasons why you may want to override this method, like when\n * the id of the parent doesn't exactly match up to the key on the child.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKey\n * @method\n * @return {*}\n */\n makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyLocalKeys\n * @method\n * @return {*}\n */\n makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) {\n var localKeys = [];\n var itemKeys = jsData.utils.get(record, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n localKeys = localKeys.concat(itemKeys);\n return unique(localKeys).filter(function (x) {\n return x;\n });\n },\n\n\n /**\n * Return the foreignKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKeys\n * @method\n * @return {*}\n */\n makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) {\n return jsData.utils.get(record, mapper.idAttribute);\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeBelongsToForeignKey\n * @method\n * @return {*}\n */\n makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Retrieve sum of the specified field of the records that match the selection\n * query. Called by `Mapper#sum`.\n *\n * @name Adapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field By to sum.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n sum: function sum(mapper, field, query, opts) {\n var self = this;\n var op = void 0;\n if (!jsData.utils.isString(field)) {\n throw new Error('field must be a string!');\n }\n query || (query = {});\n opts || (opts = {});\n\n // beforeSum lifecycle hook\n op = opts.op = 'beforeSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'sum';\n self.dbg(op, mapper, field, query, opts);\n return jsData.utils.resolve(self._sum(mapper, field, query, opts));\n }).then(function (results) {\n var _results8 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results8[0];\n var result = _results8[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterSum lifecycle hook\n op = opts.op = 'afterSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * @name Adapter#respond\n * @method\n * @param {Object} response Response object.\n * @param {Object} opts Configuration options.\n * return {Object} If `opts.raw == true` then return `response`, else return\n * `response.data`.\n */\n respond: function respond(response, opts) {\n return this.getOpt('raw', opts) ? response : response.data;\n },\n\n\n /**\n * Apply the given update to the record with the specified primary key. Called\n * by `Mapper#update`.\n *\n * @name Adapter#update\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {Object} props The update to apply to the record.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n update: function update(mapper, id, props, opts) {\n var self = this;\n props || (props = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return jsData.utils.resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results9 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results9[0];\n var result = _results9[1];\n\n result || (result = {});\n var response = new Response(data, result, 'update');\n response.updated = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Apply the given update to all records that match the selection query.\n * Called by `Mapper#updateAll`.\n *\n * @name Adapter#updateAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateAll: function updateAll(mapper, props, query, opts) {\n var self = this;\n props || (props = {});\n query || (query = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return jsData.utils.resolve(self._updateAll(mapper, props, query, opts));\n }).then(function (results) {\n var _results10 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results10[0];\n var result = _results10[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateAll');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Update the given records in a single batch. Called by `Mapper#updateMany`.\n *\n * @name Adapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object[]} records The records to update.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateMany: function updateMany(mapper, records, opts) {\n var self = this;\n records || (records = []);\n opts || (opts = {});\n var op = void 0;\n var idAttribute = mapper.idAttribute;\n\n records = records.filter(function (record) {\n return jsData.utils.get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = jsData.utils.isUndefined(_records) ? records : _records;\n records = records.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'updateMany';\n self.dbg(op, mapper, records, opts);\n return jsData.utils.resolve(self._updateMany(mapper, records, opts));\n }).then(function (results) {\n var _results11 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results11[0];\n var result = _results11[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateMany');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n exports.noop = noop;\n exports.noop2 = noop2;\n exports.unique = unique;\n exports.withoutRelations = withoutRelations;\n exports.Adapter = Adapter;\n exports.reserved = reserved;\n exports.Response = Response;\n\n}));\n//# sourceMappingURL=js-data-adapter.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/js-data-adapter/dist/js-data-adapter.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 3\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 868649eaf68a9c6dd1fd","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///./~/js-data-adapter/dist/js-data-adapter.js","webpack:///external \"axios\""],"names":[],"mappings":"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;;;;;;AA8BA,SAAQ,OAAR,GAAkB,WAAlB,C;;;;;;AC7wCA,gD;;;;;;ACAA;AACA;AACA;AACA,kDAAiD;AACjD,EAAC,kCAAkC;;AAEnC;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAiD,+BAA+B;AAChF;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;;AAEA,oEAAmE,aAAa;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAsE,eAAe;AACrF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,cAAa,OAAO;AACpB;AACA,eAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,6BAA6B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,8BAA8B,eAAe;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,mBAAmB,0BAA0B,eAAe;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,+BAA+B,eAAe;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,gCAAgC,eAAe;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,oBAAoB,eAAe;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,gBAAgB,iCAAiC,eAAe;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB,gBAAe,kBAAkB,kCAAkC,eAAe;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,mBAAkB,OAAO;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAwE,eAAe;AACvF;AACA;;AAEA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,QAAO;AACP,+CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,gBAAe,SAAS;AACxB,iBAAgB;AAChB;AACA;AACA;AACA,yBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,QAAO;AACP,gDAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,iBAAgB,EAAE;AAClB;AACA;AACA,yBAAwB;AACxB;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,oDAAmD;AACnD;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,gBAAe;AACf;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAA+C;AAC/C;AACA,YAAW;AACX,UAAS;AACT;AACA,UAAS;AACT,QAAO;AACP;AACA,gDAA+C;AAC/C;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;AACX,UAAS;AACT;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,KAAK;AACpB;AACA;AACA,6FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;;AAEA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,gBAAgB;AAC/B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,aAAa;AAC5B,gBAAe,aAAa;AAC5B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA,2BAA0B;AAC1B,2BAA0B;AAC1B,yBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB,gBAAe,SAAS;AACxB,gBAAe,OAAO;AACtB,gBAAe,QAAQ;AACvB;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD,4C;;;;;;AC/mDA,gD","file":"./node/dist/js-data-http-node.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"js-data\"), require(\"axios\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"js-data\", \"axios\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"js-data\"), require(\"axios\")) : factory(root[\"js-data\"], root[\"axios\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 868649eaf68a9c6dd1fd\n **/","/* global fetch:true Headers:true Request:true */\n\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport {\n Adapter,\n noop,\n noop2\n} from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nfunction isValidString (value) {\n return (value != null && value !== '')\n}\nfunction join (items, separator) {\n separator || (separator = '')\n return items.filter(isValidString).join(separator)\n}\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nfunction encode (val) {\n return encodeURIComponent(val)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+')\n .replace(/%5B/gi, '[')\n .replace(/%5D/gi, ']')\n}\n\nfunction buildUrl (url, params) {\n if (!params) {\n return url\n }\n\n const parts = []\n\n utils.forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!utils.isArray(val)) {\n val = [val]\n }\n\n val.forEach(function (v) {\n if (window.toString.call(v) === '[object Date]') {\n v = v.toISOString()\n } else if (utils.isObject(v)) {\n v = utils.toJson(v)\n }\n parts.push(`${encode(key)}=${encode(v)}`)\n })\n })\n\n if (parts.length > 0) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\n }\n\n return url\n}\n\nconst __super__ = Adapter.prototype\n\nconst DEFAULTS = {\n // Default and user-defined settings\n /**\n * @name HttpAdapter#basePath\n * @type {string}\n */\n basePath: '',\n\n /**\n * @name HttpAdapter#forceTrailingSlash\n * @type {boolean}\n * @default false\n */\n forceTrailingSlash: false,\n\n /**\n * @name HttpAdapter#http\n * @type {Function}\n */\n http: axios,\n\n /**\n * @name HttpAdapter#httpConfig\n * @type {Object}\n */\n httpConfig: {},\n\n /**\n * @name HttpAdapter#suffix\n * @type {string}\n */\n suffix: '',\n\n /**\n * @name HttpAdapter#useFetch\n * @type {boolean}\n * @default false\n */\n useFetch: false\n}\n\n/**\n * HttpAdapter class.\n *\n * @class HttpAdapter\n * @extends Adapter\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.basePath=''] TODO\n * @param {boolean} [opts.debug=false] TODO\n * @param {boolean} [opts.forceTrailingSlash=false] TODO\n * @param {Object} [opts.http=axios] TODO\n * @param {Object} [opts.httpConfig={}] TODO\n * @param {string} [opts.suffix=''] TODO\n * @param {boolean} [opts.useFetch=false] TODO\n */\nfunction HttpAdapter (opts) {\n const self = this\n opts || (opts = {})\n utils.fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\n\n/**\n * @name module:js-data-http.HttpAdapter\n * @see HttpAdapter\n */\nexports.HttpAdapter = HttpAdapter\n\n// Setup prototype inheritance from Adapter\nHttpAdapter.prototype = Object.create(Adapter.prototype, {\n constructor: {\n value: HttpAdapter,\n enumerable: false,\n writable: true,\n configurable: true\n }\n})\n\nObject.defineProperty(HttpAdapter, '__super__', {\n configurable: true,\n value: Adapter\n})\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * @example Using the ES2015 class syntax.\n * class MyHttpAdapter extends HttpAdapter {...}\n * const adapter = new MyHttpAdapter()\n *\n * @example Using {@link HttpAdapter.extend}.\n * var instanceProps = {...}\n * var classProps = {...}\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n *\n * @name HttpAdapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `HttpAdapter`.\n */\nHttpAdapter.extend = utils.extend\n\nutils.addHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterDEL\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterDEL: noop2,\n\n /**\n * @name HttpAdapter#afterGET\n * @method\n * @param {string} url\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterGET: noop2,\n\n /**\n * @name HttpAdapter#afterHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterHTTP: noop2,\n\n /**\n * @name HttpAdapter#afterPOST\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPOST: noop2,\n\n /**\n * @name HttpAdapter#afterPUT\n * @method\n * @param {string} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n * @param {Object} response\n */\n afterPUT: noop2,\n\n /**\n * @name HttpAdapter#beforeDEL\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeDEL: noop,\n\n /**\n * @name HttpAdapter#beforeGET\n * @method\n * @param {Object} url\n * @param {Object} config\n * @param {Object} opts\n */\n beforeGET: noop,\n\n /**\n * @name HttpAdapter#beforeHTTP\n * @method\n * @param {Object} config\n * @param {Object} opts\n */\n beforeHTTP: noop,\n\n /**\n * @name HttpAdapter#beforePOST\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePOST: noop,\n\n /**\n * @name HttpAdapter#beforePUT\n * @method\n * @param {Object} url\n * @param {Object} data\n * @param {Object} config\n * @param {Object} opts\n */\n beforePUT: noop,\n\n _count (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('count', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _create (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _createMany (mapper, props, opts) {\n const self = this\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroy (mapper, id, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _destroyAll (mapper, query, opts) {\n const self = this\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _end (mapper, opts, response) {\n return [this.deserialize(mapper, response, opts), response]\n },\n\n _find (mapper, id, opts) {\n const self = this\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _findAll (mapper, query, opts) {\n const self = this\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _sum (mapper, field, query, opts) {\n const self = this\n return self.GET(\n self.getPath('sum', mapper, opts.params, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _update (mapper, id, props, opts) {\n const self = this\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateAll (mapper, props, query, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n _updateMany (mapper, records, opts) {\n const self = this\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n ).then(function (response) {\n return self._end(mapper, opts, response)\n })\n },\n\n /**\n * Retrieve the number of records that match the selection `query`.\n *\n * @name HttpAdapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n count (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params.count = true\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.count.call(self, mapper, query, opts)\n },\n\n /**\n * Create a new the record from the provided `props`.\n *\n * @name HttpAdapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props Properties to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n create (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.create.call(self, mapper, props, opts)\n },\n\n /**\n * Create multiple new records in batch.\n *\n * @name HttpAdapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} props Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n createMany (mapper, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.createMany.call(self, mapper, props, opts)\n },\n\n /**\n * Make an Http request to `url` according to the configuration in `config`.\n *\n * @name HttpAdapter#DEL\n * @method\n * @param {string} url Url for the request.\n * @param {Object} [config] Http configuration that will be passed to\n * {@link HttpAdapter#HTTP}.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n DEL (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'delete'\n\n // beforeDEL lifecycle hook\n op = opts.op = 'beforeDEL'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'DEL'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterDEL lifecycle hook\n op = opts.op = 'afterDEL'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * Transform the server response object into the payload that will be returned\n * to JSData.\n *\n * @name HttpAdapter#deserialize\n * @method\n * @param {Object} mapper The mapper used for the operation.\n * @param {Object} response Response object from {@link HttpAdapter#HTTP}.\n * @param {Object} opts Configuration options.\n * @return {(Object|Array)} Deserialized data.\n */\n deserialize (mapper, response, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (utils.isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response && response.hasOwnProperty('data')) {\n return response.data\n }\n return response\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @name HttpAdapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroy (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroy.call(self, mapper, id, opts)\n },\n\n /**\n * Destroy the records that match the selection `query`.\n *\n * @name HttpAdapter#destroyAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n destroyAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.destroyAll.call(self, mapper, query, opts)\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter#error\n * @method\n * @param {...*} [args] Arguments to log.\n */\n error (...args) {\n if (console) {\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\n }\n },\n\n /**\n * Make an Http request using `window.fetch`.\n *\n * @name HttpAdapter#fetch\n * @method\n * @param {Object} config Request configuration.\n * @param {Object} config.data Payload for the request.\n * @param {string} config.method Http method for the request.\n * @param {Object} config.headers Headers for the request.\n * @param {Object} config.params Querystring for the request.\n * @param {string} config.url Url for the request.\n * @param {Object} [opts] Configuration options.\n */\n fetch (config, opts) {\n const requestConfig = {\n method: config.method,\n // turn the plain headers object into the Fetch Headers object\n headers: new Headers(config.headers)\n }\n\n if (config.data) {\n requestConfig.body = utils.toJson(config.data)\n }\n\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\n response.config = {\n method: config.method,\n url: config.url\n }\n return response.json().then(function (data) {\n response.data = data\n return response\n })\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @name HttpAdapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n find (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.find.call(self, mapper, id, opts)\n },\n\n /**\n * Retrieve the records that match the selection `query`.\n *\n * @name HttpAdapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n findAll (mapper, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.findAll.call(self, mapper, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#GET\n * @method\n * @param {string} url The url for the request.\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n GET (url, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.method = config.method || 'get'\n\n // beforeGET lifecycle hook\n op = opts.op = 'beforeGET'\n return utils.resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'GET'\n self.dbg(op, url, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterGET lifecycle hook\n op = opts.op = 'afterGET'\n return utils.resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * @name HttpAdapter#getEndpoint\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {boolean} opts TODO\n * @return {string} Full path.\n */\n getEndpoint (mapper, id, opts) {\n const self = this\n opts || (opts = {})\n opts.params = utils.isUndefined(opts.params) ? {} : opts.params\n const relationList = mapper.relationList || []\n let endpoint = utils.isUndefined(opts.endpoint) ? (utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint\n\n relationList.forEach(function (def) {\n if (def.type !== 'belongsTo' || !def.parent) {\n return\n }\n let item\n const parentKey = def.foreignKey\n const parentDef = def.getRelation()\n let parentId = opts.params[parentKey]\n\n if (parentId === false || !parentKey || !parentDef) {\n if (parentId === false) {\n delete opts.params[parentKey]\n }\n return false\n } else {\n delete opts.params[parentKey]\n\n if (utils.isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? utils.get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n utils.forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n utils._(_opts, parentDef)\n endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint)\n return false\n }\n }\n })\n\n return endpoint\n },\n\n /**\n * @name HttpAdapter#getPath\n * @method\n * @param {string} method TODO\n * @param {Object} mapper TODO\n * @param {(string|number)?} id TODO\n * @param {Object} opts Configuration options.\n */\n getPath (method, mapper, id, opts) {\n const self = this\n opts || (opts = {})\n const args = [\n utils.isUndefined(opts.basePath) ? (utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (utils.isString(id) || utils.isNumber(id) || method === 'create') ? id : null, opts)\n ]\n if (method === 'find' || method === 'update' || method === 'destroy') {\n args.push(id)\n }\n return makePath.apply(utils, args)\n },\n\n getParams (opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.params)) {\n return {}\n }\n return utils.copy(opts.params)\n },\n\n getSuffix (mapper, opts) {\n opts || (opts = {})\n if (utils.isUndefined(opts.suffix)) {\n if (utils.isUndefined(mapper.suffix)) {\n return this.suffix\n }\n return mapper.suffix\n }\n return opts.suffix\n },\n\n /**\n * Make an Http request.\n *\n * @name HttpAdapter#HTTP\n * @method\n * @param {Object} config Request configuration options.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n HTTP (config, opts) {\n const self = this\n const start = new Date()\n opts || (opts = {})\n const payload = config.data\n const cache = config.cache\n const timeout = config.timeout\n config = utils.copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = utils.deepMixIn(config, self.httpConfig)\n config.data = payload\n config.cache = cache\n config.timeout = timeout\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\n config.url += '/'\n }\n config.method = config.method.toUpperCase()\n const suffix = config.suffix || opts.suffix || self.suffix\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\n config.url += suffix\n }\n\n function logResponse (data) {\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\n if (data.status >= 200 && data.status < 300) {\n if (self.log) {\n self.dbg('debug', str, data)\n }\n return data\n } else {\n if (self.error) {\n self.error(`'FAILED: ${str}`, data)\n }\n return utils.reject(data)\n }\n }\n\n if (!self.http) {\n throw new Error('You have not configured this adapter with an http library!')\n }\n\n return utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) {\n config = _config || config\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\n return self.fetch(config, opts).then(logResponse, logResponse)\n }\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\n return self.responseError(err, config, opts)\n })\n }).then(function (response) {\n return utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#POST\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n POST (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'post'\n\n // beforePOST lifecycle hook\n op = opts.op = 'beforePOST'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'POST'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPOST lifecycle hook\n op = opts.op = 'afterPOST'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#PUT\n * @method\n * @param {*} url TODO\n * @param {Object} data TODO\n * @param {Object} config TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n PUT (url, data, config, opts) {\n const self = this\n let op\n config || (config = {})\n opts || (opts = {})\n config.url = url || config.url\n config.data = data || config.data\n config.method = config.method || 'put'\n\n // beforePUT lifecycle hook\n op = opts.op = 'beforePUT'\n return utils.resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = utils.isUndefined(_config) ? config : _config\n op = opts.op = 'PUT'\n self.dbg(op, url, data, config, opts)\n return self.HTTP(config, opts)\n }).then(function (response) {\n // afterPUT lifecycle hook\n op = opts.op = 'afterPUT'\n return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return utils.isUndefined(_response) ? response : _response\n })\n })\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#queryTransform\n * @method\n * @param {Object} mapper TODO\n * @param {*} params TODO\n * @param {*} opts TODO\n * @return {*} Transformed params.\n */\n queryTransform (mapper, params, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (utils.isFunction(mapper.queryTransform)) {\n return mapper.queryTransform(mapper, params, opts)\n }\n return params\n },\n\n /**\n * Error handler invoked when the promise returned by {@link HttpAdapter#http}\n * is rejected. Default implementation is to just return the error wrapped in\n * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is\n * called by {@link HttpAdapter#HTTP}.\n *\n * @name HttpAdapter#responseError\n * @method\n * @param {*} err The error that {@link HttpAdapter#http} rejected with.\n * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}.\n * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}.\n * @return {Promise}\n */\n responseError (err, config, opts) {\n return utils.reject(err)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#serialize\n * @method\n * @param {Object} mapper TODO\n * @param {Object} data TODO\n * @param {*} opts TODO\n * @return {*} Serialized data.\n */\n serialize (mapper, data, opts) {\n opts || (opts = {})\n if (utils.isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (utils.isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\n },\n\n /**\n * Retrieve the sum of the field of the records that match the selection query.\n *\n * @name HttpAdapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field The field to sum.\n * @param {Object} query Selection query.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n sum (mapper, field, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n if (!utils.utils.isString(field)) {\n throw new Error('field must be a string!')\n }\n opts.params = self.getParams(opts)\n opts.params.sum = field\n opts.suffix = self.getSuffix(mapper, opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n return __super__.sum.call(self, mapper, field, query, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#update\n * @method\n * @param {Object} mapper TODO\n * @param {*} id TODO\n * @param {*} props TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n update (mapper, id, props, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.update.call(self, mapper, id, props, opts)\n },\n\n /**\n * TODO\n *\n * @name HttpAdapter#updateAll\n * @method\n * @param {Object} mapper TODO\n * @param {Object} props TODO\n * @param {Object} query TODO\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n updateAll (mapper, props, query, opts) {\n const self = this\n query || (query = {})\n opts || (opts = {})\n opts.params = self.getParams(opts)\n utils.deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateAll.call(self, mapper, props, query, opts)\n },\n\n /**\n * Update multiple records in batch.\n *\n * {@link HttpAdapter#beforeUpdateMany} will be called before calling\n * {@link HttpAdapter#PUT}.\n * {@link HttpAdapter#afterUpdateMany} will be called after calling\n * {@link HttpAdapter#PUT}.\n *\n * @name HttpAdapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Array} records Array of property objects to send as the payload.\n * @param {Object} [opts] Configuration options.\n * @param {string} [opts.params] TODO\n * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO\n * @return {Promise}\n */\n updateMany (mapper, records, opts) {\n const self = this\n opts || (opts = {})\n opts.params = self.getParams(opts)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = self.getSuffix(mapper, opts)\n\n return __super__.updateMany.call(self, mapper, records, opts)\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @example\n * // CommonJS\n * var JSData = require('js-data')\n * // It is recommended to use DataStore in the browser\n * var DataStore = JSData.DataStore\n *\n * var JSDataHttp = require('js-data-http')\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var addAction = JSDataHttp.addAction\n *\n * var adapter = new HttpAdapter()\n * var store = new DataStore()\n *\n * store.registerAdapter('http', adapter, { default: true })\n * store.defineMapper('school')\n *\n * // GET /reports/schools/:school_id/teachers\n * addAction('getTeacherReports', {\n * basePath: 'reports/schools',\n * pathname: 'teachers',\n * method: 'GET'\n * })(store.getMapper('school'))\n *\n * // /reports/schools/1234/teachers\n * store.getMapper('school').getTeacherReports(1234).then(function (response) {\n * // ...\n * })\n *\n * @name module:js-data-http.addAction\n * @method\n * @param {string} name Name of the new action.\n * @param {Object} [opts] Action configuration\n * @param {string} [opts.adapter]\n * @param {string} [opts.pathname]\n * @param {Function} [opts.request]\n * @param {Function} [opts.response]\n * @param {Function} [opts.responseError]\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addAction = function addAction (name, opts) {\n if (!name || !utils.isString(name)) {\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\n }\n return function (mapper) {\n if (mapper[name]) {\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\n }\n opts.request = opts.request || function (config) { return config }\n opts.response = opts.response || function (response) { return response }\n opts.responseError = opts.responseError || function (err) { return utils.reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (utils.isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n utils.fillIn(config, opts)\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\n _opts.endpoint = config.endpoint\n }\n if (typeof _opts.getEndpoint === 'function') {\n config.url = _opts.getEndpoint(self, _opts)\n } else {\n let args = [\n _opts.basePath || self.basePath || adapter.basePath,\n adapter.getEndpoint(self, utils.isSorN(id) ? id : null, _opts)\n ]\n if (utils.isSorN(id)) {\n args.push(id)\n }\n args.push(opts.pathname || name)\n config.url = makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.mapper = self.name\n utils.deepMixIn(config, _opts)\n return utils.resolve(config)\n .then(_opts.request || opts.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.mapper = self.name\n }\n return data\n })\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\n }\n return mapper\n }\n}\n\n/**\n * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for\n * action configuration options.\n *\n * @example\n * // CommonJS\n * var JSData = require('js-data')\n * // It is recommended to use DataStore in the browser\n * var DataStore = JSData.DataStore\n *\n * var JSDataHttp = require('js-data-http')\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var addActions = JSDataHttp.addActions\n *\n * var adapter = new HttpAdapter()\n * var store = new DataStore()\n *\n * store.registerAdapter('http', adapter, { default: true })\n * store.defineMapper('school')\n *\n * addActions({\n * // GET /reports/schools/:school_id/teachers\n * getTeacherReports: {\n * basePath: 'reports/schools',\n * pathname: 'teachers',\n * method: 'GET'\n * }\n * })(store.getMapper('school'))\n *\n * // /reports/schools/1234/teachers\n * store.getMapper('school').getTeacherReports(1234).then(function (response) {\n * // ...\n * })\n *\n * @name module:js-data-http.addActions\n * @method\n * @param {Object.} opts Object where the key is an action name\n * and the value is the configuration for the action.\n * @return {Function} Decoration function, which should be passed the mapper to\n * decorate when invoked.\n */\nexports.addActions = function addActions (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(opts, function (value, key) {\n exports.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name module:js-data-http.version\n * @type {Object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexports.version = '<%= version %>'\n\n/**\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\n * as `js-data-fetch`.\n *\n * @example Script tag\n * var HttpAdapter = window.JSDataHttp.HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * @example CommonJS\n * var HttpAdapter = require('js-data-Http').HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * @example ES2015 Modules\n * import {HttpAdapter} from 'js-data-Http'\n * const adapter = new HttpAdapter()\n *\n * @example AMD\n * define('myApp', ['js-data-Http'], function (JSDataHttp) {\n * var HttpAdapter = JSDataHttp.HttpAdapter\n * var adapter = new HttpAdapter()\n *\n * // ...\n * })\n *\n * @module js-data-http\n */\nexports.default = HttpAdapter\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"js-data\"\n ** module id = 1\n ** module chunks = 0\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['exports', 'js-data'], factory) :\n (factory((global.Adapter = global.Adapter || {}),global.JSData));\n}(this, function (exports,jsData) { 'use strict';\n\n var babelHelpers = {};\n babelHelpers.typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n };\n\n babelHelpers.defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n };\n\n babelHelpers.slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n babelHelpers;\n\n var noop = function noop() {\n var self = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = args[args.length - 1];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var noop2 = function noop2() {\n var self = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var opts = args[args.length - 2];\n self.dbg.apply(self, [opts.op].concat(args));\n return jsData.utils.resolve();\n };\n\n var unique = function unique(array) {\n var seen = {};\n var final = [];\n array.forEach(function (item) {\n if (item in seen) {\n return;\n }\n final.push(item);\n seen[item] = 0;\n });\n return final;\n };\n\n var withoutRelations = function withoutRelations(mapper, props) {\n return jsData.utils.omit(props, mapper.relationFields || []);\n };\n\n var DEFAULTS = {\n /**\n * Whether to log debugging information.\n *\n * @name Adapter#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\n\n /**\n * Whether to return a more detailed response object.\n *\n * @name Adapter#raw\n * @type {boolean}\n * @default false\n */\n raw: false\n };\n\n /**\n * Abstract class meant to be extended by adapters.\n *\n * @class Adapter\n * @abstract\n * @param {Object} [opts] Configuration opts.\n * @param {boolean} [opts.debug=false] Whether to log debugging information.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed response\n * object.\n */\n function Adapter(opts) {\n var self = this;\n opts || (opts = {});\n jsData.utils.fillIn(opts, DEFAULTS);\n jsData.utils.fillIn(self, opts);\n }\n\n var reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where'];\n\n /**\n * Response object used when `raw` is `true`. May contain other fields in\n * addition to `data`.\n *\n * @class Response\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n\n /**\n * Response data.\n *\n * @name Response#data\n * @type {*}\n */\n self.data = data;\n\n jsData.utils.fillIn(self, meta);\n\n /**\n * The operation for which the response was created.\n *\n * @name Response#op\n * @type {string}\n */\n self.op = op;\n }\n\n /**\n * Alternative to ES6 class syntax for extending `Adapter`.\n *\n * @name Adapter.extend\n * @method\n * @param {Object} [instanceProps] Properties that will be added to the\n * prototype of the subclass.\n * @param {Object} [classProps] Properties that will be added as static\n * properties to the subclass itself.\n * @return {Object} Subclass of `Adapter`.\n */\n Adapter.extend = jsData.utils.extend;\n\n jsData.utils.addHiddenPropsToTarget(Adapter.prototype, {\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#afterCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} props The `props` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `afterCount`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCount: noop2,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `afterCreate`\n * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreate: noop2,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#afterCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `afterCreateMany`\n * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterCreateMany: noop2,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#afterDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `afterDestroy`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroy: noop2,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#afterDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `afterDestroyAll`\n * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`.\n */\n afterDestroyAll: noop2,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#afterFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `afterFind`\n * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFind: noop2,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#afterFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `afterFindAll`\n * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterFindAll: noop2,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#afterSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {string} field The `field` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `afterSum`\n * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`.\n */\n afterSum: noop2,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#afterUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `afterUpdate`\n * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdate: noop2,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#afterUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `afterUpdateAll`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateAll: noop2,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any.\n *\n * `response` may be modified. You can also re-assign `response` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#afterUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} records The `records` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `afterUpdateMany`\n * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`.\n */\n afterUpdateMany: noop2,\n\n /**\n * Lifecycle method method called by count.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes count to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by count.\n *\n * @name Adapter#beforeCount\n * @method\n * @param {Object} mapper The `mapper` argument passed to count.\n * @param {Object} query The `query` argument passed to count.\n * @param {Object} opts The `opts` argument passed to count.\n * @property {string} opts.op `beforeCount`\n */\n beforeCount: noop,\n\n /**\n * Lifecycle method method called by create.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes create to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by create.\n *\n * @name Adapter#beforeCreate\n * @method\n * @param {Object} mapper The `mapper` argument passed to create.\n * @param {Object} props The `props` argument passed to create.\n * @param {Object} opts The `opts` argument passed to create.\n * @property {string} opts.op `beforeCreate`\n */\n beforeCreate: noop,\n\n /**\n * Lifecycle method method called by createMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes createMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany.\n *\n * @name Adapter#beforeCreateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to createMany.\n * @param {Object[]} props The `props` argument passed to createMany.\n * @param {Object} opts The `opts` argument passed to createMany.\n * @property {string} opts.op `beforeCreateMany`\n */\n beforeCreateMany: noop,\n\n /**\n * Lifecycle method method called by destroy.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroy to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy.\n *\n * @name Adapter#beforeDestroy\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroy.\n * @param {(string|number)} id The `id` argument passed to destroy.\n * @param {Object} opts The `opts` argument passed to destroy.\n * @property {string} opts.op `beforeDestroy`\n */\n beforeDestroy: noop,\n\n /**\n * Lifecycle method method called by destroyAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll.\n *\n * @name Adapter#beforeDestroyAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to destroyAll.\n * @param {Object} query The `query` argument passed to destroyAll.\n * @param {Object} opts The `opts` argument passed to destroyAll.\n * @property {string} opts.op `beforeDestroyAll`\n */\n beforeDestroyAll: noop,\n\n /**\n * Lifecycle method method called by find.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes find to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by find.\n *\n * @name Adapter#beforeFind\n * @method\n * @param {Object} mapper The `mapper` argument passed to find.\n * @param {(string|number)} id The `id` argument passed to find.\n * @param {Object} opts The `opts` argument passed to find.\n * @property {string} opts.op `beforeFind`\n */\n beforeFind: noop,\n\n /**\n * Lifecycle method method called by findAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes findAll to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll.\n *\n * @name Adapter#beforeFindAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to findAll.\n * @param {Object} query The `query` argument passed to findAll.\n * @param {Object} opts The `opts` argument passed to findAll.\n * @property {string} opts.op `beforeFindAll`\n */\n beforeFindAll: noop,\n\n /**\n * Lifecycle method method called by sum.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes sum to wait for the Promise to resolve before continuing.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum.\n *\n * @name Adapter#beforeSum\n * @method\n * @param {Object} mapper The `mapper` argument passed to sum.\n * @param {Object} query The `query` argument passed to sum.\n * @param {Object} opts The `opts` argument passed to sum.\n * @property {string} opts.op `beforeSum`\n */\n beforeSum: noop,\n\n /**\n * Lifecycle method method called by update.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes update to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by update.\n *\n * @name Adapter#beforeUpdate\n * @method\n * @param {Object} mapper The `mapper` argument passed to update.\n * @param {(string|number)} id The `id` argument passed to update.\n * @param {Object} props The `props` argument passed to update.\n * @param {Object} opts The `opts` argument passed to update.\n * @property {string} opts.op `beforeUpdate`\n */\n beforeUpdate: noop,\n\n /**\n * Lifecycle method method called by updateAll.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll.\n *\n * @name Adapter#beforeUpdateAll\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateAll.\n * @param {Object} props The `props` argument passed to updateAll.\n * @param {Object} query The `query` argument passed to updateAll.\n * @param {Object} opts The `opts` argument passed to updateAll.\n * @property {string} opts.op `beforeUpdateAll`\n */\n beforeUpdateAll: noop,\n\n /**\n * Lifecycle method method called by updateMany.\n *\n * Override this method to add custom behavior for this lifecycle hook.\n *\n * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing.\n *\n * `props` may be modified. You can also re-assign `props` to another value by returning a different value or a Promise that resolves to a different value.\n *\n * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany.\n *\n * @name Adapter#beforeUpdateMany\n * @method\n * @param {Object} mapper The `mapper` argument passed to updateMany.\n * @param {Object[]} props The `props` argument passed to updateMany.\n * @param {Object} opts The `opts` argument passed to updateMany.\n * @property {string} opts.op `beforeUpdateMany`\n */\n beforeUpdateMany: noop,\n\n /**\n * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`.\n *\n * @name Adapter#dbg\n * @method\n */\n dbg: function dbg() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this.log.apply(this, ['debug'].concat(args));\n },\n\n\n /**\n * Retrieve the number of records that match the selection query. Called by\n * `Mapper#count`.\n *\n * @name Adapter#count\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n count: function count(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeCount lifecycle hook\n op = opts.op = 'beforeCount';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'count';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._count(mapper, query, opts));\n }).then(function (results) {\n var _results = babelHelpers.slicedToArray(results, 2);\n\n var data = _results[0];\n var result = _results[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterCount lifecycle hook\n op = opts.op = 'afterCount';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create a new record. Called by `Mapper#create`.\n *\n * @name Adapter#create\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The record to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n create: function create(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._create(mapper, props, opts));\n }).then(function (results) {\n var _results2 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results2[0];\n var result = _results2[1];\n\n result || (result = {});\n var response = new Response(data, result, 'create');\n response.created = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Create multiple records in a single batch. Called by `Mapper#createMany`.\n *\n * @name Adapter#createMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The records to be created.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n createMany: function createMany(mapper, props, opts) {\n var self = this;\n var op = void 0;\n props || (props = {});\n opts || (opts = {});\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = props.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'createMany';\n self.dbg(op, mapper, props, opts);\n return jsData.utils.resolve(self._createMany(mapper, props, opts));\n }).then(function (results) {\n var _results3 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results3[0];\n var result = _results3[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'createMany');\n response.created = data.length;\n response = self.respond(response, opts);\n\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany';\n return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the record with the given primary key. Called by\n * `Mapper#destroy`.\n *\n * @name Adapter#destroy\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroy: function destroy(mapper, id, opts) {\n var self = this;\n var op = void 0;\n opts || (opts = {});\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._destroy(mapper, id, opts));\n }).then(function (results) {\n var _results4 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results4[0];\n var result = _results4[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroy');\n response = self.respond(response, opts);\n\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Destroy the records that match the selection query. Called by\n * `Mapper#destroyAll`.\n *\n * @name Adapter#destroyAll\n * @method\n * @param {Object} mapper the mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n destroyAll: function destroyAll(mapper, query, opts) {\n var self = this;\n var op = void 0;\n query || (query = {});\n opts || (opts = {});\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._destroyAll(mapper, query, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results5[0];\n var result = _results5[1];\n\n result || (result = {});\n var response = new Response(data, result, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Load a belongsTo relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadBelongsTo\n * @method\n * @return {Promise}\n */\n loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) {\n var self = this;\n var relationDef = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n var _ret = function () {\n var record = records;\n return {\n v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) {\n def.setLocalField(record, relatedItem);\n })\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.v;\n } else {\n var keys = records.map(function (record) {\n return self.makeBelongsToForeignKey(mapper, def, record);\n }).filter(function (key) {\n return key;\n });\n return self.findAll(relationDef, {\n where: babelHelpers.defineProperty({}, relationDef.idAttribute, {\n 'in': keys\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n relatedItems.forEach(function (relatedItem) {\n if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) {\n def.setLocalField(record, relatedItem);\n }\n });\n });\n });\n }\n },\n\n\n /**\n * Retrieve the record with the given primary key. Called by `Mapper#find`.\n *\n * @name Adapter#find\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n find: function find(mapper, id, opts) {\n var self = this;\n var record = void 0,\n op = void 0;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind';\n return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return jsData.utils.resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results6[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasOne') {\n task = self.loadHasOne(mapper, def, record, __opts);\n } else {\n task = self.loadHasMany(mapper, def, record, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, record, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, record, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, record, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(record, {}, 'find');\n response.found = record ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterFind lifecycle hook\n op = opts.op = 'afterFind';\n return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @name Adapter#findAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n findAll: function findAll(mapper, query, opts) {\n var self = this;\n opts || (opts = {});\n opts.with || (opts.with = []);\n\n var records = [];\n var op = void 0;\n var activeWith = opts._activeWith;\n\n if (jsData.utils.isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n jsData.utils.deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return jsData.utils.resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results7[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n jsData.utils.forEachRelation(mapper, opts, function (def, __opts) {\n var task = void 0;\n if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) {\n if (def.type === 'hasMany') {\n task = self.loadHasMany(mapper, def, records, __opts);\n } else {\n task = self.loadHasOne(mapper, def, records, __opts);\n }\n } else if (def.type === 'hasMany' && def.localKeys) {\n task = self.loadHasManyLocalKeys(mapper, def, records, __opts);\n } else if (def.type === 'hasMany' && def.foreignKeys) {\n task = self.loadHasManyForeignKeys(mapper, def, records, __opts);\n } else if (def.type === 'belongsTo') {\n task = self.loadBelongsTo(mapper, def, records, __opts);\n }\n if (task) {\n tasks.push(task);\n }\n });\n return Promise.all(tasks);\n }).then(function () {\n var response = new Response(records, {}, 'findAll');\n response.found = records.length;\n response = self.respond(response, opts);\n\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll';\n return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Resolve the value of the specified option based on the given options and\n * this adapter's settings. Override with care.\n *\n * @name Adapter#getOpt\n * @method\n * @param {string} opt The name of the option.\n * @param {Object} [opts] Configuration options.\n * @return {*} The value of the specified option.\n */\n getOpt: function getOpt(opt, opts) {\n opts || (opts = {});\n return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]);\n },\n\n\n /**\n * Load a hasMany relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasMany\n * @method\n * @return {Promise}\n */\n loadHasMany: function loadHasMany(mapper, def, records, __opts) {\n var self = this;\n var singular = false;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n singular = true;\n records = [records];\n }\n var IDs = records.map(function (record) {\n return self.makeHasManyForeignKey(mapper, def, record);\n });\n var query = {\n where: {}\n };\n var criteria = query.where[def.foreignKey] = {};\n if (singular) {\n // more efficient query when we only have one record\n criteria['=='] = IDs[0];\n } else {\n criteria['in'] = IDs.filter(function (id) {\n return id;\n });\n }\n return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) {\n records.forEach(function (record) {\n var attached = [];\n // avoid unneccesary iteration when we only have one record\n if (singular) {\n attached = relatedItems;\n } else {\n relatedItems.forEach(function (relatedItem) {\n if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) {\n attached.push(relatedItem);\n }\n });\n }\n def.setLocalField(record, attached);\n });\n });\n },\n loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) {\n var self = this;\n var record = void 0;\n var relatedMapper = def.getRelation();\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': self.makeHasManyLocalKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n var _ret2 = function () {\n var localKeys = [];\n records.forEach(function (record) {\n localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record));\n });\n return {\n v: self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, {\n 'in': unique(localKeys).filter(function (x) {\n return x;\n })\n })\n }, __opts).then(function (relatedItems) {\n records.forEach(function (item) {\n var attached = [];\n var itemKeys = jsData.utils.get(item, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n relatedItems.forEach(function (relatedItem) {\n if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) {\n attached.push(relatedItem);\n }\n });\n def.setLocalField(item, attached);\n });\n return relatedItems;\n })\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.v;\n }\n },\n loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) {\n var self = this;\n var relatedMapper = def.getRelation();\n var idAttribute = mapper.idAttribute;\n var record = void 0;\n\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n record = records;\n }\n\n if (record) {\n return self.findAll(def.getRelation(), {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'contains': self.makeHasManyForeignKeys(mapper, def, record)\n })\n }, __opts).then(function (relatedItems) {\n def.setLocalField(record, relatedItems);\n });\n } else {\n return self.findAll(relatedMapper, {\n where: babelHelpers.defineProperty({}, def.foreignKeys, {\n 'isectNotEmpty': records.map(function (record) {\n return self.makeHasManyForeignKeys(mapper, def, record);\n })\n })\n }, __opts).then(function (relatedItems) {\n var foreignKeysField = def.foreignKeys;\n records.forEach(function (record) {\n var _relatedItems = [];\n var id = jsData.utils.get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || [];\n if (foreignKeys.indexOf(id) !== -1) {\n _relatedItems.push(relatedItem);\n }\n });\n def.setLocalField(record, _relatedItems);\n });\n });\n }\n },\n\n\n /**\n * Load a hasOne relationship.\n *\n * Override with care.\n *\n * @name Adapter#loadHasOne\n * @method\n * @return {Promise}\n */\n loadHasOne: function loadHasOne(mapper, def, records, __opts) {\n if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) {\n records = [records];\n }\n return this.loadHasMany(mapper, def, records, __opts).then(function () {\n records.forEach(function (record) {\n var relatedData = def.getLocalField(record);\n if (jsData.utils.isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\n },\n\n\n /**\n * Logging utility method. Override this method if you want to send log\n * messages to something other than the console.\n *\n * @name Adapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} values Values to log.\n */\n log: function log(level) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n if (level && !args.length) {\n args.push(level);\n level = 'debug';\n }\n if (level === 'debug' && !this.debug) {\n return;\n }\n var prefix = level.toUpperCase() + ': (Adapter)';\n if (console[level]) {\n var _console;\n\n (_console = console)[level].apply(_console, [prefix].concat(args));\n } else {\n var _console2;\n\n (_console2 = console).log.apply(_console2, [prefix].concat(args));\n }\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * There may be reasons why you may want to override this method, like when\n * the id of the parent doesn't exactly match up to the key on the child.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKey\n * @method\n * @return {*}\n */\n makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyLocalKeys\n * @method\n * @return {*}\n */\n makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) {\n var localKeys = [];\n var itemKeys = jsData.utils.get(record, def.localKeys) || [];\n itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys);\n localKeys = localKeys.concat(itemKeys);\n return unique(localKeys).filter(function (x) {\n return x;\n });\n },\n\n\n /**\n * Return the foreignKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeHasManyForeignKeys\n * @method\n * @return {*}\n */\n makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) {\n return jsData.utils.get(record, mapper.idAttribute);\n },\n\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @name Adapter#makeBelongsToForeignKey\n * @method\n * @return {*}\n */\n makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) {\n return def.getForeignKey(record);\n },\n\n\n /**\n * Retrieve sum of the specified field of the records that match the selection\n * query. Called by `Mapper#sum`.\n *\n * @name Adapter#sum\n * @method\n * @param {Object} mapper The mapper.\n * @param {string} field By to sum.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n sum: function sum(mapper, field, query, opts) {\n var self = this;\n var op = void 0;\n if (!jsData.utils.isString(field)) {\n throw new Error('field must be a string!');\n }\n query || (query = {});\n opts || (opts = {});\n\n // beforeSum lifecycle hook\n op = opts.op = 'beforeSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () {\n // Allow for re-assignment from lifecycle hook\n op = opts.op = 'sum';\n self.dbg(op, mapper, field, query, opts);\n return jsData.utils.resolve(self._sum(mapper, field, query, opts));\n }).then(function (results) {\n var _results8 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results8[0];\n var result = _results8[1];\n\n result || (result = {});\n var response = new Response(data, result, op);\n response = self.respond(response, opts);\n\n // afterSum lifecycle hook\n op = opts.op = 'afterSum';\n return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * @name Adapter#respond\n * @method\n * @param {Object} response Response object.\n * @param {Object} opts Configuration options.\n * return {Object} If `opts.raw == true` then return `response`, else return\n * `response.data`.\n */\n respond: function respond(response, opts) {\n return this.getOpt('raw', opts) ? response : response.data;\n },\n\n\n /**\n * Apply the given update to the record with the specified primary key. Called\n * by `Mapper#update`.\n *\n * @name Adapter#update\n * @method\n * @param {Object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {Object} props The update to apply to the record.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n update: function update(mapper, id, props, opts) {\n var self = this;\n props || (props = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return jsData.utils.resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results9 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results9[0];\n var result = _results9[1];\n\n result || (result = {});\n var response = new Response(data, result, 'update');\n response.updated = data ? 1 : 0;\n response = self.respond(response, opts);\n\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate';\n return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Apply the given update to all records that match the selection query.\n * Called by `Mapper#updateAll`.\n *\n * @name Adapter#updateAll\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateAll: function updateAll(mapper, props, query, opts) {\n var self = this;\n props || (props = {});\n query || (query = {});\n opts || (opts = {});\n var op = void 0;\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = jsData.utils.isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return jsData.utils.resolve(self._updateAll(mapper, props, query, opts));\n }).then(function (results) {\n var _results10 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results10[0];\n var result = _results10[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateAll');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll';\n return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n },\n\n\n /**\n * Update the given records in a single batch. Called by `Mapper#updateMany`.\n *\n * @name Adapter#updateMany\n * @method\n * @param {Object} mapper The mapper.\n * @param {Object[]} records The records to update.\n * @param {Object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n updateMany: function updateMany(mapper, records, opts) {\n var self = this;\n records || (records = []);\n opts || (opts = {});\n var op = void 0;\n var idAttribute = mapper.idAttribute;\n\n records = records.filter(function (record) {\n return jsData.utils.get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = jsData.utils.isUndefined(_records) ? records : _records;\n records = records.map(function (record) {\n return withoutRelations(mapper, record);\n });\n op = opts.op = 'updateMany';\n self.dbg(op, mapper, records, opts);\n return jsData.utils.resolve(self._updateMany(mapper, records, opts));\n }).then(function (results) {\n var _results11 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results11[0];\n var result = _results11[1];\n\n data || (data = []);\n result || (result = {});\n var response = new Response(data, result, 'updateMany');\n response.updated = data.length;\n response = self.respond(response, opts);\n\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany';\n return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return jsData.utils.isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n exports.noop = noop;\n exports.noop2 = noop2;\n exports.unique = unique;\n exports.withoutRelations = withoutRelations;\n exports.Adapter = Adapter;\n exports.reserved = reserved;\n exports.Response = Response;\n\n}));\n//# sourceMappingURL=js-data-adapter.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/js-data-adapter/dist/js-data-adapter.js\n ** module id = 2\n ** module chunks = 0\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 3\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file